Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: chromecast/shell/browser/cast_content_browser_client.cc

Issue 223143003: Initial checkin of chromecast content embedder (cast_shell) and related build scripts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Additional presubmit clean-up. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromecast/shell/browser/cast_content_browser_client.cc
diff --git a/chromecast/shell/browser/cast_content_browser_client.cc b/chromecast/shell/browser/cast_content_browser_client.cc
new file mode 100644
index 0000000000000000000000000000000000000000..68d83913ba304d7a40d42d1a3d860c43801bca32
--- /dev/null
+++ b/chromecast/shell/browser/cast_content_browser_client.cc
@@ -0,0 +1,146 @@
+// Copyright 2014 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/shell/browser/cast_content_browser_client.h"
+
+#include "base/command_line.h"
+#include "chromecast/shell/browser/cast_browser_context.h"
+#include "chromecast/shell/browser/cast_browser_main_parts.h"
+#include "chromecast/shell/browser/geolocation/cast_access_token_store.h"
+#include "chromecast/shell/browser/url_request_context_factory.h"
+#include "content/public/browser/certificate_request_result_type.h"
+#include "content/public/browser/render_process_host.h"
+#include "content/public/common/content_descriptors.h"
+#include "content/public/common/content_switches.h"
+#include "content/public/common/url_constants.h"
+#include "content/public/common/web_preferences.h"
+
+namespace chromecast {
+namespace shell {
+
+CastContentBrowserClient::CastContentBrowserClient()
+ : url_request_context_factory_(new URLRequestContextFactory()) {
+}
+
+CastContentBrowserClient::~CastContentBrowserClient() {
+}
+
+content::BrowserMainParts* CastContentBrowserClient::CreateBrowserMainParts(
+ const content::MainFunctionParams& parameters) {
+ shell_browser_main_parts_.reset(
+ new CastBrowserMainParts(parameters, url_request_context_factory_.get()));
+ return shell_browser_main_parts_.get();
+}
+
+void CastContentBrowserClient::RenderProcessWillLaunch(
+ content::RenderProcessHost* host) {
+}
+
+net::URLRequestContextGetter* CastContentBrowserClient::CreateRequestContext(
+ content::BrowserContext* browser_context,
+ content::ProtocolHandlerMap* protocol_handlers,
+ content::URLRequestInterceptorScopedVector request_interceptors) {
+ return url_request_context_factory_->CreateMainGetter(
+ browser_context,
+ protocol_handlers,
+ request_interceptors.Pass());
+}
+
+bool CastContentBrowserClient::IsHandledURL(const GURL& url) {
+ if (!url.is_valid())
+ return false;
+
+ static const char* const kProtocolList[] = {
+ url::kBlobScheme,
+ url::kFileSystemScheme,
+ content::kChromeUIScheme,
+ content::kChromeDevToolsScheme,
+ url::kDataScheme,
+ };
+
+ const std::string& scheme = url.scheme();
+ for (size_t i = 0; i < arraysize(kProtocolList); ++i) {
+ if (scheme == kProtocolList[i])
+ return true;
+ }
+ return false;
+}
+
+void CastContentBrowserClient::AppendExtraCommandLineSwitches(
+ base::CommandLine* command_line,
+ int child_process_id) {
+
+ std::string process_type =
+ command_line->GetSwitchValueNative(switches::kProcessType);
+ // Renderer process comamndline
+ if (process_type == switches::kRendererProcess) {
+ // Any browser command-line switches that should be propagated to
+ // the renderer go here.
+ }
+}
+
+content::AccessTokenStore* CastContentBrowserClient::CreateAccessTokenStore() {
+ return new CastAccessTokenStore(shell_browser_main_parts_->browser_context());
+}
+
+void CastContentBrowserClient::OverrideWebkitPrefs(
+ content::RenderViewHost* render_view_host,
+ const GURL& url,
+ content::WebPreferences* prefs) {
+ prefs->allow_scripts_to_close_windows = true;
+ // TODO(lcwu): http://crbug.com/391089. This pref is set to true by default
+ // because some content providers such as YouTube use plain http requests
+ // to retrieve media data chunks while running in a https page. This pref
+ // should be disabled once all the content providers are no longer doing that.
+ prefs->allow_running_insecure_content = true;
+}
+
+std::string CastContentBrowserClient::GetApplicationLocale() {
+ return "en-US";
+}
+
+void CastContentBrowserClient::AllowCertificateError(
+ int render_process_id,
+ int render_view_id,
+ int cert_error,
+ const net::SSLInfo& ssl_info,
+ const GURL& request_url,
+ content::ResourceType::Type resource_type,
+ bool overridable,
+ bool strict_enforcement,
+ const base::Callback<void(bool)>& callback,
+ content::CertificateRequestResultType* result) {
+ // Allow developers to override certificate errors.
+ // Otherwise, any fatal certificate errors will cause an abort.
+ *result = content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL;
+ return;
+}
+
+bool CastContentBrowserClient::CanCreateWindow(
+ const GURL& opener_url,
+ const GURL& opener_top_level_frame_url,
+ const GURL& source_origin,
+ WindowContainerType container_type,
+ const GURL& target_url,
+ const content::Referrer& referrer,
+ WindowOpenDisposition disposition,
+ const blink::WebWindowFeatures& features,
+ bool user_gesture,
+ bool opener_suppressed,
+ content::ResourceContext* context,
+ int render_process_id,
+ int opener_id,
+ bool* no_javascript_access) {
+ *no_javascript_access = true;
+ return false;
+}
+
+void CastContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+ std::vector<content::FileDescriptorInfo>* mappings) {
+}
+
+} // namespace shell
+} // namespace chromecast

Powered by Google App Engine
This is Rietveld 408576698