Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef ASH_CONTENT_DISPLAY_SCREEN_ORIENTATION_DELEGATE_CHROMEOS_H_ | 5 #ifndef ASH_CONTENT_DISPLAY_SCREEN_ORIENTATION_DELEGATE_CHROMEOS_H_ |
| 6 #define ASH_CONTENT_DISPLAY_SCREEN_ORIENTATION_DELEGATE_CHROMEOS_H_ | 6 #define ASH_CONTENT_DISPLAY_SCREEN_ORIENTATION_DELEGATE_CHROMEOS_H_ |
| 7 | 7 |
| 8 #include "ash/ash_export.h" | |
| 8 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/observer_list.h" | |
| 9 #include "content/public/browser/screen_orientation_delegate.h" | 11 #include "content/public/browser/screen_orientation_delegate.h" |
| 10 #include "third_party/WebKit/public/platform/WebScreenOrientationLockType.h" | 12 #include "third_party/WebKit/public/platform/WebScreenOrientationLockType.h" |
| 13 #include "ui/gfx/display.h" | |
| 11 | 14 |
| 12 namespace aura { | 15 namespace aura { |
| 13 class Window; | 16 class Window; |
| 14 } | 17 } |
| 15 | 18 |
| 16 namespace content { | 19 namespace content { |
| 17 class WebContents; | 20 class WebContents; |
| 18 } | 21 } |
| 19 | 22 |
| 20 namespace ash { | 23 namespace ash { |
| 21 | 24 |
| 22 // Implements ChromeOS specific functionality for ScreenOrientationProvider. | 25 // Implements ChromeOS specific functionality for ScreenOrientationProvider. |
| 23 class ScreenOrientationDelegate : public content::ScreenOrientationDelegate { | 26 class ASH_EXPORT ScreenOrientationDelegate |
| 27 : public content::ScreenOrientationDelegate { | |
| 24 public: | 28 public: |
| 29 // Observer that reports changes to the state of ScreenOrientationProvider's | |
| 30 // rotation lock. | |
| 31 class Observer { | |
| 32 public: | |
| 33 // Invoked whenever |rotation_locked_| is changed. | |
|
flackr
2014/11/27 15:39:15
Since |rotation_locked_| isn't a member of the obs
jonross
2014/12/10 17:57:30
Done.
| |
| 34 virtual void OnRotationLockChanged(bool rotation_locked) {} | |
| 35 | |
| 36 protected: | |
| 37 virtual ~Observer() {} | |
| 38 }; | |
| 39 | |
| 25 ScreenOrientationDelegate(); | 40 ScreenOrientationDelegate(); |
| 26 virtual ~ScreenOrientationDelegate(); | 41 virtual ~ScreenOrientationDelegate(); |
| 27 | 42 |
| 43 // Add/Remove observers. | |
| 44 void AddObserver(Observer* observer); | |
| 45 void RemoveObserver(Observer* observer); | |
| 46 | |
| 47 bool ignore_display_configuration_updates() const { | |
| 48 return ignore_display_configuration_updates_; | |
| 49 } | |
| 50 | |
| 51 // True if |rotation_lock_| has been set and accelerometer updates should not | |
| 52 // rotate the display. | |
| 53 bool rotation_locked() { return rotation_locked_; } | |
| 54 | |
| 55 // If |rotation_locked| future accelerometer updates should not change the | |
| 56 // display rotation. | |
| 57 void SetRotationLocked(bool rotation_locked); | |
| 58 | |
| 59 // Sets the display rotation and suppresses display notifications. | |
| 60 void SetDisplayRotation(gfx::Display::Rotation rotation); | |
| 61 | |
| 28 // content::ScreenOrientationDelegate: | 62 // content::ScreenOrientationDelegate: |
| 29 bool FullScreenRequired(content::WebContents* web_contents) override; | 63 bool FullScreenRequired(content::WebContents* web_contents) override; |
| 30 void Lock(content::WebContents* web_contents, | 64 void Lock(content::WebContents* web_contents, |
| 31 blink::WebScreenOrientationLockType lock_orientation) override; | 65 blink::WebScreenOrientationLockType lock_orientation) override; |
| 32 bool ScreenOrientationProviderSupported() override; | 66 bool ScreenOrientationProviderSupported() override; |
| 33 void Unlock(content::WebContents* web_contents) override; | 67 void Unlock(content::WebContents* web_contents) override; |
| 34 | 68 |
| 35 private: | 69 private: |
| 70 // Sets the display rotation to |rotation|. Future calls to | |
| 71 // OnAccelerometerUpdated should not be used to change the rotation. | |
|
flackr
2014/11/27 15:39:15
Can you update this comment? OnAccelerometerUpdate
jonross
2014/12/10 17:57:30
Done.
| |
| 72 // SetRotationLocked(false) removes the rotation lock. | |
| 73 void LockRotation(gfx::Display::Rotation rotation); | |
| 74 | |
| 36 // Locks rotation to the angle matching the primary orientation for | 75 // Locks rotation to the angle matching the primary orientation for |
| 37 // |lock_orientation|. | 76 // |lock_orientation|. |
| 38 void LockRotationToPrimaryOrientation( | 77 void LockRotationToPrimaryOrientation( |
| 39 blink::WebScreenOrientationLockType lock_orientation); | 78 blink::WebScreenOrientationLockType lock_orientation); |
| 40 | 79 |
| 41 // Locks rotation to the angle matching the secondary orientation for | 80 // Locks rotation to the angle matching the secondary orientation for |
| 42 // |lock_orientation|. | 81 // |lock_orientation|. |
| 43 void LockRotationToSecondaryOrientation( | 82 void LockRotationToSecondaryOrientation( |
| 44 blink::WebScreenOrientationLockType lock_orientation); | 83 blink::WebScreenOrientationLockType lock_orientation); |
| 45 | 84 |
| 46 // For orientations that do not specify primary or secondary, locks to the | 85 // For orientations that do not specify primary or secondary, locks to the |
| 47 // current rotation if it matches |lock_orientation|. Otherwise locks to a | 86 // current rotation if it matches |lock_orientation|. Otherwise locks to a |
| 48 // matching rotation. | 87 // matching rotation. |
| 49 void LockToRotationMatchingOrientation( | 88 void LockToRotationMatchingOrientation( |
| 50 blink::WebScreenOrientationLockType lock_orientation); | 89 blink::WebScreenOrientationLockType lock_orientation); |
| 51 | 90 |
| 52 // The window that has applied the current lock. No other window can apply a | 91 // The window that has applied the current lock. No other window can apply a |
| 53 // lock until the current window unlocks rotation. | 92 // lock until the current window unlocks rotation. |
| 54 aura::Window* locking_window_; | 93 aura::Window* locking_window_; |
| 55 | 94 |
| 56 // The orientation of the display when at a rotation of 0. | 95 // The orientation of the display when at a rotation of 0. |
| 57 blink::WebScreenOrientationLockType natural_orientation_; | 96 blink::WebScreenOrientationLockType natural_orientation_; |
| 58 | 97 |
| 98 // True when changes being applied cause OnDisplayConfigurationChanged() to be | |
| 99 // called, and for which these changes should be ignored. | |
| 100 bool ignore_display_configuration_updates_; | |
| 101 | |
| 102 // When true then accelerometer updates should not rotate the display. | |
| 103 bool rotation_locked_; | |
| 104 | |
| 105 // Rotation Lock observers. | |
| 106 ObserverList<Observer> observers_; | |
| 107 | |
| 59 DISALLOW_COPY_AND_ASSIGN(ScreenOrientationDelegate); | 108 DISALLOW_COPY_AND_ASSIGN(ScreenOrientationDelegate); |
| 60 }; | 109 }; |
| 61 | 110 |
| 62 } // namespace ash | 111 } // namespace ash |
| 63 | 112 |
| 64 #endif // ASH_CONTENT_DISPLAY_SCREEN_ORIENTATION_DELEGATE_CHROMEOS_H_ | 113 #endif // ASH_CONTENT_DISPLAY_SCREEN_ORIENTATION_DELEGATE_CHROMEOS_H_ |
| OLD | NEW |