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

Side by Side Diff: chrome/browser/history/expire_history_backend.cc

Issue 8910024: Add ExpireHistoryBackend::DeleteURLs method (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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) 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/history/expire_history_backend.h" 5 #include "chrome/browser/history/expire_history_backend.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 ArchivedDatabase* archived_db, 190 ArchivedDatabase* archived_db,
191 ThumbnailDatabase* thumb_db, 191 ThumbnailDatabase* thumb_db,
192 TextDatabaseManager* text_db) { 192 TextDatabaseManager* text_db) {
193 main_db_ = main_db; 193 main_db_ = main_db;
194 archived_db_ = archived_db; 194 archived_db_ = archived_db;
195 thumb_db_ = thumb_db; 195 thumb_db_ = thumb_db;
196 text_db_ = text_db; 196 text_db_ = text_db;
197 } 197 }
198 198
199 void ExpireHistoryBackend::DeleteURL(const GURL& url) { 199 void ExpireHistoryBackend::DeleteURL(const GURL& url) {
200 if (!main_db_) 200 if (!main_db_)
sky 2011/12/14 23:16:49 Implement this in terms of DeleteURLs.
akalin 2011/12/14 23:43:08 Done.
201 return; 201 return;
202 202
203 URLRow url_row;
204 if (!main_db_->GetRowForURL(url, &url_row))
205 return; // Nothing to delete.
206
207 // Collect all the visits and delete them. Note that we don't give up if
208 // there are no visits, since the URL could still have an entry that we should
209 // delete.
210 // TODO(brettw): bug 1171148: We should also delete from the archived DB.
211 VisitVector visits;
212 main_db_->GetVisitsForURL(url_row.id(), &visits);
213
214 DeleteDependencies dependencies; 203 DeleteDependencies dependencies;
215 DeleteVisitRelatedInfo(visits, &dependencies); 204 DeleteURLHelper(url, &dependencies);
216
217 // We skip ExpireURLsForVisits (since we are deleting from the URL, and not
218 // starting with visits in a given time range). We therefore need to call the
219 // deletion and favicon update functions manually.
220
221 BookmarkService* bookmark_service = GetBookmarkService();
222 bool is_bookmarked =
223 (bookmark_service && bookmark_service->IsBookmarked(url));
224
225 DeleteOneURL(url_row, is_bookmarked, &dependencies);
226 if (!is_bookmarked)
227 DeleteFaviconsIfPossible(dependencies.affected_favicons);
228
229 if (text_db_)
230 text_db_->OptimizeChangedDatabases(dependencies.text_db_changes);
231 205
232 BroadcastDeleteNotifications(&dependencies); 206 BroadcastDeleteNotifications(&dependencies);
233 } 207 }
208
209 void ExpireHistoryBackend::DeleteURLs(const std::vector<GURL>& urls) {
210 if (!main_db_)
211 return;
212
213 DeleteDependencies dependencies;
214 for (std::vector<GURL>::const_iterator url = urls.begin(); url != urls.end();
215 ++url) {
216 DeleteURLHelper(*url, &dependencies);
217 }
218
219 BroadcastDeleteNotifications(&dependencies);
220 }
234 221
235 void ExpireHistoryBackend::ExpireHistoryBetween( 222 void ExpireHistoryBackend::ExpireHistoryBetween(
236 const std::set<GURL>& restrict_urls, Time begin_time, Time end_time) { 223 const std::set<GURL>& restrict_urls, Time begin_time, Time end_time) {
237 if (!main_db_) 224 if (!main_db_)
238 return; 225 return;
239 226
240 // There may be stuff in the text database manager's temporary cache. 227 // There may be stuff in the text database manager's temporary cache.
241 if (text_db_) 228 if (text_db_)
242 text_db_->DeleteFromUncommitted(restrict_urls, begin_time, end_time); 229 text_db_->DeleteFromUncommitted(restrict_urls, begin_time, end_time);
243 230
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 // determine if they care whether anything was deleted). 338 // determine if they care whether anything was deleted).
352 URLsDeletedDetails* deleted_details = new URLsDeletedDetails; 339 URLsDeletedDetails* deleted_details = new URLsDeletedDetails;
353 deleted_details->all_history = false; 340 deleted_details->all_history = false;
354 for (size_t i = 0; i < dependencies->deleted_urls.size(); i++) 341 for (size_t i = 0; i < dependencies->deleted_urls.size(); i++)
355 deleted_details->urls.insert(dependencies->deleted_urls[i].url()); 342 deleted_details->urls.insert(dependencies->deleted_urls[i].url());
356 delegate_->BroadcastNotifications( 343 delegate_->BroadcastNotifications(
357 chrome::NOTIFICATION_HISTORY_URLS_DELETED, deleted_details); 344 chrome::NOTIFICATION_HISTORY_URLS_DELETED, deleted_details);
358 } 345 }
359 } 346 }
360 347
348 void ExpireHistoryBackend::DeleteURLHelper(
349 const GURL& url, DeleteDependencies* dependencies) {
350 URLRow url_row;
351 if (!main_db_->GetRowForURL(url, &url_row))
352 return; // Nothing to delete.
353
354 // Collect all the visits and delete them. Note that we don't give up if
355 // there are no visits, since the URL could still have an entry that we should
356 // delete.
357 // TODO(brettw): bug 1171148: We should also delete from the archived DB.
358 VisitVector visits;
359 main_db_->GetVisitsForURL(url_row.id(), &visits);
360
361 DeleteVisitRelatedInfo(visits, dependencies);
362
363 // We skip ExpireURLsForVisits (since we are deleting from the URL, and not
364 // starting with visits in a given time range). We therefore need to call the
365 // deletion and favicon update functions manually.
366
367 BookmarkService* bookmark_service = GetBookmarkService();
368 bool is_bookmarked =
369 (bookmark_service && bookmark_service->IsBookmarked(url));
370
371 DeleteOneURL(url_row, is_bookmarked, dependencies);
372 if (!is_bookmarked)
373 DeleteFaviconsIfPossible(dependencies->affected_favicons);
374
375 if (text_db_)
376 text_db_->OptimizeChangedDatabases(dependencies->text_db_changes);
377 }
378
361 void ExpireHistoryBackend::DeleteVisitRelatedInfo( 379 void ExpireHistoryBackend::DeleteVisitRelatedInfo(
362 const VisitVector& visits, 380 const VisitVector& visits,
363 DeleteDependencies* dependencies) { 381 DeleteDependencies* dependencies) {
364 for (size_t i = 0; i < visits.size(); i++) { 382 for (size_t i = 0; i < visits.size(); i++) {
365 // Delete the visit itself. 383 // Delete the visit itself.
366 main_db_->DeleteVisit(visits[i]); 384 main_db_->DeleteVisit(visits[i]);
367 385
368 // Add the URL row to the affected URL list. 386 // Add the URL row to the affected URL list.
369 std::map<URLID, URLRow>::const_iterator found = 387 std::map<URLID, URLRow>::const_iterator found =
370 dependencies->affected_urls.find(visits[i].url_id); 388 dependencies->affected_urls.find(visits[i].url_id);
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 // We use the bookmark service to determine if a URL is bookmarked. The 725 // We use the bookmark service to determine if a URL is bookmarked. The
708 // bookmark service is loaded on a separate thread and may not be done by the 726 // bookmark service is loaded on a separate thread and may not be done by the
709 // time we get here. We therefor block until the bookmarks have finished 727 // time we get here. We therefor block until the bookmarks have finished
710 // loading. 728 // loading.
711 if (bookmark_service_) 729 if (bookmark_service_)
712 bookmark_service_->BlockTillLoaded(); 730 bookmark_service_->BlockTillLoaded();
713 return bookmark_service_; 731 return bookmark_service_;
714 } 732 }
715 733
716 } // namespace history 734 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/expire_history_backend.h ('k') | chrome/browser/history/history_backend.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698