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

Side by Side Diff: apps/shell/browser/shell_content_browser_client.cc

Issue 187223003: Allow content layer to pass ProtocolInterceptors when we create URLRequestContext (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "apps/shell/browser/shell_content_browser_client.h" 5 #include "apps/shell/browser/shell_content_browser_client.h"
6 6
7 #include "apps/shell/browser/shell_browser_context.h" 7 #include "apps/shell/browser/shell_browser_context.h"
8 #include "apps/shell/browser/shell_browser_main_parts.h" 8 #include "apps/shell/browser/shell_browser_main_parts.h"
9 #include "apps/shell/browser/shell_extension_system.h" 9 #include "apps/shell/browser/shell_extension_system.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 bool ShellContentBrowserClient::ShouldUseProcessPerSite( 53 bool ShellContentBrowserClient::ShouldUseProcessPerSite(
54 content::BrowserContext* browser_context, 54 content::BrowserContext* browser_context,
55 const GURL& effective_url) { 55 const GURL& effective_url) {
56 // This ensures that all render views created for a single app will use the 56 // This ensures that all render views created for a single app will use the
57 // same render process (see content::SiteInstance::GetProcess). Otherwise the 57 // same render process (see content::SiteInstance::GetProcess). Otherwise the
58 // default behavior of ContentBrowserClient will lead to separate render 58 // default behavior of ContentBrowserClient will lead to separate render
59 // processes for the background page and each app window view. 59 // processes for the background page and each app window view.
60 return true; 60 return true;
61 } 61 }
62 62
63 net::URLRequestContextGetter* 63 net::URLRequestContextGetter* ShellContentBrowserClient::CreateRequestContext(
64 ShellContentBrowserClient::CreateRequestContext(
65 content::BrowserContext* content_browser_context, 64 content::BrowserContext* content_browser_context,
66 content::ProtocolHandlerMap* protocol_handlers) { 65 content::ProtocolHandlerMap* protocol_handlers,
66 content::ProtocolHandlerScopedVector protocol_interceptors) {
67 // Handle chrome-extension: and chrome-extension-resource: requests. 67 // Handle chrome-extension: and chrome-extension-resource: requests.
68 extensions::InfoMap* extension_info_map = 68 extensions::InfoMap* extension_info_map =
69 browser_main_parts_->extension_system()->info_map(); 69 browser_main_parts_->extension_system()->info_map();
70 (*protocol_handlers)[extensions::kExtensionScheme] = 70 (*protocol_handlers)[extensions::kExtensionScheme] =
71 linked_ptr<net::URLRequestJobFactory::ProtocolHandler>( 71 linked_ptr<net::URLRequestJobFactory::ProtocolHandler>(
72 CreateExtensionProtocolHandler(false /*is_incognito*/, 72 CreateExtensionProtocolHandler(false /*is_incognito*/,
73 extension_info_map)); 73 extension_info_map));
74 (*protocol_handlers)[extensions::kExtensionResourceScheme] = 74 (*protocol_handlers)[extensions::kExtensionResourceScheme] =
75 linked_ptr<net::URLRequestJobFactory::ProtocolHandler>( 75 linked_ptr<net::URLRequestJobFactory::ProtocolHandler>(
76 CreateExtensionResourceProtocolHandler()); 76 CreateExtensionResourceProtocolHandler());
77 // Let content::ShellBrowserContext handle the rest of the setup. 77 // Let content::ShellBrowserContext handle the rest of the setup.
78 return browser_main_parts_->browser_context()->CreateRequestContext( 78 return browser_main_parts_->browser_context()->CreateRequestContext(
79 protocol_handlers); 79 protocol_handlers, protocol_interceptors.Pass());
80 } 80 }
81 81
82 bool ShellContentBrowserClient::IsHandledURL(const GURL& url) { 82 bool ShellContentBrowserClient::IsHandledURL(const GURL& url) {
83 if (!url.is_valid()) 83 if (!url.is_valid())
84 return false; 84 return false;
85 // Keep in sync with ProtocolHandlers added in CreateRequestContext() and in 85 // Keep in sync with ProtocolHandlers added in CreateRequestContext() and in
86 // content::ShellURLRequestContextGetter::GetURLRequestContext(). 86 // content::ShellURLRequestContextGetter::GetURLRequestContext().
87 static const char* const kProtocolList[] = { 87 static const char* const kProtocolList[] = {
88 content::kBlobScheme, 88 content::kBlobScheme,
89 content::kChromeDevToolsScheme, 89 content::kChromeDevToolsScheme,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 166
167 const extensions::Extension* ShellContentBrowserClient::GetExtension( 167 const extensions::Extension* ShellContentBrowserClient::GetExtension(
168 content::SiteInstance* site_instance) { 168 content::SiteInstance* site_instance) {
169 ExtensionRegistry* registry = 169 ExtensionRegistry* registry =
170 ExtensionRegistry::Get(site_instance->GetBrowserContext()); 170 ExtensionRegistry::Get(site_instance->GetBrowserContext());
171 return registry->enabled_extensions().GetExtensionOrAppByURL( 171 return registry->enabled_extensions().GetExtensionOrAppByURL(
172 site_instance->GetSiteURL()); 172 site_instance->GetSiteURL());
173 } 173 }
174 174
175 } // namespace apps 175 } // namespace apps
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698