Index: apps/app_shim/app_shim_handler_mac.cc |
diff --git a/apps/app_shim/app_shim_handler_mac.cc b/apps/app_shim/app_shim_handler_mac.cc |
deleted file mode 100644 |
index 3153bd4c591dbe02b56bb6dda1068e355fa4a45e..0000000000000000000000000000000000000000 |
--- a/apps/app_shim/app_shim_handler_mac.cc |
+++ /dev/null |
@@ -1,156 +0,0 @@ |
-// 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. |
- |
-#include "apps/app_shim/app_shim_handler_mac.h" |
- |
-#include <map> |
- |
-#include "base/bind.h" |
-#include "base/logging.h" |
-#include "base/memory/singleton.h" |
-#include "base/message_loop/message_loop.h" |
-#include "chrome/browser/chrome_notification_types.h" |
-#include "chrome/browser/lifetime/application_lifetime.h" |
-#include "chrome/browser/ui/app_list/app_list_service.h" |
-#include "content/public/browser/notification_observer.h" |
-#include "content/public/browser/notification_registrar.h" |
-#include "content/public/browser/notification_service.h" |
-#include "extensions/browser/app_window/app_window_registry.h" |
- |
-namespace apps { |
- |
-namespace { |
- |
-void TerminateIfNoAppWindows() { |
- bool app_windows_left = |
- extensions::AppWindowRegistry::IsAppWindowRegisteredInAnyProfile(0); |
- if (!app_windows_left && |
- !AppListService::Get(chrome::HOST_DESKTOP_TYPE_NATIVE) |
- ->IsAppListVisible()) { |
- chrome::AttemptExit(); |
- } |
-} |
- |
-class AppShimHandlerRegistry : public content::NotificationObserver { |
- public: |
- static AppShimHandlerRegistry* GetInstance() { |
- return Singleton<AppShimHandlerRegistry, |
- LeakySingletonTraits<AppShimHandlerRegistry> >::get(); |
- } |
- |
- AppShimHandler* GetForAppMode(const std::string& app_mode_id) const { |
- HandlerMap::const_iterator it = handlers_.find(app_mode_id); |
- if (it != handlers_.end()) |
- return it->second; |
- |
- return default_handler_; |
- } |
- |
- bool SetForAppMode(const std::string& app_mode_id, AppShimHandler* handler) { |
- bool inserted_or_removed = handler ? |
- handlers_.insert(HandlerMap::value_type(app_mode_id, handler)).second : |
- handlers_.erase(app_mode_id) == 1; |
- DCHECK(inserted_or_removed); |
- return inserted_or_removed; |
- } |
- |
- void SetDefaultHandler(AppShimHandler* handler) { |
- DCHECK_NE(default_handler_ == NULL, handler == NULL); |
- default_handler_ = handler; |
- } |
- |
- void MaybeTerminate() { |
- if (!browser_session_running_) { |
- // Post this to give AppWindows a chance to remove themselves from the |
- // registry. |
- base::MessageLoop::current()->PostTask( |
- FROM_HERE, base::Bind(&TerminateIfNoAppWindows)); |
- } |
- } |
- |
- bool ShouldRestoreSession() { |
- return !browser_session_running_; |
- } |
- |
- private: |
- friend struct DefaultSingletonTraits<AppShimHandlerRegistry>; |
- typedef std::map<std::string, AppShimHandler*> HandlerMap; |
- |
- AppShimHandlerRegistry() |
- : default_handler_(NULL), |
- browser_session_running_(false) { |
- registrar_.Add( |
- this, chrome::NOTIFICATION_BROWSER_OPENED, |
- content::NotificationService::AllBrowserContextsAndSources()); |
- registrar_.Add( |
- this, chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST, |
- content::NotificationService::AllBrowserContextsAndSources()); |
- registrar_.Add( |
- this, chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, |
- content::NotificationService::AllBrowserContextsAndSources()); |
- } |
- |
- virtual ~AppShimHandlerRegistry() {} |
- |
- // content::NotificationObserver override: |
- virtual void Observe( |
- int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) OVERRIDE { |
- switch (type) { |
- case chrome::NOTIFICATION_BROWSER_OPENED: |
- case chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED: |
- browser_session_running_ = true; |
- break; |
- case chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST: |
- browser_session_running_ = false; |
- break; |
- default: |
- NOTREACHED(); |
- } |
- } |
- |
- HandlerMap handlers_; |
- AppShimHandler* default_handler_; |
- content::NotificationRegistrar registrar_; |
- bool browser_session_running_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AppShimHandlerRegistry); |
-}; |
- |
-} // namespace |
- |
-// static |
-void AppShimHandler::RegisterHandler(const std::string& app_mode_id, |
- AppShimHandler* handler) { |
- DCHECK(handler); |
- AppShimHandlerRegistry::GetInstance()->SetForAppMode(app_mode_id, handler); |
-} |
- |
-// static |
-void AppShimHandler::RemoveHandler(const std::string& app_mode_id) { |
- AppShimHandlerRegistry::GetInstance()->SetForAppMode(app_mode_id, NULL); |
-} |
- |
-// static |
-AppShimHandler* AppShimHandler::GetForAppMode(const std::string& app_mode_id) { |
- return AppShimHandlerRegistry::GetInstance()->GetForAppMode(app_mode_id); |
-} |
- |
-// static |
-void AppShimHandler::SetDefaultHandler(AppShimHandler* handler) { |
- AppShimHandlerRegistry::GetInstance()->SetDefaultHandler(handler); |
-} |
- |
-// static |
-void AppShimHandler::MaybeTerminate() { |
- AppShimHandlerRegistry::GetInstance()->MaybeTerminate(); |
-} |
- |
-// static |
-bool AppShimHandler::ShouldRestoreSession() { |
- return AppShimHandlerRegistry::GetInstance()->ShouldRestoreSession(); |
-} |
- |
-} // namespace apps |