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

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

Issue 8342048: Make NotificationService an interface in the content namespace, and switch callers to use it. Mov... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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 // The history system runs on a background thread so that potentially slow 5 // The history system runs on a background thread so that potentially slow
6 // database operations don't delay the browser. This backend processing is 6 // database operations don't delay the browser. This backend processing is
7 // represented by HistoryBackend. The HistoryService's job is to dispatch to 7 // represented by HistoryBackend. The HistoryService's job is to dispatch to
8 // that thread. 8 // that thread.
9 // 9 //
10 // Main thread History thread 10 // Main thread History thread
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "chrome/browser/profiles/profile.h" 42 #include "chrome/browser/profiles/profile.h"
43 #include "chrome/browser/ui/profile_error_dialog.h" 43 #include "chrome/browser/ui/profile_error_dialog.h"
44 #include "chrome/browser/visitedlink/visitedlink_master.h" 44 #include "chrome/browser/visitedlink/visitedlink_master.h"
45 #include "chrome/common/chrome_constants.h" 45 #include "chrome/common/chrome_constants.h"
46 #include "chrome/common/chrome_notification_types.h" 46 #include "chrome/common/chrome_notification_types.h"
47 #include "chrome/common/pref_names.h" 47 #include "chrome/common/pref_names.h"
48 #include "chrome/common/thumbnail_score.h" 48 #include "chrome/common/thumbnail_score.h"
49 #include "chrome/common/url_constants.h" 49 #include "chrome/common/url_constants.h"
50 #include "content/browser/browser_thread.h" 50 #include "content/browser/browser_thread.h"
51 #include "content/browser/download/download_persistent_store_info.h" 51 #include "content/browser/download/download_persistent_store_info.h"
52 #include "content/common/notification_service.h" 52 #include "content/public/browser/notification_service.h"
53 #include "grit/chromium_strings.h" 53 #include "grit/chromium_strings.h"
54 #include "grit/generated_resources.h" 54 #include "grit/generated_resources.h"
55 #include "third_party/skia/include/core/SkBitmap.h" 55 #include "third_party/skia/include/core/SkBitmap.h"
56 56
57 using base::Time; 57 using base::Time;
58 using history::HistoryBackend; 58 using history::HistoryBackend;
59 59
60 namespace { 60 namespace {
61 61
62 static const char* kHistoryThreadName = "Chrome_HistoryThread"; 62 static const char* kHistoryThreadName = "Chrome_HistoryThread";
(...skipping 27 matching lines...) Expand all
90 message_loop_->PostTask( 90 message_loop_->PostTask(
91 FROM_HERE, 91 FROM_HERE,
92 base::Bind(&HistoryService::SetInMemoryBackend, history_service_.get(), 92 base::Bind(&HistoryService::SetInMemoryBackend, history_service_.get(),
93 backend_id, backend)); 93 backend_id, backend));
94 } 94 }
95 95
96 virtual void BroadcastNotifications( 96 virtual void BroadcastNotifications(
97 int type, 97 int type,
98 history::HistoryDetails* details) OVERRIDE { 98 history::HistoryDetails* details) OVERRIDE {
99 // Send the notification on the history thread. 99 // Send the notification on the history thread.
100 if (NotificationService::current()) { 100 if (content::NotificationService::current()) {
101 content::Details<history::HistoryDetails> det(details); 101 content::Details<history::HistoryDetails> det(details);
102 NotificationService::current()->Notify(type, 102 content::NotificationService::current()->Notify(
103 content::Source<Profile>(profile_), 103 type, content::Source<Profile>(profile_), det);
104 det);
105 } 104 }
106 // Send the notification to the history service on the main thread. 105 // Send the notification to the history service on the main thread.
107 message_loop_->PostTask( 106 message_loop_->PostTask(
108 FROM_HERE, 107 FROM_HERE,
109 base::Bind(&HistoryService::BroadcastNotifications, 108 base::Bind(&HistoryService::BroadcastNotifications,
110 history_service_.get(), type, details)); 109 history_service_.get(), type, details));
111 } 110 }
112 111
113 virtual void DBLoaded(int backend_id) OVERRIDE { 112 virtual void DBLoaded(int backend_id) OVERRIDE {
114 message_loop_->PostTask( 113 message_loop_->PostTask(
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 784
786 // The source of all of our notifications is the profile. Note that this 785 // The source of all of our notifications is the profile. Note that this
787 // pointer is NULL in unit tests. 786 // pointer is NULL in unit tests.
788 content::Source<Profile> source(profile_); 787 content::Source<Profile> source(profile_);
789 788
790 // The details object just contains the pointer to the object that the 789 // The details object just contains the pointer to the object that the
791 // backend has allocated for us. The receiver of the notification will cast 790 // backend has allocated for us. The receiver of the notification will cast
792 // this to the proper type. 791 // this to the proper type.
793 content::Details<history::HistoryDetails> det(details_deleted); 792 content::Details<history::HistoryDetails> det(details_deleted);
794 793
795 NotificationService::current()->Notify(type, source, det); 794 content::NotificationService::current()->Notify(type, source, det);
796 } 795 }
797 796
798 void HistoryService::LoadBackendIfNecessary() { 797 void HistoryService::LoadBackendIfNecessary() {
799 if (!thread_ || history_backend_) 798 if (!thread_ || history_backend_)
800 return; // Failed to init, or already started loading. 799 return; // Failed to init, or already started loading.
801 800
802 ++current_backend_id_; 801 ++current_backend_id_;
803 scoped_refptr<HistoryBackend> backend( 802 scoped_refptr<HistoryBackend> backend(
804 new HistoryBackend(history_dir_, 803 new HistoryBackend(history_dir_,
805 current_backend_id_, 804 current_backend_id_,
806 new BackendDelegate(this, profile_), 805 new BackendDelegate(this, profile_),
807 bookmark_service_)); 806 bookmark_service_));
808 history_backend_.swap(backend); 807 history_backend_.swap(backend);
809 808
810 // There may not be a profile when unit testing. 809 // There may not be a profile when unit testing.
811 std::string languages; 810 std::string languages;
812 if (profile_) { 811 if (profile_) {
813 PrefService* prefs = profile_->GetPrefs(); 812 PrefService* prefs = profile_->GetPrefs();
814 languages = prefs->GetString(prefs::kAcceptLanguages); 813 languages = prefs->GetString(prefs::kAcceptLanguages);
815 } 814 }
816 ScheduleAndForget(PRIORITY_UI, &HistoryBackend::Init, languages, no_db_); 815 ScheduleAndForget(PRIORITY_UI, &HistoryBackend::Init, languages, no_db_);
817 } 816 }
818 817
819 void HistoryService::OnDBLoaded(int backend_id) { 818 void HistoryService::OnDBLoaded(int backend_id) {
820 if (!history_backend_ || current_backend_id_ != backend_id) { 819 if (!history_backend_ || current_backend_id_ != backend_id) {
821 VLOG(1) << "Message from obsolete backend"; 820 VLOG(1) << "Message from obsolete backend";
822 return; 821 return;
823 } 822 }
824 backend_loaded_ = true; 823 backend_loaded_ = true;
825 NotificationService::current()->Notify( 824 content::NotificationService::current()->Notify(
826 chrome::NOTIFICATION_HISTORY_LOADED, 825 chrome::NOTIFICATION_HISTORY_LOADED,
827 content::Source<Profile>(profile_), 826 content::Source<Profile>(profile_),
828 content::Details<HistoryService>(this)); 827 content::Details<HistoryService>(this));
829 if (thread_ && profile_) { 828 if (thread_ && profile_) {
830 // We don't want to force creation of TopSites. 829 // We don't want to force creation of TopSites.
831 history::TopSites* ts = profile_->GetTopSitesWithoutCreating(); 830 history::TopSites* ts = profile_->GetTopSitesWithoutCreating();
832 if (ts) 831 if (ts)
833 ts->HistoryLoaded(); 832 ts->HistoryLoaded();
834 } 833 }
835 } 834 }
836 835
837 void HistoryService::StartTopSitesMigration(int backend_id) { 836 void HistoryService::StartTopSitesMigration(int backend_id) {
838 if (!history_backend_ || current_backend_id_ != backend_id) { 837 if (!history_backend_ || current_backend_id_ != backend_id) {
839 VLOG(1) << "Message from obsolete backend"; 838 VLOG(1) << "Message from obsolete backend";
840 return; 839 return;
841 } 840 }
842 needs_top_sites_migration_ = true; 841 needs_top_sites_migration_ = true;
843 if (thread_ && profile_) { 842 if (thread_ && profile_) {
844 // We don't want to force creation of TopSites. 843 // We don't want to force creation of TopSites.
845 history::TopSites* ts = profile_->GetTopSitesWithoutCreating(); 844 history::TopSites* ts = profile_->GetTopSitesWithoutCreating();
846 if (ts) 845 if (ts)
847 ts->MigrateFromHistory(); 846 ts->MigrateFromHistory();
848 } 847 }
849 } 848 }
850 849
851 void HistoryService::OnTopSitesReady() { 850 void HistoryService::OnTopSitesReady() {
852 ScheduleAndForget(PRIORITY_NORMAL, 851 ScheduleAndForget(PRIORITY_NORMAL,
853 &HistoryBackend::MigrateThumbnailsDatabase); 852 &HistoryBackend::MigrateThumbnailsDatabase);
854 } 853 }
OLDNEW
« no previous file with comments | « chrome/browser/google/google_url_tracker_unittest.cc ('k') | chrome/browser/history/history_tab_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698