OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 DCHECK(profile); | 41 DCHECK(profile); |
42 scoped_refptr<ExtensionDataDeleter> deleter = | 42 scoped_refptr<ExtensionDataDeleter> deleter = |
43 new ExtensionDataDeleter( | 43 new ExtensionDataDeleter( |
44 profile, extension_id, storage_origin, is_storage_isolated); | 44 profile, extension_id, storage_origin, is_storage_isolated); |
45 | 45 |
46 BrowserThread::PostTask( | 46 BrowserThread::PostTask( |
47 BrowserThread::IO, FROM_HERE, | 47 BrowserThread::IO, FROM_HERE, |
48 base::Bind( | 48 base::Bind( |
49 &ExtensionDataDeleter::DeleteCookiesOnIOThread, deleter)); | 49 &ExtensionDataDeleter::DeleteCookiesOnIOThread, deleter)); |
50 | 50 |
51 BrowserThread::PostTask( | 51 scoped_refptr<DOMStorageContext> dom_storage_context = |
52 BrowserThread::WEBKIT_DEPRECATED, FROM_HERE, | 52 BrowserContext::GetDOMStorageContext(profile); |
| 53 dom_storage_context->task_runner()->PostTask( |
| 54 FROM_HERE, |
53 base::Bind( | 55 base::Bind( |
54 &ExtensionDataDeleter::DeleteLocalStorageOnWebkitThread, deleter, | 56 &ExtensionDataDeleter::DeleteLocalStorageInSequencedTask, deleter, |
55 make_scoped_refptr(BrowserContext::GetDOMStorageContext(profile)))); | 57 dom_storage_context)); |
56 | 58 |
57 BrowserThread::PostTask( | 59 BrowserThread::PostTask( |
58 BrowserThread::WEBKIT_DEPRECATED, FROM_HERE, | 60 BrowserThread::WEBKIT_DEPRECATED, FROM_HERE, |
59 base::Bind( | 61 base::Bind( |
60 &ExtensionDataDeleter::DeleteIndexedDBOnWebkitThread, deleter, | 62 &ExtensionDataDeleter::DeleteIndexedDBOnWebkitThread, deleter, |
61 make_scoped_refptr(BrowserContext::GetIndexedDBContext(profile)))); | 63 make_scoped_refptr(BrowserContext::GetIndexedDBContext(profile)))); |
62 | 64 |
63 BrowserThread::PostTask( | 65 BrowserThread::PostTask( |
64 BrowserThread::FILE, FROM_HERE, | 66 BrowserThread::FILE, FROM_HERE, |
65 base::Bind( | 67 base::Bind( |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 storage_origin_, net::CookieMonster::DeleteCallback()); | 120 storage_origin_, net::CookieMonster::DeleteCallback()); |
119 } | 121 } |
120 | 122 |
121 void ExtensionDataDeleter::DeleteDatabaseOnFileThread() { | 123 void ExtensionDataDeleter::DeleteDatabaseOnFileThread() { |
122 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 124 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
123 int rv = database_tracker_->DeleteDataForOrigin( | 125 int rv = database_tracker_->DeleteDataForOrigin( |
124 origin_id_, net::CompletionCallback()); | 126 origin_id_, net::CompletionCallback()); |
125 DCHECK(rv == net::OK || rv == net::ERR_IO_PENDING); | 127 DCHECK(rv == net::OK || rv == net::ERR_IO_PENDING); |
126 } | 128 } |
127 | 129 |
128 void ExtensionDataDeleter::DeleteLocalStorageOnWebkitThread( | 130 void ExtensionDataDeleter::DeleteLocalStorageInSequencedTask( |
129 scoped_refptr<DOMStorageContext> dom_storage_context) { | 131 DOMStorageContext* dom_storage_context) { |
130 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); | 132 DCHECK(dom_storage_context->task_runner()->RunsTasksOnCurrentThread()); |
131 dom_storage_context->DeleteForOrigin(origin_id_); | 133 dom_storage_context->DeleteForOrigin(origin_id_); |
132 } | 134 } |
133 | 135 |
134 void ExtensionDataDeleter::DeleteIndexedDBOnWebkitThread( | 136 void ExtensionDataDeleter::DeleteIndexedDBOnWebkitThread( |
135 scoped_refptr<IndexedDBContext> indexed_db_context) { | 137 scoped_refptr<IndexedDBContext> indexed_db_context) { |
136 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); | 138 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); |
137 indexed_db_context->DeleteForOrigin(storage_origin_); | 139 indexed_db_context->DeleteForOrigin(storage_origin_); |
138 } | 140 } |
139 | 141 |
140 void ExtensionDataDeleter::DeleteFileSystemOnFileThread() { | 142 void ExtensionDataDeleter::DeleteFileSystemOnFileThread() { |
141 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 143 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
142 file_system_context_->DeleteDataForOriginOnFileThread(storage_origin_); | 144 file_system_context_->DeleteDataForOriginOnFileThread(storage_origin_); |
143 | 145 |
144 // TODO(creis): The following call fails because the request context is still | 146 // TODO(creis): The following call fails because the request context is still |
145 // around, and holding open file handles in this directory. | 147 // around, and holding open file handles in this directory. |
146 // See http://crbug.com/85127 | 148 // See http://crbug.com/85127 |
147 if (!isolated_app_path_.empty()) | 149 if (!isolated_app_path_.empty()) |
148 file_util::Delete(isolated_app_path_, true); | 150 file_util::Delete(isolated_app_path_, true); |
149 } | 151 } |
150 | 152 |
151 void ExtensionDataDeleter::DeleteAppcachesOnIOThread(ResourceContext* context) { | 153 void ExtensionDataDeleter::DeleteAppcachesOnIOThread(ResourceContext* context) { |
152 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 154 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
153 ResourceContext::GetAppCacheService(context)->DeleteAppCachesForOrigin( | 155 ResourceContext::GetAppCacheService(context)->DeleteAppCachesForOrigin( |
154 storage_origin_, net::CompletionCallback()); | 156 storage_origin_, net::CompletionCallback()); |
155 } | 157 } |
OLD | NEW |