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

Unified Diff: ash/display/screen_orientation_controller_chromeos.h

Issue 2757493002: User orientation lock (Closed)
Patch Set: rebase again Created 3 years, 9 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: ash/display/screen_orientation_controller_chromeos.h
diff --git a/ash/display/screen_orientation_controller_chromeos.h b/ash/display/screen_orientation_controller_chromeos.h
index 118952314e7509b189b6e1cd70adb7f56f3fdf7f..069d5177930178938e58920975fd900ae3edb449 100644
--- a/ash/display/screen_orientation_controller_chromeos.h
+++ b/ash/display/screen_orientation_controller_chromeos.h
@@ -20,6 +20,9 @@
#include "ui/wm/public/activation_change_observer.h"
namespace ash {
+namespace test {
+class ScreenOrientationControllerTestApi;
+}
// Implements ChromeOS specific functionality for ScreenOrientationProvider.
class ASH_EXPORT ScreenOrientationController
@@ -33,8 +36,8 @@ class ASH_EXPORT ScreenOrientationController
// rotation lock.
class Observer {
public:
- // Invoked when rotation is locked or unlocked.
- virtual void OnRotationLockChanged(bool rotation_locked) {}
+ // Invoked when rotation is locked or unlocked by a user.
+ virtual void OnUserRotationLockChanged() {}
protected:
virtual ~Observer() {}
@@ -66,15 +69,15 @@ class ASH_EXPORT ScreenOrientationController
// rotate the display.
bool rotation_locked() const { return rotation_locked_; }
- // If |rotation_locked| future accelerometer updates should not change the
- // display rotation.
- void SetRotationLocked(bool rotation_locked);
+ bool user_rotation_locked() const {
+ return user_locked_orientation_ != blink::WebScreenOrientationLockAny;
+ }
- // Sets the display rotation for the given |source|. The new |rotation| will
- // also become active. Display changed notifications are surpressed for this
- // change.
- void SetDisplayRotation(display::Display::Rotation rotation,
- display::Display::RotationSource source);
+ // Trun on/off the user rotation lock. When turned on, it will lock
+ // the orientation to the current orientation.
+ // |user_rotation_locked()| method returns the current state of the
+ // user rotation lock.
+ void ToggleUserRotationLock();
// aura::client::ActivationChangeObserver:
void OnWindowActivated(ActivationReason reason,
@@ -97,6 +100,16 @@ class ASH_EXPORT ScreenOrientationController
void OnMaximizeModeEnded() override;
private:
+ friend class test::ScreenOrientationControllerTestApi;
+
+ // Sets the display rotation for the given |source|. The new |rotation| will
+ // also become active. Display changed notifications are surpressed for this
+ // change.
+ void SetDisplayRotation(display::Display::Rotation rotation,
+ display::Display::RotationSource source);
+
+ void SetRotationLockedInternal(bool rotation_locked);
+
// Sets the display rotation to |rotation|. Future accelerometer updates
// should not be used to change the rotation. SetRotationLocked(false) removes
// the rotation lock.
@@ -166,6 +179,10 @@ class ASH_EXPORT ScreenOrientationController
// restored upon exiting maximize mode.
display::Display::Rotation user_rotation_;
+ // The orientation of the device locked by the user.
+ blink::WebScreenOrientationLockType user_locked_orientation_ =
+ blink::WebScreenOrientationLockAny;
+
// The current rotation set by ScreenOrientationController for the internal
// display.
display::Display::Rotation current_rotation_;

Powered by Google App Engine
This is Rietveld 408576698