Index: chrome/browser/ui/search/toolbar_search_animator.h |
diff --git a/chrome/browser/ui/search/toolbar_search_animator.h b/chrome/browser/ui/search/toolbar_search_animator.h |
index 6041cf89da3004acf61c28562284ff9fc6a5aced..7627bb16a37f75106e346bebb75acc9e88ce6bfa 100644 |
--- a/chrome/browser/ui/search/toolbar_search_animator.h |
+++ b/chrome/browser/ui/search/toolbar_search_animator.h |
@@ -9,51 +9,42 @@ |
#include "base/observer_list.h" |
#include "base/timer.h" |
#include "chrome/browser/ui/search/search_model_observer.h" |
+#include "chrome/browser/ui/search/search_types.h" |
#include "ui/base/animation/animation_delegate.h" |
+#include "ui/base/animation/slide_animation.h" |
class TabContents; |
-namespace ui { |
-class SlideAnimation; |
-} |
- |
namespace chrome { |
namespace search { |
class SearchModel; |
class ToolbarSearchAnimatorObserver; |
-// ToolbarSearchAnimator is used to track the background state of the toolbar |
-// and related classes. To use ToolbarSearchAnimator, add a |
-// ToolbarSearchAnimatorObserver. The ToolbarSearchAnimatorObserver is then |
-// notified appropriately. |
+// ToolbarSearchAnimator is used to track the gradient background and separator |
+// states of the toolbar and related classes. To use ToolbarSearchAnimator, |
+// add a ToolbarSearchAnimatorObserver. The ToolbarSearchAnimatorObserver is |
+// then notified appropriately. |
class ToolbarSearchAnimator : public SearchModelObserver, |
public ui::AnimationDelegate { |
public: |
- // State of background to paint by observers, only applicable for |
- // |MODE_SEARCH|. |
- enum BackgroundState { |
- // Background state is not applicable. |
- BACKGROUND_STATE_DEFAULT = 0, |
- // Show background for |MODE_NTP|. |
- BACKGROUND_STATE_NTP = 0x01, |
- // Show background for |MODE_SEARCH|. |
- BACKGROUND_STATE_SEARCH = 0x02, |
- // Show backgrounds for both |MODE_NTP| and |MODE_SEARCH|. |
- BACKGROUND_STATE_NTP_SEARCH = BACKGROUND_STATE_NTP | |
- BACKGROUND_STATE_SEARCH, |
- }; |
- |
explicit ToolbarSearchAnimator(SearchModel* search_model); |
virtual ~ToolbarSearchAnimator(); |
- // Get the current background state to paint. |
- // |search_background_opacity| contains a valid opacity value only if |
- // background for |MODE_SEARCH| needs to be shown i.e. |background_state| is |
- // BACKGROUND_STATE_SEARCH or BACKGROUND_STATE_NTP_SEARCH. |
- // Only call this for |MODE_SEARCH|. |
- void GetCurrentBackgroundState(BackgroundState* background_state, |
- double* search_background_opacity) const; |
+ // Get the gradient background opacity to paint for toolbar and active tab, a |
+ // value between 0f and 1f inclusive: |
+ // - 0f: only paint flat background |
+ // - < 1f: paint flat background at full opacity and gradient background at |
+ // specified opacity |
+ // - 1f: only paint gradient background at full opacity |
+ double GetGradientOpacity() const; |
+ |
+ // Get the toolbar separator opacity to paint, a value between 0f and 1f |
+ // inclusive: |
+ // - 0f: do not paint separator |
+ // - < 1f: paint separator at specified opacity |
+ // - 1f: paint separator at full opacity |
+ double GetSeparatorOpacity() const; |
// Called from SearchDelegate::StopObservingTab() when a tab is deactivated or |
// closing or detached, to jump to the end state of the animation. |
@@ -73,20 +64,21 @@ class ToolbarSearchAnimator : public SearchModelObserver, |
virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE; |
private: |
- // State of animation. |
+ // State of background or separator animation. |
enum AnimateState { |
ANIMATE_STATE_NONE, // Doing nothing. |
- ANIMATE_STATE_WAITING, // Waiting to run background animation. |
- ANIMATE_STATE_RUNNING, // Running background animation. |
+ ANIMATE_STATE_WAITING, // Waiting to run animation. |
+ ANIMATE_STATE_RUNNING, // Running animation. |
}; |
// Callback for |background_change_timer_| to actually start the background |
// change animation. |
void StartBackgroundChange(); |
- // Reset state of animator: reset animate_state_, stop timer or animation, |
- // If we're waiting to animate or animating, i.e. |animate_state| is not |
- // ANIMATE_STAET_NONE, wwe'll notify observers via |
+ // Reset state of animator: reset all animate states, stop timer or |
+ // animation(s). |
+ // If we're waiting to animate or animating, i.e. animate state is not |
+ // ANIMATE_STAET_NONE, we'll notify observers via |
// ToolbarSearchAnimatorObserver::BackgroundChangeCanceled. |
// Pass in |tab_contents| if animation is canceled because of deactivating or |
// detaching or closing a tab. |
@@ -95,16 +87,30 @@ class ToolbarSearchAnimator : public SearchModelObserver, |
// Weak. Owned by Browser. Non-NULL. |
SearchModel* search_model_; |
- // State of animation. |
- AnimateState animate_state_; |
+ // State of background animation. |
+ AnimateState background_animate_state_; |
+ |
+ // State of separator animation. |
+ AnimateState separator_animate_state_; |
// The background fade animation. |
- scoped_ptr<ui::SlideAnimation> background_animation_; |
+ ui::SlideAnimation background_animation_; |
+ |
+ // The separator fade animation. |
+ ui::SlideAnimation separator_animation_; |
// The timer to delay start of animation after mode changes from |MODE_NTP| to |
// |MODE_SEARCH|. |
base::OneShotTimer<ToolbarSearchAnimator> background_change_timer_; |
+ // Mode that we're animating from. |
+ Mode::Type from_mode_; |
+ // Mode that we're animating to. |
+ Mode::Type to_mode_; |
+ // True if |from_mode_| and |to_mode_| have been intiialized via the very |
+ // first ModeChanged method. |
+ bool modes_initialized_; |
+ |
// Observers. |
ObserverList<ToolbarSearchAnimatorObserver> observers_; |