| Index: chrome/browser/chromeos/wm_overview_controller.h
|
| ===================================================================
|
| --- chrome/browser/chromeos/wm_overview_controller.h (revision 0)
|
| +++ chrome/browser/chromeos/wm_overview_controller.h (revision 0)
|
| @@ -0,0 +1,147 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CHROME_BROWSER_CHROMEOS_WM_OVERVIEW_CONTROLLER_H_
|
| +#define CHROME_BROWSER_CHROMEOS_WM_OVERVIEW_CONTROLLER_H_
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/linked_ptr.h"
|
| +#include "base/singleton.h"
|
| +#include "base/timer.h"
|
| +#include "chrome/browser/browser_list.h"
|
| +#include "chrome/browser/chromeos/wm_message_listener.h"
|
| +#include "chrome/common/notification_registrar.h"
|
| +#include "gfx/rect.h"
|
| +
|
| +namespace views {
|
| +class Widget;
|
| +}
|
| +
|
| +class Animation;
|
| +class Browser;
|
| +
|
| +namespace chromeos {
|
| +
|
| +class BrowserListener;
|
| +class WmOverviewSnapshot;
|
| +
|
| +// WmOverviewController is responsible for managing a list of objects
|
| +// that listen to the browsers (BrowserListeners, defined in the
|
| +// source file for this class) for changes, and keep a list of
|
| +// snapshot images in sync with the browser tab contents.
|
| +//
|
| +// As tabs are added/removed from the browsers, the number of snapshot
|
| +// windows changes to match.
|
| +//
|
| +// As obtaining and setting snapshots is expensive we delay setting
|
| +// the snapshot. The delay is controlled by delay_timer_. Once the
|
| +// timer fires another timer is started (configure_timer_). This timer
|
| +// invokes ConfigureNextUnconfiguredCell on the BrowserListener, which
|
| +// obtains and sets the snapshot of the next uncofigured
|
| +// cell. ConfigureNextUnconfiguredCell only configures one cell at a
|
| +// time until they are all configured.
|
| +
|
| +class WmOverviewController : public BrowserList::Observer,
|
| + public WmMessageListener::Observer,
|
| + public NotificationObserver {
|
| + public:
|
| + // This class is a singleton.
|
| + static WmOverviewController* instance();
|
| +
|
| + // BrowserList::Observer methods
|
| + // This is called immediately after a browser is added to the list.
|
| + void OnBrowserAdded(const Browser* browser) {}
|
| +
|
| + // This is called immediately before a browser is removed from the list.
|
| + void OnBrowserRemoving(const Browser* browser);
|
| + // End BrowserList::Observer methods
|
| +
|
| + // WmMessageListener::Observer methods
|
| + // This is called immediately after a browser is added to the list.
|
| + void ProcessWmMessage(const WmIpc::Message& message,
|
| + GdkWindow* window);
|
| + // End WmMessageListener::Observer methods
|
| +
|
| + // NotificationObserver methods
|
| + void Observe(NotificationType type,
|
| + const NotificationSource& source,
|
| + const NotificationDetails& details);
|
| + // End NotificationObserver methods
|
| +
|
| + // Used by the BrowserListeners to configure their snapshots.
|
| + const gfx::Rect& monitor_bounds() const { return monitor_bounds_; }
|
| +
|
| + // Tells the listeners whether or not they're allowed to show
|
| + // snapshots yet.
|
| + bool allow_show_snapshots() const { return allow_show_snapshots_; }
|
| +
|
| + // Starts the delay timer, and once the delay is over, configures
|
| + // any unconfigured snapshots one at a time until none are left to
|
| + // be configured.
|
| + void StartDelayTimer();
|
| +
|
| + private:
|
| + friend struct DefaultSingletonTraits<WmOverviewController>;
|
| +
|
| + // This class is a singleton.
|
| + WmOverviewController();
|
| + ~WmOverviewController();
|
| +
|
| + // Restores tab selections on all browsers to what they were when
|
| + // Show was last called. Used when cancelling overview mode.
|
| + void RestoreTabSelections();
|
| +
|
| + // Saves the currently selected tabs in the snapshots so that they
|
| + // can be restored later with RestoreTabSelections.
|
| + void SaveTabSelections();
|
| +
|
| + // Show the snapshot windows, saving current tab selections.
|
| + void Show();
|
| +
|
| + // Hide the snapshot windows. When |cancelled| is true, then the
|
| + // tab selections that were saved when the snapshot windows were
|
| + // shown are restored.
|
| + void Hide(bool cancelled);
|
| +
|
| + // Invoked by delay_timer_. Sets allow_show_snapshots_ to true and starts
|
| + // configure_timer_.
|
| + void StartConfiguring();
|
| +
|
| + // Configure the next unconfigured snapshot window owned by any of
|
| + // the listeners.
|
| + void ConfigureNextUnconfiguredSnapshot();
|
| +
|
| + // Add browser listeners for all existing browsers, reusing any that
|
| + // were already there.
|
| + void AddAllBrowsers();
|
| +
|
| + // This is so we can register for notifications.
|
| + NotificationRegistrar registrar_;
|
| +
|
| + // This is a vector of listeners that listen to all the browsers.
|
| + typedef std::vector<linked_ptr<BrowserListener> > BrowserListenerVector;
|
| + BrowserListenerVector listeners_;
|
| +
|
| + // This is the bounds of the monitor we're being displayed on. This
|
| + // is used to adjust the size of snapshots so they'll fit.
|
| + gfx::Rect monitor_bounds_;
|
| +
|
| + // This indicates whether we should actually set the snapshots so we
|
| + // don't do it when we don't need to. It is initially false, then
|
| + // set to true by StartConfiguring.
|
| + bool allow_show_snapshots_;
|
| +
|
| + // See description above class for details.
|
| + base::OneShotTimer<WmOverviewController> delay_timer_;
|
| +
|
| + // See description above class for details.
|
| + base::RepeatingTimer<WmOverviewController> configure_timer_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(WmOverviewController);
|
| +};
|
| +
|
| +} // namespace chromeos
|
| +
|
| +#endif // CHROME_BROWSER_CHROMEOS_WM_OVERVIEW_CONTROLLER_H_
|
|
|
| Property changes on: chrome/browser/chromeos/wm_overview_controller.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|