Index: chrome/browser/lifetime/application_lifetime.cc |
diff --git a/chrome/browser/lifetime/application_lifetime.cc b/chrome/browser/lifetime/application_lifetime.cc |
index fdb60e77e04bd8041cb170c8c178fe002abd9b32..172c342a19a7d7b7c3699b2e220f0925809ad2d0 100644 |
--- a/chrome/browser/lifetime/application_lifetime.cc |
+++ b/chrome/browser/lifetime/application_lifetime.cc |
@@ -48,6 +48,11 @@ |
#include "chromeos/dbus/update_engine_client.h" |
#endif |
+#if defined(OS_WIN) && defined(USE_AURA) |
+#include "base/win/windows_version.h" |
+#include "chrome/browser/browser_process_platform_part_winaura.h" |
+#endif |
+ |
namespace chrome { |
namespace { |
@@ -103,6 +108,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, whose host holds a reference to |
+ // g_browser_process, needs to be killed. |
+ g_browser_process->platform_part()->TerminateMetroViewerProcess(); |
sky
2013/05/15 21:13:18
How about naming this AttemptExit so that you can
gab
2013/05/17 23:19:18
Done on top of https://codereview.chromium.org/149
|
+ } |
+#endif // defined(OS_WIN) && defined(USE_AURA) |
#endif |
} |