| Index: content/browser/worker_host/worker_message_filter.cc
|
| diff --git a/content/browser/worker_host/worker_message_filter.cc b/content/browser/worker_host/worker_message_filter.cc
|
| index 980f22c63c7b344724153f8c2d2ca7d89ef80b07..74e5f69a3f8254112943f8a605ca0bdd0b726fdd 100644
|
| --- a/content/browser/worker_host/worker_message_filter.cc
|
| +++ b/content/browser/worker_host/worker_message_filter.cc
|
| @@ -5,6 +5,7 @@
|
| #include "content/browser/worker_host/worker_message_filter.h"
|
|
|
| #include "chrome/browser/net/chrome_url_request_context.h"
|
| +#include "content/browser/resource_context.h"
|
| #include "content/browser/worker_host/message_port_service.h"
|
| #include "content/browser/worker_host/worker_service.h"
|
| #include "content/common/view_messages.h"
|
| @@ -13,16 +14,19 @@
|
|
|
| WorkerMessageFilter::WorkerMessageFilter(
|
| int render_process_id,
|
| - net::URLRequestContextGetter* request_context,
|
| ResourceDispatcherHost* resource_dispatcher_host,
|
| CallbackWithReturnValue<int>::Type* next_routing_id)
|
| : render_process_id_(render_process_id),
|
| - request_context_(request_context),
|
| + request_context_getter_(NULL),
|
| + request_context_(NULL),
|
| + resource_context_getter_(NULL),
|
| + resource_context_(NULL),
|
| resource_dispatcher_host_(resource_dispatcher_host),
|
| next_routing_id_(next_routing_id) {
|
| }
|
|
|
| WorkerMessageFilter::~WorkerMessageFilter() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| }
|
|
|
| void WorkerMessageFilter::OnChannelClosing() {
|
| @@ -70,6 +74,35 @@ bool WorkerMessageFilter::OnMessageReceived(const IPC::Message& message,
|
| return handled;
|
| }
|
|
|
| +void WorkerMessageFilter::Init(
|
| + net::URLRequestContextGetter* request_context_getter,
|
| + content::ResourceContextGetter* resource_context_getter) {
|
| + DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + DCHECK(request_context_getter);
|
| + DCHECK(resource_context_getter);
|
| + DCHECK(!request_context_getter_);
|
| + DCHECK(!request_context_);
|
| + DCHECK(!resource_context_getter_.get());
|
| + DCHECK(!resource_context_);
|
| +
|
| + request_context_getter_ = request_context_getter;
|
| + resource_context_getter_.reset(resource_context_getter);
|
| +}
|
| +
|
| +void WorkerMessageFilter::InitOnIOThread(
|
| + net::URLRequestContext* request_context,
|
| + const content::ResourceContext& resource_context) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + DCHECK(request_context);
|
| + DCHECK(!request_context_getter_);
|
| + DCHECK(!request_context_);
|
| + DCHECK(!resource_context_getter_.get());
|
| + DCHECK(!resource_context_);
|
| +
|
| + request_context_ = request_context;
|
| + resource_context_ = &resource_context;
|
| +}
|
| +
|
| int WorkerMessageFilter::GetNextRoutingID() {
|
| return next_routing_id_->Run();
|
| }
|
| @@ -80,7 +113,7 @@ void WorkerMessageFilter::OnCreateWorker(
|
| *route_id = params.route_id != MSG_ROUTING_NONE ?
|
| params.route_id : next_routing_id_->Run();
|
| WorkerService::GetInstance()->CreateWorker(
|
| - params, *route_id, this, request_context_);
|
| + params, *route_id, this, request_context(), resource_context());
|
| }
|
|
|
| void WorkerMessageFilter::OnLookupSharedWorker(
|
| @@ -91,7 +124,7 @@ void WorkerMessageFilter::OnLookupSharedWorker(
|
| *route_id = next_routing_id_->Run();
|
|
|
| bool incognito = static_cast<ChromeURLRequestContext*>(
|
| - request_context_->GetURLRequestContext())->is_incognito();
|
| + request_context())->is_incognito();
|
| WorkerService::GetInstance()->LookupSharedWorker(
|
| params, *route_id, this, incognito, exists, url_error);
|
| }
|
| @@ -113,3 +146,25 @@ void WorkerMessageFilter::OnCreateMessagePort(int *route_id,
|
| *route_id = next_routing_id_->Run();
|
| MessagePortService::GetInstance()->Create(*route_id, this, message_port_id);
|
| }
|
| +
|
| +net::URLRequestContext* WorkerMessageFilter::request_context() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + if (request_context_getter_) {
|
| + DCHECK(!request_context_);
|
| + request_context_ = request_context_getter_->GetURLRequestContext();
|
| + request_context_getter_ = NULL;
|
| + }
|
| + DCHECK(request_context_);
|
| + return request_context_;
|
| +}
|
| +
|
| +const content::ResourceContext& WorkerMessageFilter::resource_context() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + if (resource_context_getter_.get()) {
|
| + DCHECK(!resource_context_);
|
| + resource_context_ = &resource_context_getter_->Get();
|
| + resource_context_getter_.reset();
|
| + }
|
| + DCHECK(resource_context_);
|
| + return *resource_context_;
|
| +}
|
|
|