OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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_HISTORY_EXPIRE_HISTORY_BACKEND_H__ | 5 #ifndef CHROME_BROWSER_HISTORY_EXPIRE_HISTORY_BACKEND_H__ |
6 #define CHROME_BROWSER_HISTORY_EXPIRE_HISTORY_BACKEND_H__ | 6 #define CHROME_BROWSER_HISTORY_EXPIRE_HISTORY_BACKEND_H__ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 ~ExpireHistoryBackend(); | 52 ~ExpireHistoryBackend(); |
53 | 53 |
54 // Completes initialization by setting the databases that this class will use. | 54 // Completes initialization by setting the databases that this class will use. |
55 void SetDatabases(HistoryDatabase* main_db, | 55 void SetDatabases(HistoryDatabase* main_db, |
56 ArchivedDatabase* archived_db, | 56 ArchivedDatabase* archived_db, |
57 ThumbnailDatabase* thumb_db, | 57 ThumbnailDatabase* thumb_db, |
58 TextDatabaseManager* text_db); | 58 TextDatabaseManager* text_db); |
59 | 59 |
60 // Begins periodic expiration of history older than the given threshold. This | 60 // Begins periodic expiration of history older than the given threshold. This |
61 // will continue until the object is deleted. | 61 // will continue until the object is deleted. |
62 void StartArchivingOldStuff(TimeDelta expiration_threshold); | 62 void StartArchivingOldStuff(base::TimeDelta expiration_threshold); |
63 | 63 |
64 // Deletes everything associated with a URL. | 64 // Deletes everything associated with a URL. |
65 void DeleteURL(const GURL& url); | 65 void DeleteURL(const GURL& url); |
66 | 66 |
67 // Removes all visits in the given time range, updating the URLs accordingly. | 67 // Removes all visits in the given time range, updating the URLs accordingly. |
68 void ExpireHistoryBetween(Time begin_time, Time end_time); | 68 void ExpireHistoryBetween(base::Time begin_time, base::Time end_time); |
69 | 69 |
70 // Archives all visits before and including the given time, updating the URLs | 70 // Archives all visits before and including the given time, updating the URLs |
71 // accordingly. This function is intended for migrating old databases | 71 // accordingly. This function is intended for migrating old databases |
72 // (which encompased all time) to the tiered structure and testing, and | 72 // (which encompased all time) to the tiered structure and testing, and |
73 // probably isn't useful for anything else. | 73 // probably isn't useful for anything else. |
74 void ArchiveHistoryBefore(Time end_time); | 74 void ArchiveHistoryBefore(base::Time end_time); |
75 | 75 |
76 // Returns the current time that we are archiving stuff to. This will return | 76 // Returns the current time that we are archiving stuff to. This will return |
77 // the threshold in absolute time rather than a delta, so the caller should | 77 // the threshold in absolute time rather than a delta, so the caller should |
78 // not save it. | 78 // not save it. |
79 Time GetCurrentArchiveTime() const { | 79 base::Time GetCurrentArchiveTime() const { |
80 return Time::Now() - expiration_threshold_; | 80 return base::Time::Now() - expiration_threshold_; |
81 } | 81 } |
82 | 82 |
83 private: | 83 private: |
84 //friend class ExpireHistoryTest_DeleteFaviconsIfPossible_Test; | 84 //friend class ExpireHistoryTest_DeleteFaviconsIfPossible_Test; |
85 FRIEND_TEST(ExpireHistoryTest, DeleteTextIndexForURL); | 85 FRIEND_TEST(ExpireHistoryTest, DeleteTextIndexForURL); |
86 FRIEND_TEST(ExpireHistoryTest, DeleteFaviconsIfPossible); | 86 FRIEND_TEST(ExpireHistoryTest, DeleteFaviconsIfPossible); |
87 FRIEND_TEST(ExpireHistoryTest, ArchiveSomeOldHistory); | 87 FRIEND_TEST(ExpireHistoryTest, ArchiveSomeOldHistory); |
88 friend class TestingProfile; | 88 friend class TestingProfile; |
89 | 89 |
90 struct DeleteDependencies { | 90 struct DeleteDependencies { |
91 // The time range affected. These can be is_null() to be unbounded in one | 91 // The time range affected. These can be is_null() to be unbounded in one |
92 // or both directions. | 92 // or both directions. |
93 Time begin_time, end_time; | 93 base::Time begin_time, end_time; |
94 | 94 |
95 // ----- Filled by DeleteVisitRelatedInfo or manually if a function doesn't | 95 // ----- Filled by DeleteVisitRelatedInfo or manually if a function doesn't |
96 // call that function. ----- | 96 // call that function. ----- |
97 | 97 |
98 // The unique URL rows affected by this delete. | 98 // The unique URL rows affected by this delete. |
99 std::map<URLID, URLRow> affected_urls; | 99 std::map<URLID, URLRow> affected_urls; |
100 | 100 |
101 // ----- Filled by DeleteOneURL ----- | 101 // ----- Filled by DeleteOneURL ----- |
102 | 102 |
103 // The URLs deleted during this operation. | 103 // The URLs deleted during this operation. |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 | 201 |
202 // Deletes the favicons listed in the set if unused. Fails silently (we don't | 202 // Deletes the favicons listed in the set if unused. Fails silently (we don't |
203 // care about favicons so much, so don't want to stop everything if it fails). | 203 // care about favicons so much, so don't want to stop everything if it fails). |
204 void DeleteFaviconsIfPossible(const std::set<FavIconID>& favicon_id); | 204 void DeleteFaviconsIfPossible(const std::set<FavIconID>& favicon_id); |
205 | 205 |
206 // Broadcast the URL deleted notification. | 206 // Broadcast the URL deleted notification. |
207 void BroadcastDeleteNotifications(DeleteDependencies* dependencies); | 207 void BroadcastDeleteNotifications(DeleteDependencies* dependencies); |
208 | 208 |
209 // Schedules a call to DoArchiveIteration at the given time in the | 209 // Schedules a call to DoArchiveIteration at the given time in the |
210 // future. | 210 // future. |
211 void ScheduleArchive(TimeDelta delay); | 211 void ScheduleArchive(base::TimeDelta delay); |
212 | 212 |
213 // Calls ArchiveSomeOldHistory to expire some amount of old history, and | 213 // Calls ArchiveSomeOldHistory to expire some amount of old history, and |
214 // schedules another call to happen in the future. | 214 // schedules another call to happen in the future. |
215 void DoArchiveIteration(); | 215 void DoArchiveIteration(); |
216 | 216 |
217 // Tries to expire the oldest |max_visits| visits from history that are older | 217 // Tries to expire the oldest |max_visits| visits from history that are older |
218 // than |time_threshold|. The return value indicates if we think there might | 218 // than |time_threshold|. The return value indicates if we think there might |
219 // be more history to expire with the current time threshold (it does not | 219 // be more history to expire with the current time threshold (it does not |
220 // indicate success or failure). | 220 // indicate success or failure). |
221 bool ArchiveSomeOldHistory(Time time_threshold, int max_visits); | 221 bool ArchiveSomeOldHistory(base::Time time_threshold, int max_visits); |
222 | 222 |
223 // Tries to detect possible bad history or inconsistencies in the database | 223 // Tries to detect possible bad history or inconsistencies in the database |
224 // and deletes items. For example, URLs with no visits. | 224 // and deletes items. For example, URLs with no visits. |
225 void ParanoidExpireHistory(); | 225 void ParanoidExpireHistory(); |
226 | 226 |
227 // Returns the BookmarkService, blocking until it is loaded. This may return | 227 // Returns the BookmarkService, blocking until it is loaded. This may return |
228 // NULL. | 228 // NULL. |
229 BookmarkService* GetBookmarkService(); | 229 BookmarkService* GetBookmarkService(); |
230 | 230 |
231 // Non-owning pointer to the notification delegate (guaranteed non-NULL). | 231 // Non-owning pointer to the notification delegate (guaranteed non-NULL). |
232 BroadcastNotificationDelegate* delegate_; | 232 BroadcastNotificationDelegate* delegate_; |
233 | 233 |
234 // Non-owning pointers to the databases we deal with (MAY BE NULL). | 234 // Non-owning pointers to the databases we deal with (MAY BE NULL). |
235 HistoryDatabase* main_db_; // Main history database. | 235 HistoryDatabase* main_db_; // Main history database. |
236 ArchivedDatabase* archived_db_; // Old history. | 236 ArchivedDatabase* archived_db_; // Old history. |
237 ThumbnailDatabase* thumb_db_; // Thumbnails and favicons. | 237 ThumbnailDatabase* thumb_db_; // Thumbnails and favicons. |
238 TextDatabaseManager* text_db_; // Full text index. | 238 TextDatabaseManager* text_db_; // Full text index. |
239 | 239 |
240 // Used to generate runnable methods to do timers on this class. They will be | 240 // Used to generate runnable methods to do timers on this class. They will be |
241 // automatically canceled when this class is deleted. | 241 // automatically canceled when this class is deleted. |
242 ScopedRunnableMethodFactory<ExpireHistoryBackend> factory_; | 242 ScopedRunnableMethodFactory<ExpireHistoryBackend> factory_; |
243 | 243 |
244 // The threshold for "old" history where we will automatically expire it to | 244 // The threshold for "old" history where we will automatically expire it to |
245 // the archived database. | 245 // the archived database. |
246 TimeDelta expiration_threshold_; | 246 base::TimeDelta expiration_threshold_; |
247 | 247 |
248 // The BookmarkService; may be null. This is owned by the Profile. | 248 // The BookmarkService; may be null. This is owned by the Profile. |
249 // | 249 // |
250 // Use GetBookmarkService to access this, which makes sure the service is | 250 // Use GetBookmarkService to access this, which makes sure the service is |
251 // loaded. | 251 // loaded. |
252 BookmarkService* bookmark_service_; | 252 BookmarkService* bookmark_service_; |
253 | 253 |
254 DISALLOW_EVIL_CONSTRUCTORS(ExpireHistoryBackend); | 254 DISALLOW_EVIL_CONSTRUCTORS(ExpireHistoryBackend); |
255 }; | 255 }; |
256 | 256 |
257 } // namespace history | 257 } // namespace history |
258 | 258 |
259 #endif // CHROME_BROWSER_HISTORY_EXPIRE_HISTORY_BACKEND_H__ | 259 #endif // CHROME_BROWSER_HISTORY_EXPIRE_HISTORY_BACKEND_H__ |
OLD | NEW |