mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	chrome: Add CEF-specific WebUI handling (see issue #2969)
To avoid conflicting IDs between Alloy (which uses cef.pak) and Chrome (which uses chrome_100_percent.pak) the cef/LICENSE.txt file is now included in both cef/libcef/resources/cef_resources.grd and chrome/app/theme/chrome_unscaled_resources.grd with different ID values. The cef.pak file currently contains both CEF-specific resources and Chrome resources that are already included in the default *.pak files distributed with Chrome. In the future we should remove this duplication and just distribute the same *.pak files as Chrome for the majority of resources.
This commit is contained in:
		| @@ -17,6 +17,7 @@ | ||||
| #include "libcef/browser/net/internal_scheme_handler.h" | ||||
| #include "libcef/browser/thread_util.h" | ||||
| #include "libcef/common/app_manager.h" | ||||
| #include "libcef/features/runtime.h" | ||||
|  | ||||
| #include "base/command_line.h" | ||||
| #include "base/files/file_util.h" | ||||
| @@ -34,6 +35,7 @@ | ||||
| #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" | ||||
| #include "chrome/browser/ui/webui/theme_source.h" | ||||
| #include "chrome/common/url_constants.h" | ||||
| #include "chrome/grit/chrome_unscaled_resources.h" | ||||
| #include "content/browser/renderer_host/debug_urls.h" | ||||
| #include "content/browser/webui/content_web_ui_controller_factory.h" | ||||
| #include "content/public/browser/browser_url_handler.h" | ||||
| @@ -164,6 +166,10 @@ bool IsUnlistedHost(const std::string& host) { | ||||
|  | ||||
| // Returns true if a host is WebUI and should be allowed to load. | ||||
| bool IsAllowedWebUIHost(const std::string& host) { | ||||
|   // Chrome runtime allows all WebUI hosts. | ||||
|   if (cef::IsChromeRuntimeEnabled()) | ||||
|     return true; | ||||
|  | ||||
|   // Explicitly whitelisted WebUI hosts. | ||||
|   for (size_t i = 0; | ||||
|        i < sizeof(kAllowedWebUIHosts) / sizeof(kAllowedWebUIHosts[0]); ++i) { | ||||
| @@ -285,6 +291,18 @@ class TemplateParser { | ||||
| }; | ||||
|  | ||||
| bool OnExtensionsSupportUI(std::string* mime_type, std::string* output) { | ||||
|   *mime_type = "text/html"; | ||||
|  | ||||
|   if (cef::IsChromeRuntimeEnabled()) { | ||||
|     // Redirect to the Chrome documentation. | ||||
|     *output = | ||||
|         "<html><head>\n" | ||||
|         "<meta http-equiv=\"refresh\" " | ||||
|         "content=\"0;URL='https://developer.chrome.com/docs/extensions/'\"/>\n" | ||||
|         "</head></html>\n"; | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   static const char kDevURL[] = "https://developer.chrome.com/extensions/"; | ||||
|  | ||||
|   std::string html = | ||||
| @@ -331,16 +349,22 @@ bool OnExtensionsSupportUI(std::string* mime_type, std::string* output) { | ||||
|  | ||||
|   html += "</ul>\n</body>\n</html>"; | ||||
|  | ||||
|   *mime_type = "text/html"; | ||||
|   *output = html; | ||||
|  | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| bool OnLicenseUI(std::string* mime_type, std::string* output) { | ||||
|   // TODO(chrome): Currently, CEF-specific resources for the Alloy runtime come | ||||
|   // from cef/libcef/resources/cef_resources.grd via cef.pak and CEF-specific | ||||
|   // resources for the Chrome runtime come from | ||||
|   // chrome/app/theme/chrome_unscaled_resources.grd via chrome_100_percent.pak. | ||||
|   // It would be better to have a single pak file (and single ID value) for | ||||
|   // CEF-specific resources and share the same *.pak files as Chrome for the | ||||
|   // other resources. | ||||
|   std::string piece = | ||||
|       ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( | ||||
|           IDR_CEF_LICENSE_TXT); | ||||
|           cef::IsChromeRuntimeEnabled() ? IDR_CHROME_CEF_LICENSE_TXT | ||||
|                                         : IDR_CEF_LICENSE_TXT); | ||||
|   if (piece.empty()) { | ||||
|     NOTREACHED() << "Failed to load license txt resource."; | ||||
|     return false; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user