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

Side by Side Diff: chrome/browser/first_run/first_run_win.cc

Issue 7397004: Take two at splitting result codes between content and chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix compile failure in uninstall.cc 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
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/first_run/first_run.h" 5 #include "chrome/browser/first_run/first_run.h"
6 6
7 #include <shlobj.h> 7 #include <shlobj.h>
8 #include <windows.h> 8 #include <windows.h>
9 9
10 #include <set> 10 #include <set>
(...skipping 10 matching lines...) Expand all
21 #include "base/win/windows_version.h" 21 #include "base/win/windows_version.h"
22 #include "chrome/browser/browser_process.h" 22 #include "chrome/browser/browser_process.h"
23 #include "chrome/browser/extensions/extension_service.h" 23 #include "chrome/browser/extensions/extension_service.h"
24 #include "chrome/browser/extensions/extension_updater.h" 24 #include "chrome/browser/extensions/extension_updater.h"
25 #include "chrome/browser/first_run/first_run_import_observer.h" 25 #include "chrome/browser/first_run/first_run_import_observer.h"
26 #include "chrome/browser/importer/importer_host.h" 26 #include "chrome/browser/importer/importer_host.h"
27 #include "chrome/browser/importer/importer_list.h" 27 #include "chrome/browser/importer/importer_list.h"
28 #include "chrome/browser/importer/importer_progress_dialog.h" 28 #include "chrome/browser/importer/importer_progress_dialog.h"
29 #include "chrome/browser/profiles/profile.h" 29 #include "chrome/browser/profiles/profile.h"
30 #include "chrome/common/chrome_notification_types.h" 30 #include "chrome/common/chrome_notification_types.h"
31 #include "chrome/common/chrome_result_codes.h"
31 #include "chrome/common/chrome_switches.h" 32 #include "chrome/common/chrome_switches.h"
32 #include "chrome/common/worker_thread_ticker.h" 33 #include "chrome/common/worker_thread_ticker.h"
33 #include "chrome/installer/util/browser_distribution.h" 34 #include "chrome/installer/util/browser_distribution.h"
34 #include "chrome/installer/util/google_update_constants.h" 35 #include "chrome/installer/util/google_update_constants.h"
35 #include "chrome/installer/util/google_update_settings.h" 36 #include "chrome/installer/util/google_update_settings.h"
36 #include "chrome/installer/util/install_util.h" 37 #include "chrome/installer/util/install_util.h"
37 #include "chrome/installer/util/shell_util.h" 38 #include "chrome/installer/util/shell_util.h"
38 #include "chrome/installer/util/util_constants.h" 39 #include "chrome/installer/util/util_constants.h"
39 #include "content/browser/user_metrics.h" 40 #include "content/browser/user_metrics.h"
40 #include "content/common/notification_service.h" 41 #include "content/common/notification_service.h"
41 #include "content/common/result_codes.h"
42 #include "google_update_idl.h" 42 #include "google_update_idl.h"
43 #include "grit/chromium_strings.h" 43 #include "grit/chromium_strings.h"
44 #include "grit/generated_resources.h" 44 #include "grit/generated_resources.h"
45 #include "grit/locale_settings.h" 45 #include "grit/locale_settings.h"
46 #include "grit/theme_resources.h" 46 #include "grit/theme_resources.h"
47 #include "ui/base/resource/resource_bundle.h" 47 #include "ui/base/resource/resource_bundle.h"
48 #include "ui/base/ui_base_switches.h" 48 #include "ui/base/ui_base_switches.h"
49 49
50 namespace { 50 namespace {
51 51
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 // process has ended and what was the result of the operation as reported by 177 // process has ended and what was the result of the operation as reported by
178 // the process exit code. This class executes in the context of the main chrome 178 // the process exit code. This class executes in the context of the main chrome
179 // process. 179 // process.
180 class ImportProcessRunner : public base::win::ObjectWatcher::Delegate { 180 class ImportProcessRunner : public base::win::ObjectWatcher::Delegate {
181 public: 181 public:
182 // The constructor takes the importer process to watch and then it does a 182 // The constructor takes the importer process to watch and then it does a
183 // message loop blocking wait until the process ends. This object now owns 183 // message loop blocking wait until the process ends. This object now owns
184 // the import_process handle. 184 // the import_process handle.
185 explicit ImportProcessRunner(base::ProcessHandle import_process) 185 explicit ImportProcessRunner(base::ProcessHandle import_process)
186 : import_process_(import_process), 186 : import_process_(import_process),
187 exit_code_(ResultCodes::NORMAL_EXIT) { 187 exit_code_(content::RESULT_CODE_NORMAL_EXIT) {
188 watcher_.StartWatching(import_process, this); 188 watcher_.StartWatching(import_process, this);
189 MessageLoop::current()->Run(); 189 MessageLoop::current()->Run();
190 } 190 }
191 virtual ~ImportProcessRunner() { 191 virtual ~ImportProcessRunner() {
192 ::CloseHandle(import_process_); 192 ::CloseHandle(import_process_);
193 } 193 }
194 // Returns the child process exit code. There are 2 expected values: 194 // Returns the child process exit code. There are 2 expected values:
195 // NORMAL_EXIT, or IMPORTER_HUNG. 195 // NORMAL_EXIT, or IMPORTER_HUNG.
196 int exit_code() const { return exit_code_; } 196 int exit_code() const { return exit_code_; }
197 197
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 virtual void OnTick() { 239 virtual void OnTick() {
240 if (!import_process_) 240 if (!import_process_)
241 return; 241 return;
242 // We find the top active popup that we own, this will be either the 242 // We find the top active popup that we own, this will be either the
243 // owner_window_ itself or the dialog window of the other process. In 243 // owner_window_ itself or the dialog window of the other process. In
244 // both cases it is worth hung testing because both windows share the 244 // both cases it is worth hung testing because both windows share the
245 // same message queue and at some point the other window could be gone 245 // same message queue and at some point the other window could be gone
246 // while the other process still not pumping messages. 246 // while the other process still not pumping messages.
247 HWND active_window = ::GetLastActivePopup(owner_window_); 247 HWND active_window = ::GetLastActivePopup(owner_window_);
248 if (::IsHungAppWindow(active_window) || ::IsHungAppWindow(owner_window_)) { 248 if (::IsHungAppWindow(active_window) || ::IsHungAppWindow(owner_window_)) {
249 ::TerminateProcess(import_process_, ResultCodes::IMPORTER_HUNG); 249 ::TerminateProcess(import_process_, chrome::RESULT_CODE_IMPORTER_HUNG);
250 import_process_ = NULL; 250 import_process_ = NULL;
251 } 251 }
252 } 252 }
253 253
254 HWND owner_window_; 254 HWND owner_window_;
255 base::ProcessHandle import_process_; 255 base::ProcessHandle import_process_;
256 WorkerThreadTicker ticker_; 256 WorkerThreadTicker ticker_;
257 DISALLOW_COPY_AND_ASSIGN(HungImporterMonitor); 257 DISALLOW_COPY_AND_ASSIGN(HungImporterMonitor);
258 }; 258 };
259 259
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 // We block inside the import_runner ctor, pumping messages until the 349 // We block inside the import_runner ctor, pumping messages until the
350 // importer process ends. This can happen either by completing the import 350 // importer process ends. This can happen either by completing the import
351 // or by hang_monitor killing it. 351 // or by hang_monitor killing it.
352 ImportProcessRunner import_runner(import_process); 352 ImportProcessRunner import_runner(import_process);
353 353
354 // Import process finished. Reload the prefs, because importer may set 354 // Import process finished. Reload the prefs, because importer may set
355 // the pref value. 355 // the pref value.
356 if (profile) 356 if (profile)
357 profile->GetPrefs()->ReloadPersistentPrefs(); 357 profile->GetPrefs()->ReloadPersistentPrefs();
358 358
359 return (import_runner.exit_code() == ResultCodes::NORMAL_EXIT); 359 return (import_runner.exit_code() == content::RESULT_CODE_NORMAL_EXIT);
360 } 360 }
361 361
362 // static 362 // static
363 bool FirstRun::ImportSettings(Profile* profile, 363 bool FirstRun::ImportSettings(Profile* profile,
364 scoped_refptr<ImporterHost> importer_host, 364 scoped_refptr<ImporterHost> importer_host,
365 scoped_refptr<ImporterList> importer_list, 365 scoped_refptr<ImporterList> importer_list,
366 int items_to_import) { 366 int items_to_import) {
367 return ImportSettings( 367 return ImportSettings(
368 profile, 368 profile,
369 importer_list->GetSourceProfileAt(0).importer_type, 369 importer_list->GetSourceProfileAt(0).importer_type,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 parent_window, 404 parent_window,
405 static_cast<uint16>(items_to_import), 405 static_cast<uint16>(items_to_import),
406 importer_host, 406 importer_host,
407 &importer_observer, 407 &importer_observer,
408 importer_list->GetSourceProfileForImporterType(importer_type), 408 importer_list->GetSourceProfileForImporterType(importer_type),
409 profile, 409 profile,
410 true); 410 true);
411 importer_observer.RunLoop(); 411 importer_observer.RunLoop();
412 return importer_observer.import_result(); 412 return importer_observer.import_result();
413 } 413 }
OLDNEW
« no previous file with comments | « chrome/browser/first_run/first_run_import_observer.cc ('k') | chrome/browser/hang_monitor/hung_window_detector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698