diff options
author | gfhuang <gfhuang@chromium.org> | 2016-01-06 14:06:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-06 22:07:47 +0000 |
commit | d3600868637e418081e7a19d700c44c54f4b1371 (patch) | |
tree | 3153635561d07f14d3577c1f22cb409e6110598a /chromecast | |
parent | 8ff9e2d58ce2e576f81f2832f4dea3aa4525c783 (diff) | |
download | chromium_src-d3600868637e418081e7a19d700c44c54f4b1371.zip chromium_src-d3600868637e418081e7a19d700c44c54f4b1371.tar.gz chromium_src-d3600868637e418081e7a19d700c44c54f4b1371.tar.bz2 |
[Chromecast] Adding "chrome-resource://" scheme alias so that it can be accessed
by Backdrop.
This is inspired by kChromeSearchScheme under chrome/ code.
For background and details, please refer to internal bug and CL.
BUG=internal b/25327353
Review URL: https://codereview.chromium.org/1561053003
Cr-Commit-Position: refs/heads/master@{#367930}
Diffstat (limited to 'chromecast')
-rw-r--r-- | chromecast/base/BUILD.gn | 2 | ||||
-rw-r--r-- | chromecast/base/cast_constants.cc | 11 | ||||
-rw-r--r-- | chromecast/base/cast_constants.h | 14 | ||||
-rw-r--r-- | chromecast/browser/cast_browser_main_parts.cc | 5 | ||||
-rw-r--r-- | chromecast/browser/cast_content_browser_client.cc | 17 | ||||
-rw-r--r-- | chromecast/browser/cast_content_browser_client.h | 2 | ||||
-rw-r--r-- | chromecast/chromecast.gyp | 2 | ||||
-rw-r--r-- | chromecast/common/cast_content_client.cc | 12 | ||||
-rw-r--r-- | chromecast/common/cast_content_client.h | 2 |
9 files changed, 62 insertions, 5 deletions
diff --git a/chromecast/base/BUILD.gn b/chromecast/base/BUILD.gn index 81c20ff..355c0da 100644 --- a/chromecast/base/BUILD.gn +++ b/chromecast/base/BUILD.gn @@ -14,6 +14,8 @@ source_set("base") { "android/system_time_change_notifier_android.cc", "android/system_time_change_notifier_android.h", "bind_to_task_runner.h", + "cast_constants.cc", + "cast_constants.h", "cast_paths.cc", "cast_paths.h", "cast_resource.cc", diff --git a/chromecast/base/cast_constants.cc b/chromecast/base/cast_constants.cc new file mode 100644 index 0000000..9caf71f --- /dev/null +++ b/chromecast/base/cast_constants.cc @@ -0,0 +1,11 @@ +// Copyright 2016 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 "chromecast/base/cast_constants.h" + +namespace chromecast { + +const char kChromeResourceScheme[] = "chrome-resource"; + +} // namespace chromecast diff --git a/chromecast/base/cast_constants.h b/chromecast/base/cast_constants.h new file mode 100644 index 0000000..d65777f --- /dev/null +++ b/chromecast/base/cast_constants.h @@ -0,0 +1,14 @@ +// Copyright 2016 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. + +#ifndef CHROMECAST_BASE_CAST_CONSTANTS_H_ +#define CHROMECAST_BASE_CAST_CONSTANTS_H_ + +namespace chromecast { + +extern const char kChromeResourceScheme[]; + +} // namespace chromecast + +#endif // CHROMECAST_BASE_CAST_CONSTANTS_H_ diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc index a703723..9f31a1e 100644 --- a/chromecast/browser/cast_browser_main_parts.cc +++ b/chromecast/browser/cast_browser_main_parts.cc @@ -19,6 +19,7 @@ #include "base/thread_task_runner_handle.h" #include "build/build_config.h" #include "cc/base/switches.h" +#include "chromecast/base/cast_constants.h" #include "chromecast/base/cast_paths.h" #include "chromecast/base/cast_sys_info_util.h" #include "chromecast/base/chromecast_switches.h" @@ -41,6 +42,7 @@ #include "chromecast/public/cast_sys_info.h" #include "chromecast/service/cast_service.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/child_process_security_policy.h" #include "content/public/browser/gpu_data_manager.h" #include "content/public/common/content_switches.h" #include "gpu/command_buffer/service/gpu_switches.h" @@ -325,6 +327,9 @@ int CastBrowserMainParts::PreCreateThreads() { gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, cast_browser_process_->cast_screen()); #endif + + content::ChildProcessSecurityPolicy::GetInstance()->RegisterWebSafeScheme( + kChromeResourceScheme); return 0; } diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc index 3021c9c..654a64a 100644 --- a/chromecast/browser/cast_content_browser_client.cc +++ b/chromecast/browser/cast_content_browser_client.cc @@ -16,6 +16,7 @@ #include "base/path_service.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" +#include "chromecast/base/cast_constants.h" #include "chromecast/base/cast_paths.h" #include "chromecast/base/chromecast_switches.h" #include "chromecast/browser/cast_browser_context.h" @@ -171,11 +172,12 @@ bool CastContentBrowserClient::IsHandledURL(const GURL& url) { return false; static const char* const kProtocolList[] = { - url::kBlobScheme, - url::kFileSystemScheme, - content::kChromeUIScheme, - content::kChromeDevToolsScheme, - url::kDataScheme, + content::kChromeUIScheme, + content::kChromeDevToolsScheme, + kChromeResourceScheme, + url::kBlobScheme, + url::kDataScheme, + url::kFileSystemScheme, }; const std::string& scheme = url.scheme(); @@ -410,6 +412,11 @@ void CastContentBrowserClient::GetAdditionalMappedFilesForChildProcess( #endif // defined(OS_ANDROID) +void CastContentBrowserClient::GetAdditionalWebUISchemes( + std::vector<std::string>* additional_schemes) { + additional_schemes->push_back(kChromeResourceScheme); +} + #if defined(OS_ANDROID) && defined(VIDEO_HOLE) content::ExternalVideoSurfaceContainer* CastContentBrowserClient::OverrideCreateExternalVideoSurfaceContainer( diff --git a/chromecast/browser/cast_content_browser_client.h b/chromecast/browser/cast_content_browser_client.h index ff3805c..9ab3af7 100644 --- a/chromecast/browser/cast_content_browser_client.h +++ b/chromecast/browser/cast_content_browser_client.h @@ -152,6 +152,8 @@ class CastContentBrowserClient : public content::ContentBrowserClient { int child_process_id, content::FileDescriptorInfo* mappings) override; #endif // defined(OS_ANDROID) + void GetAdditionalWebUISchemes( + std::vector<std::string>* additional_schemes) override; #if defined(OS_ANDROID) && defined(VIDEO_HOLE) content::ExternalVideoSurfaceContainer* OverrideCreateExternalVideoSurfaceContainer( diff --git a/chromecast/chromecast.gyp b/chromecast/chromecast.gyp index 3a6080e..4d78212 100644 --- a/chromecast/chromecast.gyp +++ b/chromecast/chromecast.gyp @@ -88,6 +88,8 @@ 'base/android/system_time_change_notifier_android.cc', 'base/android/system_time_change_notifier_android.h', 'base/bind_to_task_runner.h', + 'base/cast_constants.cc', + 'base/cast_constants.h', 'base/cast_paths.cc', 'base/cast_paths.h', 'base/cast_resource.h', diff --git a/chromecast/common/cast_content_client.cc b/chromecast/common/cast_content_client.cc index b442fdd..2332ba6 100644 --- a/chromecast/common/cast_content_client.cc +++ b/chromecast/common/cast_content_client.cc @@ -9,10 +9,12 @@ #include "base/strings/stringprintf.h" #include "base/sys_info.h" #include "build/build_config.h" +#include "chromecast/base/cast_constants.h" #include "chromecast/base/version.h" #include "content/public/common/user_agent.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" +#include "url/url_util.h" namespace chromecast { namespace shell { @@ -50,6 +52,10 @@ std::string BuildAndroidOsInfo() { } #endif +const url::SchemeWithType kChromeResourceSchemeWithType = { + kChromeResourceScheme, url::SCHEME_WITHOUT_PORT +}; + } // namespace std::string GetUserAgent() { @@ -73,6 +79,12 @@ std::string GetUserAgent() { CastContentClient::~CastContentClient() { } +void CastContentClient::AddAdditionalSchemes( + std::vector<url::SchemeWithType>* standard_schemes, + std::vector<std::string>* savable_schemes) { + standard_schemes->push_back(kChromeResourceSchemeWithType); +} + std::string CastContentClient::GetUserAgent() const { return chromecast::shell::GetUserAgent(); } diff --git a/chromecast/common/cast_content_client.h b/chromecast/common/cast_content_client.h index 8289f41..f77a610 100644 --- a/chromecast/common/cast_content_client.h +++ b/chromecast/common/cast_content_client.h @@ -17,6 +17,8 @@ class CastContentClient : public content::ContentClient { ~CastContentClient() override; // content::ContentClient implementation: + void AddAdditionalSchemes(std::vector<url::SchemeWithType>* standard_schemes, + std::vector<std::string>* saveable_shemes) override; std::string GetUserAgent() const override; base::string16 GetLocalizedString(int message_id) const override; base::StringPiece GetDataResource( |