| Index: content/browser/webui/web_ui_controller_factory_registry.cc
|
| ===================================================================
|
| --- content/browser/webui/web_ui_controller_factory_registry.cc (revision 0)
|
| +++ content/browser/webui/web_ui_controller_factory_registry.cc (revision 0)
|
| @@ -0,0 +1,97 @@
|
| +// Copyright (c) 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 "content/browser/webui/web_ui_controller_factory_registry.h"
|
| +
|
| +#include "base/lazy_instance.h"
|
| +
|
| +namespace content {
|
| +
|
| +base::LazyInstance<std::vector<WebUIControllerFactory*> > g_factories =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +void WebUIControllerFactory::RegisterFactory(WebUIControllerFactory* factory) {
|
| + g_factories.Pointer()->push_back(factory);
|
| +}
|
| +
|
| +WebUIControllerFactoryRegistry* WebUIControllerFactoryRegistry::GetInstance() {
|
| + return Singleton<WebUIControllerFactoryRegistry>::get();
|
| +}
|
| +
|
| +void WebUIControllerFactoryRegistry::UnregisterFactoryForTesting(
|
| + WebUIControllerFactory* factory) {
|
| + std::vector<WebUIControllerFactory*>* factories = g_factories.Pointer();
|
| + for (size_t i = 0; i < factories->size(); ++i) {
|
| + if ((*factories)[i] == factory) {
|
| + factories->erase(factories->begin() + i);
|
| + return;
|
| + }
|
| + }
|
| + NOTREACHED() << "Tried to unregister a factory but it wasn't found";
|
| +}
|
| +
|
| +WebUIController* WebUIControllerFactoryRegistry::CreateWebUIControllerForURL(
|
| + WebUI* web_ui, const GURL& url) const {
|
| + std::vector<WebUIControllerFactory*>* factories = g_factories.Pointer();
|
| + for (size_t i = 0; i < factories->size(); ++i) {
|
| + WebUIController* controller = (*factories)[i]->CreateWebUIControllerForURL(
|
| + web_ui, url);
|
| + if (controller)
|
| + return controller;
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| +WebUI::TypeID WebUIControllerFactoryRegistry::GetWebUIType(
|
| + BrowserContext* browser_context, const GURL& url) const {
|
| + std::vector<WebUIControllerFactory*>* factories = g_factories.Pointer();
|
| + for (size_t i = 0; i < factories->size(); ++i) {
|
| + WebUI::TypeID type = (*factories)[i]->GetWebUIType(browser_context, url);
|
| + if (type != WebUI::kNoWebUI)
|
| + return type;
|
| + }
|
| + return WebUI::kNoWebUI;
|
| +}
|
| +
|
| +bool WebUIControllerFactoryRegistry::UseWebUIForURL(
|
| + BrowserContext* browser_context, const GURL& url) const {
|
| + std::vector<WebUIControllerFactory*>* factories = g_factories.Pointer();
|
| + for (size_t i = 0; i < factories->size(); ++i) {
|
| + if ((*factories)[i]->UseWebUIForURL(browser_context, url))
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +bool WebUIControllerFactoryRegistry::UseWebUIBindingsForURL(
|
| + BrowserContext* browser_context, const GURL& url) const {
|
| + std::vector<WebUIControllerFactory*>* factories = g_factories.Pointer();
|
| + for (size_t i = 0; i < factories->size(); ++i) {
|
| + if ((*factories)[i]->UseWebUIBindingsForURL(browser_context, url))
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +bool WebUIControllerFactoryRegistry::IsURLAcceptableForWebUI(
|
| + BrowserContext* browser_context,
|
| + const GURL& url,
|
| + bool data_urls_allowed) const {
|
| + std::vector<WebUIControllerFactory*>* factories = g_factories.Pointer();
|
| + for (size_t i = 0; i < factories->size(); ++i) {
|
| + if ((*factories)[i]->IsURLAcceptableForWebUI(
|
| + browser_context, url, data_urls_allowed)) {
|
| + return true;
|
| + }
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +WebUIControllerFactoryRegistry::WebUIControllerFactoryRegistry() {
|
| +}
|
| +
|
| +WebUIControllerFactoryRegistry::~WebUIControllerFactoryRegistry() {
|
| +}
|
| +
|
| +} // namespace content
|
|
|
| Property changes on: content\browser\webui\web_ui_controller_factory_registry.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|