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

Side by Side Diff: chrome/browser/extensions/app_host_installer_win.cc

Issue 12383057: Merge 185412 (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1410/src/
Patch Set: Created 7 years, 9 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 | « no previous file | no next file » | 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) 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 // AppHostInstaller checks the presence of app_host.exe, and launches 5 // AppHostInstaller checks the presence of app_host.exe, and launches
6 // the installer if missing. The check must be performed on the FILE thread. 6 // the installer if missing. The check must be performed on the FILE thread.
7 // The installation is also launched on the FILE thread as an asynchronous 7 // The installation is also launched on the FILE thread as an asynchronous
8 // process. Once installation completes, QuickEnableWatcher is notified. 8 // process. Once installation completes, QuickEnableWatcher is notified.
9 // AppHostInstaller::FinishOnCallerThread() is called in the end, 9 // AppHostInstaller::FinishOnCallerThread() is called in the end,
10 // which notifies the caller via a completion callback on the original 10 // which notifies the caller via a completion callback on the original
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 DISALLOW_COPY_AND_ASSIGN(QuickEnableDelegate); 63 DISALLOW_COPY_AND_ASSIGN(QuickEnableDelegate);
64 }; 64 };
65 65
66 QuickEnableDelegate::QuickEnableDelegate( 66 QuickEnableDelegate::QuickEnableDelegate(
67 const OnAppHostInstallationCompleteCallback& callback) 67 const OnAppHostInstallationCompleteCallback& callback)
68 : callback_(callback) {} 68 : callback_(callback) {}
69 69
70 QuickEnableDelegate::~QuickEnableDelegate() {} 70 QuickEnableDelegate::~QuickEnableDelegate() {}
71 71
72 void QuickEnableDelegate::OnObjectSignaled(HANDLE object) { 72 void QuickEnableDelegate::OnObjectSignaled(HANDLE object) {
73 // Reset callback_ to free up references. But do it now because it's possible
74 // that callback_.Run() will cause this object to be deleted.
75 OnAppHostInstallationCompleteCallback callback(callback_);
76 callback_.Reset();
77
73 int exit_code = 0; 78 int exit_code = 0;
74 base::TerminationStatus status( 79 base::TerminationStatus status(
75 base::GetTerminationStatus(object, &exit_code)); 80 base::GetTerminationStatus(object, &exit_code));
76 if (status == base::TERMINATION_STATUS_NORMAL_TERMINATION) { 81 if (status == base::TERMINATION_STATUS_NORMAL_TERMINATION) {
77 callback_.Run(true); 82 callback.Run(true);
78 } else { 83 } else {
79 LOG(ERROR) << "App Launcher install failed, status = " << status 84 LOG(ERROR) << "App Launcher install failed, status = " << status
80 << ", exit code = " << exit_code; 85 << ", exit code = " << exit_code;
81 callback_.Run(false); 86 callback.Run(false);
82 } 87 }
83 callback_.Reset(); 88
89 // At this point 'this' may be deleted. Don't do anything else here.
84 } 90 }
85 91
86 // Reads the path to app_host.exe from the value "UninstallString" within the 92 // Reads the path to app_host.exe from the value "UninstallString" within the
87 // App Host's "ClientState" registry key. Returns an empty string if the path 93 // App Host's "ClientState" registry key. Returns an empty string if the path
88 // does not exist or cannot be read. 94 // does not exist or cannot be read.
89 string16 GetQuickEnableAppHostCommand(bool system_level) { 95 string16 GetQuickEnableAppHostCommand(bool system_level) {
90 HKEY root_key = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; 96 HKEY root_key = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
91 string16 subkey(kGoogleRegClientsKey); 97 string16 subkey(kGoogleRegClientsKey);
92 subkey.append(1, L'\\').append(kBinariesAppGuid) 98 subkey.append(1, L'\\').append(kBinariesAppGuid)
93 .append(1, L'\\').append(kRegCommandsKey) 99 .append(1, L'\\').append(kRegCommandsKey)
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 delete this; 216 delete this;
211 } 217 }
212 return; 218 return;
213 } 219 }
214 220
215 completion_callback_.Run(success); 221 completion_callback_.Run(success);
216 delete this; 222 delete this;
217 } 223 }
218 224
219 } // namespace extensions 225 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698