| Index: chrome/browser/ui/views/hung_renderer_view_win.cc
|
| diff --git a/chrome/browser/ui/views/hung_renderer_view_win.cc b/chrome/browser/ui/views/hung_renderer_view_win.cc
|
| deleted file mode 100644
|
| index 992d96497d207163f4ce47b7fae45074c4036100..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/views/hung_renderer_view_win.cc
|
| +++ /dev/null
|
| @@ -1,171 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/ui/views/hung_renderer_view_win.h"
|
| -
|
| -#include "base/win/metro.h"
|
| -#include "chrome/browser/hang_monitor/hang_crash_dump_win.h"
|
| -#include "chrome/browser/ui/views/hung_renderer_view.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/render_process_host.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "win8/util/win8_util.h"
|
| -
|
| -// Metro functions for displaying and dismissing a dialog box.
|
| -typedef void (*MetroShowDialogBox)(
|
| - const wchar_t* title,
|
| - const wchar_t* content,
|
| - const wchar_t* button1_label,
|
| - const wchar_t* button2_label,
|
| - base::win::MetroDialogButtonPressedHandler button1_handler,
|
| - base::win::MetroDialogButtonPressedHandler button2_handler);
|
| -
|
| -typedef void (*MetroDismissDialogBox)();
|
| -
|
| -using content::BrowserThread;
|
| -using content::WebContents;
|
| -
|
| -HungRendererDialogMetro* HungRendererDialogMetro::g_instance_ = NULL;
|
| -
|
| -bool PlatformShowCustomHungRendererDialog(WebContents* contents) {
|
| - if (!win8::IsSingleWindowMetroMode())
|
| - return false;
|
| -
|
| - HungRendererDialogMetro::Create()->Show(contents);
|
| - return true;
|
| -}
|
| -
|
| -bool PlatformHideCustomHungRendererDialog(WebContents* contents) {
|
| - if (!win8::IsSingleWindowMetroMode())
|
| - return false;
|
| -
|
| - if (HungRendererDialogMetro::GetInstance())
|
| - HungRendererDialogMetro::GetInstance()->Hide(contents);
|
| - return true;
|
| -}
|
| -
|
| -// static
|
| -void HungRendererDialogView::KillRendererProcess(
|
| - base::ProcessHandle process_handle) {
|
| - // Try to generate a crash report for the hung process.
|
| - CrashDumpAndTerminateHungChildProcess(process_handle);
|
| -}
|
| -
|
| -// static
|
| -HungRendererDialogMetro* HungRendererDialogMetro::Create() {
|
| - if (!GetInstance())
|
| - g_instance_ = new HungRendererDialogMetro;
|
| - return g_instance_;
|
| -}
|
| -
|
| -// static
|
| -HungRendererDialogMetro* HungRendererDialogMetro::GetInstance() {
|
| - return g_instance_;
|
| -}
|
| -
|
| -HungRendererDialogMetro::HungRendererDialogMetro()
|
| - : contents_(NULL),
|
| - metro_dialog_displayed_(false) {
|
| -}
|
| -
|
| -HungRendererDialogMetro::~HungRendererDialogMetro() {
|
| - g_instance_ = NULL;
|
| -}
|
| -
|
| -void HungRendererDialogMetro::Show(WebContents* contents) {
|
| - if (!metro_dialog_displayed_ &&
|
| - HungRendererDialogView::IsFrameActive(contents)) {
|
| - HMODULE metro_dll = base::win::GetMetroModule();
|
| - DCHECK(metro_dll);
|
| - if (metro_dll) {
|
| - MetroShowDialogBox show_dialog_box = reinterpret_cast<MetroShowDialogBox>
|
| - (::GetProcAddress(metro_dll, "ShowDialogBox"));
|
| - DCHECK(show_dialog_box);
|
| - if (show_dialog_box) {
|
| - base::string16 dialog_box_title =
|
| - l10n_util::GetStringUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_TITLE);
|
| -
|
| - base::string16 kill_button_label =
|
| - l10n_util::GetStringUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_END);
|
| -
|
| - base::string16 wait_button_label =
|
| - l10n_util::GetStringUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_WAIT);
|
| -
|
| - contents_ = contents;
|
| - metro_dialog_displayed_ = true;
|
| -
|
| - (*show_dialog_box)(dialog_box_title.c_str(),
|
| - contents->GetTitle().c_str(),
|
| - kill_button_label.c_str(),
|
| - wait_button_label.c_str(),
|
| - HungRendererDialogMetro::OnMetroKillProcess,
|
| - HungRendererDialogMetro::OnMetroWait);
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -void HungRendererDialogMetro::Hide(WebContents* contents) {
|
| - HMODULE metro_dll = base::win::GetMetroModule();
|
| - DCHECK(metro_dll);
|
| - if (metro_dll) {
|
| - MetroDismissDialogBox dismiss_dialog_box =
|
| - reinterpret_cast<MetroDismissDialogBox>
|
| - (::GetProcAddress(metro_dll, "DismissDialogBox"));
|
| - DCHECK(dismiss_dialog_box);
|
| - if (dismiss_dialog_box) {
|
| - (*dismiss_dialog_box)();
|
| - ResetMetroState();
|
| - }
|
| - }
|
| -}
|
| -
|
| -void HungRendererDialogMetro::ResetMetroState() {
|
| - metro_dialog_displayed_ = false;
|
| - contents_ = NULL;
|
| - delete g_instance_;
|
| -}
|
| -
|
| -// static
|
| -void HungRendererDialogMetro::OnMetroKillProcess() {
|
| - // Metro chrome will invoke these handlers on the metro thread. Ensure that
|
| - // we switch to the UI thread.
|
| - if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(HungRendererDialogMetro::OnMetroKillProcess));
|
| - return;
|
| - }
|
| -
|
| - // Its possible that we got deleted in the meantime.
|
| - if (!GetInstance())
|
| - return;
|
| -
|
| - DCHECK(GetInstance()->contents_);
|
| -
|
| - HungRendererDialogView::KillRendererProcess(
|
| - GetInstance()->contents_->GetRenderProcessHost()->GetHandle());
|
| -
|
| - // The metro dialog box is dismissed when the button handlers are invoked.
|
| - GetInstance()->ResetMetroState();
|
| -}
|
| -
|
| -// static
|
| -void HungRendererDialogMetro::OnMetroWait() {
|
| - // Metro chrome will invoke these handlers on the metro thread. Ensure that
|
| - // we switch to the UI thread.
|
| - if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(HungRendererDialogMetro::OnMetroWait));
|
| - return;
|
| - }
|
| -
|
| - // Its possible that we got deleted in the meantime.
|
| - if (!GetInstance())
|
| - return;
|
| -
|
| - GetInstance()->ResetMetroState();
|
| -}
|
|
|