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

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

Issue 7230052: Make kClearSiteDataOnExit work correctly for Flash in multi-profile. (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
« no previous file with comments | « chrome/browser/browser_process_impl.h ('k') | chrome/browser/chrome_content_browser_client.h » ('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) 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/browser_process_impl.h" 5 #include "chrome/browser/browser_process_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 19 matching lines...) Expand all
30 #include "chrome/browser/google/google_url_tracker.h" 30 #include "chrome/browser/google/google_url_tracker.h"
31 #include "chrome/browser/icon_manager.h" 31 #include "chrome/browser/icon_manager.h"
32 #include "chrome/browser/intranet_redirect_detector.h" 32 #include "chrome/browser/intranet_redirect_detector.h"
33 #include "chrome/browser/io_thread.h" 33 #include "chrome/browser/io_thread.h"
34 #include "chrome/browser/metrics/metrics_service.h" 34 #include "chrome/browser/metrics/metrics_service.h"
35 #include "chrome/browser/metrics/thread_watcher.h" 35 #include "chrome/browser/metrics/thread_watcher.h"
36 #include "chrome/browser/net/chrome_net_log.h" 36 #include "chrome/browser/net/chrome_net_log.h"
37 #include "chrome/browser/net/predictor_api.h" 37 #include "chrome/browser/net/predictor_api.h"
38 #include "chrome/browser/net/sdch_dictionary_fetcher.h" 38 #include "chrome/browser/net/sdch_dictionary_fetcher.h"
39 #include "chrome/browser/notifications/notification_ui_manager.h" 39 #include "chrome/browser/notifications/notification_ui_manager.h"
40 #include "chrome/browser/plugin_data_remover.h"
41 #include "chrome/browser/policy/browser_policy_connector.h" 40 #include "chrome/browser/policy/browser_policy_connector.h"
42 #include "chrome/browser/prefs/browser_prefs.h" 41 #include "chrome/browser/prefs/browser_prefs.h"
43 #include "chrome/browser/prefs/pref_service.h" 42 #include "chrome/browser/prefs/pref_service.h"
44 #include "chrome/browser/prerender/prerender_tracker.h" 43 #include "chrome/browser/prerender/prerender_tracker.h"
45 #include "chrome/browser/printing/background_printing_manager.h" 44 #include "chrome/browser/printing/background_printing_manager.h"
46 #include "chrome/browser/printing/print_job_manager.h" 45 #include "chrome/browser/printing/print_job_manager.h"
47 #include "chrome/browser/printing/print_preview_tab_controller.h" 46 #include "chrome/browser/printing/print_preview_tab_controller.h"
48 #include "chrome/browser/profiles/profile_manager.h" 47 #include "chrome/browser/profiles/profile_manager.h"
49 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h" 48 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h"
50 #include "chrome/browser/safe_browsing/client_side_detection_service.h" 49 #include "chrome/browser/safe_browsing/client_side_detection_service.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 created_safe_browsing_service_(false), 131 created_safe_browsing_service_(false),
133 created_safe_browsing_detection_service_(false), 132 created_safe_browsing_detection_service_(false),
134 module_ref_count_(0), 133 module_ref_count_(0),
135 did_start_(false), 134 did_start_(false),
136 checked_for_new_frames_(false), 135 checked_for_new_frames_(false),
137 using_new_frames_(false) { 136 using_new_frames_(false) {
138 g_browser_process = this; 137 g_browser_process = this;
139 clipboard_.reset(new ui::Clipboard); 138 clipboard_.reset(new ui::Clipboard);
140 main_notification_service_.reset(new NotificationService); 139 main_notification_service_.reset(new NotificationService);
141 140
142 notification_registrar_.Add(this,
143 NotificationType::APP_TERMINATING,
144 NotificationService::AllSources());
145
146 // Must be created after the NotificationService. 141 // Must be created after the NotificationService.
147 print_job_manager_.reset(new printing::PrintJobManager); 142 print_job_manager_.reset(new printing::PrintJobManager);
148 143
149 net_log_.reset(new ChromeNetLog); 144 net_log_.reset(new ChromeNetLog);
150 145
151 extension_event_router_forwarder_ = new ExtensionEventRouterForwarder; 146 extension_event_router_forwarder_ = new ExtensionEventRouterForwarder;
152 147
153 ExtensionTabIdMap::GetInstance()->Init(); 148 ExtensionTabIdMap::GetInstance()->Init();
154 } 149 }
155 150
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 // Cancel pending requests and prevent new requests. 212 // Cancel pending requests and prevent new requests.
218 resource_dispatcher_host()->Shutdown(); 213 resource_dispatcher_host()->Shutdown();
219 } 214 }
220 215
221 ExtensionTabIdMap::GetInstance()->Shutdown(); 216 ExtensionTabIdMap::GetInstance()->Shutdown();
222 217
223 // The policy providers managed by |browser_policy_connector_| need to shut 218 // The policy providers managed by |browser_policy_connector_| need to shut
224 // down while the IO and FILE threads are still alive. 219 // down while the IO and FILE threads are still alive.
225 browser_policy_connector_.reset(); 220 browser_policy_connector_.reset();
226 221
227 // Wait for removing plugin data to finish before shutting down the IO thread.
228 WaitForPluginDataRemoverToFinish();
229
230 // Destroying the GpuProcessHostUIShims on the UI thread posts a task to 222 // Destroying the GpuProcessHostUIShims on the UI thread posts a task to
231 // delete related objects on the GPU thread. This must be done before 223 // delete related objects on the GPU thread. This must be done before
232 // stopping the GPU thread. The GPU thread will close IPC channels to renderer 224 // stopping the GPU thread. The GPU thread will close IPC channels to renderer
233 // processes so this has to happen before stopping the IO thread. 225 // processes so this has to happen before stopping the IO thread.
234 GpuProcessHostUIShim::DestroyAll(); 226 GpuProcessHostUIShim::DestroyAll();
235 227
236 // Need to stop io_thread_ before resource_dispatcher_host_, since 228 // Need to stop io_thread_ before resource_dispatcher_host_, since
237 // io_thread_ may still deref ResourceDispatcherHost and handle resource 229 // io_thread_ may still deref ResourceDispatcherHost and handle resource
238 // request before going away. 230 // request before going away.
239 io_thread_.reset(); 231 io_thread_.reset();
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 return safe_browsing_detection_service_.get(); 624 return safe_browsing_detection_service_.get();
633 } 625 }
634 626
635 bool BrowserProcessImpl::plugin_finder_disabled() const { 627 bool BrowserProcessImpl::plugin_finder_disabled() const {
636 return *plugin_finder_disabled_pref_; 628 return *plugin_finder_disabled_pref_;
637 } 629 }
638 630
639 void BrowserProcessImpl::Observe(NotificationType type, 631 void BrowserProcessImpl::Observe(NotificationType type,
640 const NotificationSource& source, 632 const NotificationSource& source,
641 const NotificationDetails& details) { 633 const NotificationDetails& details) {
642 if (type == NotificationType::APP_TERMINATING) { 634 if (type == NotificationType::PREF_CHANGED) {
643 Profile* profile = ProfileManager::GetDefaultProfile();
644 if (profile) {
645 PrefService* prefs = profile->GetPrefs();
646 if (prefs->GetBoolean(prefs::kClearSiteDataOnExit) &&
647 local_state()->GetBoolean(prefs::kClearPluginLSODataEnabled)) {
648 plugin_data_remover_ = new PluginDataRemover();
649 if (!plugin_data_remover_mime_type().empty())
650 plugin_data_remover_->set_mime_type(plugin_data_remover_mime_type());
651 plugin_data_remover_->StartRemoving(base::Time());
652 }
653 }
654 } else if (type == NotificationType::PREF_CHANGED) {
655 std::string* pref = Details<std::string>(details).ptr(); 635 std::string* pref = Details<std::string>(details).ptr();
656 if (*pref == prefs::kDefaultBrowserSettingEnabled) { 636 if (*pref == prefs::kDefaultBrowserSettingEnabled) {
657 if (local_state_->GetBoolean(prefs::kDefaultBrowserSettingEnabled)) 637 if (local_state_->GetBoolean(prefs::kDefaultBrowserSettingEnabled))
658 ShellIntegration::SetAsDefaultBrowser(); 638 ShellIntegration::SetAsDefaultBrowser();
659 } else if (*pref == prefs::kDisabledSchemes) { 639 } else if (*pref == prefs::kDisabledSchemes) {
660 ApplyDisabledSchemesPolicy(); 640 ApplyDisabledSchemesPolicy();
661 } else if (*pref == prefs::kAllowCrossOriginAuthPrompt) { 641 } else if (*pref == prefs::kAllowCrossOriginAuthPrompt) {
662 ApplyAllowCrossOriginAuthPromptPolicy(); 642 ApplyAllowCrossOriginAuthPromptPolicy();
663 } 643 }
664 } else { 644 } else {
665 NOTREACHED(); 645 NOTREACHED();
666 } 646 }
667 } 647 }
668 648
669 void BrowserProcessImpl::WaitForPluginDataRemoverToFinish() {
670 if (plugin_data_remover_.get())
671 plugin_data_remover_->Wait();
672 }
673
674 #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) 649 #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
675 void BrowserProcessImpl::StartAutoupdateTimer() { 650 void BrowserProcessImpl::StartAutoupdateTimer() {
676 autoupdate_timer_.Start( 651 autoupdate_timer_.Start(
677 base::TimeDelta::FromHours(kUpdateCheckIntervalHours), 652 base::TimeDelta::FromHours(kUpdateCheckIntervalHours),
678 this, 653 this,
679 &BrowserProcessImpl::OnAutoupdateTimer); 654 &BrowserProcessImpl::OnAutoupdateTimer);
680 } 655 }
681 #endif 656 #endif
682 657
683 ChromeNetLog* BrowserProcessImpl::net_log() { 658 ChromeNetLog* BrowserProcessImpl::net_log() {
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
1133 } 1108 }
1134 1109
1135 void BrowserProcessImpl::OnAutoupdateTimer() { 1110 void BrowserProcessImpl::OnAutoupdateTimer() {
1136 if (CanAutorestartForUpdate()) { 1111 if (CanAutorestartForUpdate()) {
1137 DLOG(WARNING) << "Detected update. Restarting browser."; 1112 DLOG(WARNING) << "Detected update. Restarting browser.";
1138 RestartPersistentInstance(); 1113 RestartPersistentInstance();
1139 } 1114 }
1140 } 1115 }
1141 1116
1142 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) 1117 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
OLDNEW
« no previous file with comments | « chrome/browser/browser_process_impl.h ('k') | chrome/browser/chrome_content_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698