| Index: chrome/browser/in_process_webkit/webkit_context.cc
|
| ===================================================================
|
| --- chrome/browser/in_process_webkit/webkit_context.cc (revision 36257)
|
| +++ chrome/browser/in_process_webkit/webkit_context.cc (working copy)
|
| @@ -14,45 +14,43 @@
|
| }
|
|
|
| WebKitContext::~WebKitContext() {
|
| - // If the WebKit thread was ever spun up, delete the object there. The task
|
| - // will just get deleted if the WebKit thread isn't created.
|
| - DOMStorageContext* dom_storage_context = dom_storage_context_.release();
|
| - if (!ChromeThread::DeleteSoon(
|
| - ChromeThread::WEBKIT, FROM_HERE, dom_storage_context)) {
|
| - // The WebKit thread wasn't created, and the task got deleted without
|
| - // freeing the DOMStorageContext, so delete it manually.
|
| - delete dom_storage_context;
|
| - }
|
| + ChromeThread::DeleteSoon(ChromeThread::WEBKIT, FROM_HERE,
|
| + dom_storage_context_.release());
|
| }
|
|
|
| void WebKitContext::PurgeMemory() {
|
| - // DOMStorageContext::PurgeMemory() should only be called on the WebKit
|
| - // thread.
|
| - //
|
| - // Note that if there is no WebKit thread, then there's nothing in
|
| - // LocalStorage and it's OK to no-op here.
|
| - if (ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)) {
|
| - dom_storage_context_->PurgeMemory();
|
| - } else {
|
| - // Since we're not on the WebKit thread, proxy the call over to it. We
|
| - // can't post a task to call DOMStorageContext::PurgeMemory() directly
|
| - // because that class is not refcounted.
|
| + if (!ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)) {
|
| ChromeThread::PostTask(
|
| ChromeThread::WEBKIT, FROM_HERE,
|
| NewRunnableMethod(this, &WebKitContext::PurgeMemory));
|
| + return;
|
| }
|
| +
|
| + dom_storage_context_->PurgeMemory();
|
| }
|
|
|
| void WebKitContext::DeleteDataModifiedSince(const base::Time& cutoff) {
|
| - // DOMStorageContext::DeleteDataModifiedSince() should only be called on the
|
| - // WebKit thread.
|
| - if (ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)) {
|
| - dom_storage_context_->DeleteDataModifiedSince(cutoff);
|
| - } else {
|
| - bool result = ChromeThread::PostTask(
|
| + if (!ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)) {
|
| + ChromeThread::PostTask(
|
| ChromeThread::WEBKIT, FROM_HERE,
|
| NewRunnableMethod(this, &WebKitContext::DeleteDataModifiedSince,
|
| cutoff));
|
| - DCHECK(result);
|
| + return;
|
| }
|
| +
|
| + dom_storage_context_->DeleteDataModifiedSince(cutoff);
|
| }
|
| +
|
| +void WebKitContext::DeleteSessionStorageNamespace(
|
| + int64 session_storage_namespace_id) {
|
| + if (!ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)) {
|
| + ChromeThread::PostTask(
|
| + ChromeThread::WEBKIT, FROM_HERE,
|
| + NewRunnableMethod(this, &WebKitContext::DeleteSessionStorageNamespace,
|
| + session_storage_namespace_id));
|
| + return;
|
| + }
|
| +
|
| + dom_storage_context_->DeleteSessionStorageNamespace(
|
| + session_storage_namespace_id);
|
| +}
|
|
|