| OLD | NEW |
| 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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 #include "chrome/common/chrome_notification_types.h" | 61 #include "chrome/common/chrome_notification_types.h" |
| 62 #include "chrome/common/chrome_paths.h" | 62 #include "chrome/common/chrome_paths.h" |
| 63 #include "chrome/common/chrome_switches.h" | 63 #include "chrome/common/chrome_switches.h" |
| 64 #include "chrome/common/extensions/extension_l10n_util.h" | 64 #include "chrome/common/extensions/extension_l10n_util.h" |
| 65 #include "chrome/common/extensions/extension_resource.h" | 65 #include "chrome/common/extensions/extension_resource.h" |
| 66 #include "chrome/common/json_pref_store.h" | 66 #include "chrome/common/json_pref_store.h" |
| 67 #include "chrome/common/pref_names.h" | 67 #include "chrome/common/pref_names.h" |
| 68 #include "chrome/common/switch_utils.h" | 68 #include "chrome/common/switch_utils.h" |
| 69 #include "chrome/common/url_constants.h" | 69 #include "chrome/common/url_constants.h" |
| 70 #include "chrome/installer/util/google_update_constants.h" | 70 #include "chrome/installer/util/google_update_constants.h" |
| 71 #include "content/browser/browser_child_process_host.h" | |
| 72 #include "content/browser/browser_process_sub_thread.h" | 71 #include "content/browser/browser_process_sub_thread.h" |
| 73 #include "content/browser/child_process_security_policy.h" | 72 #include "content/browser/child_process_security_policy.h" |
| 74 #include "content/browser/debugger/devtools_manager.h" | 73 #include "content/browser/debugger/devtools_manager.h" |
| 75 #include "content/browser/download/download_file_manager.h" | 74 #include "content/browser/download/download_file_manager.h" |
| 76 #include "content/browser/download/download_status_updater.h" | 75 #include "content/browser/download/download_status_updater.h" |
| 77 #include "content/browser/download/mhtml_generation_manager.h" | 76 #include "content/browser/download/mhtml_generation_manager.h" |
| 78 #include "content/browser/download/save_file_manager.h" | 77 #include "content/browser/download/save_file_manager.h" |
| 79 #include "content/browser/gpu/gpu_process_host_ui_shim.h" | 78 #include "content/browser/gpu/gpu_process_host_ui_shim.h" |
| 80 #include "content/browser/net/browser_online_state_observer.h" | 79 #include "content/browser/net/browser_online_state_observer.h" |
| 81 #include "content/browser/plugin_service.h" | 80 #include "content/browser/plugin_service.h" |
| 82 #include "content/browser/renderer_host/resource_dispatcher_host.h" | 81 #include "content/browser/renderer_host/resource_dispatcher_host.h" |
| 83 #include "content/public/browser/browser_thread.h" | 82 #include "content/public/browser/browser_thread.h" |
| 84 #include "content/public/browser/notification_details.h" | 83 #include "content/public/browser/notification_details.h" |
| 85 #include "content/public/browser/render_process_host.h" | 84 #include "content/public/browser/render_process_host.h" |
| 86 #include "content/public/common/url_fetcher.h" | 85 #include "content/public/common/url_fetcher.h" |
| 87 #include "ipc/ipc_logging.h" | |
| 88 #include "net/socket/client_socket_pool_manager.h" | 86 #include "net/socket/client_socket_pool_manager.h" |
| 89 #include "net/url_request/url_request_context_getter.h" | 87 #include "net/url_request/url_request_context_getter.h" |
| 90 #include "ui/base/clipboard/clipboard.h" | 88 #include "ui/base/clipboard/clipboard.h" |
| 91 #include "ui/base/l10n/l10n_util.h" | 89 #include "ui/base/l10n/l10n_util.h" |
| 92 | 90 |
| 93 #if defined(OS_WIN) | 91 #if defined(OS_WIN) |
| 94 #include "views/focus/view_storage.h" | 92 #include "views/focus/view_storage.h" |
| 95 #elif defined(OS_MACOSX) | 93 #elif defined(OS_MACOSX) |
| 96 #include "chrome/browser/chrome_browser_main_mac.h" | 94 #include "chrome/browser/chrome_browser_main_mac.h" |
| 97 #endif | 95 #endif |
| 98 | 96 |
| 99 #if defined(IPC_MESSAGE_LOG_ENABLED) | |
| 100 #include "content/common/child_process_messages.h" | |
| 101 #endif | |
| 102 | |
| 103 #if defined(OS_CHROMEOS) | 97 #if defined(OS_CHROMEOS) |
| 104 #include "chrome/browser/chromeos/web_socket_proxy_controller.h" | 98 #include "chrome/browser/chromeos/web_socket_proxy_controller.h" |
| 105 #include "chrome/browser/oom_priority_manager.h" | 99 #include "chrome/browser/oom_priority_manager.h" |
| 106 #endif // defined(OS_CHROMEOS) | 100 #endif // defined(OS_CHROMEOS) |
| 107 | 101 |
| 108 #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) | 102 #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
| 109 // How often to check if the persistent instance of Chrome needs to restart | 103 // How often to check if the persistent instance of Chrome needs to restart |
| 110 // to install an update. | 104 // to install an update. |
| 111 static const int kUpdateCheckIntervalHours = 6; | 105 static const int kUpdateCheckIntervalHours = 6; |
| 112 #endif | 106 #endif |
| (...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1051 set_browser_worker = new ShellIntegration::DefaultBrowserWorker(NULL); | 1045 set_browser_worker = new ShellIntegration::DefaultBrowserWorker(NULL); |
| 1052 set_browser_worker->StartSetAsDefault(); | 1046 set_browser_worker->StartSetAsDefault(); |
| 1053 } | 1047 } |
| 1054 } | 1048 } |
| 1055 | 1049 |
| 1056 void BrowserProcessImpl::ApplyAllowCrossOriginAuthPromptPolicy() { | 1050 void BrowserProcessImpl::ApplyAllowCrossOriginAuthPromptPolicy() { |
| 1057 bool value = local_state()->GetBoolean(prefs::kAllowCrossOriginAuthPrompt); | 1051 bool value = local_state()->GetBoolean(prefs::kAllowCrossOriginAuthPrompt); |
| 1058 resource_dispatcher_host()->set_allow_cross_origin_auth_prompt(value); | 1052 resource_dispatcher_host()->set_allow_cross_origin_auth_prompt(value); |
| 1059 } | 1053 } |
| 1060 | 1054 |
| 1061 // The BrowserProcess object must outlive the file thread so we use traits | |
| 1062 // which don't do any management. | |
| 1063 DISABLE_RUNNABLE_METHOD_REFCOUNT(BrowserProcessImpl); | |
| 1064 | |
| 1065 #if defined(IPC_MESSAGE_LOG_ENABLED) | |
| 1066 | |
| 1067 void BrowserProcessImpl::SetIPCLoggingEnabled(bool enable) { | |
| 1068 // First enable myself. | |
| 1069 if (enable) | |
| 1070 IPC::Logging::GetInstance()->Enable(); | |
| 1071 else | |
| 1072 IPC::Logging::GetInstance()->Disable(); | |
| 1073 | |
| 1074 // Now tell subprocesses. Messages to ChildProcess-derived | |
| 1075 // processes must be done on the IO thread. | |
| 1076 io_thread()->message_loop()->PostTask | |
| 1077 (FROM_HERE, | |
| 1078 NewRunnableMethod( | |
| 1079 this, | |
| 1080 &BrowserProcessImpl::SetIPCLoggingEnabledForChildProcesses, | |
| 1081 enable)); | |
| 1082 | |
| 1083 // Finally, tell the renderers which don't derive from ChildProcess. | |
| 1084 // Messages to the renderers must be done on the UI (main) thread. | |
| 1085 for (content::RenderProcessHost::iterator i( | |
| 1086 content::RenderProcessHost::AllHostsIterator()); | |
| 1087 !i.IsAtEnd(); i.Advance()) | |
| 1088 i.GetCurrentValue()->Send(new ChildProcessMsg_SetIPCLoggingEnabled(enable)); | |
| 1089 } | |
| 1090 | |
| 1091 // Helper for SetIPCLoggingEnabled. | |
| 1092 void BrowserProcessImpl::SetIPCLoggingEnabledForChildProcesses(bool enabled) { | |
| 1093 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | |
| 1094 | |
| 1095 BrowserChildProcessHost::Iterator i; // default constr references a singleton | |
| 1096 while (!i.Done()) { | |
| 1097 i->Send(new ChildProcessMsg_SetIPCLoggingEnabled(enabled)); | |
| 1098 ++i; | |
| 1099 } | |
| 1100 } | |
| 1101 | |
| 1102 #endif // IPC_MESSAGE_LOG_ENABLED | |
| 1103 | |
| 1104 // Mac is currently not supported. | 1055 // Mac is currently not supported. |
| 1105 #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) | 1056 #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
| 1106 | 1057 |
| 1107 bool BrowserProcessImpl::CanAutorestartForUpdate() const { | 1058 bool BrowserProcessImpl::CanAutorestartForUpdate() const { |
| 1108 // Check if browser is in the background and if it needs to be restarted to | 1059 // Check if browser is in the background and if it needs to be restarted to |
| 1109 // apply a pending update. | 1060 // apply a pending update. |
| 1110 return BrowserList::size() == 0 && BrowserList::WillKeepAlive() && | 1061 return BrowserList::size() == 0 && BrowserList::WillKeepAlive() && |
| 1111 upgrade_util::IsUpdatePendingRestart(); | 1062 upgrade_util::IsUpdatePendingRestart(); |
| 1112 } | 1063 } |
| 1113 | 1064 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1151 } | 1102 } |
| 1152 | 1103 |
| 1153 void BrowserProcessImpl::OnAutoupdateTimer() { | 1104 void BrowserProcessImpl::OnAutoupdateTimer() { |
| 1154 if (CanAutorestartForUpdate()) { | 1105 if (CanAutorestartForUpdate()) { |
| 1155 DLOG(WARNING) << "Detected update. Restarting browser."; | 1106 DLOG(WARNING) << "Detected update. Restarting browser."; |
| 1156 RestartBackgroundInstance(); | 1107 RestartBackgroundInstance(); |
| 1157 } | 1108 } |
| 1158 } | 1109 } |
| 1159 | 1110 |
| 1160 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) | 1111 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
| OLD | NEW |