Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / apps / app_window_registry.cc
index 07b2c32..cf4839a 100644 (file)
@@ -35,7 +35,7 @@ std::string GetWindowKeyForRenderViewHost(
   if (app_window->window_key().empty())
     return app_window->web_contents()->GetURL().possibly_invalid_spec();
 
-  std::string key = app_window->extension()->id();
+  std::string key = app_window->extension_id();
   key += ':';
   key += app_window->window_key();
   return key;
@@ -45,13 +45,21 @@ std::string GetWindowKeyForRenderViewHost(
 
 namespace apps {
 
-#if defined(OS_CHROMEOS)
+void AppWindowRegistry::Observer::OnAppWindowAdded(AppWindow* app_window) {
+}
+
+void AppWindowRegistry::Observer::OnAppWindowIconChanged(
+    AppWindow* app_window) {
+}
+
+void AppWindowRegistry::Observer::OnAppWindowRemoved(AppWindow* app_window) {
+}
+
 void AppWindowRegistry::Observer::OnAppWindowHidden(AppWindow* app_window) {
 }
 
 void AppWindowRegistry::Observer::OnAppWindowShown(AppWindow* app_window) {
 }
-#endif
 
 AppWindowRegistry::Observer::~Observer() {
 }
@@ -88,7 +96,6 @@ void AppWindowRegistry::AppWindowActivated(AppWindow* app_window) {
   BringToFront(app_window);
 }
 
-#if defined(OS_CHROMEOS)
 void AppWindowRegistry::AppWindowHidden(AppWindow* app_window) {
   FOR_EACH_OBSERVER(Observer, observers_, OnAppWindowHidden(app_window));
 }
@@ -96,7 +103,6 @@ void AppWindowRegistry::AppWindowHidden(AppWindow* app_window) {
 void AppWindowRegistry::AppWindowShown(AppWindow* app_window) {
   FOR_EACH_OBSERVER(Observer, observers_, OnAppWindowShown(app_window));
 }
-#endif
 
 void AppWindowRegistry::RemoveAppWindow(AppWindow* app_window) {
   const AppWindowList::iterator it =
@@ -127,11 +133,11 @@ AppWindowRegistry::AppWindowList AppWindowRegistry::GetAppWindowsForApp(
 }
 
 void AppWindowRegistry::CloseAllAppWindowsForApp(const std::string& app_id) {
-  for (AppWindowList::const_iterator i = app_windows_.begin();
-       i != app_windows_.end();) {
-    AppWindow* app_window = *(i++);
-    if (app_window->extension_id() == app_id)
-      app_window->GetBaseWindow()->Close();
+  const AppWindowList windows = GetAppWindowsForApp(app_id);
+  for (AppWindowRegistry::const_iterator it = windows.begin();
+       it != windows.end();
+       ++it) {
+    (*it)->GetBaseWindow()->Close();
   }
 }
 
@@ -165,7 +171,7 @@ AppWindow* AppWindowRegistry::GetCurrentAppWindowForApp(
   for (AppWindowList::const_iterator i = app_windows_.begin();
        i != app_windows_.end();
        ++i) {
-    if ((*i)->extension()->id() == app_id) {
+    if ((*i)->extension_id() == app_id) {
       result = *i;
       if (result->GetBaseWindow()->IsActive())
         return result;
@@ -182,7 +188,7 @@ AppWindow* AppWindowRegistry::GetAppWindowForAppAndKey(
   for (AppWindowList::const_iterator i = app_windows_.begin();
        i != app_windows_.end();
        ++i) {
-    if ((*i)->extension()->id() == app_id && (*i)->window_key() == window_key) {
+    if ((*i)->extension_id() == app_id && (*i)->window_key() == window_key) {
       result = *i;
       if (result->GetBaseWindow()->IsActive())
         return result;
@@ -249,6 +255,24 @@ bool AppWindowRegistry::IsAppWindowRegisteredInAnyProfile(
   return false;
 }
 
+// static
+void AppWindowRegistry::CloseAllAppWindows() {
+  std::vector<content::BrowserContext*> contexts =
+      AppsClient::Get()->GetLoadedBrowserContexts();
+  for (std::vector<content::BrowserContext*>::const_iterator i =
+           contexts.begin();
+       i != contexts.end();
+       ++i) {
+    AppWindowRegistry* registry =
+        Factory::GetForBrowserContext(*i, false /* create */);
+    if (!registry)
+      continue;
+
+    while (!registry->app_windows().empty())
+      registry->app_windows().front()->GetBaseWindow()->Close();
+  }
+}
+
 void AppWindowRegistry::OnDevToolsStateChanged(
     content::DevToolsAgentHost* agent_host,
     bool attached) {
@@ -325,4 +349,4 @@ content::BrowserContext* AppWindowRegistry::Factory::GetBrowserContextToUse(
       context);
 }
 
-}  // namespace extensions
+}  // namespace apps