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

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

Issue 7327007: Moving notification types which are chrome specific to a new header file chrome_notification_type... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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 | 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/history_backend.h" 5 #include "chrome/browser/history/history_backend.h"
6 6
7 #include <list> 7 #include <list>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
14 #include "base/file_util.h" 14 #include "base/file_util.h"
15 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
16 #include "base/memory/scoped_vector.h" 16 #include "base/memory/scoped_vector.h"
17 #include "base/message_loop.h" 17 #include "base/message_loop.h"
18 #include "base/metrics/histogram.h" 18 #include "base/metrics/histogram.h"
19 #include "base/string_util.h" 19 #include "base/string_util.h"
20 #include "base/time.h" 20 #include "base/time.h"
21 #include "chrome/browser/autocomplete/history_url_provider.h" 21 #include "chrome/browser/autocomplete/history_url_provider.h"
22 #include "chrome/browser/bookmarks/bookmark_service.h" 22 #include "chrome/browser/bookmarks/bookmark_service.h"
23 #include "chrome/browser/history/download_history_info.h" 23 #include "chrome/browser/history/download_history_info.h"
24 #include "chrome/browser/history/history_notifications.h" 24 #include "chrome/browser/history/history_notifications.h"
25 #include "chrome/browser/history/history_publisher.h" 25 #include "chrome/browser/history/history_publisher.h"
26 #include "chrome/browser/history/in_memory_history_backend.h" 26 #include "chrome/browser/history/in_memory_history_backend.h"
27 #include "chrome/browser/history/page_usage_data.h" 27 #include "chrome/browser/history/page_usage_data.h"
28 #include "chrome/browser/history/top_sites.h" 28 #include "chrome/browser/history/top_sites.h"
29 #include "chrome/common/chrome_constants.h" 29 #include "chrome/common/chrome_constants.h"
30 #include "chrome/common/chrome_notification_types.h"
30 #include "chrome/common/url_constants.h" 31 #include "chrome/common/url_constants.h"
31 #include "content/common/notification_type.h"
32 #include "googleurl/src/gurl.h" 32 #include "googleurl/src/gurl.h"
33 #include "grit/chromium_strings.h" 33 #include "grit/chromium_strings.h"
34 #include "grit/generated_resources.h" 34 #include "grit/generated_resources.h"
35 #include "net/base/registry_controlled_domain.h" 35 #include "net/base/registry_controlled_domain.h"
36 36
37 using base::Time; 37 using base::Time;
38 using base::TimeDelta; 38 using base::TimeDelta;
39 using base::TimeTicks; 39 using base::TimeTicks;
40 40
41 /* The HistoryBackend consists of a number of components: 41 /* The HistoryBackend consists of a number of components:
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 first_recorded_time_ = visit_info.visit_time; 711 first_recorded_time_ = visit_info.visit_time;
712 712
713 // Broadcast a notification of the visit. 713 // Broadcast a notification of the visit.
714 if (visit_id) { 714 if (visit_id) {
715 URLVisitedDetails* details = new URLVisitedDetails; 715 URLVisitedDetails* details = new URLVisitedDetails;
716 details->transition = transition; 716 details->transition = transition;
717 details->row = url_info; 717 details->row = url_info;
718 // TODO(meelapshah) Disabled due to potential PageCycler regression. 718 // TODO(meelapshah) Disabled due to potential PageCycler regression.
719 // Re-enable this. 719 // Re-enable this.
720 // GetMostRecentRedirectsTo(url, &details->redirects); 720 // GetMostRecentRedirectsTo(url, &details->redirects);
721 BroadcastNotifications(NotificationType::HISTORY_URL_VISITED, details); 721 BroadcastNotifications(chrome::NOTIFICATION_HISTORY_URL_VISITED, details);
722 } else { 722 } else {
723 VLOG(0) << "Failed to build visit insert statement: " 723 VLOG(0) << "Failed to build visit insert statement: "
724 << "url_id = " << url_id; 724 << "url_id = " << url_id;
725 } 725 }
726 726
727 return std::make_pair(url_id, visit_id); 727 return std::make_pair(url_id, visit_id);
728 } 728 }
729 729
730 void HistoryBackend::AddPagesWithDetails(const std::vector<URLRow>& urls, 730 void HistoryBackend::AddPagesWithDetails(const std::vector<URLRow>& urls,
731 VisitSource visit_source) { 731 VisitSource visit_source) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 if (visit_info.visit_time < first_recorded_time_) 800 if (visit_info.visit_time < first_recorded_time_)
801 first_recorded_time_ = visit_info.visit_time; 801 first_recorded_time_ = visit_info.visit_time;
802 } 802 }
803 } 803 }
804 804
805 // Broadcast a notification for typed URLs that have been modified. This 805 // Broadcast a notification for typed URLs that have been modified. This
806 // will be picked up by the in-memory URL database on the main thread. 806 // will be picked up by the in-memory URL database on the main thread.
807 // 807 //
808 // TODO(brettw) bug 1140015: Add an "add page" notification so the history 808 // TODO(brettw) bug 1140015: Add an "add page" notification so the history
809 // views can keep in sync. 809 // views can keep in sync.
810 BroadcastNotifications(NotificationType::HISTORY_TYPED_URLS_MODIFIED, 810 BroadcastNotifications(chrome::NOTIFICATION_HISTORY_TYPED_URLS_MODIFIED,
811 modified.release()); 811 modified.release());
812 812
813 ScheduleCommit(); 813 ScheduleCommit();
814 } 814 }
815 815
816 void HistoryBackend::SetPageTitle(const GURL& url, 816 void HistoryBackend::SetPageTitle(const GURL& url,
817 const string16& title) { 817 const string16& title) {
818 if (!db_.get()) 818 if (!db_.get())
819 return; 819 return;
820 820
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 // 856 //
857 // TODO(brettw) bug 1140020: Broadcast for all changes (not just typed), 857 // TODO(brettw) bug 1140020: Broadcast for all changes (not just typed),
858 // in which case some logic can be removed. 858 // in which case some logic can be removed.
859 if (typed_url_changed) { 859 if (typed_url_changed) {
860 URLsModifiedDetails* modified = 860 URLsModifiedDetails* modified =
861 new URLsModifiedDetails; 861 new URLsModifiedDetails;
862 for (size_t i = 0; i < changed_urls.size(); i++) { 862 for (size_t i = 0; i < changed_urls.size(); i++) {
863 if (changed_urls[i].typed_count() > 0) 863 if (changed_urls[i].typed_count() > 0)
864 modified->changed_urls.push_back(changed_urls[i]); 864 modified->changed_urls.push_back(changed_urls[i]);
865 } 865 }
866 BroadcastNotifications(NotificationType::HISTORY_TYPED_URLS_MODIFIED, 866 BroadcastNotifications(chrome::NOTIFICATION_HISTORY_TYPED_URLS_MODIFIED,
867 modified); 867 modified);
868 } 868 }
869 869
870 // Update the full text index. 870 // Update the full text index.
871 if (text_database_.get()) 871 if (text_database_.get())
872 text_database_->AddPageTitle(url, title); 872 text_database_->AddPageTitle(url, title);
873 873
874 // Only bother committing if things changed. 874 // Only bother committing if things changed.
875 if (!changed_urls.empty()) 875 if (!changed_urls.empty())
876 ScheduleCommit(); 876 ScheduleCommit();
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1035 return; 1035 return;
1036 } 1036 }
1037 1037
1038 db_->SetKeywordSearchTermsForURL(url_row.id(), keyword_id, term); 1038 db_->SetKeywordSearchTermsForURL(url_row.id(), keyword_id, term);
1039 1039
1040 // details is deleted by BroadcastNotifications. 1040 // details is deleted by BroadcastNotifications.
1041 KeywordSearchTermDetails* details = new KeywordSearchTermDetails; 1041 KeywordSearchTermDetails* details = new KeywordSearchTermDetails;
1042 details->url = url; 1042 details->url = url;
1043 details->keyword_id = keyword_id; 1043 details->keyword_id = keyword_id;
1044 details->term = term; 1044 details->term = term;
1045 BroadcastNotifications(NotificationType::HISTORY_KEYWORD_SEARCH_TERM_UPDATED, 1045 BroadcastNotifications(
1046 details); 1046 chrome::NOTIFICATION_HISTORY_KEYWORD_SEARCH_TERM_UPDATED, details);
1047 ScheduleCommit(); 1047 ScheduleCommit();
1048 } 1048 }
1049 1049
1050 void HistoryBackend::DeleteAllSearchTermsForKeyword( 1050 void HistoryBackend::DeleteAllSearchTermsForKeyword(
1051 TemplateURLID keyword_id) { 1051 TemplateURLID keyword_id) {
1052 if (!db_.get()) 1052 if (!db_.get())
1053 return; 1053 return;
1054 1054
1055 db_->DeleteAllSearchTermsForKeyword(keyword_id); 1055 db_->DeleteAllSearchTermsForKeyword(keyword_id);
1056 // TODO(sky): bug 1168470. Need to move from archive dbs too. 1056 // TODO(sky): bug 1168470. Need to move from archive dbs too.
(...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after
1659 favicons_changed.insert(*url); 1659 favicons_changed.insert(*url);
1660 } 1660 }
1661 } 1661 }
1662 } 1662 }
1663 } 1663 }
1664 1664
1665 if (!favicons_changed.empty()) { 1665 if (!favicons_changed.empty()) {
1666 // Send the notification about the changed favicon URLs. 1666 // Send the notification about the changed favicon URLs.
1667 FaviconChangeDetails* changed_details = new FaviconChangeDetails; 1667 FaviconChangeDetails* changed_details = new FaviconChangeDetails;
1668 changed_details->urls.swap(favicons_changed); 1668 changed_details->urls.swap(favicons_changed);
1669 BroadcastNotifications(NotificationType::FAVICON_CHANGED, changed_details); 1669 BroadcastNotifications(chrome::NOTIFICATION_FAVICON_CHANGED,
1670 changed_details);
1670 } 1671 }
1671 } 1672 }
1672 1673
1673 void HistoryBackend::UpdateFaviconMappingAndFetchImpl( 1674 void HistoryBackend::UpdateFaviconMappingAndFetchImpl(
1674 const GURL* page_url, 1675 const GURL* page_url,
1675 const GURL& icon_url, 1676 const GURL& icon_url,
1676 scoped_refptr<GetFaviconRequest> request, 1677 scoped_refptr<GetFaviconRequest> request,
1677 int icon_types) { 1678 int icon_types) {
1678 // Check only a single type was given when the page_url was specified. 1679 // Check only a single type was given when the page_url was specified.
1679 DCHECK(!page_url || (page_url && (icon_types == FAVICON || 1680 DCHECK(!page_url || (page_url && (icon_types == FAVICON ||
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
1803 if (replaced_id && !thumbnail_db_->HasMappingFor(replaced_id)) 1804 if (replaced_id && !thumbnail_db_->HasMappingFor(replaced_id))
1804 thumbnail_db_->DeleteFavicon(replaced_id); 1805 thumbnail_db_->DeleteFavicon(replaced_id);
1805 1806
1806 favicons_changed.insert(*i); 1807 favicons_changed.insert(*i);
1807 } 1808 }
1808 } 1809 }
1809 1810
1810 // Send the notification about the changed favicons. 1811 // Send the notification about the changed favicons.
1811 FaviconChangeDetails* changed_details = new FaviconChangeDetails; 1812 FaviconChangeDetails* changed_details = new FaviconChangeDetails;
1812 changed_details->urls.swap(favicons_changed); 1813 changed_details->urls.swap(favicons_changed);
1813 BroadcastNotifications(NotificationType::FAVICON_CHANGED, changed_details); 1814 BroadcastNotifications(chrome::NOTIFICATION_FAVICON_CHANGED,
1815 changed_details);
1814 1816
1815 ScheduleCommit(); 1817 ScheduleCommit();
1816 } 1818 }
1817 1819
1818 bool HistoryBackend::AddOrUpdateIconMapping(const GURL& page_url, 1820 bool HistoryBackend::AddOrUpdateIconMapping(const GURL& page_url,
1819 FaviconID id, 1821 FaviconID id,
1820 IconType icon_type, 1822 IconType icon_type,
1821 FaviconID* replaced_icon) { 1823 FaviconID* replaced_icon) {
1822 *replaced_icon = 0; 1824 *replaced_icon = 0;
1823 std::vector<IconMapping> icon_mappings; 1825 std::vector<IconMapping> icon_mappings;
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
2030 // release when done with the task. 2032 // release when done with the task.
2031 request->AddRef(); 2033 request->AddRef();
2032 db_task_requests_.push_back(request.get()); 2034 db_task_requests_.push_back(request.get());
2033 if (!task_scheduled) { 2035 if (!task_scheduled) {
2034 // No other tasks are scheduled. Process request now. 2036 // No other tasks are scheduled. Process request now.
2035 ProcessDBTaskImpl(); 2037 ProcessDBTaskImpl();
2036 } 2038 }
2037 } 2039 }
2038 2040
2039 void HistoryBackend::BroadcastNotifications( 2041 void HistoryBackend::BroadcastNotifications(
2040 NotificationType type, 2042 int type,
2041 HistoryDetails* details_deleted) { 2043 HistoryDetails* details_deleted) {
2042 DCHECK(delegate_.get()); 2044 DCHECK(delegate_.get());
2043 delegate_->BroadcastNotifications(type, details_deleted); 2045 delegate_->BroadcastNotifications(type, details_deleted);
2044 } 2046 }
2045 2047
2046 // Deleting -------------------------------------------------------------------- 2048 // Deleting --------------------------------------------------------------------
2047 2049
2048 void HistoryBackend::DeleteAllHistory() { 2050 void HistoryBackend::DeleteAllHistory() {
2049 // Our approach to deleting all history is: 2051 // Our approach to deleting all history is:
2050 // 1. Copy the bookmarks and their dependencies to new tables with temporary 2052 // 1. Copy the bookmarks and their dependencies to new tables with temporary
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2116 archived_db_->BeginTransaction(); 2118 archived_db_->BeginTransaction();
2117 } 2119 }
2118 } 2120 }
2119 2121
2120 db_->GetStartDate(&first_recorded_time_); 2122 db_->GetStartDate(&first_recorded_time_);
2121 2123
2122 // Send out the notfication that history is cleared. The in-memory datdabase 2124 // Send out the notfication that history is cleared. The in-memory datdabase
2123 // will pick this up and clear itself. 2125 // will pick this up and clear itself.
2124 URLsDeletedDetails* details = new URLsDeletedDetails; 2126 URLsDeletedDetails* details = new URLsDeletedDetails;
2125 details->all_history = true; 2127 details->all_history = true;
2126 BroadcastNotifications(NotificationType::HISTORY_URLS_DELETED, details); 2128 BroadcastNotifications(chrome::NOTIFICATION_HISTORY_URLS_DELETED, details);
2127 } 2129 }
2128 2130
2129 bool HistoryBackend::ClearAllThumbnailHistory( 2131 bool HistoryBackend::ClearAllThumbnailHistory(
2130 std::vector<URLRow>* kept_urls) { 2132 std::vector<URLRow>* kept_urls) {
2131 if (!thumbnail_db_.get()) { 2133 if (!thumbnail_db_.get()) {
2132 // When we have no reference to the thumbnail database, maybe there was an 2134 // When we have no reference to the thumbnail database, maybe there was an
2133 // error opening it. In this case, we just try to blow it away to try to 2135 // error opening it. In this case, we just try to blow it away to try to
2134 // fix the error if it exists. This may fail, in which case either the 2136 // fix the error if it exists. This may fail, in which case either the
2135 // file doesn't exist or there's no more we can do. 2137 // file doesn't exist or there's no more we can do.
2136 file_util::Delete(GetThumbnailFileName(), false); 2138 file_util::Delete(GetThumbnailFileName(), false);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
2227 return true; 2229 return true;
2228 } 2230 }
2229 2231
2230 BookmarkService* HistoryBackend::GetBookmarkService() { 2232 BookmarkService* HistoryBackend::GetBookmarkService() {
2231 if (bookmark_service_) 2233 if (bookmark_service_)
2232 bookmark_service_->BlockTillLoaded(); 2234 bookmark_service_->BlockTillLoaded();
2233 return bookmark_service_; 2235 return bookmark_service_;
2234 } 2236 }
2235 2237
2236 } // namespace history 2238 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/history_backend.h ('k') | chrome/browser/history/history_backend_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698