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

Unified Diff: chrome/browser/in_process_webkit/dom_storage_dispatcher_host.cc

Issue 306032: Simplify threading in browser thread by making only ChromeThread deal with di... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: a few more simplifications Created 11 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/in_process_webkit/dom_storage_dispatcher_host.cc
===================================================================
--- chrome/browser/in_process_webkit/dom_storage_dispatcher_host.cc (revision 30037)
+++ chrome/browser/in_process_webkit/dom_storage_dispatcher_host.cc (working copy)
@@ -36,16 +36,13 @@
: webkit_context_(webkit_context),
webkit_thread_(webkit_thread),
message_sender_(message_sender),
- process_handle_(0),
- ever_used_(false),
- shutdown_(false) {
+ process_handle_(0) {
DCHECK(webkit_context_.get());
DCHECK(webkit_thread_);
DCHECK(message_sender_);
}
DOMStorageDispatcherHost::~DOMStorageDispatcherHost() {
- DCHECK(shutdown_);
}
void DOMStorageDispatcherHost::Init(base::ProcessHandle process_handle) {
@@ -62,23 +59,16 @@
if (process_handle_) // Init() was called
Context()->UnregisterDispatcherHost(this);
message_sender_ = NULL;
- if (!ever_used_) {
- // No need to (possibly) spin up the WebKit thread for a no-op.
- shutdown_ = true;
- return;
- }
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
- &DOMStorageDispatcherHost::Shutdown));
+ // The task will only execute if the WebKit thread is already running.
+ ChromeThread::PostTask(
+ ChromeThread::WEBKIT, FROM_HERE,
+ NewRunnableMethod(this, &DOMStorageDispatcherHost::Shutdown));
return;
}
DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT));
- DCHECK(ever_used_);
DCHECK(!message_sender_);
- DCHECK(!shutdown_);
- shutdown_ = true;
// TODO(jorlow): Do stuff that needs to be run on the WebKit thread. Locks
// and others will likely need this, so let's not delete this
@@ -91,15 +81,16 @@
const string16& origin, bool is_local_storage) {
DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT));
DCHECK(current_);
- current_->webkit_thread_->PostIOThreadTask(FROM_HERE, NewRunnableMethod(
- current_, &DOMStorageDispatcherHost::OnStorageEvent, key, old_value,
- new_value, origin, is_local_storage));
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
+ NewRunnableMethod(
+ current_, &DOMStorageDispatcherHost::OnStorageEvent, key, old_value,
+ new_value, origin, is_local_storage));
}
bool DOMStorageDispatcherHost::OnMessageReceived(const IPC::Message& message,
bool *msg_is_ok) {
DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
- DCHECK(!shutdown_);
DCHECK(process_handle_);
bool handled = true;
@@ -118,13 +109,10 @@
IPC_MESSAGE_HANDLER(ViewHostMsg_DOMStorageClear, OnClear)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
- if (handled)
- ever_used_ = true;
return handled;
}
void DOMStorageDispatcherHost::Send(IPC::Message* message) {
- DCHECK(!shutdown_);
if (!message_sender_) {
delete message;
return;
@@ -137,16 +125,15 @@
// The IO thread can't go away while the WebKit thread is still running.
DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT));
- webkit_thread_->PostIOThreadTask(FROM_HERE, NewRunnableMethod(this,
- &DOMStorageDispatcherHost::Send, message));
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
+ NewRunnableMethod(this, &DOMStorageDispatcherHost::Send, message));
}
void DOMStorageDispatcherHost::OnNamespaceId(DOMStorageType storage_type,
IPC::Message* reply_msg) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnNamespaceId,
storage_type, reply_msg));
return;
@@ -165,10 +152,8 @@
void DOMStorageDispatcherHost::OnCloneNamespaceId(int64 namespace_id,
IPC::Message* reply_msg) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnCloneNamespaceId,
namespace_id, reply_msg));
return;
@@ -192,10 +177,8 @@
void DOMStorageDispatcherHost::OnStorageAreaId(int64 namespace_id,
const string16& origin,
IPC::Message* reply_msg) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnStorageAreaId,
namespace_id, origin, reply_msg));
return;
@@ -218,10 +201,8 @@
void DOMStorageDispatcherHost::OnLength(int64 storage_area_id,
IPC::Message* reply_msg) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnLength, storage_area_id, reply_msg));
return;
}
@@ -241,10 +222,8 @@
void DOMStorageDispatcherHost::OnKey(int64 storage_area_id, unsigned index,
IPC::Message* reply_msg) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnKey, storage_area_id, index, reply_msg));
return;
}
@@ -265,10 +244,8 @@
void DOMStorageDispatcherHost::OnGetItem(int64 storage_area_id,
const string16& key,
IPC::Message* reply_msg) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnGetItem,
storage_area_id, key, reply_msg));
return;
@@ -289,10 +266,8 @@
void DOMStorageDispatcherHost::OnSetItem(int64 storage_area_id,
const string16& key, const string16& value, IPC::Message* reply_msg) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnSetItem, storage_area_id, key, value,
reply_msg));
return;
@@ -315,10 +290,8 @@
void DOMStorageDispatcherHost::OnRemoveItem(int64 storage_area_id,
const string16& key) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnRemoveItem, storage_area_id, key));
return;
}
@@ -336,10 +309,8 @@
}
void DOMStorageDispatcherHost::OnClear(int64 storage_area_id) {
- DCHECK(!shutdown_);
if (ChromeThread::CurrentlyOn(ChromeThread::IO)) {
- MessageLoop* webkit_loop = webkit_thread_->GetMessageLoop();
- webkit_loop->PostTask(FROM_HERE, NewRunnableMethod(this,
+ PostTaskToWebKitThread(FROM_HERE, NewRunnableMethod(this,
&DOMStorageDispatcherHost::OnClear, storage_area_id));
return;
}
@@ -372,3 +343,9 @@
++cur;
}
}
+
+void DOMStorageDispatcherHost::PostTaskToWebKitThread(
+ const tracked_objects::Location& from_here, Task* task) {
+ webkit_thread_->EnsureInitialized();
+ ChromeThread::PostTask(ChromeThread::WEBKIT, FROM_HERE, task);
jorlow 2009/10/27 21:37:25 use from_here, not FROM_HERE
+}

Powered by Google App Engine
This is Rietveld 408576698