diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-19 16:40:19 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-19 16:40:19 +0000 |
commit | 832533522200888ff004f1ceac10d730d58010f6 (patch) | |
tree | 92fa966968c0887b50c4bd050b35899c5c493755 | |
parent | 18cdb0e4680927e33e8484364a6ec1cf9f77d91e (diff) | |
download | chromium_src-832533522200888ff004f1ceac10d730d58010f6.zip chromium_src-832533522200888ff004f1ceac10d730d58010f6.tar.gz chromium_src-832533522200888ff004f1ceac10d730d58010f6.tar.bz2 |
Save display preference when all display configuration changes has been completed.
Add OnDisplayConfigurationChanged to DisplayController::Observer
Save primary only in ExtededDesktop mode
TBR=sky@chromium.org
BUG=196818
TEST=covered by test, and also tested manually.
Review URL: https://chromiumcodereview.appspot.com/12438016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189040 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ash/display/display_controller.cc | 9 | ||||
-rw-r--r-- | ash/display/display_controller.h | 8 | ||||
-rw-r--r-- | ash/display/display_controller_unittest.cc | 54 | ||||
-rw-r--r-- | ash/display/display_manager.cc | 27 | ||||
-rw-r--r-- | chrome/browser/chromeos/chrome_browser_main_chromeos.cc | 8 | ||||
-rw-r--r-- | chrome/browser/chromeos/chrome_browser_main_chromeos.h | 6 | ||||
-rw-r--r-- | chrome/browser/chromeos/display/display_configuration_observer.cc | 28 | ||||
-rw-r--r-- | chrome/browser/chromeos/display/display_configuration_observer.h | 31 | ||||
-rw-r--r-- | chrome/browser/chromeos/display/display_preferences.cc | 11 | ||||
-rw-r--r-- | chrome/browser/chromeos/display/primary_display_switch_observer.cc | 39 | ||||
-rw-r--r-- | chrome/browser/chromeos/display/primary_display_switch_observer.h | 45 | ||||
-rw-r--r-- | chrome/chrome_browser_chromeos.gypi | 4 |
12 files changed, 152 insertions, 118 deletions
diff --git a/ash/display/display_controller.cc b/ash/display/display_controller.cc index 2db32f7..551214d 100644 --- a/ash/display/display_controller.cc +++ b/ash/display/display_controller.cc @@ -457,6 +457,7 @@ void DisplayController::SetDefaultDisplayLayout(const DisplayLayout& layout) { default_display_layout_ = layout; NotifyDisplayConfigurationChanging(); UpdateDisplayBoundsForLayout(); + NotifyDisplayConfigurationChanged(); } } @@ -498,6 +499,7 @@ void DisplayController::SetLayoutForCurrentDisplays( paired_layouts_[pair] = to_set; NotifyDisplayConfigurationChanging(); UpdateDisplayBoundsForLayout(); + NotifyDisplayConfigurationChanged(); } } @@ -670,7 +672,6 @@ void DisplayController::OnDisplayBoundsChanged(const gfx::Display& display) { GetDisplayManager()->GetDisplayInfo(display); DCHECK(!display_info.bounds_in_pixel().IsEmpty()); - NotifyDisplayConfigurationChanging(); UpdateDisplayBoundsForLayout(); aura::RootWindow* root = root_windows_[display.id()]; root->SetHostBoundsAndInsetsAndRootWindowScale( @@ -684,7 +685,6 @@ void DisplayController::OnDisplayAdded(const gfx::Display& display) { if (limiter_.get()) limiter_->SetThrottleTimeout(kAfterDisplayChangeThrottleTimeoutMs); - NotifyDisplayConfigurationChanging(); if (primary_root_window_for_replace_) { DCHECK(root_windows_.empty()); primary_display_id = display.id(); @@ -715,7 +715,6 @@ void DisplayController::OnDisplayRemoved(const gfx::Display& display) { aura::RootWindow* root_to_delete = root_windows_[display.id()]; DCHECK(root_to_delete) << display.ToString(); - NotifyDisplayConfigurationChanging(); // Display for root window will be deleted when the Primary RootWindow // is deleted by the Shell. @@ -847,6 +846,10 @@ void DisplayController::NotifyDisplayConfigurationChanging() { FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanging()); } +void DisplayController::NotifyDisplayConfigurationChanged() { + FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanged()); +} + void DisplayController::RegisterLayoutForDisplayIdPairInternal( int64 id1, int64 id2, diff --git a/ash/display/display_controller.h b/ash/display/display_controller.h index eb6f487..f58dc12 100644 --- a/ash/display/display_controller.h +++ b/ash/display/display_controller.h @@ -30,6 +30,7 @@ template <typename T> class JSONValueConverter; namespace ash { namespace internal { +class DisplayManager; class RootWindowController; } @@ -79,6 +80,10 @@ class ASH_EXPORT DisplayController : public gfx::DisplayObserver { // but before the change is applied to aura/ash. virtual void OnDisplayConfigurationChanging() = 0; + // Invoked when the all display configuration changes + // have been applied. + virtual void OnDisplayConfigurationChanged() {}; + protected: virtual ~Observer() {} }; @@ -180,6 +185,8 @@ class ASH_EXPORT DisplayController : public gfx::DisplayObserver { virtual void OnDisplayRemoved(const gfx::Display& display) OVERRIDE; private: + friend class internal::DisplayManager; + // Create a root window for given |display|. aura::RootWindow* CreateRootWindowForDisplay(const gfx::Display& display); @@ -190,6 +197,7 @@ class ASH_EXPORT DisplayController : public gfx::DisplayObserver { void UpdateDisplayBoundsForLayout(); void NotifyDisplayConfigurationChanging(); + void NotifyDisplayConfigurationChanged(); void SetLayoutForDisplayIdPair(const DisplayIdPair& display_pair, const DisplayLayout& layout); diff --git a/ash/display/display_controller_unittest.cc b/ash/display/display_controller_unittest.cc index 23d6c20..d1713f0 100644 --- a/ash/display/display_controller_unittest.cc +++ b/ash/display/display_controller_unittest.cc @@ -27,7 +27,7 @@ namespace { class TestObserver : public DisplayController::Observer { public: - TestObserver() : count_(0) { + TestObserver() : changing_count_(0), changed_count_(0) { Shell::GetInstance()->display_controller()->AddObserver(this); } @@ -36,17 +36,23 @@ class TestObserver : public DisplayController::Observer { } virtual void OnDisplayConfigurationChanging() OVERRIDE { - ++count_; + ++changing_count_; + } + + virtual void OnDisplayConfigurationChanged() OVERRIDE { + ++changed_count_; } int CountAndReset() { - int c = count_; - count_ = 0; + EXPECT_EQ(changing_count_, changed_count_); + int c = changing_count_; + changing_count_ = changed_count_ = 0; return c; } private: - int count_; + int changing_count_; + int changed_count_; DISALLOW_COPY_AND_ASSIGN(TestObserver); }; @@ -127,7 +133,7 @@ TEST_F(DisplayControllerShutdownTest, Shutdown) { TEST_F(DisplayControllerTest, SecondaryDisplayLayout) { TestObserver observer; UpdateDisplay("500x500,400x400"); - EXPECT_EQ(2, observer.CountAndReset()); // resize and add + EXPECT_EQ(1, observer.CountAndReset()); // resize and add gfx::Display* secondary_display = Shell::GetInstance()->display_manager()->GetDisplayAt(1); gfx::Insets insets(5, 5, 5, 5); @@ -198,10 +204,11 @@ TEST_F(DisplayControllerTest, BoundsUpdated) { TestObserver observer; SetSecondaryDisplayLayout(DisplayLayout::BOTTOM); UpdateDisplay("200x200,300x300"); // layout, resize and add. - EXPECT_EQ(3, observer.CountAndReset()); + EXPECT_EQ(2, observer.CountAndReset()); - gfx::Display* secondary_display = - Shell::GetInstance()->display_manager()->GetDisplayAt(1); + internal::DisplayManager* display_manager = + Shell::GetInstance()->display_manager(); + gfx::Display* secondary_display = display_manager->GetDisplayAt(1); gfx::Insets insets(5, 5, 5, 5); secondary_display->UpdateWorkAreaFromInsets(insets); @@ -210,7 +217,7 @@ TEST_F(DisplayControllerTest, BoundsUpdated) { EXPECT_EQ("5,205 290x290", GetSecondaryDisplay().work_area().ToString()); UpdateDisplay("400x400,200x200"); - EXPECT_EQ(2, observer.CountAndReset()); // two resizes + EXPECT_EQ(1, observer.CountAndReset()); // two resizes EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString()); EXPECT_EQ("0,400 200x200", GetSecondaryDisplay().bounds().ToString()); if (!ash::Shell::IsLauncherPerDisplayEnabled()) @@ -228,11 +235,30 @@ TEST_F(DisplayControllerTest, BoundsUpdated) { EXPECT_EQ("0,0 400x400", GetPrimaryDisplay().bounds().ToString()); EXPECT_EQ(1, Shell::GetScreen()->GetNumDisplays()); - UpdateDisplay("500x500,700x700"); - EXPECT_EQ(2, observer.CountAndReset()); + UpdateDisplay("400x500,700x700*2"); + EXPECT_EQ(1, observer.CountAndReset()); ASSERT_EQ(2, Shell::GetScreen()->GetNumDisplays()); - EXPECT_EQ("0,0 500x500", GetPrimaryDisplay().bounds().ToString()); - EXPECT_EQ("0,500 700x700", GetSecondaryDisplay().bounds().ToString()); + EXPECT_EQ("0,0 400x500", GetPrimaryDisplay().bounds().ToString()); + EXPECT_EQ("0,500 350x350", GetSecondaryDisplay().bounds().ToString()); + + // No change + UpdateDisplay("400x500,700x700*2"); + EXPECT_EQ(0, observer.CountAndReset()); + + // Rotation + int64 primary_id = GetPrimaryDisplay().id(); + display_manager->SetDisplayRotation(primary_id, gfx::Display::ROTATE_90); + EXPECT_EQ(1, observer.CountAndReset()); + display_manager->SetDisplayRotation(primary_id, gfx::Display::ROTATE_90); + EXPECT_EQ(0, observer.CountAndReset()); + + // UI scale + int64 secondary_id = GetSecondaryDisplay().id(); + gfx::Display::SetInternalDisplayId(secondary_id); + display_manager->SetDisplayUIScale(secondary_id, 1.25f); + EXPECT_EQ(1, observer.CountAndReset()); + display_manager->SetDisplayUIScale(secondary_id, 1.25f); + EXPECT_EQ(0, observer.CountAndReset()); } TEST_F(DisplayControllerTest, InvertLayout) { diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc index ad92a5e..bf4d188 100644 --- a/ash/display/display_manager.cc +++ b/ash/display/display_manager.cc @@ -179,8 +179,11 @@ void DisplayManager::SetDisplayRotation(int64 display_id, for (DisplayList::const_iterator iter = displays_.begin(); iter != displays_.end(); ++iter) { DisplayInfo info = GetDisplayInfo(*iter); - if (info.id() == display_id) + if (info.id() == display_id) { + if (info.rotation() == rotation) + return; info.set_rotation(rotation); + } display_info_list.push_back(info); } UpdateDisplays(display_info_list); @@ -194,8 +197,11 @@ void DisplayManager::SetDisplayUIScale(int64 display_id, for (DisplayList::const_iterator iter = displays_.begin(); iter != displays_.end(); ++iter) { DisplayInfo info = GetDisplayInfo(*iter); - if (info.id() == display_id) + if (info.id() == display_id) { + if (info.ui_scale() == ui_scale) + return; info.set_ui_scale(ui_scale); + } display_info_list.push_back(info); } UpdateDisplays(display_info_list); @@ -217,9 +223,12 @@ bool DisplayManager::IsDisplayUIScalingEnabled() const { // 2x density (currently Pixel). int64 display_id = gfx::Display::InternalDisplayId(); #if defined(OS_CHROMEOS) - // On linux desktop, allow ui scaling on the first dislpay. - if (!base::chromeos::IsRunningOnChromeOS()) + // On linux desktop, allow ui scaling on the first dislpay if an internal + // display isn't specified. + if (display_id == gfx::Display::kInvalidDisplayID && + !base::chromeos::IsRunningOnChromeOS()) { display_id = Shell::GetInstance()->display_manager()->first_display_id(); + } #endif return GetDisplayForId(display_id).device_scale_factor() == 2.0f; } @@ -371,6 +380,12 @@ void DisplayManager::UpdateDisplays( // being removed are accessed during shutting down the root. displays_.insert(displays_.end(), removed_displays.begin(), removed_displays.end()); + DisplayController* display_controller = + Shell::GetInstance()->display_controller(); + // |display_controller| is NULL during the bootstrap. + if (display_controller) + display_controller->NotifyDisplayConfigurationChanging(); + for (DisplayList::const_reverse_iterator iter = removed_displays.rbegin(); iter != removed_displays.rend(); ++iter) { Shell::GetInstance()->screen()->NotifyDisplayRemoved(displays_.back()); @@ -384,8 +399,10 @@ void DisplayManager::UpdateDisplays( iter != changed_display_indices.end(); ++iter) { Shell::GetInstance()->screen()->NotifyBoundsChanged(displays_[*iter]); } - EnsurePointerInDisplays(); + if (display_controller) + display_controller->NotifyDisplayConfigurationChanged(); + EnsurePointerInDisplays(); #if defined(USE_X11) && defined(OS_CHROMEOS) if (!changed_display_indices.empty() && base::chromeos::IsRunningOnChromeOS()) ui::ClearX11DefaultRootWindow(); diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc index 9ade8bc..d2f0125 100644 --- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc +++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc @@ -31,8 +31,8 @@ #include "chrome/browser/chromeos/contacts/contact_manager.h" #include "chrome/browser/chromeos/cros/cros_library.h" #include "chrome/browser/chromeos/dbus/cros_dbus_service.h" +#include "chrome/browser/chromeos/display/display_configuration_observer.h" #include "chrome/browser/chromeos/display/display_preferences.h" -#include "chrome/browser/chromeos/display/primary_display_switch_observer.h" #include "chrome/browser/chromeos/extensions/default_app_order.h" #include "chrome/browser/chromeos/external_metrics.h" #include "chrome/browser/chromeos/imageburner/burn_manager.h" @@ -633,8 +633,8 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() { NotifyDisplayLocalStatePrefChanged(); - primary_display_switch_observer_.reset( - new PrimaryDisplaySwitchObserver()); + display_configuration_observer_.reset( + new DisplayConfigurationObserver()); automatic_reboot_manager_.reset(new system::AutomaticRebootManager( scoped_ptr<base::TickClock>(new base::DefaultTickClock))); @@ -733,7 +733,7 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() { // before the shell is destroyed. user_activity_notifier_.reset(); video_activity_notifier_.reset(); - primary_display_switch_observer_.reset(); + display_configuration_observer_.reset(); // Detach D-Bus clients before DBusThreadManager is shut down. power_button_observer_.reset(); diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.h b/chrome/browser/chromeos/chrome_browser_main_chromeos.h index d169ce2..f80bfd3 100644 --- a/chrome/browser/chromeos/chrome_browser_main_chromeos.h +++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.h @@ -18,18 +18,18 @@ class ContactManager; namespace chromeos { class BrightnessObserver; +class DisplayConfigurationObserver; class KioskAppLauncher; class MagnificationManager; class OutputObserver; class PowerButtonObserver; class PowerStateOverride; -class PrimaryDisplaySwitchObserver; -class StorageMonitorCros; class ResumeObserver; class ScreenDimmingObserver; class ScreenLockObserver; class ScreensaverController; class SessionManagerObserver; +class StorageMonitorCros; class SuspendObserver; class UserActivityNotifier; class VideoActivityNotifier; @@ -79,6 +79,7 @@ class ChromeBrowserMainPartsChromeos : public ChromeBrowserMainPartsLinux { scoped_ptr<contacts::ContactManager> contact_manager_; scoped_ptr<BrightnessObserver> brightness_observer_; + scoped_ptr<DisplayConfigurationObserver> display_configuration_observer_; scoped_ptr<default_app_order::ExternalLoader> app_order_loader_; scoped_ptr<OutputObserver> output_observer_; scoped_ptr<SuspendObserver> suspend_observer_; @@ -87,7 +88,6 @@ class ChromeBrowserMainPartsChromeos : public ChromeBrowserMainPartsLinux { scoped_ptr<ScreensaverController> screensaver_controller_; scoped_ptr<PowerButtonObserver> power_button_observer_; scoped_refptr<PowerStateOverride> power_state_override_; - scoped_ptr<PrimaryDisplaySwitchObserver> primary_display_switch_observer_; scoped_ptr<UserActivityNotifier> user_activity_notifier_; scoped_ptr<VideoActivityNotifier> video_activity_notifier_; scoped_ptr<ScreenDimmingObserver> screen_dimming_observer_; diff --git a/chrome/browser/chromeos/display/display_configuration_observer.cc b/chrome/browser/chromeos/display/display_configuration_observer.cc new file mode 100644 index 0000000..f9a2bdc --- /dev/null +++ b/chrome/browser/chromeos/display/display_configuration_observer.cc @@ -0,0 +1,28 @@ +// Copyright (c) 2013 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 "chrome/browser/chromeos/display/display_configuration_observer.h" + +#include "ash/display/display_controller.h" +#include "ash/shell.h" +#include "chrome/browser/chromeos/display/display_preferences.h" + +namespace chromeos { + +DisplayConfigurationObserver::DisplayConfigurationObserver() { + ash::Shell::GetInstance()->display_controller()->AddObserver(this); +} + +DisplayConfigurationObserver::~DisplayConfigurationObserver() { + ash::Shell::GetInstance()->display_controller()->RemoveObserver(this); +} + +void DisplayConfigurationObserver::OnDisplayConfigurationChanging() { +} + +void DisplayConfigurationObserver::OnDisplayConfigurationChanged() { + StoreDisplayPrefs(); +} + +} // namespace chromeos diff --git a/chrome/browser/chromeos/display/display_configuration_observer.h b/chrome/browser/chromeos/display/display_configuration_observer.h new file mode 100644 index 0000000..f5d0908 --- /dev/null +++ b/chrome/browser/chromeos/display/display_configuration_observer.h @@ -0,0 +1,31 @@ +// Copyright (c) 2013 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. + +#ifndef CHROME_BROWSER_CHROMEOS_DISPLAY_DISPLAY_CONFIGURATION_OBSERVER_H_ +#define CHROME_BROWSER_CHROMEOS_DISPLAY_DISPLAY_CONFIGURATION_OBSERVER_H_ + +#include "ash/display/display_controller.h" +#include "base/basictypes.h" +#include "base/compiler_specific.h" + +namespace chromeos { + +// DisplayConfigurationObserver observes and saves +// the change of display configurations. +class DisplayConfigurationObserver : public ash::DisplayController::Observer { + public: + DisplayConfigurationObserver(); + virtual ~DisplayConfigurationObserver(); + + protected: + // ash::DisplayController::Observer overrides: + virtual void OnDisplayConfigurationChanging() OVERRIDE; + virtual void OnDisplayConfigurationChanged() OVERRIDE; + + DISALLOW_COPY_AND_ASSIGN(DisplayConfigurationObserver); +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_DISPLAY_DISPLAY_CONFIGURATION_OBSERVER_H_ diff --git a/chrome/browser/chromeos/display/display_preferences.cc b/chrome/browser/chromeos/display/display_preferences.cc index 0946980..f62485e 100644 --- a/chrome/browser/chromeos/display/display_preferences.cc +++ b/chrome/browser/chromeos/display/display_preferences.cc @@ -180,7 +180,7 @@ void StoreCurrentDisplayLayoutPrefs() { void StorePrimaryDisplayIDPref(int64 display_id) { - if (!IsValidUser()) + if (!IsValidUser() || gfx::Screen::GetNativeScreen()->GetNumDisplays() < 2) return; PrefService* local_state = g_browser_process->local_state(); @@ -211,8 +211,13 @@ void RegisterDisplayLocalStatePrefs(PrefRegistrySimple* registry) { } void StoreDisplayPrefs() { - StorePrimaryDisplayIDPref(ash::Shell::GetScreen()->GetPrimaryDisplay().id()); - StoreCurrentDisplayLayoutPrefs(); + if (!IsValidUser()) + return; + if (gfx::Screen::GetNativeScreen()->GetNumDisplays() == 2) { + StorePrimaryDisplayIDPref( + ash::Shell::GetScreen()->GetPrimaryDisplay().id()); + StoreCurrentDisplayLayoutPrefs(); + } } void SetAndStoreDisplayLayoutPref(int layout, int offset) { diff --git a/chrome/browser/chromeos/display/primary_display_switch_observer.cc b/chrome/browser/chromeos/display/primary_display_switch_observer.cc deleted file mode 100644 index 6b53093..0000000 --- a/chrome/browser/chromeos/display/primary_display_switch_observer.cc +++ /dev/null @@ -1,39 +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 "chrome/browser/chromeos/display/primary_display_switch_observer.h" - -#include "ash/shell.h" -#include "chrome/browser/chromeos/display/display_preferences.h" -#include "ui/aura/root_window.h" - -namespace chromeos { - -PrimaryDisplaySwitchObserver::PrimaryDisplaySwitchObserver() - : primary_root_(ash::Shell::GetInstance()->GetPrimaryRootWindow()) { - primary_root_->AddRootWindowObserver(this); - primary_root_->AddObserver(this); -} - -PrimaryDisplaySwitchObserver::~PrimaryDisplaySwitchObserver() { - primary_root_->RemoveRootWindowObserver(this); - primary_root_->RemoveObserver(this); -} - -void PrimaryDisplaySwitchObserver::OnRootWindowMoved( - const aura::RootWindow* root_window, const gfx::Point& new_origin) { - StoreDisplayPrefs(); -} - -void PrimaryDisplaySwitchObserver::OnWindowDestroying(aura::Window* window) { - if (primary_root_ == window) { - primary_root_->RemoveRootWindowObserver(this); - primary_root_->RemoveObserver(this); - primary_root_ = ash::Shell::GetInstance()->GetPrimaryRootWindow(); - primary_root_->AddRootWindowObserver(this); - primary_root_->AddObserver(this); - } -} - -} // namespace chromeos diff --git a/chrome/browser/chromeos/display/primary_display_switch_observer.h b/chrome/browser/chromeos/display/primary_display_switch_observer.h deleted file mode 100644 index 7ca3b85..0000000 --- a/chrome/browser/chromeos/display/primary_display_switch_observer.h +++ /dev/null @@ -1,45 +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. - -#ifndef CHROME_BROWSER_CHROMEOS_DISPLAY_PRIMARY_DISPLAY_SWITCH_OBSERVER_H_ -#define CHROME_BROWSER_CHROMEOS_DISPLAY_PRIMARY_DISPLAY_SWITCH_OBSERVER_H_ - -#include "base/basictypes.h" -#include "base/compiler_specific.h" -#include "ui/aura/root_window_observer.h" -#include "ui/aura/window_observer.h" - -namespace aura { -class RootWindow; -} - -namespace gfx { -class Point; -} - -namespace chromeos { - -// PrimaryDisplaySwitchObserver observes the change of the primary/secondary -// displays and store the current primary display ID into the local preference. -class PrimaryDisplaySwitchObserver : public aura::RootWindowObserver, - public aura::WindowObserver { - public: - PrimaryDisplaySwitchObserver(); - virtual ~PrimaryDisplaySwitchObserver(); - - protected: - // aura::RootWindowObserver overrides: - virtual void OnRootWindowMoved(const aura::RootWindow* root_window, - const gfx::Point& new_origin) OVERRIDE; - // aura::WindowObserver overrides: - virtual void OnWindowDestroying(aura::Window* window) OVERRIDE; - - aura::RootWindow* primary_root_; - - DISALLOW_COPY_AND_ASSIGN(PrimaryDisplaySwitchObserver); -}; - -} // namespace chromeos - -#endif // CHROME_BROWSER_CHROMEOS_DISPLAY_PRIMARY_DISPLAY_SWITCH_OBSERVER_H_ diff --git a/chrome/chrome_browser_chromeos.gypi b/chrome/chrome_browser_chromeos.gypi index 0b85974..2469be0 100644 --- a/chrome/chrome_browser_chromeos.gypi +++ b/chrome/chrome_browser_chromeos.gypi @@ -186,12 +186,12 @@ 'browser/chromeos/cros/network_ui_data.h', 'browser/chromeos/customization_document.cc', 'browser/chromeos/customization_document.h', + 'browser/chromeos/display/display_configuration_observer.cc', + 'browser/chromeos/display/display_configuration_observer.h', 'browser/chromeos/display/display_preferences.cc', 'browser/chromeos/display/display_preferences.h', 'browser/chromeos/display/overscan_calibrator.cc', 'browser/chromeos/display/overscan_calibrator.h', - 'browser/chromeos/display/primary_display_switch_observer.cc', - 'browser/chromeos/display/primary_display_switch_observer.h', 'browser/chromeos/dbus/cros_dbus_service.cc', 'browser/chromeos/dbus/cros_dbus_service.h', 'browser/chromeos/dbus/display_power_service_provider.cc', |