| Index: chrome/browser/ui/views/html_dialog_view.cc
|
| ===================================================================
|
| --- chrome/browser/ui/views/html_dialog_view.cc (revision 133597)
|
| +++ chrome/browser/ui/views/html_dialog_view.cc (working copy)
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <vector>
|
|
|
| +#include "base/property_bag.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser_dialogs.h"
|
| @@ -16,7 +17,9 @@
|
| #include "content/public/browser/notification_types.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "ui/base/keycodes/keyboard_codes.h"
|
| +#include "ui/views/controls/webview/webview.h"
|
| #include "ui/views/events/event.h"
|
| +#include "ui/views/layout/fill_layout.h"
|
| #include "ui/views/widget/root_view.h"
|
| #include "ui/views/widget/widget.h"
|
|
|
| @@ -36,11 +39,11 @@
|
| Browser* browser,
|
| HtmlDialogUIDelegate* delegate,
|
| DialogStyle style) {
|
| - HtmlDialogView* html_view = new HtmlDialogView(profile, browser, delegate);
|
| - views::Widget::CreateWindowWithParent(html_view, parent);
|
| - html_view->InitDialog();
|
| - html_view->GetWidget()->Show();
|
| - return html_view->GetWidget()->GetNativeWindow();
|
| + views::Widget* widget = views::Widget::CreateWindowWithParent(
|
| + new HtmlDialogView(profile, browser, delegate),
|
| + parent);
|
| + widget->Show();
|
| + return widget->GetNativeWindow();
|
| }
|
|
|
| void CloseHtmlDialog(gfx::NativeWindow window) {
|
| @@ -55,16 +58,25 @@
|
| HtmlDialogView::HtmlDialogView(Profile* profile,
|
| Browser* browser,
|
| HtmlDialogUIDelegate* delegate)
|
| - : DOMView(),
|
| - HtmlDialogTabContentsDelegate(profile),
|
| + : HtmlDialogTabContentsDelegate(profile),
|
| initialized_(false),
|
| delegate_(delegate),
|
| - dialog_controller_(new HtmlDialogController(this, profile, browser)) {
|
| + dialog_controller_(new HtmlDialogController(this, profile, browser)),
|
| + web_view_(new views::WebView(profile)) {
|
| + web_view_->set_allow_accelerators(true);
|
| + AddChildView(web_view_);
|
| + SetLayoutManager(new views::FillLayout);
|
| + // Pressing the ESC key will close the dialog.
|
| + AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, false, false, false));
|
| }
|
|
|
| HtmlDialogView::~HtmlDialogView() {
|
| }
|
|
|
| +content::WebContents* HtmlDialogView::web_contents() {
|
| + return web_view_->web_contents();
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // HtmlDialogView, views::View implementation:
|
|
|
| @@ -82,13 +94,11 @@
|
| return true;
|
| }
|
|
|
| -void HtmlDialogView::ViewHierarchyChanged(
|
| - bool is_add, View* parent, View* child) {
|
| - DOMView::ViewHierarchyChanged(is_add, parent, child);
|
| - if (is_add && GetWidget() && !initialized_) {
|
| - initialized_ = true;
|
| - RegisterDialogAccelerators();
|
| - }
|
| +void HtmlDialogView::ViewHierarchyChanged(bool is_add,
|
| + views::View* parent,
|
| + views::View* child) {
|
| + if (is_add && GetWidget())
|
| + InitDialog();
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -127,7 +137,7 @@
|
| }
|
|
|
| views::View* HtmlDialogView::GetInitiallyFocusedView() {
|
| - return this;
|
| + return web_view_;
|
| }
|
|
|
| bool HtmlDialogView::ShouldShowWindowTitle() const {
|
| @@ -281,13 +291,26 @@
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| -// HtmlDialogView:
|
| +// HtmlDialogView, TabRenderWatcher::Delegate implementation:
|
|
|
| +void HtmlDialogView::OnRenderHostCreated(content::RenderViewHost* host) {
|
| +}
|
| +
|
| +void HtmlDialogView::OnTabMainFrameLoaded() {
|
| +}
|
| +
|
| +void HtmlDialogView::OnTabMainFrameRender() {
|
| + tab_watcher_.reset();
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// HtmlDialogView, private:
|
| +
|
| void HtmlDialogView::InitDialog() {
|
| - // Now Init the DOMView. This view runs in its own process to render the html.
|
| - DOMView::Init(profile(), NULL);
|
| + content::WebContents* web_contents = web_view_->GetWebContents();
|
| + if (web_contents->GetDelegate() == this)
|
| + return;
|
|
|
| - WebContents* web_contents = dom_contents_->web_contents();
|
| web_contents->SetDelegate(this);
|
|
|
| // Set the delegate. This must be done before loading the page. See
|
| @@ -303,20 +326,5 @@
|
| GetWidget()->CenterWindow(out);
|
| }
|
|
|
| - DOMView::LoadURL(GetDialogContentURL());
|
| + web_view_->LoadInitialURL(GetDialogContentURL());
|
| }
|
| -
|
| -void HtmlDialogView::RegisterDialogAccelerators() {
|
| - // Pressing the ESC key will close the dialog.
|
| - AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, false, false, false));
|
| -}
|
| -
|
| -void HtmlDialogView::OnRenderHostCreated(content::RenderViewHost* host) {
|
| -}
|
| -
|
| -void HtmlDialogView::OnTabMainFrameLoaded() {
|
| -}
|
| -
|
| -void HtmlDialogView::OnTabMainFrameRender() {
|
| - tab_watcher_.reset();
|
| -}
|
|
|