| Index: chrome/browser/first_run/upgrade_util_win.cc
|
| diff --git a/chrome/browser/first_run/upgrade_util_win.cc b/chrome/browser/first_run/upgrade_util_win.cc
|
| index 5725ba283c47e760596e7d4a61ed27ce85be0246..688e6659192e97b2ea7c45bb9ac5efdde1ec3c1c 100644
|
| --- a/chrome/browser/first_run/upgrade_util_win.cc
|
| +++ b/chrome/browser/first_run/upgrade_util_win.cc
|
| @@ -25,7 +25,6 @@
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| -#include "base/win/metro.h"
|
| #include "base/win/registry.h"
|
| #include "base/win/scoped_comptr.h"
|
| #include "base/win/windows_version.h"
|
| @@ -162,73 +161,8 @@ bool RelaunchChromeHelper(const base::CommandLine& command_line,
|
| chrome_exe_command_line.SetProgram(
|
| chrome_exe.DirName().Append(installer::kChromeExe));
|
|
|
| - // Relaunch directly if Chrome doesn't support Metro-mode on this platform
|
| - // unless an explicit relaunch mode was specified (e.g. for the Ash shell on
|
| - // Win7).
|
| - if (!base::win::IsChromeMetroSupported() &&
|
| - relaunch_mode != RELAUNCH_MODE_METRO &&
|
| - relaunch_mode != RELAUNCH_MODE_DESKTOP) {
|
| - return base::LaunchProcess(chrome_exe_command_line,
|
| - base::LaunchOptions()).IsValid();
|
| - }
|
| -
|
| - // On Windows 8 we always use the delegate_execute for re-launching chrome.
|
| - // On Windows 7 we use delegate_execute for re-launching chrome into Windows
|
| - // ASH.
|
| - //
|
| - // Pass this Chrome's Start Menu shortcut path to the relauncher so it can re-
|
| - // activate chrome via ShellExecute which will wait until we exit. Since
|
| - // ShellExecute does not support handle passing to the child process we create
|
| - // a uniquely named mutex that we aquire and never release. So when we exit,
|
| - // Windows marks our mutex as abandoned and the wait is satisfied. The format
|
| - // of the named mutex is important. See DelegateExecuteOperation for more
|
| - // details.
|
| - base::string16 mutex_name =
|
| - base::StringPrintf(L"chrome.relaunch.%d", ::GetCurrentProcessId());
|
| - HANDLE mutex = ::CreateMutexW(NULL, TRUE, mutex_name.c_str());
|
| - // The |mutex| handle needs to be leaked. See comment above.
|
| - if (!mutex) {
|
| - NOTREACHED();
|
| - return false;
|
| - }
|
| - if (::GetLastError() == ERROR_ALREADY_EXISTS) {
|
| - NOTREACHED() << "Relaunch mutex already exists";
|
| - return false;
|
| - }
|
| -
|
| - base::CommandLine relaunch_cmd(base::CommandLine::NO_PROGRAM);
|
| - relaunch_cmd.AppendSwitchPath(switches::kRelaunchShortcut,
|
| - ShellIntegration::GetStartMenuShortcut(chrome_exe));
|
| - relaunch_cmd.AppendSwitchNative(switches::kWaitForMutex, mutex_name);
|
| -
|
| - if (relaunch_mode != RELAUNCH_MODE_DEFAULT) {
|
| - relaunch_cmd.AppendSwitch(relaunch_mode == RELAUNCH_MODE_METRO?
|
| - switches::kForceImmersive : switches::kForceDesktop);
|
| - }
|
| -
|
| - base::string16 params(relaunch_cmd.GetCommandLineString());
|
| - base::string16 path(GetMetroRelauncherPath(chrome_exe, version_str).value());
|
| -
|
| - SHELLEXECUTEINFO sei = { sizeof(sei) };
|
| - sei.fMask = SEE_MASK_FLAG_LOG_USAGE | SEE_MASK_NOCLOSEPROCESS;
|
| - sei.nShow = SW_SHOWNORMAL;
|
| - sei.lpFile = path.c_str();
|
| - sei.lpParameters = params.c_str();
|
| -
|
| - if (!::ShellExecuteExW(&sei)) {
|
| - NOTREACHED() << "ShellExecute failed with " << GetLastError();
|
| - return false;
|
| - }
|
| - DWORD pid = ::GetProcessId(sei.hProcess);
|
| - CloseHandle(sei.hProcess);
|
| - if (!pid)
|
| - return false;
|
| - // The next call appears to be needed if we are relaunching from desktop into
|
| - // metro mode. The observed effect if not done is that chrome starts in metro
|
| - // mode but it is not given focus and it gets killed by windows after a few
|
| - // seconds.
|
| - ::AllowSetForegroundWindow(pid);
|
| - return true;
|
| + return base::LaunchProcess(chrome_exe_command_line, base::LaunchOptions())
|
| + .IsValid();
|
| }
|
|
|
| bool RelaunchChromeBrowser(const base::CommandLine& command_line) {
|
| @@ -308,8 +242,6 @@ bool DoUpgradeTasks(const base::CommandLine& command_line) {
|
| // The DelegateExecute verb handler finalizes pending in-use updates for
|
| // metro mode launches, as Chrome cannot be gracefully relaunched when
|
| // running in this mode.
|
| - if (base::win::IsMetroProcess())
|
| - return false;
|
| if (!SwapNewChromeExeIfPresent() && !IsRunningOldChrome())
|
| return false;
|
| // At this point the chrome.exe has been swapped with the new one.
|
|
|