Index: chrome/worker/worker_thread.cc |
=================================================================== |
--- chrome/worker/worker_thread.cc (revision 46627) |
+++ chrome/worker/worker_thread.cc (working copy) |
@@ -7,6 +7,7 @@ |
#include "base/command_line.h" |
#include "base/lazy_instance.h" |
#include "base/thread_local.h" |
+#include "chrome/common/appcache/appcache_dispatcher.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/db_message_filter.h" |
#include "chrome/common/web_database_observer_impl.h" |
@@ -29,16 +30,22 @@ |
webkit_client_.reset(new WorkerWebKitClientImpl); |
WebKit::initialize(webkit_client_.get()); |
+ appcache_dispatcher_.reset(new AppCacheDispatcher(this)); |
+ |
web_database_observer_impl_.reset(new WebDatabaseObserverImpl(this)); |
WebKit::WebDatabase::setObserver(web_database_observer_impl_.get()); |
+ db_message_filter_ = new DBMessageFilter(); |
+ channel()->AddFilter(db_message_filter_.get()); |
const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
WebKit::WebRuntimeFeatures::enableDatabase( |
!command_line.HasSwitch(switches::kDisableDatabases)); |
- db_message_filter_ = new DBMessageFilter(); |
- channel()->AddFilter(db_message_filter_.get()); |
+ // TODO(michaeln): Enable once the browser process is ready to receive |
+ // the appcache messages. |
+ WebKit::WebRuntimeFeatures::enableApplicationCache(false && |
+ !command_line.HasSwitch(switches::kDisableApplicationCache)); |
#if defined(OS_WIN) |
// We don't yet support notifications on non-Windows, so hide it from pages. |
@@ -64,20 +71,27 @@ |
} |
void WorkerThread::OnControlMessageReceived(const IPC::Message& msg) { |
+ // Appcache messages are handled by a delegate. |
+ if (appcache_dispatcher_->OnMessageReceived(msg)) |
+ return; |
+ |
IPC_BEGIN_MESSAGE_MAP(WorkerThread, msg) |
IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateWorker) |
IPC_END_MESSAGE_MAP() |
} |
-void WorkerThread::OnCreateWorker(const GURL& url, |
- bool is_shared, |
- const string16& name, |
- int route_id) { |
+void WorkerThread::OnCreateWorker( |
+ const WorkerProcessMsg_CreateWorker_Params& params) { |
+ WorkerAppCacheInitInfo appcache_init_info( |
+ params.is_shared, params.creator_process_id, |
+ params.creator_appcache_host_id, |
+ params.shared_worker_appcache_id); |
+ |
// WebWorkerStub and WebSharedWorkerStub own themselves. |
- if (is_shared) |
- new WebSharedWorkerStub(name, route_id); |
+ if (params.is_shared) |
+ new WebSharedWorkerStub(params.name, params.route_id, appcache_init_info); |
else |
- new WebWorkerStub(url, route_id); |
+ new WebWorkerStub(params.url, params.route_id, appcache_init_info); |
} |
// The browser process is likely dead. Terminate all workers. |