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

Unified Diff: ash/monitor/multi_monitor_manager.cc

Issue 10675011: Rename the remaining usage of Monitor to Display (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 8 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
« no previous file with comments | « ash/monitor/multi_monitor_manager.h ('k') | ash/monitor/multi_monitor_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/monitor/multi_monitor_manager.cc
diff --git a/ash/monitor/multi_monitor_manager.cc b/ash/monitor/multi_monitor_manager.cc
deleted file mode 100644
index 70bf90de67c3386ded202f8b4a3beec4201d5cda..0000000000000000000000000000000000000000
--- a/ash/monitor/multi_monitor_manager.cc
+++ /dev/null
@@ -1,247 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/monitor/multi_monitor_manager.h"
-
-#include <string>
-#include <vector>
-
-#include "base/command_line.h"
-#include "base/stl_util.h"
-#include "base/string_split.h"
-#include "ui/aura/aura_switches.h"
-#include "ui/aura/env.h"
-#include "ui/aura/root_window.h"
-#include "ui/aura/root_window_host.h"
-#include "ui/aura/window_property.h"
-#include "ui/gfx/display.h"
-#include "ui/gfx/rect.h"
-
-DECLARE_WINDOW_PROPERTY_TYPE(int);
-
-namespace ash {
-namespace internal {
-namespace {
-
-gfx::Display& GetInvalidDisplay() {
- static gfx::Display* invalid_display = new gfx::Display();
- return *invalid_display;
-}
-
-} // namespace
-
-using aura::RootWindow;
-using aura::Window;
-using std::string;
-using std::vector;
-
-DEFINE_WINDOW_PROPERTY_KEY(int, kMonitorIdKey, -1);
-
-MultiMonitorManager::MultiMonitorManager() {
- Init();
-}
-
-MultiMonitorManager::~MultiMonitorManager() {
-}
-
-// static
-void MultiMonitorManager::AddRemoveMonitor() {
- MultiMonitorManager* manager = static_cast<MultiMonitorManager*>(
- aura::Env::GetInstance()->monitor_manager());
- manager->AddRemoveMonitorImpl();
-}
-
-void MultiMonitorManager::CycleMonitor() {
- MultiMonitorManager* manager = static_cast<MultiMonitorManager*>(
- aura::Env::GetInstance()->monitor_manager());
- manager->CycleMonitorImpl();
-}
-
- void MultiMonitorManager::ToggleMonitorScale() {
- MultiMonitorManager* manager = static_cast<MultiMonitorManager*>(
- aura::Env::GetInstance()->monitor_manager());
- manager->ScaleMonitorImpl();
-}
-
-void MultiMonitorManager::OnNativeMonitorsChanged(
- const std::vector<gfx::Display>& new_displays) {
- size_t min = std::min(displays_.size(), new_displays.size());
-
- // For m19, we only care about 1st monitor as primary, and
- // don't differentiate the rest of monitors as all secondary
- // monitors have the same content. ID for primary monitor stays the same
- // because we never remove it, we don't update IDs for other monitors
- // , for now, because they're the same.
- // TODO(oshima): Fix this so that we can differentiate outputs
- // and keep a content on one monitor stays on the same monitor
- // when a monitor is added or removed.
- for (size_t i = 0; i < min; ++i) {
- gfx::Display& current_display = displays_[i];
- const gfx::Display& new_display = new_displays[i];
- if (current_display.bounds_in_pixel() != new_display.bounds_in_pixel() ||
- current_display.device_scale_factor() !=
- new_display.device_scale_factor()) {
- current_display.SetScaleAndBounds(new_display.device_scale_factor(),
- new_display.bounds_in_pixel());
- NotifyBoundsChanged(current_display);
- }
- }
-
- if (displays_.size() < new_displays.size()) {
- // New monitors added
- for (size_t i = min; i < new_displays.size(); ++i) {
- const gfx::Display& new_display = new_displays[i];
- displays_.push_back(gfx::Display(new_display.id()));
- gfx::Display& display = displays_.back();
- // Force the primary display's ID to be 0.
- if (i == 0)
- display.set_id(0);
- display.SetScaleAndBounds(new_display.device_scale_factor(),
- new_display.bounds_in_pixel());
- NotifyDisplayAdded(display);
- }
- } else {
- // Monitors are removed. We keep the monitor for the primary
- // monitor (at index 0) because it needs the monitor information
- // even if it doesn't exit.
- while (displays_.size() > new_displays.size() && displays_.size() > 1) {
- Displays::reverse_iterator iter = displays_.rbegin();
- NotifyDisplayRemoved(*iter);
- displays_.erase(iter.base() - 1);
- }
- }
-}
-
-RootWindow* MultiMonitorManager::CreateRootWindowForMonitor(
- const gfx::Display& display) {
- RootWindow* root_window = new RootWindow(display.bounds_in_pixel());
- // No need to remove RootWindowObserver because
- // the MonitorManager object outlives RootWindow objects.
- root_window->AddRootWindowObserver(this);
- root_window->SetProperty(kMonitorIdKey, display.id());
- root_window->Init();
- return root_window;
-}
-
-const gfx::Display& MultiMonitorManager::GetDisplayAt(size_t index) {
- return index < displays_.size() ? displays_[index] : GetInvalidDisplay();
-}
-
-size_t MultiMonitorManager::GetNumDisplays() const {
- return displays_.size();
-}
-
-const gfx::Display& MultiMonitorManager::GetDisplayNearestWindow(
- const Window* window) const {
- if (!window) {
- MultiMonitorManager* manager = const_cast<MultiMonitorManager*>(this);
- return manager->GetDisplayAt(0);
- }
- const RootWindow* root = window->GetRootWindow();
- MultiMonitorManager* manager = const_cast<MultiMonitorManager*>(this);
- return root ? manager->FindDisplayForRootWindow(root) : GetInvalidDisplay();
-}
-
-const gfx::Display& MultiMonitorManager::GetDisplayNearestPoint(
- const gfx::Point& point) const {
- // TODO(oshima): For m19, mouse is constrained within
- // the primary window.
- MultiMonitorManager* manager = const_cast<MultiMonitorManager*>(this);
- return manager->GetDisplayAt(0);
-}
-
-void MultiMonitorManager::OnRootWindowResized(const aura::RootWindow* root,
- const gfx::Size& old_size) {
- if (!use_fullscreen_host_window()) {
- gfx::Display& display = FindDisplayForRootWindow(root);
- display.SetSize(root->GetHostSize());
- NotifyBoundsChanged(display);
- }
-}
-
-bool MultiMonitorManager::UpdateWorkAreaOfMonitorNearestWindow(
- const aura::Window* window,
- const gfx::Insets& insets) {
- const RootWindow* root = window->GetRootWindow();
- gfx::Display& display = FindDisplayForRootWindow(root);
- gfx::Rect old_work_area = display.work_area();
- display.UpdateWorkAreaFromInsets(insets);
- return old_work_area != display.work_area();
-}
-
-void MultiMonitorManager::Init() {
- // TODO(oshima): Move this logic to MonitorChangeObserver.
- const string size_str = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
- switches::kAuraHostWindowSize);
- vector<string> parts;
- base::SplitString(size_str, ',', &parts);
- for (vector<string>::const_iterator iter = parts.begin();
- iter != parts.end(); ++iter) {
- displays_.push_back(CreateMonitorFromSpec(*iter));
- }
- if (displays_.empty())
- displays_.push_back(CreateMonitorFromSpec("" /* default */));
- // Force the 1st display to be the primary display (id == 0).
- displays_[0].set_id(0);
-}
-
-void MultiMonitorManager::AddRemoveMonitorImpl() {
- std::vector<gfx::Display> new_displays;
- if (displays_.size() > 1) {
- // Remove if there is more than one display.
- int count = displays_.size() - 1;
- for (Displays::const_iterator iter = displays_.begin(); count-- > 0; ++iter)
- new_displays.push_back(*iter);
- } else {
- // Add if there is only one display.
- new_displays.push_back(displays_[0]);
- new_displays.push_back(CreateMonitorFromSpec("50+50-1280x768"));
- }
- if (new_displays.size())
- OnNativeMonitorsChanged(new_displays);
-}
-
-void MultiMonitorManager::CycleMonitorImpl() {
- if (displays_.size() > 1) {
- std::vector<gfx::Display> new_displays;
- for (Displays::const_iterator iter = displays_.begin() + 1;
- iter != displays_.end(); ++iter) {
- gfx::Display display = *iter;
- new_displays.push_back(display);
- }
- new_displays.push_back(displays_.front());
- OnNativeMonitorsChanged(new_displays);
- }
-}
-
-void MultiMonitorManager::ScaleMonitorImpl() {
- if (displays_.size() > 0) {
- std::vector<gfx::Display> new_displays;
- for (Displays::const_iterator iter = displays_.begin();
- iter != displays_.end(); ++iter) {
- gfx::Display display = *iter;
- float factor = display.device_scale_factor() == 1.0f ? 2.0f : 1.0f;
- display.SetScaleAndBounds(
- factor, gfx::Rect(display.bounds_in_pixel().origin(),
- display.size().Scale(factor)));
- new_displays.push_back(display);
- }
- OnNativeMonitorsChanged(new_displays);
- }
-}
-
-gfx::Display& MultiMonitorManager::FindDisplayForRootWindow(
- const aura::RootWindow* root_window) {
- int id = root_window->GetProperty(kMonitorIdKey);
- for (Displays::iterator iter = displays_.begin();
- iter != displays_.end(); ++iter) {
- if ((*iter).id() == id)
- return *iter;
- }
- DLOG(FATAL) << "Could not find display by id:" << id;
- return GetInvalidDisplay();
-}
-
-} // namespace internal
-} // namespace ash
« no previous file with comments | « ash/monitor/multi_monitor_manager.h ('k') | ash/monitor/multi_monitor_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698