diff options
author | oshima <oshima@chromium.org> | 2014-08-25 14:32:49 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-25 21:35:50 +0000 |
commit | 1629c184e328e7263e93042de97af58651ebe510 (patch) | |
tree | 5d91c6827fc18651b95c6530c7da403a162ea8e0 /athena/screen | |
parent | d27cb086ffcbfdc4c3f5b1d1d483b28dff5bd26c (diff) | |
download | chromium_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.h | 10 | ||||
-rw-r--r-- | athena/screen/public/screen_manager_delegate.h | 27 | ||||
-rw-r--r-- | athena/screen/screen_manager_impl.cc | 40 |
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 |