summaryrefslogtreecommitdiff
path: root/chromium/ui/display/screen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/display/screen.cc')
-rw-r--r--chromium/ui/display/screen.cc20
1 files changed, 19 insertions, 1 deletions
diff --git a/chromium/ui/display/screen.cc b/chromium/ui/display/screen.cc
index ef1d381d9e2..c289415a1a1 100644
--- a/chromium/ui/display/screen.cc
+++ b/chromium/ui/display/screen.cc
@@ -6,7 +6,8 @@
#include <utility>
-#include "base/logging.h"
+#include "base/check.h"
+#include "base/notreached.h"
#include "ui/display/display.h"
#include "ui/display/types/display_constants.h"
#include "ui/gfx/geometry/rect.h"
@@ -44,6 +45,12 @@ Display Screen::GetDisplayNearestView(gfx::NativeView view) const {
display::Display Screen::GetDisplayForNewWindows() const {
display::Display display;
+ // Scoped value can override if it is set.
+ if (scoped_display_id_for_new_windows_ != kInvalidDisplayId &&
+ GetDisplayWithDisplayId(scoped_display_id_for_new_windows_, &display)) {
+ return display;
+ }
+
if (GetDisplayWithDisplayId(display_id_for_new_windows_, &display))
return display;
@@ -90,4 +97,15 @@ std::string Screen::GetCurrentWorkspace() {
return {};
}
+void Screen::SetScopedDisplayForNewWindows(int64_t display_id) {
+ if (display_id == scoped_display_id_for_new_windows_)
+ return;
+ // Only allow set and clear, not switch.
+ DCHECK(display_id == kInvalidDisplayId ^
+ scoped_display_id_for_new_windows_ == kInvalidDisplayId)
+ << "display_id=" << display_id << ", scoped_display_id_for_new_windows_="
+ << scoped_display_id_for_new_windows_;
+ scoped_display_id_for_new_windows_ = display_id;
+}
+
} // namespace display