Index: chrome/browser/extensions/display_info_provider_chromeos.cc |
diff --git a/chrome/browser/extensions/display_info_provider_chromeos.cc b/chrome/browser/extensions/display_info_provider_chromeos.cc |
index 8686809a456df6080dbfc580a3b5c80469dc080b..a489b980cdbc74b67d6034ba3679c2aee2389d11 100644 |
--- a/chrome/browser/extensions/display_info_provider_chromeos.cc |
+++ b/chrome/browser/extensions/display_info_provider_chromeos.cc |
@@ -6,8 +6,10 @@ |
#include <stdint.h> |
+#include "ash/common/wm/maximize_mode/maximize_mode_controller.h" |
#include "ash/display/display_configuration_controller.h" |
#include "ash/display/resolution_notification_controller.h" |
+#include "ash/display/screen_orientation_controller_chromeos.h" |
#include "ash/shell.h" |
#include "ash/touch/ash_touch_transform_controller.h" |
#include "base/strings/string_number_conversions.h" |
@@ -408,6 +410,18 @@ bool ValidateParamsForTouchCalibration( |
return true; |
} |
+bool IsMaximizeModeWindowManagerEnabled() { |
+ return ash::Shell::GetInstance() |
+ ->maximize_mode_controller() |
+ ->IsMaximizeModeWindowManagerEnabled(); |
+} |
+ |
+bool IsUserRotationLocked() { |
+ return ash::Shell::GetInstance() |
+ ->screen_orientation_controller() |
+ ->user_rotation_locked(); |
+} |
+ |
} // namespace |
// static |
@@ -491,9 +505,12 @@ bool DisplayInfoProviderChromeOS::SetInfo( |
// Process 'rotation' parameter. |
if (info.rotation) { |
- display_configuration_controller->SetDisplayRotation( |
- display_id, DegreesToRotation(*info.rotation), |
- display::Display::ROTATION_SOURCE_ACTIVE); |
+ // Do not process 'rotation' on maximize mode with user rotation locked. |
+ if (!IsMaximizeModeWindowManagerEnabled() || !IsUserRotationLocked()) { |
+ display_configuration_controller->SetDisplayRotation( |
+ display_id, DegreesToRotation(*info.rotation), |
+ display::Display::ROTATION_SOURCE_ACTIVE); |
+ } |
} |
// Process new display origin parameters. |