Index: chrome/browser/ui/views/tabs/tab.h |
diff --git a/chrome/browser/ui/views/tabs/tab.h b/chrome/browser/ui/views/tabs/tab.h |
index d5b71cdef3c8f3104d686a13cadec324f0df8aa8..349c7707f6410ee42d06b3ffc5e68578ef936a54 100644 |
--- a/chrome/browser/ui/views/tabs/tab.h |
+++ b/chrome/browser/ui/views/tabs/tab.h |
@@ -1,378 +1,370 @@ |
-// Copyright (c) 2012 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_UI_VIEWS_TABS_TAB_H_ |
-#define CHROME_BROWSER_UI_VIEWS_TABS_TAB_H_ |
- |
-#include <list> |
-#include <string> |
- |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "chrome/browser/ui/views/tabs/tab_renderer_data.h" |
-#include "ui/base/layout.h" |
-#include "ui/gfx/animation/animation_delegate.h" |
-#include "ui/gfx/point.h" |
-#include "ui/views/context_menu_controller.h" |
-#include "ui/views/controls/button/button.h" |
-#include "ui/views/controls/glow_hover_controller.h" |
-#include "ui/views/view.h" |
- |
-class TabController; |
- |
-namespace gfx { |
-class Animation; |
-class AnimationContainer; |
-class Font; |
-class LinearAnimation; |
-class MultiAnimation; |
-} |
-namespace views { |
-class ImageButton; |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// |
-// A View that renders a Tab in a TabStrip. |
-// |
-/////////////////////////////////////////////////////////////////////////////// |
-class Tab : public gfx::AnimationDelegate, |
- public views::ButtonListener, |
- public views::ContextMenuController, |
- public views::View { |
- public: |
- // The menu button's class name. |
- static const char kViewClassName[]; |
- |
- explicit Tab(TabController* controller); |
- virtual ~Tab(); |
- |
- // Used to set/check whether this Tab is being animated closed. |
- void set_closing(bool closing) { closing_ = closing; } |
- bool closing() const { return closing_; } |
- |
- // See description above field. |
- void set_dragging(bool dragging) { dragging_ = dragging; } |
- bool dragging() const { return dragging_; } |
- |
- // Sets the container all animations run from. |
- void set_animation_container(gfx::AnimationContainer* container); |
- |
- // Returns true if this tab is the active tab. |
- bool IsActive() const; |
- |
- // Returns true if the tab is selected. |
- bool IsSelected() const; |
- |
- // Sets the data this tabs displays. Invokes DataChanged. |
- void SetData(const TabRendererData& data); |
- const TabRendererData& data() const { return data_; } |
- |
- // Sets the network state. If the network state changes NetworkStateChanged is |
- // invoked. |
- void UpdateLoadingAnimation(TabRendererData::NetworkState state); |
- |
- // Starts/Stops a pulse animation. |
- void StartPulse(); |
- void StopPulse(); |
- |
- // Start/stop the mini-tab title animation. |
- void StartMiniTabTitleAnimation(); |
- void StopMiniTabTitleAnimation(); |
- |
- // Set the background offset used to match the image in the inactive tab |
- // to the frame image. |
- void set_background_offset(const gfx::Point& offset) { |
- background_offset_ = offset; |
- } |
- |
- // Returns true if this tab became the active tab selected in |
- // response to the last ui::ET_GESTURE_BEGIN gesture dispatched to |
- // this tab. Only used for collecting UMA metrics. |
- // See ash/touch/touch_uma.cc. |
- bool tab_activated_with_last_gesture_begin() const { |
- return tab_activated_with_last_gesture_begin_; |
- } |
- |
- views::GlowHoverController* hover_controller() { |
- return &hover_controller_; |
- } |
- |
- // Returns the minimum possible size of a single unselected Tab. |
- static gfx::Size GetMinimumUnselectedSize(); |
- // Returns the minimum possible size of a selected Tab. Selected tabs must |
- // always show a close button and have a larger minimum size than unselected |
- // tabs. |
- static gfx::Size GetMinimumSelectedSize(); |
- // Returns the preferred size of a single Tab, assuming space is |
- // available. |
- static gfx::Size GetStandardSize(); |
- |
- // Returns the width for touch tabs. |
- static int GetTouchWidth(); |
- |
- // Returns the width for mini-tabs. Mini-tabs always have this width. |
- static int GetMiniWidth(); |
- |
- // Returns the height for immersive mode tabs. |
- static int GetImmersiveHeight(); |
- |
- private: |
- friend class TabTest; |
- FRIEND_TEST_ALL_PREFIXES(TabTest, CloseButtonLayout); |
- |
- friend class TabStripTest; |
- FRIEND_TEST_ALL_PREFIXES(TabStripTest, TabHitTestMaskWhenStacked); |
- FRIEND_TEST_ALL_PREFIXES(TabStripTest, ClippedTabCloseButton); |
- |
- // The animation object used to swap the favicon with the sad tab icon. |
- class FaviconCrashAnimation; |
- class TabCloseButton; |
- |
- // Contains a cached image and the values used to generate it. |
- struct ImageCacheEntry { |
- ImageCacheEntry(); |
- ~ImageCacheEntry(); |
- |
- // ID of the resource used. |
- int resource_id; |
- |
- // Scale factor we're drawing it. |
- ui::ScaleFactor scale_factor; |
- |
- // The image. |
- gfx::ImageSkia image; |
- }; |
- |
- typedef std::list<ImageCacheEntry> ImageCache; |
- |
- // Overridden from gfx::AnimationDelegate: |
- virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE; |
- virtual void AnimationCanceled(const gfx::Animation* animation) OVERRIDE; |
- virtual void AnimationEnded(const gfx::Animation* animation) OVERRIDE; |
- |
- // Overridden from views::ButtonListener: |
- virtual void ButtonPressed(views::Button* sender, |
- const ui::Event& event) OVERRIDE; |
- |
- // Overridden from views::ContextMenuController: |
- virtual void ShowContextMenuForView(views::View* source, |
- const gfx::Point& point, |
- ui::MenuSourceType source_type) OVERRIDE; |
- |
- // Overridden from views::View: |
- virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
- virtual void Layout() OVERRIDE; |
- virtual void OnThemeChanged() OVERRIDE; |
- virtual const char* GetClassName() const OVERRIDE; |
- virtual bool HasHitTestMask() const OVERRIDE; |
- virtual void GetHitTestMask(HitTestSource source, |
- gfx::Path* path) const OVERRIDE; |
- virtual bool GetTooltipText(const gfx::Point& p, |
- base::string16* tooltip) const OVERRIDE; |
- virtual bool GetTooltipTextOrigin(const gfx::Point& p, |
- gfx::Point* origin) const OVERRIDE; |
- virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; |
- virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE; |
- virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE; |
- virtual void OnMouseCaptureLost() OVERRIDE; |
- virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE; |
- virtual void OnMouseMoved(const ui::MouseEvent& event) OVERRIDE; |
- virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; |
- virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; |
- |
- // Overridden from ui::EventHandler: |
- virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; |
- |
- // Returns the bounds of the title and icon. |
- const gfx::Rect& GetTitleBounds() const; |
- const gfx::Rect& GetIconBounds() const; |
- |
- // Invoked from Layout to adjust the position of the favicon or media |
- // indicator for mini tabs. |
- void MaybeAdjustLeftForMiniTab(gfx::Rect* bounds) const; |
- |
- // Invoked from SetData after |data_| has been updated to the new data. |
- void DataChanged(const TabRendererData& old); |
- |
- // Paint with the normal tab style. |
- void PaintTab(gfx::Canvas* canvas); |
- |
- // Paint with the "immersive mode" light-bar style. |
- void PaintImmersiveTab(gfx::Canvas* canvas); |
- |
- // Paint various portions of the Tab |
- void PaintTabBackground(gfx::Canvas* canvas); |
- void PaintInactiveTabBackgroundWithTitleChange( |
- gfx::Canvas* canvas, |
- gfx::MultiAnimation* animation); |
- void PaintInactiveTabBackground(gfx::Canvas* canvas); |
- void PaintInactiveTabBackgroundUsingResourceId(gfx::Canvas* canvas, |
- int tab_id); |
- void PaintActiveTabBackground(gfx::Canvas* canvas); |
- |
- // Paints the favicon, media indicator icon, etc., mirrored for RTL if needed. |
- void PaintIcon(gfx::Canvas* canvas); |
- void PaintMediaIndicator(gfx::Canvas* canvas); |
- void PaintTitle(gfx::Canvas* canvas, SkColor title_color); |
- |
- // Invoked if data_.network_state changes, or the network_state is not none. |
- void AdvanceLoadingAnimation(TabRendererData::NetworkState old_state, |
- TabRendererData::NetworkState state); |
- |
- // Returns the number of favicon-size elements that can fit in the tab's |
- // current size. |
- int IconCapacity() const; |
- |
- // Returns whether the Tab should display a favicon. |
- bool ShouldShowIcon() const; |
- |
- // Returns whether the Tab should display the media indicator. |
- bool ShouldShowMediaIndicator() const; |
- |
- // Returns whether the Tab should display a close button. |
- bool ShouldShowCloseBox() const; |
- |
- // Gets the throb value for the tab. When a tab is not selected the |
- // active background is drawn at |GetThrobValue()|%. This is used for hover, |
- // mini tab title change and pulsing. |
- double GetThrobValue(); |
- |
- // Set the temporary offset for the favicon. This is used during the crash |
- // animation. |
- void SetFaviconHidingOffset(int offset); |
- |
- void DisplayCrashedFavicon(); |
- void ResetCrashedFavicon(); |
- |
- void StopCrashAnimation(); |
- void StartCrashAnimation(); |
- |
- // Returns true if the crash animation is currently running. |
- bool IsPerformingCrashAnimation() const; |
- |
- // Starts the media indicator fade-in/out animation. There's no stop method |
- // because this is not a continuous animation. |
- void StartMediaIndicatorAnimation(); |
- |
- // Schedules repaint task for icon. |
- void ScheduleIconPaint(); |
- |
- // Returns the rectangle for the light bar in immersive mode. |
- gfx::Rect GetImmersiveBarRect() const; |
- |
- // Gets the tab id and frame id. |
- void GetTabIdAndFrameId(views::Widget* widget, |
- int* tab_id, |
- int* frame_id) const; |
- |
- // Performs a one-time initialization of static resources such as tab images. |
- static void InitTabResources(); |
- |
- // Returns the minimum possible size of a single unselected Tab, not |
- // including considering touch mode. |
- static gfx::Size GetBasicMinimumUnselectedSize(); |
- |
- // Loads the images to be used for the tab background. |
- static void LoadTabImages(); |
- |
- // Returns the cached image for the specified arguments, or an empty image if |
- // there isn't one cached. |
- static gfx::ImageSkia GetCachedImage(int resource_id, |
- const gfx::Size& size, |
- ui::ScaleFactor scale_factor); |
- |
- // Caches the specified image. |
- static void SetCachedImage(int resource_id, |
- ui::ScaleFactor scale_factor, |
- const gfx::ImageSkia& image); |
- |
- // The controller, never NULL. |
- TabController* controller_; |
- |
- TabRendererData data_; |
- |
- // True if the tab is being animated closed. |
- bool closing_; |
- |
- // True if the tab is being dragged. |
- bool dragging_; |
- |
- // The offset used to animate the favicon location. This is used when the tab |
- // crashes. |
- int favicon_hiding_offset_; |
- |
- // The current index of the loading animation. The range varies depending on |
- // whether the tab is loading or waiting, see AdvanceLoadingAnimation(). |
- int loading_animation_frame_; |
- |
- // Step in the immersive loading progress indicator. |
- int immersive_loading_step_; |
- |
- bool should_display_crashed_favicon_; |
- |
- // Whole-tab throbbing "pulse" animation. |
- scoped_ptr<gfx::Animation> tab_animation_; |
- |
- // Crash icon animation (in place of favicon). |
- scoped_ptr<gfx::LinearAnimation> crash_icon_animation_; |
- |
- // Media indicator fade-in/out animation (i.e., only on show/hide, not a |
- // continuous animation). |
- scoped_ptr<gfx::Animation> media_indicator_animation_; |
- TabMediaState animating_media_state_; |
- |
- scoped_refptr<gfx::AnimationContainer> animation_container_; |
- |
- views::ImageButton* close_button_; |
- |
- bool tab_activated_with_last_gesture_begin_; |
- |
- views::GlowHoverController hover_controller_; |
- |
- // The bounds of various sections of the display. |
- gfx::Rect favicon_bounds_; |
- gfx::Rect title_bounds_; |
- gfx::Rect media_indicator_bounds_; |
- |
- // The offset used to paint the inactive background image. |
- gfx::Point background_offset_; |
- |
- struct TabImage { |
- gfx::ImageSkia* image_l; |
- gfx::ImageSkia* image_c; |
- gfx::ImageSkia* image_r; |
- int l_width; |
- int r_width; |
- }; |
- static TabImage tab_active_; |
- static TabImage tab_inactive_; |
- static TabImage tab_alpha_; |
- |
- // Whether we're showing the icon. It is cached so that we can detect when it |
- // changes and layout appropriately. |
- bool showing_icon_; |
- |
- // Whether we're showing the media indicator. It is cached so that we can |
- // detect when it changes and layout appropriately. |
- bool showing_media_indicator_; |
- |
- // Whether we are showing the close button. It is cached so that we can |
- // detect when it changes and layout appropriately. |
- bool showing_close_button_; |
- |
- // The current color of the close button. |
- SkColor close_button_color_; |
- |
- static gfx::Font* font_; |
- static int font_height_; |
- |
- // As the majority of the tabs are inactive, and painting tabs is slowish, |
- // we cache a handful of the inactive tab backgrounds here. |
- static ImageCache* image_cache_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Tab); |
-}; |
- |
-#endif // CHROME_BROWSER_UI_VIEWS_TABS_TAB_H_ |
+// Copyright (c) 2012 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_UI_VIEWS_TABS_TAB_H_ |
+#define CHROME_BROWSER_UI_VIEWS_TABS_TAB_H_ |
+ |
+#include <list> |
+#include <string> |
+ |
+#include "base/memory/ref_counted.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "chrome/browser/ui/views/tabs/tab_renderer_data.h" |
+#include "ui/base/layout.h" |
+#include "ui/gfx/animation/animation_delegate.h" |
+#include "ui/gfx/point.h" |
+#include "ui/views/context_menu_controller.h" |
+#include "ui/views/controls/button/button.h" |
+#include "ui/views/controls/glow_hover_controller.h" |
+#include "ui/views/view.h" |
+ |
+class TabController; |
+ |
+namespace gfx { |
+class Animation; |
+class AnimationContainer; |
+class LinearAnimation; |
+class MultiAnimation; |
+} |
+namespace views { |
+class ImageButton; |
+class Label; |
+} |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+// |
+// A View that renders a Tab in a TabStrip. |
+// |
+/////////////////////////////////////////////////////////////////////////////// |
+class Tab : public gfx::AnimationDelegate, |
+ public views::ButtonListener, |
+ public views::ContextMenuController, |
+ public views::View { |
+ public: |
+ // The menu button's class name. |
+ static const char kViewClassName[]; |
+ |
+ explicit Tab(TabController* controller); |
+ virtual ~Tab(); |
+ |
+ // Used to set/check whether this Tab is being animated closed. |
+ void set_closing(bool closing) { closing_ = closing; } |
+ bool closing() const { return closing_; } |
+ |
+ // See description above field. |
+ void set_dragging(bool dragging) { dragging_ = dragging; } |
+ bool dragging() const { return dragging_; } |
+ |
+ // Sets the container all animations run from. |
+ void set_animation_container(gfx::AnimationContainer* container); |
+ |
+ // Returns true if this tab is the active tab. |
+ bool IsActive() const; |
+ |
+ // Returns true if the tab is selected. |
+ bool IsSelected() const; |
+ |
+ // Sets the data this tabs displays. Invokes DataChanged. |
+ void SetData(const TabRendererData& data); |
+ const TabRendererData& data() const { return data_; } |
+ |
+ // Sets the network state. If the network state changes NetworkStateChanged is |
+ // invoked. |
+ void UpdateLoadingAnimation(TabRendererData::NetworkState state); |
+ |
+ // Starts/Stops a pulse animation. |
+ void StartPulse(); |
+ void StopPulse(); |
+ |
+ // Start/stop the mini-tab title animation. |
+ void StartMiniTabTitleAnimation(); |
+ void StopMiniTabTitleAnimation(); |
+ |
+ // Set the background offset used to match the image in the inactive tab |
+ // to the frame image. |
+ void set_background_offset(const gfx::Point& offset) { |
+ background_offset_ = offset; |
+ } |
+ |
+ // Returns true if this tab became the active tab selected in |
+ // response to the last ui::ET_GESTURE_BEGIN gesture dispatched to |
+ // this tab. Only used for collecting UMA metrics. |
+ // See ash/touch/touch_uma.cc. |
+ bool tab_activated_with_last_gesture_begin() const { |
+ return tab_activated_with_last_gesture_begin_; |
+ } |
+ |
+ views::GlowHoverController* hover_controller() { |
+ return &hover_controller_; |
+ } |
+ |
+ // Returns the minimum possible size of a single unselected Tab. |
+ static gfx::Size GetMinimumUnselectedSize(); |
+ // Returns the minimum possible size of a selected Tab. Selected tabs must |
+ // always show a close button and have a larger minimum size than unselected |
+ // tabs. |
+ static gfx::Size GetMinimumSelectedSize(); |
+ // Returns the preferred size of a single Tab, assuming space is |
+ // available. |
+ static gfx::Size GetStandardSize(); |
+ |
+ // Returns the width for touch tabs. |
+ static int GetTouchWidth(); |
+ |
+ // Returns the width for mini-tabs. Mini-tabs always have this width. |
+ static int GetMiniWidth(); |
+ |
+ // Returns the height for immersive mode tabs. |
+ static int GetImmersiveHeight(); |
+ |
+ private: |
+ friend class TabTest; |
+ FRIEND_TEST_ALL_PREFIXES(TabTest, CloseButtonLayout); |
+ |
+ friend class TabStripTest; |
+ FRIEND_TEST_ALL_PREFIXES(TabStripTest, TabHitTestMaskWhenStacked); |
+ FRIEND_TEST_ALL_PREFIXES(TabStripTest, ClippedTabCloseButton); |
+ |
+ // The animation object used to swap the favicon with the sad tab icon. |
+ class FaviconCrashAnimation; |
+ class TabCloseButton; |
+ |
+ // Contains a cached image and the values used to generate it. |
+ struct ImageCacheEntry { |
+ ImageCacheEntry(); |
+ ~ImageCacheEntry(); |
+ |
+ // ID of the resource used. |
+ int resource_id; |
+ |
+ // Scale factor we're drawing it. |
+ ui::ScaleFactor scale_factor; |
+ |
+ // The image. |
+ gfx::ImageSkia image; |
+ }; |
+ |
+ typedef std::list<ImageCacheEntry> ImageCache; |
+ |
+ // Overridden from gfx::AnimationDelegate: |
+ virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE; |
+ virtual void AnimationCanceled(const gfx::Animation* animation) OVERRIDE; |
+ virtual void AnimationEnded(const gfx::Animation* animation) OVERRIDE; |
+ |
+ // Overridden from views::ButtonListener: |
+ virtual void ButtonPressed(views::Button* sender, |
+ const ui::Event& event) OVERRIDE; |
+ |
+ // Overridden from views::ContextMenuController: |
+ virtual void ShowContextMenuForView(views::View* source, |
+ const gfx::Point& point, |
+ ui::MenuSourceType source_type) OVERRIDE; |
+ |
+ // Overridden from views::View: |
+ virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
+ virtual void Layout() OVERRIDE; |
+ virtual void OnThemeChanged() OVERRIDE; |
+ virtual const char* GetClassName() const OVERRIDE; |
+ virtual bool HasHitTestMask() const OVERRIDE; |
+ virtual void GetHitTestMask(HitTestSource source, |
+ gfx::Path* path) const OVERRIDE; |
+ virtual bool GetTooltipText(const gfx::Point& p, |
+ base::string16* tooltip) const OVERRIDE; |
+ virtual bool GetTooltipTextOrigin(const gfx::Point& p, |
+ gfx::Point* origin) const OVERRIDE; |
+ virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; |
+ virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE; |
+ virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE; |
+ virtual void OnMouseCaptureLost() OVERRIDE; |
+ virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE; |
+ virtual void OnMouseMoved(const ui::MouseEvent& event) OVERRIDE; |
+ virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; |
+ virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; |
+ |
+ // Overridden from ui::EventHandler: |
+ virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; |
+ |
+ // Invoked from Layout to adjust the position of the favicon or media |
+ // indicator for mini tabs. |
+ void MaybeAdjustLeftForMiniTab(gfx::Rect* bounds) const; |
+ |
+ // Invoked from SetData after |data_| has been updated to the new data. |
+ void DataChanged(const TabRendererData& old); |
+ |
+ // Paint with the normal tab style. |
+ void PaintTab(gfx::Canvas* canvas); |
+ |
+ // Paint with the "immersive mode" light-bar style. |
+ void PaintImmersiveTab(gfx::Canvas* canvas); |
+ |
+ // Paint various portions of the Tab |
+ void PaintTabBackground(gfx::Canvas* canvas); |
+ void PaintInactiveTabBackgroundWithTitleChange( |
+ gfx::Canvas* canvas, |
+ gfx::MultiAnimation* animation); |
+ void PaintInactiveTabBackground(gfx::Canvas* canvas); |
+ void PaintInactiveTabBackgroundUsingResourceId(gfx::Canvas* canvas, |
+ int tab_id); |
+ void PaintActiveTabBackground(gfx::Canvas* canvas); |
+ |
+ // Paints the favicon and media indicator icon, mirrored for RTL if needed. |
+ void PaintIcon(gfx::Canvas* canvas); |
+ void PaintMediaIndicator(gfx::Canvas* canvas); |
+ |
+ // Invoked if data_.network_state changes, or the network_state is not none. |
+ void AdvanceLoadingAnimation(TabRendererData::NetworkState old_state, |
+ TabRendererData::NetworkState state); |
+ |
+ // Returns the number of favicon-size elements that can fit in the tab's |
+ // current size. |
+ int IconCapacity() const; |
+ |
+ // Returns whether the Tab should display a favicon. |
+ bool ShouldShowIcon() const; |
+ |
+ // Returns whether the Tab should display the media indicator. |
+ bool ShouldShowMediaIndicator() const; |
+ |
+ // Returns whether the Tab should display a close button. |
+ bool ShouldShowCloseBox() const; |
+ |
+ // Gets the throb value for the tab. When a tab is not selected the |
+ // active background is drawn at |GetThrobValue()|%. This is used for hover, |
+ // mini tab title change and pulsing. |
+ double GetThrobValue(); |
+ |
+ // Set the temporary offset for the favicon. This is used during the crash |
+ // animation. |
+ void SetFaviconHidingOffset(int offset); |
+ |
+ void DisplayCrashedFavicon(); |
+ void ResetCrashedFavicon(); |
+ |
+ void StopCrashAnimation(); |
+ void StartCrashAnimation(); |
+ |
+ // Returns true if the crash animation is currently running. |
+ bool IsPerformingCrashAnimation() const; |
+ |
+ // Starts the media indicator fade-in/out animation. There's no stop method |
+ // because this is not a continuous animation. |
+ void StartMediaIndicatorAnimation(); |
+ |
+ // Schedules repaint task for icon. |
+ void ScheduleIconPaint(); |
+ |
+ // Returns the rectangle for the light bar in immersive mode. |
+ gfx::Rect GetImmersiveBarRect() const; |
+ |
+ // Gets the tab id and frame id. |
+ void GetTabIdAndFrameId(views::Widget* widget, |
+ int* tab_id, |
+ int* frame_id) const; |
+ |
+ // Performs a one-time initialization of static resources such as tab images. |
+ static void InitTabResources(); |
+ |
+ // Returns the minimum possible size of a single unselected Tab, not |
+ // including considering touch mode. |
+ static gfx::Size GetBasicMinimumUnselectedSize(); |
+ |
+ // Loads the images to be used for the tab background. |
+ static void LoadTabImages(); |
+ |
+ // Returns the cached image for the specified arguments, or an empty image if |
+ // there isn't one cached. |
+ static gfx::ImageSkia GetCachedImage(int resource_id, |
+ const gfx::Size& size, |
+ ui::ScaleFactor scale_factor); |
+ |
+ // Caches the specified image. |
+ static void SetCachedImage(int resource_id, |
+ ui::ScaleFactor scale_factor, |
+ const gfx::ImageSkia& image); |
+ |
+ // The controller, never NULL. |
+ TabController* controller_; |
+ |
+ TabRendererData data_; |
+ |
+ // True if the tab is being animated closed. |
+ bool closing_; |
+ |
+ // True if the tab is being dragged. |
+ bool dragging_; |
+ |
+ // The offset used to animate the favicon location. This is used when the tab |
+ // crashes. |
+ int favicon_hiding_offset_; |
+ |
+ // The current index of the loading animation. The range varies depending on |
+ // whether the tab is loading or waiting, see AdvanceLoadingAnimation(). |
+ int loading_animation_frame_; |
+ |
+ // Step in the immersive loading progress indicator. |
+ int immersive_loading_step_; |
+ |
+ bool should_display_crashed_favicon_; |
+ |
+ // Whole-tab throbbing "pulse" animation. |
+ scoped_ptr<gfx::Animation> tab_animation_; |
+ |
+ // Crash icon animation (in place of favicon). |
+ scoped_ptr<gfx::LinearAnimation> crash_icon_animation_; |
+ |
+ // Media indicator fade-in/out animation (i.e., only on show/hide, not a |
+ // continuous animation). |
+ scoped_ptr<gfx::Animation> media_indicator_animation_; |
+ TabMediaState animating_media_state_; |
+ |
+ scoped_refptr<gfx::AnimationContainer> animation_container_; |
+ |
+ views::ImageButton* close_button_; |
+ views::Label* title_; |
+ |
+ bool tab_activated_with_last_gesture_begin_; |
+ |
+ views::GlowHoverController hover_controller_; |
+ |
+ // The bounds of various sections of the display. |
+ gfx::Rect favicon_bounds_; |
+ gfx::Rect media_indicator_bounds_; |
+ |
+ // The offset used to paint the inactive background image. |
+ gfx::Point background_offset_; |
+ |
+ struct TabImage { |
+ gfx::ImageSkia* image_l; |
+ gfx::ImageSkia* image_c; |
+ gfx::ImageSkia* image_r; |
+ int l_width; |
+ int r_width; |
+ }; |
+ static TabImage tab_active_; |
+ static TabImage tab_inactive_; |
+ static TabImage tab_alpha_; |
+ |
+ // Whether we're showing the icon. It is cached so that we can detect when it |
+ // changes and layout appropriately. |
+ bool showing_icon_; |
+ |
+ // Whether we're showing the media indicator. It is cached so that we can |
+ // detect when it changes and layout appropriately. |
+ bool showing_media_indicator_; |
+ |
+ // Whether we are showing the close button. It is cached so that we can |
+ // detect when it changes and layout appropriately. |
+ bool showing_close_button_; |
+ |
+ // The current color of the close button. |
+ SkColor close_button_color_; |
+ |
+ // As the majority of the tabs are inactive, and painting tabs is slowish, |
+ // we cache a handful of the inactive tab backgrounds here. |
+ static ImageCache* image_cache_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(Tab); |
+}; |
+ |
+#endif // CHROME_BROWSER_UI_VIEWS_TABS_TAB_H_ |