summaryrefslogtreecommitdiffstats
path: root/chromecast
diff options
context:
space:
mode:
authorgfhuang <gfhuang@chromium.org>2016-01-06 14:06:10 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-06 22:07:47 +0000
commitd3600868637e418081e7a19d700c44c54f4b1371 (patch)
tree3153635561d07f14d3577c1f22cb409e6110598a /chromecast
parent8ff9e2d58ce2e576f81f2832f4dea3aa4525c783 (diff)
downloadchromium_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.gn2
-rw-r--r--chromecast/base/cast_constants.cc11
-rw-r--r--chromecast/base/cast_constants.h14
-rw-r--r--chromecast/browser/cast_browser_main_parts.cc5
-rw-r--r--chromecast/browser/cast_content_browser_client.cc17
-rw-r--r--chromecast/browser/cast_content_browser_client.h2
-rw-r--r--chromecast/chromecast.gyp2
-rw-r--r--chromecast/common/cast_content_client.cc12
-rw-r--r--chromecast/common/cast_content_client.h2
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(