Index: chrome/browser/ui/webui/hung_renderer_dialog.cc |
diff --git a/chrome/browser/ui/webui/hung_renderer_dialog.cc b/chrome/browser/ui/webui/hung_renderer_dialog.cc |
index 590c79a844fc81d035c7dc83bedfd1d630bd7b08..13379cd24a46f02cd630710cbe68fefeb69be542 100644 |
--- a/chrome/browser/ui/webui/hung_renderer_dialog.cc |
+++ b/chrome/browser/ui/webui/hung_renderer_dialog.cc |
@@ -8,10 +8,13 @@ |
#include <vector> |
#include "base/json/json_reader.h" |
+#include "base/utf_string_conversions.h" |
#include "base/values.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_list.h" |
+#include "chrome/browser/ui/browser_dialogs.h" |
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
+#include "chrome/browser/ui/webui/html_dialog_ui.h" |
#include "chrome/common/logging_chrome.h" |
#include "chrome/common/url_constants.h" |
#include "content/browser/renderer_host/render_view_host.h" |
@@ -19,7 +22,6 @@ |
#include "content/common/result_codes.h" |
#include "grit/generated_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
-#include "views/widget/widget.h" |
namespace { |
HungRendererDialog* g_instance = NULL; |
@@ -30,11 +32,21 @@ const int kHungRendererDialogHeight = 200; |
namespace browser { |
void ShowHungRendererDialog(TabContents* contents) { |
- HungRendererDialog::ShowHungRendererDialog(contents); |
+ if (ChromeWebUI::IsMoreWebUI()) { |
+ HungRendererDialog::ShowHungRendererDialog(contents); |
+ return; |
+ } |
+ |
+ ShowNativeHungRendererDialog(contents); |
} |
void HideHungRendererDialog(TabContents* contents) { |
- HungRendererDialog::HideHungRendererDialog(contents); |
+ if (ChromeWebUI::IsMoreWebUI()) { |
+ HungRendererDialog::HideHungRendererDialog(contents); |
+ return; |
+ } |
+ |
+ HideNativeHungRendererDialog(contents); |
} |
} // namespace browser |
@@ -62,6 +74,7 @@ void HungRendererDialog::HideHungRendererDialog(TabContents* contents) { |
HungRendererDialog::HungRendererDialog() |
: contents_(NULL), |
+ handler_(NULL), |
window_(NULL) { |
} |
@@ -70,6 +83,7 @@ void HungRendererDialog::ShowDialog(TabContents* contents) { |
contents_ = contents; |
Browser* browser = BrowserList::GetLastActive(); |
DCHECK(browser); |
+ handler_ = new HungRendererDialogHandler(contents_); |
window_ = browser->BrowserShowHtmlDialog(this, NULL); |
} |
@@ -83,9 +97,8 @@ void HungRendererDialog::HideDialog(TabContents* contents) { |
// We do this because the close dialog handler runs whether it is trigged by |
// the user closing the box, or by being closed externally with widget->Close. |
contents_ = NULL; |
- views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window_); |
- DCHECK(widget); |
- widget->Close(); |
+ DCHECK(handler_); |
+ handler_->CloseDialog(); |
} |
bool HungRendererDialog::IsDialogModal() const { |
@@ -102,7 +115,7 @@ GURL HungRendererDialog::GetDialogContentURL() const { |
void HungRendererDialog::GetWebUIMessageHandlers( |
std::vector<WebUIMessageHandler*>* handlers) const { |
- handlers->push_back(new HungRendererDialogHandler(contents_)); |
+ handlers->push_back(handler_); |
} |
void HungRendererDialog::GetDialogSize(gfx::Size* size) const { |
@@ -155,6 +168,11 @@ HungRendererDialogHandler::HungRendererDialogHandler( |
: contents_(contents) { |
} |
+void HungRendererDialogHandler::CloseDialog() { |
+ DCHECK(web_ui_); |
+ static_cast<HtmlDialogUI*>(web_ui_)->CloseDialog(NULL); |
+} |
+ |
void HungRendererDialogHandler::RegisterMessages() { |
web_ui_->RegisterMessageCallback("requestTabContentsList", |
NewCallback(this, |