| Index: chrome/browser/process_singleton_win.cc
|
| diff --git a/chrome/browser/process_singleton_win.cc b/chrome/browser/process_singleton_win.cc
|
| index 4aea500593784c99fe2cd2ddf01b518e02ea314b..68906af97d347dc0a7411f486126be60d1b9d335 100644
|
| --- a/chrome/browser/process_singleton_win.cc
|
| +++ b/chrome/browser/process_singleton_win.cc
|
| @@ -18,14 +18,12 @@
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/time/time.h"
|
| -#include "base/win/metro.h"
|
| #include "base/win/registry.h"
|
| #include "base/win/scoped_handle.h"
|
| #include "base/win/windows_version.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/browser_process_platform_part.h"
|
| #include "chrome/browser/chrome_process_finder_win.h"
|
| -#include "chrome/browser/metro_utils/metro_chrome_win.h"
|
| #include "chrome/browser/shell_integration.h"
|
| #include "chrome/browser/ui/simple_message_box.h"
|
| #include "chrome/common/chrome_constants.h"
|
| @@ -43,8 +41,6 @@ namespace {
|
|
|
| const char kLockfile[] = "lockfile";
|
|
|
| -const int kMetroChromeActivationTimeoutMs = 3000;
|
| -
|
| // A helper class that acquires the given |mutex| while the AutoLockMutex is in
|
| // scope.
|
| class AutoLockMutex {
|
| @@ -318,8 +314,6 @@ ProcessSingleton::NotifyOtherProcessOrCreate() {
|
| // directory path.
|
| bool ProcessSingleton::Create() {
|
| static const wchar_t kMutexName[] = L"Local\\ChromeProcessSingletonStartup!";
|
| - static const wchar_t kMetroActivationEventName[] =
|
| - L"Local\\ChromeProcessSingletonStartupMetroActivation!";
|
|
|
| remote_window_ = chrome::FindRunningChromeWindow(user_data_dir_);
|
| if (!remote_window_ && !EscapeVirtualization(user_data_dir_)) {
|
| @@ -342,57 +336,6 @@ bool ProcessSingleton::Create() {
|
| // was given to us.
|
| remote_window_ = chrome::FindRunningChromeWindow(user_data_dir_);
|
|
|
| -
|
| - // In Win8+, a new Chrome process launched in Desktop mode may need to be
|
| - // transmuted into Metro Chrome (see ShouldLaunchInWindows8ImmersiveMode for
|
| - // heuristics). To accomplish this, the current Chrome activates Metro
|
| - // Chrome, releases the startup mutex, and waits for metro Chrome to take
|
| - // the singleton. From that point onward, the command line for this Chrome
|
| - // process will be sent to Metro Chrome by the usual channels.
|
| - if (!remote_window_ && base::win::GetVersion() >= base::win::VERSION_WIN8 &&
|
| - !base::win::IsMetroProcess()) {
|
| - // |metro_activation_event| is created right before activating a Metro
|
| - // Chrome (note that there can only be one Metro Chrome process; by OS
|
| - // design); all following Desktop processes will then wait for this event
|
| - // to be signaled by Metro Chrome which will do so as soon as it grabs
|
| - // this singleton (should any of the waiting processes timeout waiting for
|
| - // the signal they will try to grab the singleton for themselves which
|
| - // will result in a forced Desktop Chrome launch in the worst case).
|
| - base::win::ScopedHandle metro_activation_event(
|
| - ::OpenEvent(SYNCHRONIZE, FALSE, kMetroActivationEventName));
|
| - if (!metro_activation_event.IsValid() &&
|
| - ShouldLaunchInWindows8ImmersiveMode(user_data_dir_)) {
|
| - // No Metro activation is under way, but the desire is to launch in
|
| - // Metro mode: activate and rendez-vous with the activated process.
|
| - metro_activation_event.Set(
|
| - ::CreateEvent(NULL, TRUE, FALSE, kMetroActivationEventName));
|
| - if (!chrome::ActivateMetroChrome()) {
|
| - // Failed to launch immersive Chrome, default to launching on Desktop.
|
| - LOG(ERROR) << "Failed to launch immersive chrome";
|
| - metro_activation_event.Close();
|
| - }
|
| - }
|
| -
|
| - if (metro_activation_event.IsValid()) {
|
| - // Release |only_me| (to let Metro Chrome grab this singleton) and wait
|
| - // until the event is signaled (i.e. Metro Chrome was successfully
|
| - // activated). Ignore timeout waiting for |metro_activation_event|.
|
| - {
|
| - AutoUnlockMutex auto_unlock_only_me(only_me.Get());
|
| -
|
| - DWORD result = ::WaitForSingleObject(metro_activation_event.Get(),
|
| - kMetroChromeActivationTimeoutMs);
|
| - DPCHECK(result == WAIT_OBJECT_0 || result == WAIT_TIMEOUT)
|
| - << "Result = " << result;
|
| - }
|
| -
|
| - // Check if this singleton was successfully grabbed by another process
|
| - // (hopefully Metro Chrome). Failing to do so, this process will grab
|
| - // the singleton and launch in Desktop mode.
|
| - remote_window_ = chrome::FindRunningChromeWindow(user_data_dir_);
|
| - }
|
| - }
|
| -
|
| if (!remote_window_) {
|
| // We have to make sure there is no Chrome instance running on another
|
| // machine that uses the same profile.
|
| @@ -419,15 +362,6 @@ bool ProcessSingleton::Create() {
|
| user_data_dir_.value());
|
| CHECK(result && window_.hwnd());
|
| }
|
| -
|
| - if (base::win::GetVersion() >= base::win::VERSION_WIN8) {
|
| - // Make sure no one is still waiting on Metro activation whether it
|
| - // succeeded (i.e., this is the Metro process) or failed.
|
| - base::win::ScopedHandle metro_activation_event(
|
| - ::OpenEvent(EVENT_MODIFY_STATE, FALSE, kMetroActivationEventName));
|
| - if (metro_activation_event.IsValid())
|
| - ::SetEvent(metro_activation_event.Get());
|
| - }
|
| }
|
| }
|
|
|
|
|