Chromium Code Reviews| 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..530d7af2df2e051fdfab493d3404eabb0195c3e1 100644 |
| --- a/chrome/browser/ui/webui/hung_renderer_dialog.cc |
| +++ b/chrome/browser/ui/webui/hung_renderer_dialog.cc |
| @@ -8,9 +8,11 @@ |
| #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/common/logging_chrome.h" |
| #include "chrome/common/url_constants.h" |
| @@ -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(); |
|
flackr
2011/09/09 17:58:51
The close widget method in trunk depended on views
|
| } |
| 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,12 @@ HungRendererDialogHandler::HungRendererDialogHandler( |
| : contents_(contents) { |
| } |
| +void HungRendererDialogHandler::CloseDialog() { |
| + DCHECK(web_ui_); |
| + web_ui_->tab_contents()->render_view_host()->ExecuteJavascriptInWebFrame( |
| + string16(), UTF8ToUTF16("chrome.send('DialogClose');")); |
|
flackr
2011/09/09 17:58:51
This calls DialogClose with no arguments, which is
arv (Not doing code reviews)
2011/09/12 18:34:20
This is really backwards. Why call js just so that
flackr
2011/09/12 20:17:19
Done.
|
| +} |
| + |
| void HungRendererDialogHandler::RegisterMessages() { |
| web_ui_->RegisterMessageCallback("requestTabContentsList", |
| NewCallback(this, |