OLD | NEW |
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 #ifndef CHROME_BROWSER_BROWSING_DATA_REMOVER_H_ | 5 #ifndef CHROME_BROWSER_BROWSING_DATA_REMOVER_H_ |
6 #define CHROME_BROWSER_BROWSING_DATA_REMOVER_H_ | 6 #define CHROME_BROWSER_BROWSING_DATA_REMOVER_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/observer_list.h" | 11 #include "base/observer_list.h" |
12 #include "base/ref_counted.h" | 12 #include "base/ref_counted.h" |
13 #include "base/time.h" | 13 #include "base/time.h" |
14 #include "chrome/browser/appcache/chrome_appcache_service.h" | 14 #include "chrome/browser/appcache/chrome_appcache_service.h" |
15 #include "chrome/browser/cancelable_request.h" | 15 #include "chrome/browser/cancelable_request.h" |
16 #include "chrome/common/notification_registrar.h" | 16 #include "chrome/common/notification_registrar.h" |
17 #include "webkit/database/database_tracker.h" | |
18 | 17 |
| 18 class PluginDataRemover; |
19 class Profile; | 19 class Profile; |
20 class URLRequestContextGetter; | 20 class URLRequestContextGetter; |
21 | 21 |
22 namespace disk_cache { | 22 namespace disk_cache { |
23 class Backend; | 23 class Backend; |
24 } | 24 } |
25 | 25 |
| 26 namespace webkit_database { |
| 27 class DatabaseTracker; |
| 28 } |
| 29 |
26 // BrowsingDataRemover is responsible for removing data related to browsing: | 30 // BrowsingDataRemover is responsible for removing data related to browsing: |
27 // visits in url database, downloads, cookies ... | 31 // visits in url database, downloads, cookies ... |
28 | 32 |
29 class BrowsingDataRemover : public NotificationObserver { | 33 class BrowsingDataRemover : public NotificationObserver { |
30 public: | 34 public: |
31 // Time period ranges available when doing browsing data removals. | 35 // Time period ranges available when doing browsing data removals. |
32 enum TimePeriod { | 36 enum TimePeriod { |
33 LAST_HOUR = 0, | 37 LAST_HOUR = 0, |
34 LAST_DAY, | 38 LAST_DAY, |
35 LAST_WEEK, | 39 LAST_WEEK, |
36 FOUR_WEEKS, | 40 FOUR_WEEKS, |
37 EVERYTHING | 41 EVERYTHING |
38 }; | 42 }; |
39 | 43 |
40 // Mask used for Remove. | 44 // Mask used for Remove. |
41 | 45 |
42 // In addition to visits, this removes keywords and the last session. | 46 // In addition to visits, this removes keywords and the last session. |
43 static const int REMOVE_HISTORY = 1 << 0; | 47 static const int REMOVE_HISTORY = 1 << 0; |
44 static const int REMOVE_DOWNLOADS = 1 << 1; | 48 static const int REMOVE_DOWNLOADS = 1 << 1; |
45 static const int REMOVE_COOKIES = 1 << 2; | 49 static const int REMOVE_COOKIES = 1 << 2; |
46 static const int REMOVE_PASSWORDS = 1 << 3; | 50 static const int REMOVE_PASSWORDS = 1 << 3; |
47 static const int REMOVE_FORM_DATA = 1 << 4; | 51 static const int REMOVE_FORM_DATA = 1 << 4; |
48 static const int REMOVE_CACHE = 1 << 5; | 52 static const int REMOVE_CACHE = 1 << 5; |
| 53 static const int REMOVE_LSO_DATA = 1 << 6; |
49 | 54 |
50 // Observer is notified when the removal is done. Done means keywords have | 55 // Observer is notified when the removal is done. Done means keywords have |
51 // been deleted, cache cleared and all other tasks scheduled. | 56 // been deleted, cache cleared and all other tasks scheduled. |
52 class Observer { | 57 class Observer { |
53 public: | 58 public: |
54 virtual void OnBrowsingDataRemoverDone() = 0; | 59 virtual void OnBrowsingDataRemoverDone() = 0; |
55 | 60 |
56 protected: | 61 protected: |
57 virtual ~Observer() {} | 62 virtual ~Observer() {} |
58 }; | 63 }; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 // Invoked on the IO thread to delete from the AppCache, ignoring data from | 135 // Invoked on the IO thread to delete from the AppCache, ignoring data from |
131 // any origins within the |origin_whitelist|. | 136 // any origins within the |origin_whitelist|. |
132 void ClearAppCacheOnIOThread(base::Time delete_begin, | 137 void ClearAppCacheOnIOThread(base::Time delete_begin, |
133 const std::vector<GURL>& origin_whitelist); | 138 const std::vector<GURL>& origin_whitelist); |
134 | 139 |
135 // Lower level helpers. | 140 // Lower level helpers. |
136 void OnGotAppCacheInfo(int rv); | 141 void OnGotAppCacheInfo(int rv); |
137 void OnAppCacheDeleted(int rv); | 142 void OnAppCacheDeleted(int rv); |
138 ChromeAppCacheService* GetAppCacheService(); | 143 ChromeAppCacheService* GetAppCacheService(); |
139 | 144 |
| 145 // Callback when plug-in data has been cleared. Invokes NotifyAndDeleteIfDone. |
| 146 void OnClearedPluginData(); |
| 147 |
140 // Calculate the begin time for the deletion range specified by |time_period|. | 148 // Calculate the begin time for the deletion range specified by |time_period|. |
141 base::Time CalculateBeginDeleteTime(TimePeriod time_period); | 149 base::Time CalculateBeginDeleteTime(TimePeriod time_period); |
142 | 150 |
143 // Returns true if we're all done. | 151 // Returns true if we're all done. |
144 bool all_done() { | 152 bool all_done() { |
145 return registrar_.IsEmpty() && !waiting_for_clear_cache_ && | 153 return registrar_.IsEmpty() && !waiting_for_clear_cache_ && |
146 !waiting_for_clear_history_ && !waiting_for_clear_databases_ && | 154 !waiting_for_clear_history_ && !waiting_for_clear_databases_ && |
147 !waiting_for_clear_appcache_; | 155 !waiting_for_clear_appcache_ && !waiting_for_clear_lso_data_; |
148 } | 156 } |
149 | 157 |
150 NotificationRegistrar registrar_; | 158 NotificationRegistrar registrar_; |
151 | 159 |
152 // Profile we're to remove from. | 160 // Profile we're to remove from. |
153 Profile* profile_; | 161 Profile* profile_; |
154 | 162 |
155 // Start time to delete from. | 163 // Start time to delete from. |
156 const base::Time delete_begin_; | 164 const base::Time delete_begin_; |
157 | 165 |
(...skipping 16 matching lines...) Expand all Loading... |
174 scoped_refptr<URLRequestContextGetter> request_context_getter_; | 182 scoped_refptr<URLRequestContextGetter> request_context_getter_; |
175 std::vector<GURL> appcache_whitelist_; | 183 std::vector<GURL> appcache_whitelist_; |
176 int appcaches_to_be_deleted_count_; | 184 int appcaches_to_be_deleted_count_; |
177 | 185 |
178 // Used to delete data from the HTTP caches. | 186 // Used to delete data from the HTTP caches. |
179 CacheState next_cache_state_; | 187 CacheState next_cache_state_; |
180 disk_cache::Backend* cache_; | 188 disk_cache::Backend* cache_; |
181 scoped_refptr<URLRequestContextGetter> main_context_getter_; | 189 scoped_refptr<URLRequestContextGetter> main_context_getter_; |
182 scoped_refptr<URLRequestContextGetter> media_context_getter_; | 190 scoped_refptr<URLRequestContextGetter> media_context_getter_; |
183 | 191 |
| 192 // Used to delete plugin data. |
| 193 scoped_refptr<PluginDataRemover> plugin_data_remover_; |
| 194 |
184 // True if we're waiting for various data to be deleted. | 195 // True if we're waiting for various data to be deleted. |
185 bool waiting_for_clear_databases_; | 196 bool waiting_for_clear_databases_; |
186 bool waiting_for_clear_history_; | 197 bool waiting_for_clear_history_; |
187 bool waiting_for_clear_cache_; | 198 bool waiting_for_clear_cache_; |
188 bool waiting_for_clear_appcache_; | 199 bool waiting_for_clear_appcache_; |
| 200 bool waiting_for_clear_lso_data_; |
189 | 201 |
190 ObserverList<Observer> observer_list_; | 202 ObserverList<Observer> observer_list_; |
191 | 203 |
192 // Used if we need to clear history. | 204 // Used if we need to clear history. |
193 CancelableRequestConsumer request_consumer_; | 205 CancelableRequestConsumer request_consumer_; |
194 | 206 |
195 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover); | 207 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemover); |
196 }; | 208 }; |
197 | 209 |
198 #endif // CHROME_BROWSER_BROWSING_DATA_REMOVER_H_ | 210 #endif // CHROME_BROWSER_BROWSING_DATA_REMOVER_H_ |
OLD | NEW |