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