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_main.h" | 5 #include "chrome/browser/browser_main.h" |
6 #include "chrome/browser/browser_main_win.h" | 6 #include "chrome/browser/browser_main_win.h" |
7 | 7 |
8 #include <windows.h> | 8 #include <windows.h> |
9 #include <shellapi.h> | 9 #include <shellapi.h> |
10 | 10 |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 ShellUtil::CURRENT_USER)) | 107 ShellUtil::CURRENT_USER)) |
108 VLOG(1) << "Failed to delete quick launch shortcut."; | 108 VLOG(1) << "Failed to delete quick launch shortcut."; |
109 } | 109 } |
110 return ret; | 110 return ret; |
111 } | 111 } |
112 | 112 |
113 // Prepares the localized strings that are going to be displayed to | 113 // Prepares the localized strings that are going to be displayed to |
114 // the user if the browser process dies. These strings are stored in the | 114 // the user if the browser process dies. These strings are stored in the |
115 // environment block so they are accessible in the early stages of the | 115 // environment block so they are accessible in the early stages of the |
116 // chrome executable's lifetime. | 116 // chrome executable's lifetime. |
117 void PrepareRestartOnCrashEnviroment(const CommandLine& parsed_command_line) { | 117 void PrepareRestartOnCrashEnviroment(const CommandLine &parsed_command_line) { |
118 // Clear this var so child processes don't show the dialog by default. | 118 // Clear this var so child processes don't show the dialog by default. |
119 scoped_ptr<base::Environment> env(base::Environment::Create()); | 119 scoped_ptr<base::Environment> env(base::Environment::Create()); |
120 env->UnSetVar(env_vars::kShowRestart); | 120 env->UnSetVar(env_vars::kShowRestart); |
121 | 121 |
122 // For non-interactive tests we don't restart on crash. | 122 // For non-interactive tests we don't restart on crash. |
123 if (env->HasVar(env_vars::kHeadless)) | 123 if (env->HasVar(env_vars::kHeadless)) |
124 return; | 124 return; |
125 | 125 |
126 // If the known command-line test options are used we don't create the | 126 // If the known command-line test options are used we don't create the |
127 // environment block which means we don't get the restart dialog. | 127 // environment block which means we don't get the restart dialog. |
(...skipping 11 matching lines...) Expand all Loading... |
139 l10n_util::GetStringUTF16(IDS_CRASH_RECOVERY_CONTENT)); | 139 l10n_util::GetStringUTF16(IDS_CRASH_RECOVERY_CONTENT)); |
140 base::i18n::AdjustStringForLocaleDirection(&adjusted_string); | 140 base::i18n::AdjustStringForLocaleDirection(&adjusted_string); |
141 dlg_strings.append(adjusted_string); | 141 dlg_strings.append(adjusted_string); |
142 dlg_strings.push_back('|'); | 142 dlg_strings.push_back('|'); |
143 dlg_strings.append(ASCIIToUTF16( | 143 dlg_strings.append(ASCIIToUTF16( |
144 base::i18n::IsRTL() ? env_vars::kRtlLocale : env_vars::kLtrLocale)); | 144 base::i18n::IsRTL() ? env_vars::kRtlLocale : env_vars::kLtrLocale)); |
145 | 145 |
146 env->SetVar(env_vars::kRestartInfo, UTF16ToUTF8(dlg_strings)); | 146 env->SetVar(env_vars::kRestartInfo, UTF16ToUTF8(dlg_strings)); |
147 } | 147 } |
148 | 148 |
149 bool RegisterApplicationRestart(const CommandLine& parsed_command_line) { | |
150 // The Windows Restart Manager expects a string of command line flags only, | |
151 // without the program. | |
152 CommandLine command_line(CommandLine::NO_PROGRAM); | |
153 command_line.AppendSwitches(parsed_command_line); | |
154 command_line.AppendArgs(parsed_command_line); | |
155 // Ensure restore last session is set. | |
156 if (!command_line.HasSwitch(switches::kRestoreLastSession)) | |
157 command_line.AppendSwitch(switches::kRestoreLastSession); | |
158 const wchar_t *command_string = command_line.command_line_string().c_str(); | |
159 // Restart Chrome if the computer is restarted as the result of an update. | |
160 // This could be extended to handle crashes, hangs, and patches. | |
161 HRESULT hr = ::RegisterApplicationRestart(command_string, | |
162 RESTART_NO_CRASH | RESTART_NO_HANG | RESTART_NO_PATCH); | |
163 DCHECK(SUCCEEDED(hr)) << "RegisterApplicationRestart failed."; | |
164 return SUCCEEDED(hr); | |
165 } | |
166 | |
167 // This method handles the --hide-icons and --show-icons command line options | 149 // This method handles the --hide-icons and --show-icons command line options |
168 // for chrome that get triggered by Windows from registry entries | 150 // for chrome that get triggered by Windows from registry entries |
169 // HideIconsCommand & ShowIconsCommand. Chrome doesn't support hide icons | 151 // HideIconsCommand & ShowIconsCommand. Chrome doesn't support hide icons |
170 // functionality so we just ask the users if they want to uninstall Chrome. | 152 // functionality so we just ask the users if they want to uninstall Chrome. |
171 int HandleIconsCommands(const CommandLine& parsed_command_line) { | 153 int HandleIconsCommands(const CommandLine &parsed_command_line) { |
172 if (parsed_command_line.HasSwitch(switches::kHideIcons)) { | 154 if (parsed_command_line.HasSwitch(switches::kHideIcons)) { |
173 string16 cp_applet; | 155 string16 cp_applet; |
174 base::win::Version version = base::win::GetVersion(); | 156 base::win::Version version = base::win::GetVersion(); |
175 if (version >= base::win::VERSION_VISTA) { | 157 if (version >= base::win::VERSION_VISTA) { |
176 cp_applet.assign(L"Programs and Features"); // Windows Vista and later. | 158 cp_applet.assign(L"Programs and Features"); // Windows Vista and later. |
177 } else if (version >= base::win::VERSION_XP) { | 159 } else if (version >= base::win::VERSION_XP) { |
178 cp_applet.assign(L"Add/Remove Programs"); // Windows XP. | 160 cp_applet.assign(L"Add/Remove Programs"); // Windows XP. |
179 } else { | 161 } else { |
180 return ResultCodes::UNSUPPORTED_PARAM; // Not supported | 162 return ResultCodes::UNSUPPORTED_PARAM; // Not supported |
181 } | 163 } |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 base::EnsureNSPRInit(); | 245 base::EnsureNSPRInit(); |
264 } | 246 } |
265 } | 247 } |
266 }; | 248 }; |
267 | 249 |
268 // static | 250 // static |
269 BrowserMainParts* BrowserMainParts::CreateBrowserMainParts( | 251 BrowserMainParts* BrowserMainParts::CreateBrowserMainParts( |
270 const MainFunctionParams& parameters) { | 252 const MainFunctionParams& parameters) { |
271 return new BrowserMainPartsWin(parameters); | 253 return new BrowserMainPartsWin(parameters); |
272 } | 254 } |
OLD | NEW |