summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-01 01:05:07 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-01 01:05:07 +0000
commitca934bd060255eaa7df05deecb9206b6101faaca (patch)
tree872d40a5a112de28937dadb5ffaef72d0c836dae /ash
parent9f1c5060c9d5f2492662b2173884dcaea10e7c4d (diff)
downloadchromium_src-ca934bd060255eaa7df05deecb9206b6101faaca.zip
chromium_src-ca934bd060255eaa7df05deecb9206b6101faaca.tar.gz
chromium_src-ca934bd060255eaa7df05deecb9206b6101faaca.tar.bz2
Remove dependency to PrimaryRootWindow in ScreenDimmer and SystemGesture
BUG=123160 TEST=no functional change. all tests should pass. Review URL: https://chromiumcodereview.appspot.com/10446110 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139942 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r--ash/shell.cc2
-rw-r--r--ash/wm/screen_dimmer.cc8
-rw-r--r--ash/wm/screen_dimmer.h20
-rw-r--r--ash/wm/system_gesture_event_filter.cc13
-rw-r--r--ash/wm/system_gesture_event_filter.h2
5 files changed, 28 insertions, 17 deletions
diff --git a/ash/shell.cc b/ash/shell.cc
index 7eac672..5eaebd1 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -795,7 +795,7 @@ void Shell::Init() {
video_detector_.reset(new VideoDetector);
window_cycle_controller_.reset(new WindowCycleController);
monitor_controller_.reset(new internal::MonitorController);
- screen_dimmer_.reset(new internal::ScreenDimmer);
+ screen_dimmer_.reset(new internal::ScreenDimmer(root_window));
}
aura::Window* Shell::GetContainer(int container_id) {
diff --git a/ash/wm/screen_dimmer.cc b/ash/wm/screen_dimmer.cc
index 05c8099..581efc1 100644
--- a/ash/wm/screen_dimmer.cc
+++ b/ash/wm/screen_dimmer.cc
@@ -25,12 +25,14 @@ const int kDimmingTransitionMs = 200;
} // namespace
-ScreenDimmer::ScreenDimmer() : currently_dimming_(false) {
- Shell::GetPrimaryRootWindow()->AddRootWindowObserver(this);
+ScreenDimmer::ScreenDimmer(aura::RootWindow* root_window)
+ : root_window_(root_window),
+ currently_dimming_(false) {
+ root_window_->AddRootWindowObserver(this);
}
ScreenDimmer::~ScreenDimmer() {
- Shell::GetPrimaryRootWindow()->RemoveRootWindowObserver(this);
+ root_window_->RemoveRootWindowObserver(this);
}
void ScreenDimmer::SetDimming(bool should_dim) {
diff --git a/ash/wm/screen_dimmer.h b/ash/wm/screen_dimmer.h
index 2415b58..eeedecc 100644
--- a/ash/wm/screen_dimmer.h
+++ b/ash/wm/screen_dimmer.h
@@ -12,6 +12,10 @@
#include "base/memory/scoped_ptr.h"
#include "ui/aura/root_window_observer.h"
+namespace aura {
+class RootWindow;
+}
+
namespace ui {
class Layer;
}
@@ -19,11 +23,13 @@ class Layer;
namespace ash {
namespace internal {
-// ScreenDimmer displays a partially-opaque layer above everything else to
-// darken the screen. It shouldn't be used for long-term brightness adjustments
-// due to performance considerations -- it's only intended for cases where we
-// want to briefly dim the screen (e.g. to indicate to the user that we're about
-// to suspend a machine that lacks an internal backlight that can be adjusted).
+// ScreenDimmer displays a partially-opaque layer above everything
+// else in the root window to darken the monitor. It shouldn't be used
+// for long-term brightness adjustments due to performance
+// considerations -- it's only intended for cases where we want to
+// briefly dim the screen (e.g. to indicate to the user that we're
+// about to suspend a machine that lacks an internal backlight that
+// can be adjusted).
class ASH_EXPORT ScreenDimmer : public aura::RootWindowObserver {
public:
class TestApi {
@@ -38,7 +44,7 @@ class ASH_EXPORT ScreenDimmer : public aura::RootWindowObserver {
DISALLOW_COPY_AND_ASSIGN(TestApi);
};
- ScreenDimmer();
+ explicit ScreenDimmer(aura::RootWindow* root_window);
virtual ~ScreenDimmer();
// Dim or undim the screen.
@@ -51,6 +57,8 @@ class ASH_EXPORT ScreenDimmer : public aura::RootWindowObserver {
private:
friend class TestApi;
+ aura::RootWindow* root_window_;
+
// Partially-opaque layer that's stacked above all of the root window's
// children and used to dim the screen. NULL until the first time we dim.
scoped_ptr<ui::Layer> dimming_layer_;
diff --git a/ash/wm/system_gesture_event_filter.cc b/ash/wm/system_gesture_event_filter.cc
index 19b9e10..afdb006 100644
--- a/ash/wm/system_gesture_event_filter.cc
+++ b/ash/wm/system_gesture_event_filter.cc
@@ -36,7 +36,7 @@ enum SystemGestureStatus {
aura::Window* GetTargetForSystemGestureEvent(aura::Window* target) {
aura::Window* system_target = target;
- if (!system_target || system_target == ash::Shell::GetPrimaryRootWindow())
+ if (!system_target || system_target == target->GetRootWindow())
system_target = ash::wm::GetActiveWindow();
if (system_target)
system_target = system_target->GetToplevelWindow();
@@ -242,11 +242,11 @@ ui::TouchStatus SystemGestureEventFilter::PreHandleTouchEvent(
ui::GestureStatus SystemGestureEventFilter::PreHandleGestureEvent(
aura::Window* target, aura::GestureEvent* event) {
- if (!target || target == Shell::GetPrimaryRootWindow()) {
+ if (!target || target == target->GetRootWindow()) {
switch (event->type()) {
case ui::ET_GESTURE_SCROLL_BEGIN: {
gfx::Rect screen =
- gfx::Screen::GetPrimaryMonitor().bounds();
+ gfx::Screen::GetMonitorNearestWindow(target).bounds();
int overlap_area = screen.width() * overlap_percent_ / 100;
orientation_ = SCROLL_ORIENTATION_UNSET;
@@ -284,7 +284,7 @@ ui::GestureStatus SystemGestureEventFilter::PreHandleGestureEvent(
if (HandleLauncherControl(event))
start_location_ = BEZEL_START_UNSET;
} else {
- if (HandleDeviceControl(event))
+ if (HandleDeviceControl(target, event))
start_location_ = BEZEL_START_UNSET;
}
}
@@ -340,8 +340,9 @@ void SystemGestureEventFilter::ClearGestureHandlerForWindow(
window->RemoveObserver(this);
}
-bool SystemGestureEventFilter::HandleDeviceControl(aura::GestureEvent* event) {
- gfx::Rect screen = gfx::Screen::GetPrimaryMonitor().bounds();
+bool SystemGestureEventFilter::HandleDeviceControl(aura::Window* target,
+ aura::GestureEvent* event) {
+ gfx::Rect screen = gfx::Screen::GetMonitorNearestWindow(target).bounds();
double percent = 100.0 * (event->y() - screen.y()) / screen.height();
if (percent > 100.0)
percent = 100.0;
diff --git a/ash/wm/system_gesture_event_filter.h b/ash/wm/system_gesture_event_filter.h
index 08a692c..7a86479 100644
--- a/ash/wm/system_gesture_event_filter.h
+++ b/ash/wm/system_gesture_event_filter.h
@@ -66,7 +66,7 @@ class SystemGestureEventFilter : public aura::EventFilter,
// Handle events meant for volume / brightness. Returns true when no further
// events from this gesture should be sent.
- bool HandleDeviceControl(aura::GestureEvent* event);
+ bool HandleDeviceControl(aura::Window* target, aura::GestureEvent* event);
// Handle events meant for showing the launcher. Returns true when no further
// events from this gesture should be sent.