Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_ | 5 #ifndef APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_ |
| 6 #define APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_ | 6 #define APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| 11 #include "apps/app_lifetime_monitor.h" | 11 #include "apps/app_lifetime_monitor.h" |
| 12 #include "apps/app_shim/app_shim_handler_mac.h" | 12 #include "apps/app_shim/app_shim_handler_mac.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "chrome/browser/extensions/shell_window_registry.h" | |
| 14 #include "content/public/browser/notification_observer.h" | 15 #include "content/public/browser/notification_observer.h" |
| 15 #include "content/public/browser/notification_registrar.h" | 16 #include "content/public/browser/notification_registrar.h" |
| 16 | 17 |
| 17 class Profile; | 18 class Profile; |
| 18 | 19 |
| 19 namespace base { | 20 namespace base { |
| 20 class FilePath; | 21 class FilePath; |
| 21 } | 22 } |
| 22 | 23 |
| 24 namespace content { | |
| 25 class WebContents; | |
| 26 } | |
| 27 | |
| 23 namespace extensions { | 28 namespace extensions { |
| 24 class Extension; | 29 class Extension; |
| 25 } | 30 } |
| 26 | 31 |
| 27 namespace apps { | 32 namespace apps { |
| 28 | 33 |
| 29 // This app shim handler that handles events for app shims that correspond to an | 34 // This app shim handler that handles events for app shims that correspond to an |
| 30 // extension. | 35 // extension. |
| 31 class ExtensionAppShimHandler : public AppShimHandler, | 36 class ExtensionAppShimHandler : public AppShimHandler, |
| 32 public content::NotificationObserver, | 37 public content::NotificationObserver, |
| 33 public AppLifetimeMonitor::Observer { | 38 public AppLifetimeMonitor::Observer { |
| 34 public: | 39 public: |
| 35 class ProfileManagerFacade { | 40 class Delegate { |
| 36 public: | 41 public: |
| 37 virtual ~ProfileManagerFacade() {} | 42 virtual ~Delegate() {} |
| 43 | |
| 38 virtual bool ProfileExistsForPath(const base::FilePath& path); | 44 virtual bool ProfileExistsForPath(const base::FilePath& path); |
| 39 virtual Profile* ProfileForPath(const base::FilePath& path); | 45 virtual Profile* ProfileForPath(const base::FilePath& path); |
| 46 | |
| 47 virtual extensions::ShellWindowRegistry::ShellWindowList GetWindows( | |
| 48 Profile* profile, const std::string& extension_id); | |
| 49 | |
| 50 virtual const extensions::Extension* GetExtension( | |
| 51 Profile* profile, const std::string& extension_id); | |
| 52 virtual content::WebContents* LaunchApp( | |
| 53 Profile* profile, | |
| 54 const extensions::Extension* extension); | |
| 55 virtual void LaunchShim(Profile* profile, | |
| 56 const extensions::Extension* extension); | |
| 57 | |
| 40 }; | 58 }; |
| 41 | 59 |
| 42 ExtensionAppShimHandler(); | 60 ExtensionAppShimHandler(); |
| 43 virtual ~ExtensionAppShimHandler(); | 61 virtual ~ExtensionAppShimHandler(); |
| 44 | 62 |
| 45 // AppShimHandler overrides: | 63 // AppShimHandler overrides: |
| 46 virtual bool OnShimLaunch(Host* host, AppShimLaunchType launch_type) OVERRIDE; | 64 virtual bool OnShimLaunch(Host* host, AppShimLaunchType launch_type) OVERRIDE; |
| 47 virtual void OnShimClose(Host* host) OVERRIDE; | 65 virtual void OnShimClose(Host* host) OVERRIDE; |
| 48 virtual void OnShimFocus(Host* host) OVERRIDE; | 66 virtual void OnShimFocus(Host* host) OVERRIDE; |
| 49 virtual void OnShimQuit(Host* host) OVERRIDE; | 67 virtual void OnShimQuit(Host* host) OVERRIDE; |
| 50 | 68 |
| 51 // AppLifetimeMonitor::Observer overrides: | 69 // AppLifetimeMonitor::Observer overrides: |
| 52 virtual void OnAppStart(Profile* profile, const std::string& app_id) OVERRIDE; | 70 virtual void OnAppStart(Profile* profile, const std::string& app_id) OVERRIDE; |
| 53 virtual void OnAppActivated(Profile* profile, | 71 virtual void OnAppActivated(Profile* profile, |
| 54 const std::string& app_id) OVERRIDE; | 72 const std::string& app_id) OVERRIDE; |
| 55 virtual void OnAppDeactivated(Profile* profile, | 73 virtual void OnAppDeactivated(Profile* profile, |
| 56 const std::string& app_id) OVERRIDE; | 74 const std::string& app_id) OVERRIDE; |
| 57 virtual void OnAppStop(Profile* profile, const std::string& app_id) OVERRIDE; | 75 virtual void OnAppStop(Profile* profile, const std::string& app_id) OVERRIDE; |
| 58 virtual void OnChromeTerminating() OVERRIDE; | 76 virtual void OnChromeTerminating() OVERRIDE; |
| 59 | 77 |
| 60 protected: | 78 protected: |
| 61 typedef std::map<std::pair<Profile*, std::string>, AppShimHandler::Host*> | 79 typedef std::map<std::pair<Profile*, std::string>, AppShimHandler::Host*> |
| 62 HostMap; | 80 HostMap; |
| 63 | 81 |
| 64 // Exposed for testing. | 82 // Exposed for testing. |
| 65 void set_profile_manager_facade(ProfileManagerFacade* profile_manager_facade); | 83 void set_dependency_facade(Delegate* dependency_facade); |
|
tapted
2013/06/21 04:30:47
dependency_facade -> delegate
jackhou1
2013/06/21 05:46:27
Done.
| |
| 66 HostMap& hosts() { return hosts_; } | 84 HostMap& hosts() { return hosts_; } |
| 67 content::NotificationRegistrar& registrar() { return registrar_; } | 85 content::NotificationRegistrar& registrar() { return registrar_; } |
| 68 | 86 |
| 69 private: | 87 private: |
| 70 virtual bool LaunchApp(Profile* profile, | |
| 71 const std::string& app_id, | |
| 72 AppShimLaunchType launch_type); | |
| 73 | |
| 74 // Listen to the NOTIFICATION_EXTENSION_HOST_DESTROYED message to detect when | 88 // Listen to the NOTIFICATION_EXTENSION_HOST_DESTROYED message to detect when |
| 75 // an app closes. When that happens, call OnAppClosed on the relevant | 89 // an app closes. When that happens, call OnAppClosed on the relevant |
| 76 // AppShimHandler::Host which causes the app shim process to quit. | 90 // AppShimHandler::Host which causes the app shim process to quit. |
| 77 // The host will call OnShimClose on this. | 91 // The host will call OnShimClose on this. |
| 78 virtual void Observe(int type, | 92 virtual void Observe(int type, |
| 79 const content::NotificationSource& source, | 93 const content::NotificationSource& source, |
| 80 const content::NotificationDetails& details) OVERRIDE; | 94 const content::NotificationDetails& details) OVERRIDE; |
| 81 | 95 |
| 82 scoped_ptr<ProfileManagerFacade> profile_manager_facade_; | 96 scoped_ptr<Delegate> delegate_; |
| 83 | 97 |
| 84 HostMap hosts_; | 98 HostMap hosts_; |
| 85 | 99 |
| 86 content::NotificationRegistrar registrar_; | 100 content::NotificationRegistrar registrar_; |
| 87 }; | 101 }; |
| 88 | 102 |
| 89 } // namespace apps | 103 } // namespace apps |
| 90 | 104 |
| 91 #endif // APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_ | 105 #endif // APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_ |
| OLD | NEW |