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

Unified Diff: chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h

Issue 2046563009: Make the focus, caret, and cursor highlights fade out. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move initialization to header, fix compile error Created 4 years, 6 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: chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h
diff --git a/chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h b/chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h
index d482bc628fa5c9b0b7d9771a01d4da93598a9531..3f68ecad603c04d33d7d8e3f16eae1fb2d8c1db7 100644
--- a/chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h
+++ b/chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h
@@ -24,14 +24,18 @@ class AccessibilityFocusRingController : public FocusRingLayerDelegate {
// Get the single instance of this class.
static AccessibilityFocusRingController* GetInstance();
+ enum FocusRingBehavior { FADE_OUT_FOCUS_RING, PERSIST_FOCUS_RING };
+
// Draw a focus ring around the given set of rects, in global screen
- // coordinates.
- void SetFocusRing(const std::vector<gfx::Rect>& rects);
+ // coordinates. Use |focus_ring_behavior| to specify whether the focus
+ // ring should persist or fade out.
+ void SetFocusRing(const std::vector<gfx::Rect>& rects,
+ FocusRingBehavior focus_ring_behavior);
- // Draw a ring around the mouse cursor.
+ // Draw a ring around the mouse cursor. It fades out automatically.
void SetCursorRing(const gfx::Point& location);
- // Draw a ring around the text caret.
+ // Draw a ring around the text caret. It fades out automatically.
void SetCaretRing(const gfx::Point& location);
protected:
@@ -53,10 +57,11 @@ class AccessibilityFocusRingController : public FocusRingLayerDelegate {
void OnDeviceScaleFactorChanged() override;
void OnAnimationStep(base::TimeTicks timestamp) override;
- void Update();
+ void UpdateFocusRingsFromFocusRects();
void AnimateFocusRings(base::TimeTicks timestamp);
void AnimateCursorRing(base::TimeTicks timestamp);
+ void AnimateCaretRing(base::TimeTicks timestamp);
AccessibilityFocusRing RingFromSortedRects(
const std::vector<gfx::Rect>& rects) const;
@@ -67,18 +72,30 @@ class AccessibilityFocusRingController : public FocusRingLayerDelegate {
gfx::Rect* bottom) const;
bool Intersects(const gfx::Rect& r1, const gfx::Rect& r2) const;
- std::vector<gfx::Rect> rects_;
- std::vector<AccessibilityFocusRing> previous_rings_;
- std::vector<AccessibilityFocusRing> rings_;
- ScopedVector<AccessibilityFocusRingLayer> layers_;
- base::TimeTicks focus_change_time_;
-
- base::TimeTicks cursor_start_time_;
- base::TimeTicks cursor_change_time_;
+ struct LayerAnimationInfo {
+ base::TimeTicks start_time;
+ base::TimeTicks change_time;
+ base::TimeDelta fade_in_time;
+ base::TimeDelta fade_out_time;
+ float opacity = 0;
+ bool smooth = false;
+ };
+ void OnLayerChange(LayerAnimationInfo* animation_info);
+ void ComputeOpacity(LayerAnimationInfo* animation_info,
+ base::TimeTicks timestamp);
+
+ LayerAnimationInfo focus_animation_info_;
+ std::vector<gfx::Rect> focus_rects_;
+ std::vector<AccessibilityFocusRing> previous_focus_rings_;
+ std::vector<AccessibilityFocusRing> focus_rings_;
+ ScopedVector<AccessibilityFocusRingLayer> focus_layers_;
+ FocusRingBehavior focus_ring_behavior_ = FADE_OUT_FOCUS_RING;
+
+ LayerAnimationInfo cursor_animation_info_;
gfx::Point cursor_location_;
- float cursor_opacity_;
std::unique_ptr<AccessibilityCursorRingLayer> cursor_layer_;
+ LayerAnimationInfo caret_animation_info_;
gfx::Point caret_location_;
std::unique_ptr<AccessibilityCursorRingLayer> caret_layer_;

Powered by Google App Engine
This is Rietveld 408576698