OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/chrome_browser_main_win.h" | 5 #include "chrome/browser/chrome_browser_main_win.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <shellapi.h> | 8 #include <shellapi.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "base/win/metro.h" | 21 #include "base/win/metro.h" |
22 #include "base/win/windows_version.h" | 22 #include "base/win/windows_version.h" |
23 #include "base/win/wrapped_window_proc.h" | 23 #include "base/win/wrapped_window_proc.h" |
24 #include "chrome/browser/browser_util_win.h" | 24 #include "chrome/browser/browser_util_win.h" |
25 #include "chrome/browser/first_run/first_run.h" | 25 #include "chrome/browser/first_run/first_run.h" |
26 #include "chrome/browser/metrics/metrics_service.h" | 26 #include "chrome/browser/metrics/metrics_service.h" |
27 #include "chrome/browser/profiles/profile_info_cache.h" | 27 #include "chrome/browser/profiles/profile_info_cache.h" |
28 #include "chrome/browser/profiles/profile_shortcut_manager.h" | 28 #include "chrome/browser/profiles/profile_shortcut_manager.h" |
29 #include "chrome/browser/shell_integration.h" | 29 #include "chrome/browser/shell_integration.h" |
30 #include "chrome/browser/storage_monitor/storage_monitor_win.h" | 30 #include "chrome/browser/storage_monitor/storage_monitor_win.h" |
| 31 #include "chrome/browser/search_engines/template_url.h" |
| 32 #include "chrome/browser/search_engines/template_url_prepopulate_data.h" |
| 33 #include "chrome/browser/search_engines/template_url_service.h" |
| 34 #include "chrome/browser/search_engines/template_url_service_factory.h" |
31 #include "chrome/browser/ui/simple_message_box.h" | 35 #include "chrome/browser/ui/simple_message_box.h" |
32 #include "chrome/browser/ui/uninstall_browser_prompt.h" | 36 #include "chrome/browser/ui/uninstall_browser_prompt.h" |
33 #include "chrome/common/chrome_constants.h" | 37 #include "chrome/common/chrome_constants.h" |
34 #include "chrome/common/chrome_result_codes.h" | 38 #include "chrome/common/chrome_result_codes.h" |
35 #include "chrome/common/chrome_switches.h" | 39 #include "chrome/common/chrome_switches.h" |
36 #include "chrome/common/env_vars.h" | 40 #include "chrome/common/env_vars.h" |
37 #include "chrome/installer/launcher_support/chrome_launcher_support.h" | 41 #include "chrome/installer/launcher_support/chrome_launcher_support.h" |
38 #include "chrome/installer/util/browser_distribution.h" | 42 #include "chrome/installer/util/browser_distribution.h" |
39 #include "chrome/installer/util/helper.h" | 43 #include "chrome/installer/util/helper.h" |
40 #include "chrome/installer/util/install_util.h" | 44 #include "chrome/installer/util/install_util.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 return min_font_size; | 84 return min_font_size; |
81 } | 85 } |
82 | 86 |
83 class TranslationDelegate : public installer::TranslationDelegate { | 87 class TranslationDelegate : public installer::TranslationDelegate { |
84 public: | 88 public: |
85 virtual string16 GetLocalizedString(int installer_string_id) OVERRIDE; | 89 virtual string16 GetLocalizedString(int installer_string_id) OVERRIDE; |
86 }; | 90 }; |
87 | 91 |
88 } // namespace | 92 } // namespace |
89 | 93 |
90 void RecordBreakpadStatusUMA(MetricsService* metrics) { | |
91 metrics->RecordBreakpadHasDebugger(TRUE == ::IsDebuggerPresent()); | |
92 } | |
93 | |
94 void WarnAboutMinimumSystemRequirements() { | |
95 if (base::win::GetVersion() < base::win::VERSION_XP) { | |
96 chrome::ShowMessageBox(NULL, | |
97 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), | |
98 l10n_util::GetStringUTF16(IDS_UNSUPPORTED_OS_PRE_WIN_XP), | |
99 chrome::MESSAGE_BOX_TYPE_WARNING); | |
100 } | |
101 } | |
102 | |
103 void ShowCloseBrowserFirstMessageBox() { | 94 void ShowCloseBrowserFirstMessageBox() { |
104 int message_id = IDS_UNINSTALL_CLOSE_APP; | 95 int message_id = IDS_UNINSTALL_CLOSE_APP; |
105 if (base::win::GetVersion() >= base::win::VERSION_WIN8 && | 96 if (base::win::GetVersion() >= base::win::VERSION_WIN8 && |
106 (ShellIntegration::GetDefaultBrowser() == ShellIntegration::IS_DEFAULT)) { | 97 (ShellIntegration::GetDefaultBrowser() == ShellIntegration::IS_DEFAULT)) { |
107 message_id = IDS_UNINSTALL_CLOSE_APP_IMMERSIVE; | 98 message_id = IDS_UNINSTALL_CLOSE_APP_IMMERSIVE; |
108 } | 99 } |
109 chrome::ShowMessageBox(NULL, | 100 chrome::ShowMessageBox(NULL, |
110 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), | 101 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), |
111 l10n_util::GetStringUTF16(message_id), | 102 l10n_util::GetStringUTF16(message_id), |
112 chrome::MESSAGE_BOX_TYPE_WARNING); | 103 chrome::MESSAGE_BOX_TYPE_WARNING); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 // setup.exe. In Chrome, these strings are in the locale files. | 183 // setup.exe. In Chrome, these strings are in the locale files. |
193 SetupInstallerUtilStrings(); | 184 SetupInstallerUtilStrings(); |
194 | 185 |
195 ChromeBrowserMainParts::PreMainMessageLoopStart(); | 186 ChromeBrowserMainParts::PreMainMessageLoopStart(); |
196 if (!parameters().ui_task) { | 187 if (!parameters().ui_task) { |
197 // Make sure that we know how to handle exceptions from the message loop. | 188 // Make sure that we know how to handle exceptions from the message loop. |
198 InitializeWindowProcExceptions(); | 189 InitializeWindowProcExceptions(); |
199 } | 190 } |
200 } | 191 } |
201 | 192 |
| 193 int ChromeBrowserMainPartsWin::PreCreateThreads() { |
| 194 // TODO(viettrungluu): why don't we run this earlier? |
| 195 if (!parsed_command_line().HasSwitch(switches::kNoErrorDialogs) && |
| 196 base::win::GetVersion() < base::win::VERSION_XP) { |
| 197 chrome::ShowMessageBox(NULL, |
| 198 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), |
| 199 l10n_util::GetStringUTF16(IDS_UNSUPPORTED_OS_PRE_WIN_XP), |
| 200 chrome::MESSAGE_BOX_TYPE_WARNING); |
| 201 } |
| 202 |
| 203 return ChromeBrowserMainParts::PreCreateThreads(); |
| 204 } |
| 205 |
| 206 void ChromeBrowserMainPartsWin::PostMainMessageLoopRun() { |
| 207 // Log the search engine chosen on first run. Do this at shutdown, after any |
| 208 // changes are made from the first run bubble link, etc. |
| 209 if (do_first_run_tasks() && !profile()->IsOffTheRecord()) { |
| 210 TemplateURLService* url_service = |
| 211 TemplateURLServiceFactory::GetForProfile(profile()); |
| 212 const TemplateURL* default_search_engine = |
| 213 url_service->GetDefaultSearchProvider(); |
| 214 // The default engine can be NULL if the administrator has disabled |
| 215 // default search. |
| 216 SearchEngineType search_engine_type = |
| 217 TemplateURLPrepopulateData::GetEngineType(default_search_engine ? |
| 218 default_search_engine->url() : std::string()); |
| 219 // Record the search engine chosen. |
| 220 UMA_HISTOGRAM_ENUMERATION("Chrome.SearchSelectExempt", search_engine_type, |
| 221 SEARCH_ENGINE_MAX); |
| 222 } |
| 223 |
| 224 ChromeBrowserMainParts::PostMainMessageLoopRun(); |
| 225 } |
| 226 |
202 void ChromeBrowserMainPartsWin::PreProfileInit() { | 227 void ChromeBrowserMainPartsWin::PreProfileInit() { |
203 storage_monitor_.reset(chrome::StorageMonitorWin::Create()); | 228 storage_monitor_.reset(chrome::StorageMonitorWin::Create()); |
204 | 229 |
205 ChromeBrowserMainParts::PreProfileInit(); | 230 ChromeBrowserMainParts::PreProfileInit(); |
206 } | 231 } |
207 | 232 |
208 void ChromeBrowserMainPartsWin::ShowMissingLocaleMessageBox() { | 233 void ChromeBrowserMainPartsWin::ShowMissingLocaleMessageBox() { |
209 ui::MessageBox(NULL, ASCIIToUTF16(chrome_browser::kMissingLocaleDataMessage), | 234 ui::MessageBox(NULL, ASCIIToUTF16(chrome_browser::kMissingLocaleDataMessage), |
210 ASCIIToUTF16(chrome_browser::kMissingLocaleDataTitle), | 235 ASCIIToUTF16(chrome_browser::kMissingLocaleDataTitle), |
211 MB_OK | MB_ICONERROR | MB_TOPMOST); | 236 MB_OK | MB_ICONERROR | MB_TOPMOST); |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 if (resource_id) | 405 if (resource_id) |
381 return l10n_util::GetStringUTF16(resource_id); | 406 return l10n_util::GetStringUTF16(resource_id); |
382 return string16(); | 407 return string16(); |
383 } | 408 } |
384 | 409 |
385 // static | 410 // static |
386 void ChromeBrowserMainPartsWin::SetupInstallerUtilStrings() { | 411 void ChromeBrowserMainPartsWin::SetupInstallerUtilStrings() { |
387 CR_DEFINE_STATIC_LOCAL(TranslationDelegate, delegate, ()); | 412 CR_DEFINE_STATIC_LOCAL(TranslationDelegate, delegate, ()); |
388 installer::SetTranslationDelegate(&delegate); | 413 installer::SetTranslationDelegate(&delegate); |
389 } | 414 } |
OLD | NEW |