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

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

Issue 342068: Third patch in getting rid of caching MessageLoop pointers and always using C... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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
« no previous file with comments | « chrome/browser/printing/print_dialog_gtk.cc ('k') | chrome/browser/profile_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "chrome/browser/profile.h" 5 #include "chrome/browser/profile.h"
6 6
7 #include "app/theme_provider.h" 7 #include "app/theme_provider.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/path_service.h" 11 #include "base/path_service.h"
12 #include "base/scoped_ptr.h" 12 #include "base/scoped_ptr.h"
13 #include "base/string_util.h" 13 #include "base/string_util.h"
14 #include "chrome/browser/bookmarks/bookmark_model.h" 14 #include "chrome/browser/bookmarks/bookmark_model.h"
15 #include "chrome/browser/browser_list.h" 15 #include "chrome/browser/browser_list.h"
16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/browser_theme_provider.h" 16 #include "chrome/browser/browser_theme_provider.h"
17 #include "chrome/browser/chrome_thread.h"
18 #include "chrome/browser/download/download_manager.h" 18 #include "chrome/browser/download/download_manager.h"
19 #include "chrome/browser/extensions/extension_devtools_manager.h" 19 #include "chrome/browser/extensions/extension_devtools_manager.h"
20 #include "chrome/browser/extensions/extension_message_service.h" 20 #include "chrome/browser/extensions/extension_message_service.h"
21 #include "chrome/browser/extensions/extension_process_manager.h" 21 #include "chrome/browser/extensions/extension_process_manager.h"
22 #include "chrome/browser/extensions/extensions_service.h" 22 #include "chrome/browser/extensions/extensions_service.h"
23 #include "chrome/browser/extensions/user_script_master.h" 23 #include "chrome/browser/extensions/user_script_master.h"
24 #include "chrome/browser/favicon_service.h" 24 #include "chrome/browser/favicon_service.h"
25 #include "chrome/browser/strict_transport_security_persister.h" 25 #include "chrome/browser/strict_transport_security_persister.h"
26 #include "chrome/browser/history/history.h" 26 #include "chrome/browser/history/history.h"
27 #include "chrome/browser/in_process_webkit/webkit_context.h" 27 #include "chrome/browser/in_process_webkit/webkit_context.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 125
126 // A pointer to the request context for the default profile. See comments on 126 // A pointer to the request context for the default profile. See comments on
127 // Profile::GetDefaultRequestContext. 127 // Profile::GetDefaultRequestContext.
128 URLRequestContextGetter* Profile::default_request_context_; 128 URLRequestContextGetter* Profile::default_request_context_;
129 129
130 static void CleanupRequestContext(ChromeURLRequestContextGetter* context) { 130 static void CleanupRequestContext(ChromeURLRequestContextGetter* context) {
131 if (context) { 131 if (context) {
132 context->CleanupOnUIThread(); 132 context->CleanupOnUIThread();
133 133
134 // Clean up request context on IO thread. 134 // Clean up request context on IO thread.
135 g_browser_process->io_thread()->message_loop()->ReleaseSoon(FROM_HERE, 135 ChromeThread::ReleaseSoon(ChromeThread::IO, FROM_HERE, context);
136 context);
137 } 136 }
138 } 137 }
139 138
140 // static 139 // static
141 const ProfileId Profile::InvalidProfileId = static_cast<ProfileId>(0); 140 const ProfileId Profile::InvalidProfileId = static_cast<ProfileId>(0);
142 141
143 // static 142 // static
144 void Profile::RegisterUserPrefs(PrefService* prefs) { 143 void Profile::RegisterUserPrefs(PrefService* prefs) {
145 prefs->RegisterBooleanPref(prefs::kSearchSuggestEnabled, true); 144 prefs->RegisterBooleanPref(prefs::kSearchSuggestEnabled, true);
146 prefs->RegisterBooleanPref(prefs::kSessionExitedCleanly, true); 145 prefs->RegisterBooleanPref(prefs::kSessionExitedCleanly, true);
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 // Tell UserScriptMaser to watch this extension's directory for changes so 687 // Tell UserScriptMaser to watch this extension's directory for changes so
689 // you can live edit content scripts during development. 688 // you can live edit content scripts during development.
690 user_script_master_->AddWatchedPath(path); 689 user_script_master_->AddWatchedPath(path);
691 } 690 }
692 } 691 }
693 692
694 void ProfileImpl::InitWebResources() { 693 void ProfileImpl::InitWebResources() {
695 if (web_resource_service_) 694 if (web_resource_service_)
696 return; // Already initialized. 695 return; // Already initialized.
697 696
698 web_resource_service_ = new WebResourceService( 697 web_resource_service_ = new WebResourceService(this);
699 this,
700 g_browser_process->file_thread()->message_loop());
701
702 web_resource_service_->StartAfterDelay(); 698 web_resource_service_->StartAfterDelay();
703 } 699 }
704 700
705 ProfileImpl::~ProfileImpl() { 701 ProfileImpl::~ProfileImpl() {
706 tab_restore_service_ = NULL; 702 tab_restore_service_ = NULL;
707 703
708 StopCreateSessionServiceTimer(); 704 StopCreateSessionServiceTimer();
709 // TemplateURLModel schedules a task on the WebDataService from its 705 // TemplateURLModel schedules a task on the WebDataService from its
710 // destructor. Delete it first to ensure the task gets scheduled before we 706 // destructor. Delete it first to ensure the task gets scheduled before we
711 // shut down the database. 707 // shut down the database.
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 off_the_record_profile_.reset(); 803 off_the_record_profile_.reset();
808 } 804 }
809 805
810 Profile* ProfileImpl::GetOriginalProfile() { 806 Profile* ProfileImpl::GetOriginalProfile() {
811 return this; 807 return this;
812 } 808 }
813 809
814 VisitedLinkMaster* ProfileImpl::GetVisitedLinkMaster() { 810 VisitedLinkMaster* ProfileImpl::GetVisitedLinkMaster() {
815 if (!visited_link_master_.get()) { 811 if (!visited_link_master_.get()) {
816 scoped_ptr<VisitedLinkMaster> visited_links( 812 scoped_ptr<VisitedLinkMaster> visited_links(
817 new VisitedLinkMaster(g_browser_process->file_thread(), 813 new VisitedLinkMaster(visited_link_event_listener_.get(), this));
818 visited_link_event_listener_.get(), this));
819 if (!visited_links->Init()) 814 if (!visited_links->Init())
820 return NULL; 815 return NULL;
821 visited_link_master_.swap(visited_links); 816 visited_link_master_.swap(visited_links);
822 } 817 }
823 818
824 return visited_link_master_.get(); 819 return visited_link_master_.get();
825 } 820 }
826 821
827 ExtensionsService* ProfileImpl::GetExtensionsService() { 822 ExtensionsService* ProfileImpl::GetExtensionsService() {
828 return extensions_service_.get(); 823 return extensions_service_.get();
(...skipping 21 matching lines...) Expand all
850 845
851 DCHECK(ssl_host_state_->CalledOnValidThread()); 846 DCHECK(ssl_host_state_->CalledOnValidThread());
852 return ssl_host_state_.get(); 847 return ssl_host_state_.get();
853 } 848 }
854 849
855 net::StrictTransportSecurityState* 850 net::StrictTransportSecurityState*
856 ProfileImpl::GetStrictTransportSecurityState() { 851 ProfileImpl::GetStrictTransportSecurityState() {
857 if (!strict_transport_security_state_.get()) { 852 if (!strict_transport_security_state_.get()) {
858 strict_transport_security_state_ = new net::StrictTransportSecurityState(); 853 strict_transport_security_state_ = new net::StrictTransportSecurityState();
859 strict_transport_security_persister_ = new StrictTransportSecurityPersister( 854 strict_transport_security_persister_ = new StrictTransportSecurityPersister(
860 strict_transport_security_state_.get(), 855 strict_transport_security_state_.get(), path_);
861 g_browser_process->file_thread(), path_);
862 } 856 }
863 857
864 return strict_transport_security_state_.get(); 858 return strict_transport_security_state_.get();
865 } 859 }
866 860
867 PrefService* ProfileImpl::GetPrefs() { 861 PrefService* ProfileImpl::GetPrefs() {
868 if (!prefs_.get()) { 862 if (!prefs_.get()) {
869 prefs_.reset(new PrefService(GetPrefFilePath(), 863 prefs_.reset(new PrefService(GetPrefFilePath()));
870 g_browser_process->file_thread()));
871 864
872 // The Profile class and ProfileManager class may read some prefs so 865 // The Profile class and ProfileManager class may read some prefs so
873 // register known prefs as soon as possible. 866 // register known prefs as soon as possible.
874 Profile::RegisterUserPrefs(prefs_.get()); 867 Profile::RegisterUserPrefs(prefs_.get());
875 ProfileManager::RegisterUserPrefs(prefs_.get()); 868 ProfileManager::RegisterUserPrefs(prefs_.get());
876 #if defined(OS_CHROMEOS) 869 #if defined(OS_CHROMEOS)
877 // Register Touchpad prefs here instead of in browser_prefs because these 870 // Register Touchpad prefs here instead of in browser_prefs because these
878 // prefs are used in the constructor of ProfileImpl which happens before 871 // prefs are used in the constructor of ProfileImpl which happens before
879 // browser_prefs' RegisterAllPrefs is called. 872 // browser_prefs' RegisterAllPrefs is called.
880 chromeos::Preferences::RegisterUserPrefs(prefs_.get()); 873 chromeos::Preferences::RegisterUserPrefs(prefs_.get());
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
1261 spellchecker_->EnableAutoSpellCorrect( 1254 spellchecker_->EnableAutoSpellCorrect(
1262 prefs->GetBoolean(prefs::kEnableAutoSpellCorrect)); 1255 prefs->GetBoolean(prefs::kEnableAutoSpellCorrect));
1263 1256
1264 NotifySpellCheckerChanged(); 1257 NotifySpellCheckerChanged();
1265 } else { 1258 } else {
1266 DeleteSpellCheckerImpl(true); 1259 DeleteSpellCheckerImpl(true);
1267 } 1260 }
1268 } 1261 }
1269 1262
1270 void ProfileImpl::NotifySpellCheckerChanged() { 1263 void ProfileImpl::NotifySpellCheckerChanged() {
1271 // The I/O thread may be NULL during testing. 1264 SpellcheckerReinitializedDetails scoped_spellchecker;
1272 base::Thread* io_thread = g_browser_process->io_thread(); 1265 scoped_spellchecker.spellchecker = spellchecker_;
1273 if (io_thread) { // Notify resource message filters. 1266 ChromeThread::PostTask(
1274 SpellcheckerReinitializedDetails scoped_spellchecker; 1267 ChromeThread::IO, FROM_HERE,
1275 scoped_spellchecker.spellchecker = spellchecker_; 1268 new NotifySpellcheckerChangeTask(this, scoped_spellchecker));
1276 io_thread->message_loop()->PostTask(FROM_HERE,
1277 new NotifySpellcheckerChangeTask(this, scoped_spellchecker));
1278 }
1279 } 1269 }
1280 1270
1281 void ProfileImpl::DeleteSpellCheckerImpl(bool notify) { 1271 void ProfileImpl::DeleteSpellCheckerImpl(bool notify) {
1282 if (spellchecker_) { 1272 if (!spellchecker_)
1283 // The spellchecker must be deleted on the I/O thread. 1273 return;
1284 // The I/O thread may be NULL during testing.
1285 base::Thread* io_thread = g_browser_process->io_thread();
1286 if (io_thread)
1287 io_thread->message_loop()->ReleaseSoon(FROM_HERE, spellchecker_);
1288 else // during testing, we don't have an I/O thread
1289 spellchecker_->Release();
1290 1274
1291 spellchecker_ = NULL; 1275 // The spellchecker must be deleted on the I/O thread.
1276 ChromeThread::ReleaseSoon(ChromeThread::IO, FROM_HERE, spellchecker_);
1277 spellchecker_ = NULL;
1292 1278
1293 if (notify) 1279 if (notify)
1294 NotifySpellCheckerChanged(); 1280 NotifySpellCheckerChanged();
1295 }
1296 } 1281 }
1297 1282
1298 SpellChecker* ProfileImpl::GetSpellChecker() { 1283 SpellChecker* ProfileImpl::GetSpellChecker() {
1299 if (!spellchecker_) { 1284 if (!spellchecker_) {
1300 // This is where spellchecker gets initialized. Note that this is being 1285 // This is where spellchecker gets initialized. Note that this is being
1301 // initialized in the ui_thread. However, this is not a problem as long as 1286 // initialized in the ui_thread. However, this is not a problem as long as
1302 // it is *used* in the io thread. 1287 // it is *used* in the io thread.
1303 // TODO(sidchat): One day, change everything so that spellchecker gets 1288 // TODO(sidchat): One day, change everything so that spellchecker gets
1304 // initialized in the IO thread itself. 1289 // initialized in the IO thread itself.
1305 ReinitializeSpellChecker(); 1290 ReinitializeSpellChecker();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 return sync_service_.get(); 1354 return sync_service_.get();
1370 } 1355 }
1371 #endif 1356 #endif
1372 return NULL; 1357 return NULL;
1373 } 1358 }
1374 1359
1375 void ProfileImpl::InitSyncService() { 1360 void ProfileImpl::InitSyncService() {
1376 sync_service_.reset(new ProfileSyncService(this)); 1361 sync_service_.reset(new ProfileSyncService(this));
1377 sync_service_->Initialize(); 1362 sync_service_->Initialize();
1378 } 1363 }
OLDNEW
« no previous file with comments | « chrome/browser/printing/print_dialog_gtk.cc ('k') | chrome/browser/profile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698