Index: chrome/browser/lifetime/application_lifetime.cc |
diff --git a/chrome/browser/lifetime/application_lifetime.cc b/chrome/browser/lifetime/application_lifetime.cc |
index 605e548001aa18ca115c08c3505fb35604e741b8..3d433768d88c4df661411946eaef32916a6fa49e 100644 |
--- a/chrome/browser/lifetime/application_lifetime.cc |
+++ b/chrome/browser/lifetime/application_lifetime.cc |
@@ -47,6 +47,10 @@ |
#include "chromeos/dbus/update_engine_client.h" |
#endif |
+#if defined(OS_WIN) && defined(USE_AURA) |
+#include "base/win/windows_version.h" |
+#endif |
+ |
namespace chrome { |
namespace { |
@@ -102,6 +106,14 @@ void AttemptExitInternal() { |
#else |
// On most platforms, closing all windows causes the application to exit. |
CloseAllBrowsers(); |
+#if defined(OS_WIN) && defined(USE_AURA) |
+ if (base::win::GetVersion() >= base::win::VERSION_WIN8) { |
+ // On Windows 8, Ash might be active in Metro and won't go away even if all |
+ // browsers are closed. The viewer process, which holds a reference to |
robertshield
2013/05/10 16:51:48
technically it's not the viewer process that holds
gab
2013/05/13 17:46:16
Good point, clarified.
|
+ // g_browser_process, needs to be killed. |
+ g_browser_process->TerminateMetroViewerProcess(); |
+ } |
+#endif // defined(OS_WIN) && defined(USE_AURA) |
#endif |
} |