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

Unified Diff: apps/app_window_registry.cc

Issue 494033002: Move AppWindow to extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unneeded include in chrome_shell_delegate.cc 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
« no previous file with comments | « apps/app_window_registry.h ('k') | apps/apps.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: apps/app_window_registry.cc
diff --git a/apps/app_window_registry.cc b/apps/app_window_registry.cc
deleted file mode 100644
index 0874a5ee15d5708a2b8627ea5f3b5c3c78d8f2ac..0000000000000000000000000000000000000000
--- a/apps/app_window_registry.cc
+++ /dev/null
@@ -1,353 +0,0 @@
-// Copyright 2014 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_window_registry.h"
-
-#include <string>
-#include <vector>
-
-#include "apps/app_window.h"
-#include "apps/ui/apps_client.h"
-#include "components/keyed_service/content/browser_context_dependency_manager.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/devtools_agent_host.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/site_instance.h"
-#include "content/public/browser/web_contents.h"
-#include "extensions/browser/app_window/native_app_window.h"
-#include "extensions/browser/extensions_browser_client.h"
-#include "extensions/common/extension.h"
-
-namespace {
-
-// Create a key that identifies a AppWindow in a RenderViewHost across App
-// reloads. If the window was given an id in CreateParams, the key is the
-// extension id, a colon separator, and the AppWindow's |id|. If there is no
-// |id|, the chrome-extension://extension-id/page.html URL will be used. If the
-// RenderViewHost is not for a AppWindow, return an empty string.
-std::string GetWindowKeyForRenderViewHost(
- const apps::AppWindowRegistry* registry,
- content::RenderViewHost* render_view_host) {
- apps::AppWindow* app_window =
- registry->GetAppWindowForRenderViewHost(render_view_host);
- if (!app_window)
- return std::string(); // Not a AppWindow.
-
- if (app_window->window_key().empty())
- return app_window->web_contents()->GetURL().possibly_invalid_spec();
-
- std::string key = app_window->extension_id();
- key += ':';
- key += app_window->window_key();
- return key;
-}
-
-} // namespace
-
-namespace apps {
-
-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) {
-}
-
-AppWindowRegistry::Observer::~Observer() {
-}
-
-AppWindowRegistry::AppWindowRegistry(content::BrowserContext* context)
- : context_(context),
- devtools_callback_(base::Bind(&AppWindowRegistry::OnDevToolsStateChanged,
- base::Unretained(this))) {
- content::DevToolsAgentHost::AddAgentStateCallback(devtools_callback_);
-}
-
-AppWindowRegistry::~AppWindowRegistry() {
- content::DevToolsAgentHost::RemoveAgentStateCallback(devtools_callback_);
-}
-
-// static
-AppWindowRegistry* AppWindowRegistry::Get(content::BrowserContext* context) {
- return Factory::GetForBrowserContext(context, true /* create */);
-}
-
-void AppWindowRegistry::AddAppWindow(AppWindow* app_window) {
- BringToFront(app_window);
- FOR_EACH_OBSERVER(Observer, observers_, OnAppWindowAdded(app_window));
-}
-
-void AppWindowRegistry::AppWindowIconChanged(AppWindow* app_window) {
- AddAppWindowToList(app_window);
- FOR_EACH_OBSERVER(Observer, observers_, OnAppWindowIconChanged(app_window));
-}
-
-void AppWindowRegistry::AppWindowActivated(AppWindow* app_window) {
- BringToFront(app_window);
-}
-
-void AppWindowRegistry::AppWindowHidden(AppWindow* app_window) {
- FOR_EACH_OBSERVER(Observer, observers_, OnAppWindowHidden(app_window));
-}
-
-void AppWindowRegistry::AppWindowShown(AppWindow* app_window) {
- FOR_EACH_OBSERVER(Observer, observers_, OnAppWindowShown(app_window));
-}
-
-void AppWindowRegistry::RemoveAppWindow(AppWindow* app_window) {
- const AppWindowList::iterator it =
- std::find(app_windows_.begin(), app_windows_.end(), app_window);
- if (it != app_windows_.end())
- app_windows_.erase(it);
- FOR_EACH_OBSERVER(Observer, observers_, OnAppWindowRemoved(app_window));
-}
-
-void AppWindowRegistry::AddObserver(Observer* observer) {
- observers_.AddObserver(observer);
-}
-
-void AppWindowRegistry::RemoveObserver(Observer* observer) {
- observers_.RemoveObserver(observer);
-}
-
-AppWindowRegistry::AppWindowList AppWindowRegistry::GetAppWindowsForApp(
- const std::string& app_id) const {
- AppWindowList app_windows;
- for (AppWindowList::const_iterator i = app_windows_.begin();
- i != app_windows_.end();
- ++i) {
- if ((*i)->extension_id() == app_id)
- app_windows.push_back(*i);
- }
- return app_windows;
-}
-
-void AppWindowRegistry::CloseAllAppWindowsForApp(const std::string& app_id) {
- const AppWindowList windows = GetAppWindowsForApp(app_id);
- for (AppWindowRegistry::const_iterator it = windows.begin();
- it != windows.end();
- ++it) {
- (*it)->GetBaseWindow()->Close();
- }
-}
-
-AppWindow* AppWindowRegistry::GetAppWindowForRenderViewHost(
- content::RenderViewHost* render_view_host) const {
- for (AppWindowList::const_iterator i = app_windows_.begin();
- i != app_windows_.end();
- ++i) {
- if ((*i)->web_contents()->GetRenderViewHost() == render_view_host)
- return *i;
- }
-
- return NULL;
-}
-
-AppWindow* AppWindowRegistry::GetAppWindowForNativeWindow(
- gfx::NativeWindow window) const {
- for (AppWindowList::const_iterator i = app_windows_.begin();
- i != app_windows_.end();
- ++i) {
- if ((*i)->GetNativeWindow() == window)
- return *i;
- }
-
- return NULL;
-}
-
-AppWindow* AppWindowRegistry::GetCurrentAppWindowForApp(
- const std::string& app_id) const {
- AppWindow* result = NULL;
- for (AppWindowList::const_iterator i = app_windows_.begin();
- i != app_windows_.end();
- ++i) {
- if ((*i)->extension_id() == app_id) {
- result = *i;
- if (result->GetBaseWindow()->IsActive())
- return result;
- }
- }
-
- return result;
-}
-
-AppWindow* AppWindowRegistry::GetAppWindowForAppAndKey(
- const std::string& app_id,
- const std::string& window_key) const {
- AppWindow* result = NULL;
- for (AppWindowList::const_iterator i = app_windows_.begin();
- i != app_windows_.end();
- ++i) {
- if ((*i)->extension_id() == app_id && (*i)->window_key() == window_key) {
- result = *i;
- if (result->GetBaseWindow()->IsActive())
- return result;
- }
- }
- return result;
-}
-
-bool AppWindowRegistry::HadDevToolsAttached(
- content::RenderViewHost* render_view_host) const {
- std::string key = GetWindowKeyForRenderViewHost(this, render_view_host);
- return key.empty() ? false : inspected_windows_.count(key) != 0;
-}
-
-// static
-AppWindow* AppWindowRegistry::GetAppWindowForNativeWindowAnyProfile(
- gfx::NativeWindow window) {
- 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;
-
- AppWindow* app_window = registry->GetAppWindowForNativeWindow(window);
- if (app_window)
- return app_window;
- }
-
- return NULL;
-}
-
-// static
-bool AppWindowRegistry::IsAppWindowRegisteredInAnyProfile(
- int window_type_mask) {
- 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;
-
- const AppWindowList& app_windows = registry->app_windows();
- if (app_windows.empty())
- continue;
-
- if (window_type_mask == 0)
- return true;
-
- for (const_iterator j = app_windows.begin(); j != app_windows.end(); ++j) {
- if ((*j)->window_type() & window_type_mask)
- return true;
- }
- }
-
- 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) {
- content::WebContents* web_contents = agent_host->GetWebContents();
- // Ignore unrelated notifications.
- if (!web_contents || web_contents->GetBrowserContext() != context_)
- return;
-
- std::string key =
- GetWindowKeyForRenderViewHost(this, web_contents->GetRenderViewHost());
- if (key.empty())
- return;
-
- if (attached)
- inspected_windows_.insert(key);
- else
- inspected_windows_.erase(key);
-}
-
-void AppWindowRegistry::AddAppWindowToList(AppWindow* app_window) {
- const AppWindowList::iterator it =
- std::find(app_windows_.begin(), app_windows_.end(), app_window);
- if (it != app_windows_.end())
- return;
- app_windows_.push_back(app_window);
-}
-
-void AppWindowRegistry::BringToFront(AppWindow* app_window) {
- const AppWindowList::iterator it =
- std::find(app_windows_.begin(), app_windows_.end(), app_window);
- if (it != app_windows_.end())
- app_windows_.erase(it);
- app_windows_.push_front(app_window);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Factory boilerplate
-
-// static
-AppWindowRegistry* AppWindowRegistry::Factory::GetForBrowserContext(
- content::BrowserContext* context,
- bool create) {
- return static_cast<AppWindowRegistry*>(
- GetInstance()->GetServiceForBrowserContext(context, create));
-}
-
-AppWindowRegistry::Factory* AppWindowRegistry::Factory::GetInstance() {
- return Singleton<AppWindowRegistry::Factory>::get();
-}
-
-AppWindowRegistry::Factory::Factory()
- : BrowserContextKeyedServiceFactory(
- "AppWindowRegistry",
- BrowserContextDependencyManager::GetInstance()) {}
-
-AppWindowRegistry::Factory::~Factory() {}
-
-KeyedService* AppWindowRegistry::Factory::BuildServiceInstanceFor(
- content::BrowserContext* context) const {
- return new AppWindowRegistry(context);
-}
-
-bool AppWindowRegistry::Factory::ServiceIsCreatedWithBrowserContext() const {
- return true;
-}
-
-bool AppWindowRegistry::Factory::ServiceIsNULLWhileTesting() const {
- return false;
-}
-
-content::BrowserContext* AppWindowRegistry::Factory::GetBrowserContextToUse(
- content::BrowserContext* context) const {
- return extensions::ExtensionsBrowserClient::Get()->GetOriginalContext(
- context);
-}
-
-} // namespace apps
« no previous file with comments | « apps/app_window_registry.h ('k') | apps/apps.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698