| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" | 5 #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 #include "chrome/browser/ui/webui/translate_internals/translate_internals_ui.h" | 52 #include "chrome/browser/ui/webui/translate_internals/translate_internals_ui.h" |
| 53 #include "chrome/browser/ui/webui/user_actions/user_actions_ui.h" | 53 #include "chrome/browser/ui/webui/user_actions/user_actions_ui.h" |
| 54 #include "chrome/browser/ui/webui/version_ui.h" | 54 #include "chrome/browser/ui/webui/version_ui.h" |
| 55 #include "chrome/common/chrome_switches.h" | 55 #include "chrome/common/chrome_switches.h" |
| 56 #include "chrome/common/extensions/extension_constants.h" | 56 #include "chrome/common/extensions/extension_constants.h" |
| 57 #include "chrome/common/pref_names.h" | 57 #include "chrome/common/pref_names.h" |
| 58 #include "chrome/common/url_constants.h" | 58 #include "chrome/common/url_constants.h" |
| 59 #include "components/dom_distiller/core/dom_distiller_constants.h" | 59 #include "components/dom_distiller/core/dom_distiller_constants.h" |
| 60 #include "components/dom_distiller/core/dom_distiller_service.h" | 60 #include "components/dom_distiller/core/dom_distiller_service.h" |
| 61 #include "components/dom_distiller/webui/dom_distiller_ui.h" | 61 #include "components/dom_distiller/webui/dom_distiller_ui.h" |
| 62 #include "components/dom_distiller/webui/dom_distiller_viewer_ui.h" |
| 62 #include "content/public/browser/web_contents.h" | 63 #include "content/public/browser/web_contents.h" |
| 63 #include "content/public/browser/web_ui.h" | 64 #include "content/public/browser/web_ui.h" |
| 64 #include "content/public/common/content_client.h" | 65 #include "content/public/common/content_client.h" |
| 65 #include "content/public/common/url_utils.h" | 66 #include "content/public/common/url_utils.h" |
| 66 #include "extensions/common/constants.h" | 67 #include "extensions/common/constants.h" |
| 67 #include "extensions/common/feature_switch.h" | 68 #include "extensions/common/feature_switch.h" |
| 68 #include "ui/gfx/favicon_size.h" | 69 #include "ui/gfx/favicon_size.h" |
| 69 #include "ui/web_dialogs/web_dialog_ui.h" | 70 #include "ui/web_dialogs/web_dialog_ui.h" |
| 70 #include "url/gurl.h" | 71 #include "url/gurl.h" |
| 71 | 72 |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 template<> | 194 template<> |
| 194 WebUIController* NewWebUI<dom_distiller::DomDistillerUi>(WebUI* web_ui, | 195 WebUIController* NewWebUI<dom_distiller::DomDistillerUi>(WebUI* web_ui, |
| 195 const GURL& url) { | 196 const GURL& url) { |
| 196 // The DomDistillerUi can not depend on components/dom_distiller/content, | 197 // The DomDistillerUi can not depend on components/dom_distiller/content, |
| 197 // so inject the correct DomDistillerService from chrome/. | 198 // so inject the correct DomDistillerService from chrome/. |
| 198 content::BrowserContext* browser_context = | 199 content::BrowserContext* browser_context = |
| 199 web_ui->GetWebContents()->GetBrowserContext(); | 200 web_ui->GetWebContents()->GetBrowserContext(); |
| 200 dom_distiller::DomDistillerService* service = | 201 dom_distiller::DomDistillerService* service = |
| 201 dom_distiller::DomDistillerServiceFactory::GetForBrowserContext( | 202 dom_distiller::DomDistillerServiceFactory::GetForBrowserContext( |
| 202 browser_context); | 203 browser_context); |
| 203 // TODO(nyquist): Add real scheme. | 204 return new dom_distiller::DomDistillerUi(web_ui, |
| 204 return new dom_distiller::DomDistillerUi(web_ui, service, "dummy"); | 205 service, |
| 206 chrome::kDomDistillerScheme); |
| 205 } | 207 } |
| 206 | 208 |
| 207 // Only create ExtensionWebUI for URLs that are allowed extension bindings, | 209 // Only create ExtensionWebUI for URLs that are allowed extension bindings, |
| 208 // hosted by actual tabs. | 210 // hosted by actual tabs. |
| 209 bool NeedsExtensionWebUI(Profile* profile, const GURL& url) { | 211 bool NeedsExtensionWebUI(Profile* profile, const GURL& url) { |
| 210 ExtensionService* service = profile ? profile->GetExtensionService() : NULL; | 212 ExtensionService* service = profile ? profile->GetExtensionService() : NULL; |
| 211 return service && service->ExtensionBindingsAllowed(url); | 213 return service && service->ExtensionBindingsAllowed(url); |
| 212 } | 214 } |
| 213 | 215 |
| 214 // Returns a function that can be used to create the right type of WebUI for a | 216 // Returns a function that can be used to create the right type of WebUI for a |
| 215 // tab, based on its URL. Returns NULL if the URL doesn't have WebUI associated | 217 // tab, based on its URL. Returns NULL if the URL doesn't have WebUI associated |
| 216 // with it. | 218 // with it. |
| 217 WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, | 219 WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, |
| 218 Profile* profile, | 220 Profile* profile, |
| 219 const GURL& url) { | 221 const GURL& url) { |
| 220 #if defined(ENABLE_EXTENSIONS) | 222 #if defined(ENABLE_EXTENSIONS) |
| 221 if (NeedsExtensionWebUI(profile, url)) | 223 if (NeedsExtensionWebUI(profile, url)) |
| 222 return &NewWebUI<ExtensionWebUI>; | 224 return &NewWebUI<ExtensionWebUI>; |
| 223 #endif | 225 #endif |
| 224 | 226 |
| 225 // This will get called a lot to check all URLs, so do a quick check of other | 227 // This will get called a lot to check all URLs, so do a quick check of other |
| 226 // schemes to filter out most URLs. | 228 // schemes to filter out most URLs. |
| 227 if (!url.SchemeIs(chrome::kChromeDevToolsScheme) && | 229 if (!url.SchemeIs(chrome::kChromeDevToolsScheme) && |
| 228 !url.SchemeIs(chrome::kChromeInternalScheme) && | 230 !url.SchemeIs(chrome::kChromeInternalScheme) && |
| 229 !url.SchemeIs(chrome::kChromeUIScheme)) { | 231 !url.SchemeIs(chrome::kChromeUIScheme) && |
| 232 !url.SchemeIs(chrome::kDomDistillerScheme)) { |
| 230 return NULL; | 233 return NULL; |
| 231 } | 234 } |
| 232 | 235 |
| 233 // Special case the new tab page. In older versions of Chrome, the new tab | 236 // Special case the new tab page. In older versions of Chrome, the new tab |
| 234 // page was hosted at chrome-internal:<blah>. This might be in people's saved | 237 // page was hosted at chrome-internal:<blah>. This might be in people's saved |
| 235 // sessions or bookmarks, so we say any URL with that scheme triggers the new | 238 // sessions or bookmarks, so we say any URL with that scheme triggers the new |
| 236 // tab page. | 239 // tab page. |
| 237 if (url.host() == chrome::kChromeUINewTabHost || | 240 if (url.host() == chrome::kChromeUINewTabHost || |
| 238 url.SchemeIs(chrome::kChromeInternalScheme)) { | 241 url.SchemeIs(chrome::kChromeInternalScheme)) { |
| 239 return &NewWebUI<NewTabUI>; | 242 return &NewWebUI<NewTabUI>; |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 } | 489 } |
| 487 if (url.host() == chrome::kChromeUIExtensionsFrameHost) | 490 if (url.host() == chrome::kChromeUIExtensionsFrameHost) |
| 488 return &NewWebUI<extensions::ExtensionsUI>; | 491 return &NewWebUI<extensions::ExtensionsUI>; |
| 489 #endif | 492 #endif |
| 490 #if defined(ENABLE_FULL_PRINTING) | 493 #if defined(ENABLE_FULL_PRINTING) |
| 491 if (url.host() == chrome::kChromeUIPrintHost && | 494 if (url.host() == chrome::kChromeUIPrintHost && |
| 492 !profile->GetPrefs()->GetBoolean(prefs::kPrintPreviewDisabled)) | 495 !profile->GetPrefs()->GetBoolean(prefs::kPrintPreviewDisabled)) |
| 493 return &NewWebUI<PrintPreviewUI>; | 496 return &NewWebUI<PrintPreviewUI>; |
| 494 #endif | 497 #endif |
| 495 | 498 |
| 496 if (IsEnableDomDistillerSet() && | 499 if (IsEnableDomDistillerSet()) { |
| 497 url.host() == dom_distiller::kChromeUIDomDistillerHost) { | 500 if (url.SchemeIs(chrome::kDomDistillerScheme)) { |
| 498 return &NewWebUI<dom_distiller::DomDistillerUi>; | 501 return &NewWebUI<dom_distiller::DomDistillerViewerUi>; |
| 502 } else if (url.host() == dom_distiller::kChromeUIDomDistillerHost) { |
| 503 return &NewWebUI<dom_distiller::DomDistillerUi>; |
| 504 } |
| 499 } | 505 } |
| 500 | 506 |
| 501 return NULL; | 507 return NULL; |
| 502 } | 508 } |
| 503 | 509 |
| 504 void RunFaviconCallbackAsync( | 510 void RunFaviconCallbackAsync( |
| 505 const FaviconService::FaviconResultsCallback& callback, | 511 const FaviconService::FaviconResultsCallback& callback, |
| 506 const std::vector<chrome::FaviconBitmapResult>* results) { | 512 const std::vector<chrome::FaviconBitmapResult>* results) { |
| 507 base::MessageLoopProxy::current()->PostTask( | 513 base::MessageLoopProxy::current()->PostTask( |
| 508 FROM_HERE, | 514 FROM_HERE, |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 if (page_url.host() == chrome::kChromeUIPluginsHost) | 670 if (page_url.host() == chrome::kChromeUIPluginsHost) |
| 665 return PluginsUI::GetFaviconResourceBytes(scale_factor); | 671 return PluginsUI::GetFaviconResourceBytes(scale_factor); |
| 666 | 672 |
| 667 // Android doesn't use the components pages. | 673 // Android doesn't use the components pages. |
| 668 if (page_url.host() == chrome::kChromeUIComponentsHost) | 674 if (page_url.host() == chrome::kChromeUIComponentsHost) |
| 669 return ComponentsUI::GetFaviconResourceBytes(scale_factor); | 675 return ComponentsUI::GetFaviconResourceBytes(scale_factor); |
| 670 #endif | 676 #endif |
| 671 | 677 |
| 672 return NULL; | 678 return NULL; |
| 673 } | 679 } |
| OLD | NEW |