Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3666)

Unified Diff: athena/main/athena_main.cc

Issue 480353006: Separate athena's startup process from AppShell's (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reformat Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: athena/main/athena_main.cc
diff --git a/athena/main/athena_main.cc b/athena/main/athena_main.cc
index 3d5408e8621c73c0bcc06ce64154bd69fcae9a82..29cbd5653f0fd2515beafa8dac7a8d103ef54f66 100644
--- a/athena/main/athena_main.cc
+++ b/athena/main/athena_main.cc
@@ -2,20 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "athena/activity/public/activity_factory.h"
+#include "athena/activity/public/activity_manager.h"
#include "athena/content/public/web_contents_view_delegate_creator.h"
-#include "athena/main/athena_app_window_controller.h"
+#include "athena/env/public/athena_env.h"
#include "athena/main/athena_launcher.h"
#include "athena/screen/public/screen_manager.h"
-#include "athena/screen/public/screen_manager_delegate.h"
#include "base/command_line.h"
#include "base/file_util.h"
#include "base/path_service.h"
#include "content/public/app/content_main.h"
#include "content/public/browser/browser_thread.h"
#include "extensions/shell/app/shell_main_delegate.h"
+#include "extensions/shell/browser/desktop_controller.h"
+#include "extensions/shell/browser/shell_app_window.h"
#include "extensions/shell/browser/shell_browser_main_delegate.h"
#include "extensions/shell/browser/shell_content_browser_client.h"
-#include "extensions/shell/browser/shell_desktop_controller.h"
#include "extensions/shell/browser/shell_extension_system.h"
#include "extensions/shell/common/switches.h"
#include "ui/aura/window_tree_host.h"
@@ -31,40 +33,33 @@ const char kDefaultAppPath[] =
} // namespace athena
-class AthenaDesktopController : public extensions::ShellDesktopController {
+class AthenaDesktopController : public extensions::DesktopController {
public:
AthenaDesktopController() {}
virtual ~AthenaDesktopController() {}
private:
- // extensions::ShellDesktopController:
- virtual wm::FocusRules* CreateFocusRules() OVERRIDE {
- return athena::ScreenManager::CreateFocusRules();
+ // extensions::DesktopController:
+ virtual aura::WindowTreeHost* GetHost() OVERRIDE {
+ return athena::AthenaEnv::Get()->GetHost();
}
- DISALLOW_COPY_AND_ASSIGN(AthenaDesktopController);
-};
-
-class AthenaScreenManagerDelegate : public athena::ScreenManagerDelegate {
- public:
- explicit AthenaScreenManagerDelegate(
- extensions::ShellDesktopController* controller)
- : controller_(controller) {
- }
-
- virtual ~AthenaScreenManagerDelegate() {
+ // Creates a new app window and adds it to the desktop. The desktop maintains
+ // ownership of the window.
+ virtual extensions::ShellAppWindow* CreateAppWindow(
+ content::BrowserContext* context,
+ const extensions::Extension* extension) OVERRIDE {
+ extensions::ShellAppWindow* app_window = new extensions::ShellAppWindow();
+ app_window->Init(context, extension, gfx::Size(100, 100));
+ athena::ActivityManager::Get()->AddActivity(
+ athena::ActivityFactory::Get()->CreateAppActivity(app_window));
+ return app_window;
}
- private:
- // athena::ScreenManagerDelegate:
- virtual void SetWorkAreaInsets(const gfx::Insets& insets) OVERRIDE {
- controller_->SetDisplayWorkAreaInsets(insets);
- }
-
- // Not owned.
- extensions::ShellDesktopController* controller_;
+ // Closes and destroys the app windows.
+ virtual void CloseAppWindows() OVERRIDE {}
- DISALLOW_COPY_AND_ASSIGN(AthenaScreenManagerDelegate);
+ DISALLOW_COPY_AND_ASSIGN(AthenaDesktopController);
};
class AthenaBrowserMainDelegate : public extensions::ShellBrowserMainDelegate {
@@ -90,14 +85,8 @@ class AthenaBrowserMainDelegate : public extensions::ShellBrowserMainDelegate {
extension_system->LoadApp(app_absolute_dir);
}
- extensions::ShellDesktopController* desktop_controller =
- extensions::ShellDesktopController::instance();
- screen_manager_delegate_.reset(
- new AthenaScreenManagerDelegate(desktop_controller));
- athena::StartAthenaEnv(desktop_controller->host()->window(),
- screen_manager_delegate_.get(),
- content::BrowserThread::GetMessageLoopProxyForThread(
- content::BrowserThread::FILE));
+ athena::StartAthenaEnv(content::BrowserThread::GetMessageLoopProxyForThread(
+ content::BrowserThread::FILE));
athena::StartAthenaSessionWithContext(context);
}
@@ -105,18 +94,11 @@ class AthenaBrowserMainDelegate : public extensions::ShellBrowserMainDelegate {
athena::ShutdownAthena();
}
- virtual extensions::ShellDesktopController* CreateDesktopController()
- OVERRIDE {
- // TODO(mukai): create Athena's own ShellDesktopController subclass so that
- // it can initialize its own window manager logic.
- extensions::ShellDesktopController* desktop = new AthenaDesktopController();
- desktop->SetAppWindowController(new athena::AthenaAppWindowController());
- return desktop;
+ virtual extensions::DesktopController* CreateDesktopController() OVERRIDE {
+ return new AthenaDesktopController();
}
private:
- scoped_ptr<AthenaScreenManagerDelegate> screen_manager_delegate_;
-
DISALLOW_COPY_AND_ASSIGN(AthenaBrowserMainDelegate);
};

Powered by Google App Engine
This is Rietveld 408576698