Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef CHROME_BROWSER_UI_SEARCH_TOOLBAR_SEARCH_ANIMATOR_H_ | |
| 6 #define CHROME_BROWSER_UI_SEARCH_TOOLBAR_SEARCH_ANIMATOR_H_ | |
| 7 #pragma once | |
| 8 | |
| 9 #include "base/memory/scoped_ptr.h" | |
| 10 #include "base/observer_list.h" | |
| 11 #include "base/timer.h" | |
| 12 #include "chrome/browser/ui/search/search_model_observer.h" | |
| 13 #include "ui/base/animation/animation_delegate.h" | |
| 14 | |
| 15 class TabContents; | |
| 16 | |
| 17 namespace ui { | |
| 18 class SlideAnimation; | |
| 19 } // namespace ui | |
|
dhollowa
2012/06/26 18:16:27
nit: Typically the trailing "// namespace ui" is o
kuan
2012/06/26 23:25:49
Done.
| |
| 20 | |
| 21 namespace chrome { | |
| 22 namespace search { | |
| 23 | |
| 24 class SearchModel; | |
| 25 class ToolbarSearchAnimatorObserver; | |
| 26 | |
| 27 // Animate fade in of new background. | |
|
sky
2012/06/26 17:11:27
Remove this sentence. Also, how about a descriptio
kuan
2012/06/26 23:25:49
Done.
| |
| 28 // This class is used in Search Integration, where backgrounds of toolbar and | |
| 29 // tab change 100ms after search model mode changes from NTP to SEARCH. | |
| 30 // This class runs the animation sequence and fires notification to | |
| 31 // |ToolbarSearchAnimatorObserver|s on every tick as the animation progresses. | |
| 32 class ToolbarSearchAnimator : public SearchModelObserver, | |
| 33 public ui::AnimationDelegate { | |
| 34 public: | |
| 35 // State of background to paint by observers, only applicable when mode is | |
| 36 // SEARCH. | |
| 37 enum BackgroundState { | |
| 38 // Background state is not applicable. | |
| 39 BACKGROUND_STATE_SHOW_NON_APPLICABLE = 0, | |
|
sky
2012/06/26 17:11:27
Should this be BACKGROUND_STATE_SHOW_DEFAULT? Also
kuan
2012/06/26 23:25:49
Done.
| |
| 40 // Show background for NTP mode. | |
| 41 BACKGROUND_STATE_SHOW_NTP = 0x01, | |
| 42 // Show background for SEARCH mode. | |
| 43 BACKGROUND_STATE_SHOW_SEARCH = 0x02, | |
| 44 // Show backgrounds for both NTP and SEARCH modes. | |
| 45 BACKGROUND_STATE_SHOW_NTP_SEARCH = BACKGROUND_STATE_SHOW_NTP | | |
| 46 BACKGROUND_STATE_SHOW_SEARCH, | |
| 47 }; | |
| 48 | |
| 49 explicit ToolbarSearchAnimator(SearchModel* search_model); | |
| 50 virtual ~ToolbarSearchAnimator(); | |
| 51 | |
| 52 // Get the current background state to paint. | |
| 53 // |new_background_opacity| contains a valid opacity value only if new | |
|
sky
2012/06/26 17:11:27
Should the opacity always be 1 when not default?
kuan
2012/06/26 23:25:49
the opacity is for the new background, so it shoul
| |
| 54 // background needs to be shown i.e. |background_state| is | |
| 55 // BACKGROUND_STATE_SHOW_NEW or BACKGROUND_STATE_SHOW_BOTH. | |
|
sky
2012/06/26 17:11:27
This comment isn't right, it can also by NON_APPLI
kuan
2012/06/26 23:25:49
Done. i assume u mean the names of the states are
| |
| 56 // Note "background animation not running" doesn't mean we're not waiting to | |
| 57 // run the background animation. Because background animation runs after a | |
| 58 // delay of 100ms, IsWaitingToAnimate provides state about "waiting to run" | |
| 59 // and hence should be called before this method - DCHECK happens if this | |
| 60 // method is called when waiting to run background animation. | |
| 61 void GetCurrentBackgroundState(BackgroundState* background_state, | |
| 62 int* new_background_opacity) const; | |
|
sky
2012/06/26 17:11:27
I think it makes more sense to have opacity from 0
kuan
2012/06/26 23:25:49
Done.
| |
| 63 | |
| 64 // Called from SearchDelegate::StopObservingTab when a tab is deactivated or | |
|
sky
2012/06/26 17:11:27
nit: use () after method in comments.
kuan
2012/06/26 23:25:49
Done.
| |
| 65 // closing or detached, to jump to the end state of the animation. | |
| 66 // This allows a reactivated tab to show the end state of the animation, | |
| 67 // rather than the transient state. | |
| 68 void FinishAnimation(TabContents* tab_contents); | |
| 69 | |
| 70 // Add and remove observers. | |
| 71 void AddObserver(ToolbarSearchAnimatorObserver* observer); | |
| 72 void RemoveObserver(ToolbarSearchAnimatorObserver* observer); | |
| 73 | |
| 74 // Overridden from SearchModelObserver: | |
| 75 virtual void ModeChanged(const Mode& mode) OVERRIDE; | |
| 76 | |
| 77 // Overridden from ui::AnimationDelegate: | |
| 78 virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE; | |
| 79 virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE; | |
| 80 | |
| 81 private: | |
| 82 // State of animation. | |
| 83 enum AnimateState { | |
| 84 ANIMATE_STATE_NONE, // Doing nothing. | |
| 85 ANIMATE_STATE_WAITING, // Waiting to run background animation. | |
| 86 ANIMATE_STATE_RUNNING, // Running background animation. | |
| 87 }; | |
| 88 | |
| 89 // Callback for |background_change_timer_| to actually start the background | |
| 90 // change animation. | |
| 91 void StartBackgroundChange(); | |
| 92 | |
| 93 // Reset state of animator: reset animate_state_, stop timer or animation, | |
| 94 // Set |notify_observers| to true to notify observers via | |
| 95 // ToolbarSearchAnimatorObserver::BackgroundChangeCanceled. | |
| 96 // Pass in |tab_contents| if animation is canceled because of deactivating or | |
| 97 // detaching or closing a tab. | |
| 98 void Reset(bool notify_observers, TabContents* tab_contents); | |
| 99 | |
| 100 // Caches the search model from browser. | |
|
dhollowa
2012/06/26 18:16:27
// Weak. Owned by Browser. Non-null.
kuan
2012/06/26 23:25:49
Done.
| |
| 101 SearchModel* search_model_; | |
| 102 | |
| 103 // State of animation. | |
| 104 AnimateState animate_state_; | |
| 105 | |
| 106 // The background fade animation. | |
| 107 scoped_ptr<ui::SlideAnimation> background_animation_; | |
| 108 | |
| 109 // The timer to delay start of animation after mode changes from NTP to | |
|
dhollowa
2012/06/26 18:16:27
...from |MODE_NTP| to |MODE_SEARCH|.
kuan
2012/06/26 23:25:49
Done. also changed for all comments in this file.
| |
| 110 // SEARCH. | |
| 111 base::OneShotTimer<ToolbarSearchAnimator> background_change_timer_; | |
| 112 | |
| 113 // Observers. | |
| 114 ObserverList<ToolbarSearchAnimatorObserver> observers_; | |
| 115 | |
| 116 DISALLOW_COPY_AND_ASSIGN(ToolbarSearchAnimator); | |
| 117 }; | |
| 118 | |
| 119 } // namespace chrome | |
| 120 } // namespace search | |
| 121 | |
| 122 #endif // CHROME_BROWSER_UI_SEARCH_TOOLBAR_SEARCH_ANIMATOR_H_ | |
| OLD | NEW |