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

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: Created 9 years, 11 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 VisitedLinkCommon::Fingerprints pending_; 226 VisitedLinkCommon::Fingerprints pending_;
227 }; 227 };
228 228
229 namespace { 229 namespace {
230 230
231 // Helper class that we pass to ResourceMessageFilter so that it can find the 231 // Helper class that we pass to ResourceMessageFilter so that it can find the
232 // right URLRequestContext for a request. 232 // right URLRequestContext for a request.
233 class RendererURLRequestContextOverride 233 class RendererURLRequestContextOverride
234 : public ResourceMessageFilter::URLRequestContextOverride { 234 : public ResourceMessageFilter::URLRequestContextOverride {
235 public: 235 public:
236 explicit RendererURLRequestContextOverride(Profile* profile) 236 explicit RendererURLRequestContextOverride(Profile* profile,
237 : request_context_(profile->GetRequestContext()), 237 const Extension* installed_app)
238 : request_context_(profile->GetRequestContext(installed_app)),
238 media_request_context_(profile->GetRequestContextForMedia()) { 239 media_request_context_(profile->GetRequestContextForMedia()) {
239 } 240 }
240 241
241 virtual URLRequestContext* GetRequestContext( 242 virtual URLRequestContext* GetRequestContext(
242 uint32 request_id, ResourceType::Type resource_type) { 243 uint32 request_id, ResourceType::Type resource_type) {
243 URLRequestContextGetter* request_context = request_context_; 244 URLRequestContextGetter* request_context = request_context_;
244 // If the request has resource type of ResourceType::MEDIA, we use a request 245 // If the request has resource type of ResourceType::MEDIA, we use a request
245 // context specific to media for handling it because these resources have 246 // context specific to media for handling it because these resources have
246 // specific needs for caching. 247 // specific needs for caching.
247 if (resource_type == ResourceType::MEDIA) 248 if (resource_type == ResourceType::MEDIA)
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 channel_.reset(); 324 channel_.reset();
324 while (!queued_messages_.empty()) { 325 while (!queued_messages_.empty()) {
325 delete queued_messages_.front(); 326 delete queued_messages_.front();
326 queued_messages_.pop(); 327 queued_messages_.pop();
327 } 328 }
328 329
329 ClearTransportDIBCache(); 330 ClearTransportDIBCache();
330 } 331 }
331 332
332 bool BrowserRenderProcessHost::Init( 333 bool BrowserRenderProcessHost::Init(
333 bool is_accessibility_enabled, bool is_extensions_process) { 334 bool is_accessibility_enabled, bool is_extensions_process,
335 const Extension* installed_app) {
334 // calling Init() more than once does nothing, this makes it more convenient 336 // calling Init() more than once does nothing, this makes it more convenient
335 // for the view host which may not be sure in some cases 337 // for the view host which may not be sure in some cases
336 if (channel_.get()) 338 if (channel_.get())
337 return true; 339 return true;
338 340
339 accessibility_enabled_ = is_accessibility_enabled; 341 accessibility_enabled_ = is_accessibility_enabled;
340 342
341 // It is possible for an extension process to be reused for non-extension 343 // It is possible for an extension process to be reused for non-extension
342 // content, e.g. if an extension calls window.open. 344 // content, e.g. if an extension calls window.open.
343 extension_process_ = extension_process_ || is_extensions_process; 345 extension_process_ = extension_process_ || is_extensions_process;
344 346
347 // Keep track of the installed app for this process, if any.
348 installed_app_ = installed_app;
349
345 // run the IPC channel on the shared IO thread. 350 // run the IPC channel on the shared IO thread.
346 base::Thread* io_thread = g_browser_process->io_thread(); 351 base::Thread* io_thread = g_browser_process->io_thread();
347 352
348 CommandLine::StringType renderer_prefix; 353 CommandLine::StringType renderer_prefix;
349 #if defined(OS_POSIX) 354 #if defined(OS_POSIX)
350 // A command prefix is something prepended to the command line of the spawned 355 // A command prefix is something prepended to the command line of the spawned
351 // process. It is supported only on POSIX systems. 356 // process. It is supported only on POSIX systems.
352 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); 357 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
353 renderer_prefix = 358 renderer_prefix =
354 browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix); 359 browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 } 428 }
424 429
425 return true; 430 return true;
426 } 431 }
427 432
428 void BrowserRenderProcessHost::CreateMessageFilters() { 433 void BrowserRenderProcessHost::CreateMessageFilters() {
429 scoped_refptr<RenderMessageFilter> render_message_filter( 434 scoped_refptr<RenderMessageFilter> render_message_filter(
430 new RenderMessageFilter(id(), 435 new RenderMessageFilter(id(),
431 PluginService::GetInstance(), 436 PluginService::GetInstance(),
432 profile(), 437 profile(),
433 widget_helper_)); 438 widget_helper_,
439 installed_app_));
434 channel_->AddFilter(render_message_filter); 440 channel_->AddFilter(render_message_filter);
435 441
436 scoped_refptr<RendererURLRequestContextOverride> url_request_context_override( 442 scoped_refptr<RendererURLRequestContextOverride> url_request_context_override(
437 new RendererURLRequestContextOverride(profile())); 443 new RendererURLRequestContextOverride(profile(), installed_app_));
438 444
439 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( 445 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter(
440 id(), ChildProcessInfo::RENDER_PROCESS, 446 id(), ChildProcessInfo::RENDER_PROCESS,
441 g_browser_process->resource_dispatcher_host()); 447 g_browser_process->resource_dispatcher_host());
442 resource_message_filter->set_url_request_context_override( 448 resource_message_filter->set_url_request_context_override(
443 url_request_context_override); 449 url_request_context_override);
444 channel_->AddFilter(resource_message_filter); 450 channel_->AddFilter(resource_message_filter);
445 451
446 channel_->AddFilter(new AudioRendererHost()); 452 channel_->AddFilter(new AudioRendererHost());
447 channel_->AddFilter( 453 channel_->AddFilter(
(...skipping 839 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 IPC::PlatformFileForTransit file; 1293 IPC::PlatformFileForTransit file;
1288 #if defined(OS_POSIX) 1294 #if defined(OS_POSIX)
1289 file = base::FileDescriptor(model_file, false); 1295 file = base::FileDescriptor(model_file, false);
1290 #elif defined(OS_WIN) 1296 #elif defined(OS_WIN)
1291 ::DuplicateHandle(::GetCurrentProcess(), model_file, GetHandle(), &file, 0, 1297 ::DuplicateHandle(::GetCurrentProcess(), model_file, GetHandle(), &file, 0,
1292 false, DUPLICATE_SAME_ACCESS); 1298 false, DUPLICATE_SAME_ACCESS);
1293 #endif 1299 #endif
1294 Send(new ViewMsg_SetPhishingModel(file)); 1300 Send(new ViewMsg_SetPhishingModel(file));
1295 } 1301 }
1296 } 1302 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698