Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4247)

Unified Diff: cc/input/single_scrollbar_animation_controller_thinning.h

Issue 2554913002: Prevent overlay scrollbars expand or hover together (Closed)
Patch Set: for weiliangc's nit Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/input/single_scrollbar_animation_controller_thinning.h
diff --git a/cc/input/scrollbar_animation_controller_thinning.h b/cc/input/single_scrollbar_animation_controller_thinning.h
similarity index 50%
copy from cc/input/scrollbar_animation_controller_thinning.h
copy to cc/input/single_scrollbar_animation_controller_thinning.h
index 236e595ea263ec5d9f090d913005b34bfbbcd967..b9743874b844ed980191be7b0fa46540a3e9bd8d 100644
--- a/cc/input/scrollbar_animation_controller_thinning.h
+++ b/cc/input/single_scrollbar_animation_controller_thinning.h
@@ -2,76 +2,83 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CC_INPUT_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
-#define CC_INPUT_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
+#ifndef CC_INPUT_SINGLE_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
+#define CC_INPUT_SINGLE_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
#include <memory>
#include "base/macros.h"
+#include "base/time/time.h"
#include "cc/base/cc_export.h"
-#include "cc/input/scrollbar_animation_controller.h"
+#include "cc/input/scrollbar.h"
+#include "cc/layers/layer_impl.h"
+#include "cc/layers/scrollbar_layer_impl_base.h"
+#include "ui/gfx/geometry/vector2d_f.h"
namespace cc {
-// Scrollbar animation that partially fades and thins after an idle delay,
-// and reacts to mouse movements.
-class CC_EXPORT ScrollbarAnimationControllerThinning
- : public ScrollbarAnimationController {
+class ScrollbarAnimationControllerClient;
+
+// ScrollbarAnimationControllerThinning for one scrollbar
+class CC_EXPORT SingleScrollbarAnimationControllerThinning {
public:
- static std::unique_ptr<ScrollbarAnimationControllerThinning> Create(
+ static std::unique_ptr<SingleScrollbarAnimationControllerThinning> Create(
int scroll_layer_id,
+ ScrollbarOrientation orientation,
ScrollbarAnimationControllerClient* client,
- base::TimeDelta delay_before_starting,
- base::TimeDelta resize_delay_before_starting,
- base::TimeDelta fade_duration,
base::TimeDelta thinning_duration);
- ~ScrollbarAnimationControllerThinning() override;
+ ~SingleScrollbarAnimationControllerThinning() {}
void set_mouse_move_distance_for_test(float distance) {
mouse_move_distance_to_trigger_animation_ = distance;
}
bool mouse_is_over_scrollbar() const { return mouse_is_over_scrollbar_; }
bool mouse_is_near_scrollbar() const { return mouse_is_near_scrollbar_; }
+ bool captured() const { return captured_; }
+
+ bool Animate(base::TimeTicks now);
+ void StartAnimation();
+ void StopAnimation();
- void DidScrollUpdate(bool on_resize) override;
- void DidScrollEnd() override;
+ void UpdateThumbThicknessScale();
- void DidMouseDown() override;
- void DidMouseUp() override;
- void DidMouseLeave() override;
- void DidMouseMoveNear(float distance) override;
- bool ScrollbarsHidden() const override;
+ void DidMouseDown();
+ void DidMouseUp();
+ void DidMouseLeave();
+ void DidMouseMoveNear(float distance);
- protected:
- ScrollbarAnimationControllerThinning(
+ private:
+ SingleScrollbarAnimationControllerThinning(
int scroll_layer_id,
+ ScrollbarOrientation orientation,
ScrollbarAnimationControllerClient* client,
- base::TimeDelta delay_before_starting,
- base::TimeDelta resize_delay_before_starting,
- base::TimeDelta fade_duration,
base::TimeDelta thinning_duration);
- void RunAnimationFrame(float progress) override;
- const base::TimeDelta& Duration() override;
+ float AnimationProgressAtTime(base::TimeTicks now);
+ void RunAnimationFrame(float progress);
+ const base::TimeDelta& Duration();
- private:
// Describes whether the current animation should INCREASE (thicken)
// a bar or DECREASE it (thin).
enum AnimationChange { NONE, INCREASE, DECREASE };
- enum AnimatingProperty { OPACITY, THICKNESS };
float ThumbThicknessScaleAt(float progress);
+
float AdjustScale(float new_value,
float current_value,
AnimationChange animation_change,
float min_value,
float max_value);
- void ApplyOpacity(float opacity);
void ApplyThumbThicknessScale(float thumb_thickness_scale);
- void SetCurrentAnimatingProperty(AnimatingProperty property);
+ ScrollbarAnimationControllerClient* client_;
+
+ base::TimeTicks last_awaken_time_;
+ bool is_animating_;
- float opacity_;
+ int scroll_layer_id_;
+
+ ScrollbarOrientation orientation_;
bool captured_;
bool mouse_is_over_scrollbar_;
bool mouse_is_near_scrollbar_;
@@ -80,14 +87,11 @@ class CC_EXPORT ScrollbarAnimationControllerThinning
// How close should the mouse be to the scrollbar before we thicken it.
float mouse_move_distance_to_trigger_animation_;
- base::TimeDelta fade_duration_;
base::TimeDelta thinning_duration_;
- AnimatingProperty current_animating_property_;
-
- DISALLOW_COPY_AND_ASSIGN(ScrollbarAnimationControllerThinning);
+ DISALLOW_COPY_AND_ASSIGN(SingleScrollbarAnimationControllerThinning);
};
} // namespace cc
-#endif // CC_INPUT_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_
+#endif // CC_INPUT_SINGLE_SCROLLBAR_ANIMATION_CONTROLLER_THINNING_H_

Powered by Google App Engine
This is Rietveld 408576698