Chromium Code Reviews| Index: chrome/browser/ui/views/ash/tab_scrubber.h |
| diff --git a/chrome/browser/ui/views/ash/tab_scrubber.h b/chrome/browser/ui/views/ash/tab_scrubber.h |
| index 8ba03d5d6b30781663d9965561fa952e0c1a53c9..ee1dfff48c0487e2c810e6040e81a914d7e38d97 100644 |
| --- a/chrome/browser/ui/views/ash/tab_scrubber.h |
| +++ b/chrome/browser/ui/views/ash/tab_scrubber.h |
| @@ -5,22 +5,46 @@ |
| #ifndef CHROME_BROWSER_UI_VIEWS_ASH_TAB_SCRUBBER_H_ |
| #define CHROME_BROWSER_UI_VIEWS_ASH_TAB_SCRUBBER_H_ |
| +#include "base/timer.h" |
| +#include "chrome/browser/ui/views/tabs/tab_strip_observer.h" |
| #include "content/public/browser/notification_observer.h" |
| #include "content/public/browser/notification_registrar.h" |
| +#include "ui/base/animation/animation_delegate.h" |
| #include "ui/base/events/event_handler.h" |
| class Browser; |
| -class Tab; |
| +class TabStrip; |
| + |
| +namespace gfx { |
| +class Point; |
| +} |
| // Class to enable quick tab switching via Ctrl-left-drag. |
| // Notes: this is experimental, and disables ctrl-clicks. It should not be |
| // enabled other than through flags until we implement 3 finger drag as the |
| // mechanism to invoke it. At that point we will add test coverage. |
| class TabScrubber : public ui::EventHandler, |
| - public content::NotificationObserver { |
| + public content::NotificationObserver, |
| + public TabStripObserver { |
| public: |
| + enum Direction {LEFT, RIGHT}; |
| + |
| + // Returns a the single instance of a TabScrubber. |
| static TabScrubber* GetInstance(); |
| + // Returns the virtual position of a swipe starting in the tab at |index|, |
| + // base on the |direction|. |
| + static gfx::Point GetStartPoint(TabStrip* tab_strip, |
| + int index, |
| + TabScrubber::Direction direction); |
| + |
| + void set_activation_delay(base::TimeDelta activation_delay) { |
| + activation_delay_ = activation_delay; |
| + } |
| + base::TimeDelta activation_delay() const { return activation_delay_; } |
| + int highlighted_tab() const { return highlighted_tab_; } |
| + bool IsActivationPending(); |
| + |
| private: |
| TabScrubber(); |
| virtual ~TabScrubber(); |
| @@ -33,19 +57,45 @@ class TabScrubber : public ui::EventHandler, |
| const content::NotificationSource& source, |
| const content::NotificationDetails& details) OVERRIDE; |
| + // TabStripObserver overrides. |
| + virtual void TabStripAddedTabAt(TabStrip* tab_strip, int index); |
| + virtual void TabStripMovedTab(TabStrip* tab_strip, |
| + int from_index, |
| + int to_index); |
| + virtual void TabStripRemovedTabAt(TabStrip* tab_strip, int index); |
| + virtual void TabStripDeleted(TabStrip* tab_strip); |
| + |
| Browser* GetActiveBrowser(); |
| - void StartScrubbing(); |
| - void StopScrubbing(); |
| + void FinishScrub(bool activate); |
| + void CancelImmersiveReveal(); |
| - // Indicates that we are currently scrubbing. |
| + // Are we currently scrubbing?. |
| bool scrubbing_; |
| - // The browser that we are scrubbing. |
| + // The last browser we used for scrubbing, NULL if |scrubbing_| is |
| + // false and there is no pending work. |
| Browser* browser_; |
| - // The x value of the event that initiated scrubbing. |
| - float scroll_x_; |
| - float scroll_y_; |
| + // The current accumulated x and y positions of a swipe, in |
| + // the coordinates of the TabStrip of |browser_| |
| + float swipe_x_; |
| + float swipe_y_; |
| + // The direction the current swipe is headed. |
| + Direction swipe_direction_; |
| + // The index of the tab that is currently highlighted. |
| + int highlighted_tab_; |
| + // Timer to control a delayed activation of the |highlighted_tab_|. |
| + base::Timer activate_timer_; |
| + // Time to wait before newly selected tab becomes active. |
| + base::TimeDelta activation_delay_; |
| + // Indicates if we were in immersive mode and forced the tabs to be |
| + // revealed. |
| + bool should_cancel_immersive_reveal_; |
| + // Timer to control the cancel of an immersive reveal. |
| + base::Timer cancel_immersive_reveal_timer_; |
| content::NotificationRegistrar registrar_; |
| + // Note: This should remain the last member so it'll be destroyed and |
| + // invalidate its weak pointers before any other members are destroyed. |
| + base::WeakPtrFactory<TabScrubber> weak_ptr_factory_; |
|
sky
2013/02/06 22:55:16
I would recommend explicitly doing this first in t
|
| DISALLOW_COPY_AND_ASSIGN(TabScrubber); |
| }; |