| Index: apps/app_shim/extension_app_shim_handler_mac.h
|
| diff --git a/apps/app_shim/extension_app_shim_handler_mac.h b/apps/app_shim/extension_app_shim_handler_mac.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ea9a8c7eeea8eb945dd11429f242b006dd21777b
|
| --- /dev/null
|
| +++ b/apps/app_shim/extension_app_shim_handler_mac.h
|
| @@ -0,0 +1,60 @@
|
| +// Copyright 2013 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 APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_
|
| +#define APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_
|
| +
|
| +#include <map>
|
| +#include <string>
|
| +
|
| +#include "apps/app_shim/app_shim_handler_mac.h"
|
| +#include "content/public/browser/notification_observer.h"
|
| +#include "content/public/browser/notification_registrar.h"
|
| +
|
| +class Profile;
|
| +
|
| +namespace apps {
|
| +
|
| +// This app shim handler that handles events for app shims that correspond to an
|
| +// extension.
|
| +class ExtensionAppShimHandler : public AppShimHandler,
|
| + public content::NotificationObserver {
|
| + public:
|
| + ExtensionAppShimHandler();
|
| + virtual ~ExtensionAppShimHandler();
|
| +
|
| + // AppShimHandler overrides:
|
| + virtual bool OnShimLaunch(Host* host) OVERRIDE;
|
| + virtual void OnShimClose(Host* host) OVERRIDE;
|
| + virtual void OnShimFocus(Host* host) OVERRIDE;
|
| +
|
| + protected:
|
| + typedef std::map<std::pair<Profile*, std::string>, AppShimHandler::Host*>
|
| + HostMap;
|
| +
|
| + // Exposed for testing.
|
| + HostMap& hosts() { return hosts_; }
|
| + content::NotificationRegistrar& registrar() { return registrar_; }
|
| +
|
| + private:
|
| + virtual bool LaunchApp(Profile* profile, const std::string& app_id);
|
| +
|
| + // Listen to the NOTIFICATION_EXTENSION_HOST_DESTROYED message to detect when
|
| + // an app closes. When that happens, call OnAppClosed on the relevant
|
| + // AppShimHandler::Host which causes the app shim process to quit.
|
| + // The host will call OnShimClose on this.
|
| + virtual void Observe(int type,
|
| + const content::NotificationSource& source,
|
| + const content::NotificationDetails& details) OVERRIDE;
|
| +
|
| + void CloseShim(Profile* profile, const std::string& app_id);
|
| +
|
| + HostMap hosts_;
|
| +
|
| + content::NotificationRegistrar registrar_;
|
| +};
|
| +
|
| +} // namespace apps
|
| +
|
| +#endif // APPS_APP_SHIM_EXTENSION_APP_SHIM_HANDLER_H_
|
|
|