summaryrefslogtreecommitdiffstats
path: root/athena/screen
diff options
context:
space:
mode:
authoroshima <oshima@chromium.org>2014-08-25 14:32:49 -0700
committerCommit bot <commit-bot@chromium.org>2014-08-25 21:35:50 +0000
commit1629c184e328e7263e93042de97af58651ebe510 (patch)
tree5d91c6827fc18651b95c6530c7da403a162ea8e0 /athena/screen
parentd27cb086ffcbfdc4c3f5b1d1d483b28dff5bd26c (diff)
downloadchromium_src-1629c184e328e7263e93042de97af58651ebe510.zip
chromium_src-1629c184e328e7263e93042de97af58651ebe510.tar.gz
chromium_src-1629c184e328e7263e93042de97af58651ebe510.tar.bz2
Separate athena's startup process from AppShell's
* Introduced DesktopController interface. app_shell's Init process stays in ShellDesktopController * Removed ShellAppWindowController * Athena has its own AthenaDesktopController * Intorduced AthenaEnv. This is now used for both AthenaMain and Unit test. * Removed ScreenManagerDelegate and integrate it into AthenaEnv. * Moved FocusController to ScreenManager, and removed CreateFocusRules() BUG=397167 TBR=sky@chromium.org Review URL: https://codereview.chromium.org/480353006 Cr-Commit-Position: refs/heads/master@{#291763}
Diffstat (limited to 'athena/screen')
-rw-r--r--athena/screen/public/screen_manager.h10
-rw-r--r--athena/screen/public/screen_manager_delegate.h27
-rw-r--r--athena/screen/screen_manager_impl.cc40
3 files changed, 21 insertions, 56 deletions
diff --git a/athena/screen/public/screen_manager.h b/athena/screen/public/screen_manager.h
index efaa7e8..52dd805 100644
--- a/athena/screen/public/screen_manager.h
+++ b/athena/screen/public/screen_manager.h
@@ -51,16 +51,12 @@ class ATHENA_EXPORT ScreenManager {
// Creates, returns and deletes the singleton object of the ScreenManager
// implementation.
- static ScreenManager* Create(ScreenManagerDelegate* delegate,
- aura::Window* root);
+ static ScreenManager* Create(aura::Window* root);
static ScreenManager* Get();
static void Shutdown();
virtual ~ScreenManager() {}
- // Sets the screen's work area insets.
- virtual void SetWorkAreaInsets(const gfx::Insets& insets) = 0;
-
// Creates the container window that is used when creating a normal
// widget without specific parent.
virtual aura::Window* CreateDefaultContainer(
@@ -83,10 +79,6 @@ class ATHENA_EXPORT ScreenManager {
// Returns the LayerAnimator to use to animate the entire screen (e.g. fade
// screen to white).
virtual ui::LayerAnimator* GetScreenAnimator() = 0;
-
- // Create a focus rules.
- // TODO(oshima): Make this virtual function.
- static wm::FocusRules* CreateFocusRules();
};
} // namespace athena
diff --git a/athena/screen/public/screen_manager_delegate.h b/athena/screen/public/screen_manager_delegate.h
deleted file mode 100644
index dab259546..0000000
--- a/athena/screen/public/screen_manager_delegate.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2014 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 ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_DELEGATE_H_
-#define ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_DELEGATE_H_
-
-#include "athena/athena_export.h"
-
-namespace gfx {
-class Insets;
-}
-
-namespace athena {
-
-// Delegate of the ScreenManager.
-class ATHENA_EXPORT ScreenManagerDelegate {
- public:
- virtual ~ScreenManagerDelegate() {}
-
- // Sets the screen's work area insets.
- virtual void SetWorkAreaInsets(const gfx::Insets& insets) = 0;
-};
-
-} // namespace athena
-
-#endif // ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_DELEGATE_H_
diff --git a/athena/screen/screen_manager_impl.cc b/athena/screen/screen_manager_impl.cc
index 166055c..a154d52 100644
--- a/athena/screen/screen_manager_impl.cc
+++ b/athena/screen/screen_manager_impl.cc
@@ -8,7 +8,6 @@
#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"
@@ -25,6 +24,7 @@
#include "ui/gfx/screen.h"
#include "ui/wm/core/base_focus_rules.h"
#include "ui/wm/core/capture_controller.h"
+#include "ui/wm/core/focus_controller.h"
namespace athena {
namespace {
@@ -192,14 +192,13 @@ class AthenaEventTargeter : public aura::WindowTargeter,
class ScreenManagerImpl : public ScreenManager {
public:
- ScreenManagerImpl(ScreenManagerDelegate* delegate, aura::Window* root_window);
+ ScreenManagerImpl(aura::Window* root_window);
virtual ~ScreenManagerImpl();
void Init();
private:
// ScreenManager:
- virtual void SetWorkAreaInsets(const gfx::Insets& insets) OVERRIDE;
virtual aura::Window* CreateDefaultContainer(
const ContainerParams& params) OVERRIDE;
virtual aura::Window* CreateContainer(const ContainerParams& params) OVERRIDE;
@@ -209,10 +208,10 @@ class ScreenManagerImpl : public ScreenManager {
virtual ui::LayerAnimator* GetScreenAnimator() OVERRIDE;
// Not owned.
- ScreenManagerDelegate* delegate_;
aura::Window* root_window_;
aura::Window* background_window_;
+ scoped_ptr<aura::client::FocusClient> focus_client_;
scoped_ptr<BackgroundController> background_controller_;
scoped_ptr<aura::client::WindowTreeClient> window_tree_client_;
scoped_ptr<AcceleratorHandler> accelerator_handler_;
@@ -222,10 +221,8 @@ class ScreenManagerImpl : public ScreenManager {
DISALLOW_COPY_AND_ASSIGN(ScreenManagerImpl);
};
-ScreenManagerImpl::ScreenManagerImpl(ScreenManagerDelegate* delegate,
- aura::Window* root_window)
- : delegate_(delegate),
- root_window_(root_window) {
+ScreenManagerImpl::ScreenManagerImpl(aura::Window* root_window)
+ : root_window_(root_window) {
DCHECK(root_window_);
DCHECK(!instance);
instance = this;
@@ -234,10 +231,23 @@ ScreenManagerImpl::ScreenManagerImpl(ScreenManagerDelegate* delegate,
ScreenManagerImpl::~ScreenManagerImpl() {
aura::client::SetScreenPositionClient(root_window_, NULL);
aura::client::SetWindowTreeClient(root_window_, NULL);
+ wm::FocusController* focus_controller =
+ static_cast<wm::FocusController*>(focus_client_.get());
+ root_window_->RemovePreTargetHandler(focus_controller);
+ aura::client::SetActivationClient(root_window_, NULL);
+ aura::client::SetFocusClient(root_window_, NULL);
instance = NULL;
}
void ScreenManagerImpl::Init() {
+ wm::FocusController* focus_controller =
+ new wm::FocusController(new AthenaFocusRules());
+
+ aura::client::SetFocusClient(root_window_, focus_controller);
+ root_window_->AddPreTargetHandler(focus_controller);
+ aura::client::SetActivationClient(root_window_, focus_controller);
+ focus_client_.reset(focus_controller);
+
// TODO(oshima): Move the background out from ScreenManager.
root_window_->SetLayoutManager(new FillLayoutManager(root_window_));
background_window_ =
@@ -251,10 +261,6 @@ void ScreenManagerImpl::Init() {
accelerator_handler_.reset(new ScreenAcceleratorHandler(root_window_));
}
-void ScreenManagerImpl::SetWorkAreaInsets(const gfx::Insets& insets) {
- delegate_->SetWorkAreaInsets(insets);
-}
-
aura::Window* ScreenManagerImpl::CreateDefaultContainer(
const ContainerParams& params) {
aura::Window* container = CreateContainer(params);
@@ -365,9 +371,8 @@ ScreenManager::ContainerParams::ContainerParams(const std::string& n,
}
// static
-ScreenManager* ScreenManager::Create(ScreenManagerDelegate* delegate,
- aura::Window* root_window) {
- (new ScreenManagerImpl(delegate, root_window))->Init();
+ScreenManager* ScreenManager::Create(aura::Window* root_window) {
+ (new ScreenManagerImpl(root_window))->Init();
DCHECK(instance);
return instance;
}
@@ -385,9 +390,4 @@ void ScreenManager::Shutdown() {
DCHECK(!instance);
}
-// static
-wm::FocusRules* ScreenManager::CreateFocusRules() {
- return new AthenaFocusRules();
-}
-
} // namespace athena