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

Side by Side Diff: chrome/browser/extensions/extension_data_deleter.cc

Issue 2860012: Revert 50296 (Causes DCHECK failures) - Make CookieMonster NonThreadSafe.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 6 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 #include "chrome/browser/extensions/extension_data_deleter.h" 5 #include "chrome/browser/extensions/extension_data_deleter.h"
6 6
7 #include "chrome/browser/profile.h" 7 #include "chrome/browser/profile.h"
8 #include "chrome/common/extensions/extension.h" 8 #include "chrome/common/extensions/extension.h"
9 #include "net/base/cookie_monster.h" 9 #include "net/base/cookie_monster.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
11 #include "webkit/database/database_util.h" 11 #include "webkit/database/database_util.h"
12 12
13 ExtensionDataDeleter::ExtensionDataDeleter(Profile* profile, 13 ExtensionDataDeleter::ExtensionDataDeleter(Profile* profile,
14 const GURL& extension_url) { 14 const GURL& extension_url) {
15 DCHECK(profile); 15 DCHECK(profile);
16 webkit_context_ = profile->GetWebKitContext(); 16 webkit_context_ = profile->GetWebKitContext();
17 database_tracker_ = profile->GetDatabaseTracker(); 17 database_tracker_ = profile->GetDatabaseTracker();
18 extension_request_context_ = profile->GetRequestContextForExtensions(); 18 extension_request_context_ = profile->GetRequestContextForExtensions();
19 extension_url_ = extension_url; 19 extension_url_ = extension_url;
20 origin_id_ = 20 origin_id_ =
21 webkit_database::DatabaseUtil::GetOriginIdentifier(extension_url_); 21 webkit_database::DatabaseUtil::GetOriginIdentifier(extension_url_);
22 } 22 }
23 23
24 void ExtensionDataDeleter::StartDeleting() { 24 void ExtensionDataDeleter::StartDeleting() {
25 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); 25 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
26
27 ChromeThread::PostTask(
28 ChromeThread::IO, FROM_HERE,
29 NewRunnableMethod(this, &ExtensionDataDeleter::DeleteCookiesOnIOThread));
30
31 ChromeThread::PostTask(
32 ChromeThread::WEBKIT, FROM_HERE,
33 NewRunnableMethod(
34 this, &ExtensionDataDeleter::DeleteLocalStorageOnWebkitThread));
35
36 ChromeThread::PostTask(
37 ChromeThread::FILE, FROM_HERE,
38 NewRunnableMethod(
39 this, &ExtensionDataDeleter::DeleteDatabaseOnFileThread));
40 }
41
42 void ExtensionDataDeleter::DeleteCookiesOnIOThread() {
43 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
44 net::CookieMonster* cookie_monster = 26 net::CookieMonster* cookie_monster =
45 extension_request_context_->GetCookieStore()->GetCookieMonster(); 27 extension_request_context_->GetCookieStore()->GetCookieMonster();
46 if (cookie_monster) 28 if (cookie_monster)
47 cookie_monster->DeleteAllForURL(extension_url_, true); 29 cookie_monster->DeleteAllForURL(extension_url_, true);
30
31 ChromeThread::PostTask(ChromeThread::WEBKIT, FROM_HERE,
32 NewRunnableMethod(this,
33 &ExtensionDataDeleter::DeleteLocalStorageOnWebkitThread));
34
35 ChromeThread::PostTask(ChromeThread::FILE, FROM_HERE,
36 NewRunnableMethod(this,
37 &ExtensionDataDeleter::DeleteDatabaseOnFileThread));
48 } 38 }
49 39
50 void ExtensionDataDeleter::DeleteDatabaseOnFileThread() { 40 void ExtensionDataDeleter::DeleteDatabaseOnFileThread() {
51 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 41 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
52 int rv = database_tracker_->DeleteDataForOrigin(origin_id_, NULL); 42 int rv = database_tracker_->DeleteDataForOrigin(origin_id_, NULL);
53 DCHECK(rv == net::OK || rv == net::ERR_IO_PENDING); 43 DCHECK(rv == net::OK || rv == net::ERR_IO_PENDING);
54 } 44 }
55 45
56 void ExtensionDataDeleter::DeleteLocalStorageOnWebkitThread() { 46 void ExtensionDataDeleter::DeleteLocalStorageOnWebkitThread() {
57 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); 47 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT));
58 webkit_context_->dom_storage_context()->DeleteLocalStorageForOrigin( 48 webkit_context_->dom_storage_context()->DeleteLocalStorageForOrigin(
59 origin_id_); 49 origin_id_);
60 } 50 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_data_deleter.h ('k') | chrome/browser/extensions/extension_function.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698