Index: athena/screen/screen_manager_impl.cc |
diff --git a/athena/screen/screen_manager_impl.cc b/athena/screen/screen_manager_impl.cc |
index 2c9c76401c1f8c02b2fd90e83ef20349bb4dbbba..dc433793da02b4b95ddc4ba6672ee2ce90ffa586 100644 |
--- a/athena/screen/screen_manager_impl.cc |
+++ b/athena/screen/screen_manager_impl.cc |
@@ -8,6 +8,7 @@ |
#include "athena/common/fill_layout_manager.h" |
#include "athena/input/public/accelerator_manager.h" |
#include "athena/screen/background_controller.h" |
+#include "athena/screen/public/screen_manager_delegate.h" |
#include "athena/screen/screen_accelerator_handler.h" |
#include "base/logging.h" |
#include "base/memory/scoped_ptr.h" |
@@ -19,6 +20,10 @@ |
#include "ui/aura/window_targeter.h" |
#include "ui/aura/window_tree_host.h" |
#include "ui/compositor/layer.h" |
+#include "ui/gfx/display.h" |
+#include "ui/gfx/insets.h" |
+#include "ui/gfx/rect.h" |
+#include "ui/gfx/screen.h" |
#include "ui/wm/core/base_focus_rules.h" |
#include "ui/wm/core/capture_controller.h" |
@@ -188,13 +193,16 @@ class AthenaEventTargeter : public aura::WindowTargeter, |
class ScreenManagerImpl : public ScreenManager { |
public: |
- explicit ScreenManagerImpl(aura::Window* root_window); |
+ explicit ScreenManagerImpl(ScreenManagerDelegate* delegate, |
+ aura::Window* root_window); |
virtual ~ScreenManagerImpl(); |
void Init(); |
private: |
// ScreenManager: |
+ virtual gfx::Rect GetWorkArea() OVERRIDE; |
+ virtual void SetWorkAreaInsets(const gfx::Insets& insets) OVERRIDE; |
virtual aura::Window* CreateDefaultContainer( |
const ContainerParams& params) OVERRIDE; |
virtual aura::Window* CreateContainer(const ContainerParams& params) OVERRIDE; |
@@ -202,6 +210,8 @@ class ScreenManagerImpl : public ScreenManager { |
virtual void SetBackgroundImage(const gfx::ImageSkia& image) OVERRIDE; |
virtual ui::LayerAnimator* GetScreenAnimator() OVERRIDE; |
+ // Not owned. |
+ ScreenManagerDelegate* delegate_; |
aura::Window* root_window_; |
aura::Window* background_window_; |
@@ -214,8 +224,10 @@ class ScreenManagerImpl : public ScreenManager { |
DISALLOW_COPY_AND_ASSIGN(ScreenManagerImpl); |
}; |
-ScreenManagerImpl::ScreenManagerImpl(aura::Window* root_window) |
- : root_window_(root_window) { |
+ScreenManagerImpl::ScreenManagerImpl(ScreenManagerDelegate* delegate, |
+ aura::Window* root_window) |
+ : delegate_(delegate), |
+ root_window_(root_window) { |
DCHECK(root_window_); |
DCHECK(!instance); |
instance = this; |
@@ -241,6 +253,16 @@ void ScreenManagerImpl::Init() { |
accelerator_handler_.reset(new ScreenAcceleratorHandler(root_window_)); |
} |
+gfx::Rect ScreenManagerImpl::GetWorkArea() { |
+ return gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().work_area(); |
+} |
+ |
+void ScreenManagerImpl::SetWorkAreaInsets(const gfx::Insets& insets) { |
+ // |delegate_| may be NULL in tests. |
+ if (delegate_) |
+ delegate_->SetWorkAreaInsets(insets); |
+} |
+ |
aura::Window* ScreenManagerImpl::CreateDefaultContainer( |
const ContainerParams& params) { |
aura::Window* container = CreateContainer(params); |
@@ -339,8 +361,9 @@ ScreenManager::ContainerParams::ContainerParams(const std::string& n, |
} |
// static |
-ScreenManager* ScreenManager::Create(aura::Window* root_window) { |
- (new ScreenManagerImpl(root_window))->Init(); |
+ScreenManager* ScreenManager::Create(ScreenManagerDelegate* delegate, |
+ aura::Window* root_window) { |
+ (new ScreenManagerImpl(delegate, root_window))->Init(); |
DCHECK(instance); |
return instance; |
} |