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

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

Issue 10824204: Move small c/b/extensions classes into extensions namespace no.2 (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Latest master for cq + nitfix Created 8 years, 4 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/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/extensions/extension_service.h" 9 #include "chrome/browser/extensions/extension_service.h"
10 #include "chrome/browser/extensions/settings/settings_frontend.h" 10 #include "chrome/browser/extensions/settings/settings_frontend.h"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/common/chrome_constants.h" 12 #include "chrome/common/chrome_constants.h"
13 #include "chrome/common/extensions/extension.h" 13 #include "chrome/common/extensions/extension.h"
14 #include "chrome/common/url_constants.h" 14 #include "chrome/common/url_constants.h"
15 #include "content/public/browser/dom_storage_context.h" 15 #include "content/public/browser/dom_storage_context.h"
16 #include "content/public/browser/indexed_db_context.h" 16 #include "content/public/browser/indexed_db_context.h"
17 #include "content/public/browser/resource_context.h" 17 #include "content/public/browser/resource_context.h"
18 #include "net/base/completion_callback.h" 18 #include "net/base/completion_callback.h"
19 #include "net/base/net_errors.h" 19 #include "net/base/net_errors.h"
20 #include "net/cookies/cookie_monster.h" 20 #include "net/cookies/cookie_monster.h"
21 #include "net/url_request/url_request_context.h" 21 #include "net/url_request/url_request_context.h"
22 #include "net/url_request/url_request_context_getter.h" 22 #include "net/url_request/url_request_context_getter.h"
23 #include "webkit/appcache/appcache_service.h" 23 #include "webkit/appcache/appcache_service.h"
24 #include "webkit/database/database_tracker.h" 24 #include "webkit/database/database_tracker.h"
25 #include "webkit/database/database_util.h" 25 #include "webkit/database/database_util.h"
26 #include "webkit/fileapi/file_system_context.h" 26 #include "webkit/fileapi/file_system_context.h"
27 27
28 using content::BrowserContext; 28 using content::BrowserContext;
29 using content::BrowserThread; 29 using content::BrowserThread;
30 using content::DOMStorageContext; 30 using content::DOMStorageContext;
31 using content::IndexedDBContext; 31 using content::IndexedDBContext;
32 using content::ResourceContext; 32 using content::ResourceContext;
33 33
34 namespace extensions {
35
34 // static 36 // static
35 void ExtensionDataDeleter::StartDeleting( 37 void DataDeleter::StartDeleting(Profile* profile,
36 Profile* profile, 38 const std::string& extension_id,
37 const std::string& extension_id, 39 const GURL& storage_origin,
38 const GURL& storage_origin, 40 bool is_storage_isolated) {
39 bool is_storage_isolated) {
40 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 41 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
41 DCHECK(profile); 42 DCHECK(profile);
42 scoped_refptr<ExtensionDataDeleter> deleter = 43 scoped_refptr<DataDeleter> deleter = new DataDeleter(
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(&DataDeleter::DeleteCookiesOnIOThread, deleter));
49 &ExtensionDataDeleter::DeleteCookiesOnIOThread, deleter));
50 49
51 BrowserContext::GetDefaultDOMStorageContext(profile)->DeleteOrigin( 50 BrowserContext::GetDefaultDOMStorageContext(profile)->DeleteOrigin(
52 storage_origin); 51 storage_origin);
53 52
54 BrowserThread::PostTask( 53 BrowserThread::PostTask(
55 BrowserThread::WEBKIT_DEPRECATED, FROM_HERE, 54 BrowserThread::WEBKIT_DEPRECATED, FROM_HERE,
56 base::Bind( 55 base::Bind(
57 &ExtensionDataDeleter::DeleteIndexedDBOnWebkitThread, deleter, 56 &DataDeleter::DeleteIndexedDBOnWebkitThread,
57 deleter,
58 make_scoped_refptr(BrowserContext::GetIndexedDBContext(profile)))); 58 make_scoped_refptr(BrowserContext::GetIndexedDBContext(profile))));
59 59
60 BrowserThread::PostTask( 60 BrowserThread::PostTask(
61 BrowserThread::FILE, FROM_HERE, 61 BrowserThread::FILE, FROM_HERE,
62 base::Bind( 62 base::Bind(&DataDeleter::DeleteDatabaseOnFileThread, deleter));
63 &ExtensionDataDeleter::DeleteDatabaseOnFileThread, deleter));
64 63
65 BrowserThread::PostTask( 64 BrowserThread::PostTask(
66 BrowserThread::FILE, FROM_HERE, 65 BrowserThread::FILE, FROM_HERE,
67 base::Bind( 66 base::Bind(&DataDeleter::DeleteFileSystemOnFileThread, deleter));
68 &ExtensionDataDeleter::DeleteFileSystemOnFileThread, deleter));
69 67
70 BrowserThread::PostTask( 68 BrowserThread::PostTask(
71 BrowserThread::IO, FROM_HERE, 69 BrowserThread::IO, FROM_HERE,
72 base::Bind( 70 base::Bind(&DataDeleter::DeleteAppcachesOnIOThread,
73 &ExtensionDataDeleter::DeleteAppcachesOnIOThread, deleter, 71 deleter,
74 profile->GetResourceContext())); 72 profile->GetResourceContext()));
75 73
76 profile->GetExtensionService()->settings_frontend()-> 74 profile->GetExtensionService()->settings_frontend()->
77 DeleteStorageSoon(extension_id); 75 DeleteStorageSoon(extension_id);
78 } 76 }
79 77
80 ExtensionDataDeleter::ExtensionDataDeleter( 78 DataDeleter::DataDeleter(
81 Profile* profile, 79 Profile* profile,
82 const std::string& extension_id, 80 const std::string& extension_id,
83 const GURL& storage_origin, 81 const GURL& storage_origin,
84 bool is_storage_isolated) 82 bool is_storage_isolated)
85 : extension_id_(extension_id) { 83 : extension_id_(extension_id) {
86 database_tracker_ = BrowserContext::GetDatabaseTracker(profile); 84 database_tracker_ = BrowserContext::GetDatabaseTracker(profile);
87 // Pick the right request context depending on whether it's an extension, 85 // Pick the right request context depending on whether it's an extension,
88 // isolated app, or regular app. 86 // isolated app, or regular app.
89 if (storage_origin.SchemeIs(chrome::kExtensionScheme)) { 87 if (storage_origin.SchemeIs(chrome::kExtensionScheme)) {
90 extension_request_context_ = profile->GetRequestContextForExtensions(); 88 extension_request_context_ = profile->GetRequestContextForExtensions();
91 } else if (is_storage_isolated) { 89 } else if (is_storage_isolated) {
92 extension_request_context_ = 90 extension_request_context_ =
93 profile->GetRequestContextForIsolatedApp(extension_id); 91 profile->GetRequestContextForIsolatedApp(extension_id);
94 isolated_app_path_ = profile->GetPath(). 92 isolated_app_path_ = profile->GetPath().
95 Append(chrome::kIsolatedAppStateDirname).AppendASCII(extension_id); 93 Append(chrome::kIsolatedAppStateDirname).AppendASCII(extension_id);
96 } else { 94 } else {
97 extension_request_context_ = profile->GetRequestContext(); 95 extension_request_context_ = profile->GetRequestContext();
98 } 96 }
99 file_system_context_ = BrowserContext::GetFileSystemContext(profile); 97 file_system_context_ = BrowserContext::GetFileSystemContext(profile);
100 storage_origin_ = storage_origin; 98 storage_origin_ = storage_origin;
101 origin_id_ = 99 origin_id_ =
102 webkit_database::DatabaseUtil::GetOriginIdentifier(storage_origin_); 100 webkit_database::DatabaseUtil::GetOriginIdentifier(storage_origin_);
103 } 101 }
104 102
105 ExtensionDataDeleter::~ExtensionDataDeleter() { 103 DataDeleter::~DataDeleter() {
106 } 104 }
107 105
108 void ExtensionDataDeleter::DeleteCookiesOnIOThread() { 106 void DataDeleter::DeleteCookiesOnIOThread() {
109 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 107 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
110 net::CookieMonster* cookie_monster = 108 net::CookieMonster* cookie_monster =
111 extension_request_context_->GetURLRequestContext()->cookie_store()-> 109 extension_request_context_->GetURLRequestContext()->cookie_store()->
112 GetCookieMonster(); 110 GetCookieMonster();
113 if (cookie_monster) 111 if (cookie_monster)
114 cookie_monster->DeleteAllForHostAsync( 112 cookie_monster->DeleteAllForHostAsync(
115 storage_origin_, net::CookieMonster::DeleteCallback()); 113 storage_origin_, net::CookieMonster::DeleteCallback());
116 } 114 }
117 115
118 void ExtensionDataDeleter::DeleteDatabaseOnFileThread() { 116 void DataDeleter::DeleteDatabaseOnFileThread() {
119 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 117 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
120 int rv = database_tracker_->DeleteDataForOrigin( 118 int rv = database_tracker_->DeleteDataForOrigin(
121 origin_id_, net::CompletionCallback()); 119 origin_id_, net::CompletionCallback());
122 DCHECK(rv == net::OK || rv == net::ERR_IO_PENDING); 120 DCHECK(rv == net::OK || rv == net::ERR_IO_PENDING);
123 } 121 }
124 122
125 void ExtensionDataDeleter::DeleteIndexedDBOnWebkitThread( 123 void DataDeleter::DeleteIndexedDBOnWebkitThread(
126 scoped_refptr<IndexedDBContext> indexed_db_context) { 124 scoped_refptr<IndexedDBContext> indexed_db_context) {
127 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
128 indexed_db_context->DeleteForOrigin(storage_origin_); 126 indexed_db_context->DeleteForOrigin(storage_origin_);
129 } 127 }
130 128
131 void ExtensionDataDeleter::DeleteFileSystemOnFileThread() { 129 void DataDeleter::DeleteFileSystemOnFileThread() {
132 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 130 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
133 file_system_context_->DeleteDataForOriginOnFileThread(storage_origin_); 131 file_system_context_->DeleteDataForOriginOnFileThread(storage_origin_);
134 132
135 // TODO(creis): The following call fails because the request context is still 133 // TODO(creis): The following call fails because the request context is still
136 // around, and holding open file handles in this directory. 134 // around, and holding open file handles in this directory.
137 // See http://crbug.com/85127 135 // See http://crbug.com/85127
138 if (!isolated_app_path_.empty()) 136 if (!isolated_app_path_.empty())
139 file_util::Delete(isolated_app_path_, true); 137 file_util::Delete(isolated_app_path_, true);
140 } 138 }
141 139
142 void ExtensionDataDeleter::DeleteAppcachesOnIOThread(ResourceContext* context) { 140 void DataDeleter::DeleteAppcachesOnIOThread(ResourceContext* context) {
143 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 141 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
144 ResourceContext::GetAppCacheService(context)->DeleteAppCachesForOrigin( 142 ResourceContext::GetAppCacheService(context)->DeleteAppCachesForOrigin(
145 storage_origin_, net::CompletionCallback()); 143 storage_origin_, net::CompletionCallback());
146 } 144 }
145
146 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/data_deleter.h ('k') | chrome/browser/extensions/extension_data_deleter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698