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

Side by Side Diff: chrome/browser/renderer_host/browser_render_process_host.cc

Issue 6201005: Initial support for partitioning cookies for isolated apps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add ChromeURLRequestContext::Copy. Created 9 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // Represents the browser side of the browser <--> renderer communication 5 // Represents the browser side of the browser <--> renderer communication
6 // channel. There will be one RenderProcessHost per renderer process. 6 // channel. There will be one RenderProcessHost per renderer process.
7 7
8 #include "chrome/browser/renderer_host/browser_render_process_host.h" 8 #include "chrome/browser/renderer_host/browser_render_process_host.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 VisitedLinkCommon::Fingerprints pending_; 232 VisitedLinkCommon::Fingerprints pending_;
233 }; 233 };
234 234
235 namespace { 235 namespace {
236 236
237 // Helper class that we pass to ResourceMessageFilter so that it can find the 237 // Helper class that we pass to ResourceMessageFilter so that it can find the
238 // right net::URLRequestContext for a request. 238 // right net::URLRequestContext for a request.
239 class RendererURLRequestContextOverride 239 class RendererURLRequestContextOverride
240 : public ResourceMessageFilter::URLRequestContextOverride { 240 : public ResourceMessageFilter::URLRequestContextOverride {
241 public: 241 public:
242 explicit RendererURLRequestContextOverride(Profile* profile) 242 RendererURLRequestContextOverride(Profile* profile,
243 : request_context_(profile->GetRequestContext()), 243 const Extension* installed_app)
244 : request_context_(profile->GetRequestContextForPossibleApp(
245 installed_app)),
244 media_request_context_(profile->GetRequestContextForMedia()) { 246 media_request_context_(profile->GetRequestContextForMedia()) {
245 } 247 }
246 248
247 virtual net::URLRequestContext* GetRequestContext( 249 virtual net::URLRequestContext* GetRequestContext(
248 const ViewHostMsg_Resource_Request& resource_request) { 250 const ViewHostMsg_Resource_Request& resource_request) {
249 URLRequestContextGetter* request_context = request_context_; 251 URLRequestContextGetter* request_context = request_context_;
250 // If the request has resource type of ResourceType::MEDIA, we use a request 252 // If the request has resource type of ResourceType::MEDIA, we use a request
251 // context specific to media for handling it because these resources have 253 // context specific to media for handling it because these resources have
252 // specific needs for caching. 254 // specific needs for caching.
253 if (resource_request.resource_type == ResourceType::MEDIA) 255 if (resource_request.resource_type == ResourceType::MEDIA)
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 // We may have some unsent messages at this point, but that's OK. 330 // We may have some unsent messages at this point, but that's OK.
329 channel_.reset(); 331 channel_.reset();
330 while (!queued_messages_.empty()) { 332 while (!queued_messages_.empty()) {
331 delete queued_messages_.front(); 333 delete queued_messages_.front();
332 queued_messages_.pop(); 334 queued_messages_.pop();
333 } 335 }
334 336
335 ClearTransportDIBCache(); 337 ClearTransportDIBCache();
336 } 338 }
337 339
338 bool BrowserRenderProcessHost::Init( 340 bool BrowserRenderProcessHost::Init(bool is_accessibility_enabled,
339 bool is_accessibility_enabled, bool is_extensions_process) { 341 bool is_extensions_process,
342 const Extension* installed_app) {
340 // calling Init() more than once does nothing, this makes it more convenient 343 // calling Init() more than once does nothing, this makes it more convenient
341 // for the view host which may not be sure in some cases 344 // for the view host which may not be sure in some cases
342 if (channel_.get()) 345 if (channel_.get())
343 return true; 346 return true;
344 347
345 accessibility_enabled_ = is_accessibility_enabled; 348 accessibility_enabled_ = is_accessibility_enabled;
346 349
347 // It is possible for an extension process to be reused for non-extension 350 // It is possible for an extension process to be reused for non-extension
348 // content, e.g. if an extension calls window.open. 351 // content, e.g. if an extension calls window.open.
349 extension_process_ = extension_process_ || is_extensions_process; 352 extension_process_ = extension_process_ || is_extensions_process;
350 353
354 // Keep track of the installed app for this process, if any.
355 installed_app_ = installed_app;
356
351 // run the IPC channel on the shared IO thread. 357 // run the IPC channel on the shared IO thread.
352 base::Thread* io_thread = g_browser_process->io_thread(); 358 base::Thread* io_thread = g_browser_process->io_thread();
353 359
354 CommandLine::StringType renderer_prefix; 360 CommandLine::StringType renderer_prefix;
355 #if defined(OS_POSIX) 361 #if defined(OS_POSIX)
356 // A command prefix is something prepended to the command line of the spawned 362 // A command prefix is something prepended to the command line of the spawned
357 // process. It is supported only on POSIX systems. 363 // process. It is supported only on POSIX systems.
358 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); 364 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
359 renderer_prefix = 365 renderer_prefix =
360 browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix); 366 browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } 435 }
430 436
431 return true; 437 return true;
432 } 438 }
433 439
434 void BrowserRenderProcessHost::CreateMessageFilters() { 440 void BrowserRenderProcessHost::CreateMessageFilters() {
435 scoped_refptr<RenderMessageFilter> render_message_filter( 441 scoped_refptr<RenderMessageFilter> render_message_filter(
436 new RenderMessageFilter(id(), 442 new RenderMessageFilter(id(),
437 PluginService::GetInstance(), 443 PluginService::GetInstance(),
438 profile(), 444 profile(),
439 widget_helper_)); 445 widget_helper_,
446 installed_app_));
440 channel_->AddFilter(render_message_filter); 447 channel_->AddFilter(render_message_filter);
441 448
442 scoped_refptr<RendererURLRequestContextOverride> url_request_context_override( 449 scoped_refptr<RendererURLRequestContextOverride> url_request_context_override(
443 new RendererURLRequestContextOverride(profile())); 450 new RendererURLRequestContextOverride(profile(), installed_app_));
444 451
445 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( 452 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter(
446 id(), ChildProcessInfo::RENDER_PROCESS, 453 id(), ChildProcessInfo::RENDER_PROCESS,
447 g_browser_process->resource_dispatcher_host()); 454 g_browser_process->resource_dispatcher_host());
448 resource_message_filter->set_url_request_context_override( 455 resource_message_filter->set_url_request_context_override(
449 url_request_context_override); 456 url_request_context_override);
450 channel_->AddFilter(resource_message_filter); 457 channel_->AddFilter(resource_message_filter);
451 458
452 channel_->AddFilter(new AudioRendererHost()); 459 channel_->AddFilter(new AudioRendererHost());
453 channel_->AddFilter( 460 channel_->AddFilter(
(...skipping 832 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 IPC::PlatformFileForTransit file; 1293 IPC::PlatformFileForTransit file;
1287 #if defined(OS_POSIX) 1294 #if defined(OS_POSIX)
1288 file = base::FileDescriptor(model_file, false); 1295 file = base::FileDescriptor(model_file, false);
1289 #elif defined(OS_WIN) 1296 #elif defined(OS_WIN)
1290 ::DuplicateHandle(::GetCurrentProcess(), model_file, GetHandle(), &file, 0, 1297 ::DuplicateHandle(::GetCurrentProcess(), model_file, GetHandle(), &file, 0,
1291 false, DUPLICATE_SAME_ACCESS); 1298 false, DUPLICATE_SAME_ACCESS);
1292 #endif 1299 #endif
1293 Send(new ViewMsg_SetPhishingModel(file)); 1300 Send(new ViewMsg_SetPhishingModel(file));
1294 } 1301 }
1295 } 1302 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698