| Index: chrome/browser/gtk/html_dialog_gtk.cc
|
| ===================================================================
|
| --- chrome/browser/gtk/html_dialog_gtk.cc (revision 71352)
|
| +++ chrome/browser/gtk/html_dialog_gtk.cc (working copy)
|
| @@ -1,171 +0,0 @@
|
| -// Copyright (c) 2010 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/gtk/html_dialog_gtk.h"
|
| -
|
| -#include <gtk/gtk.h>
|
| -
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/browser_window.h"
|
| -#include "chrome/browser/dom_ui/html_dialog_ui.h"
|
| -#include "chrome/browser/gtk/gtk_util.h"
|
| -#include "chrome/browser/gtk/tab_contents_container_gtk.h"
|
| -#include "chrome/browser/tab_contents/tab_contents.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/common/native_web_keyboard_event.h"
|
| -#include "ipc/ipc_message.h"
|
| -
|
| -// static
|
| -void HtmlDialogGtk::ShowHtmlDialogGtk(Browser* browser,
|
| - HtmlDialogUIDelegate* delegate,
|
| - gfx::NativeWindow parent_window) {
|
| - HtmlDialogGtk* html_dialog =
|
| - new HtmlDialogGtk(browser->profile(), delegate, parent_window);
|
| - html_dialog->InitDialog();
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// HtmlDialogGtk, public:
|
| -
|
| -HtmlDialogGtk::HtmlDialogGtk(Profile* profile,
|
| - HtmlDialogUIDelegate* delegate,
|
| - gfx::NativeWindow parent_window)
|
| - : HtmlDialogTabContentsDelegate(profile),
|
| - delegate_(delegate),
|
| - parent_window_(parent_window),
|
| - dialog_(NULL) {
|
| -}
|
| -
|
| -HtmlDialogGtk::~HtmlDialogGtk() {
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// HtmlDialogUIDelegate implementation:
|
| -
|
| -bool HtmlDialogGtk::IsDialogModal() const {
|
| - return delegate_ ? delegate_->IsDialogModal() : false;
|
| -}
|
| -
|
| -std::wstring HtmlDialogGtk::GetDialogTitle() const {
|
| - return delegate_ ? delegate_->GetDialogTitle() : L"";
|
| -}
|
| -
|
| -GURL HtmlDialogGtk::GetDialogContentURL() const {
|
| - if (delegate_)
|
| - return delegate_->GetDialogContentURL();
|
| - else
|
| - return GURL();
|
| -}
|
| -
|
| -void HtmlDialogGtk::GetDOMMessageHandlers(
|
| - std::vector<DOMMessageHandler*>* handlers) const {
|
| - if (delegate_)
|
| - delegate_->GetDOMMessageHandlers(handlers);
|
| - else
|
| - handlers->clear();
|
| -}
|
| -
|
| -void HtmlDialogGtk::GetDialogSize(gfx::Size* size) const {
|
| - if (delegate_)
|
| - delegate_->GetDialogSize(size);
|
| - else
|
| - *size = gfx::Size();
|
| -}
|
| -
|
| -std::string HtmlDialogGtk::GetDialogArgs() const {
|
| - if (delegate_)
|
| - return delegate_->GetDialogArgs();
|
| - else
|
| - return std::string();
|
| -}
|
| -
|
| -void HtmlDialogGtk::OnDialogClosed(const std::string& json_retval) {
|
| - DCHECK(dialog_);
|
| -
|
| - Detach();
|
| - if (delegate_) {
|
| - HtmlDialogUIDelegate* dialog_delegate = delegate_;
|
| - delegate_ = NULL; // We will not communicate further with the delegate.
|
| - dialog_delegate->OnDialogClosed(json_retval);
|
| - }
|
| - gtk_widget_destroy(dialog_);
|
| - delete this;
|
| -}
|
| -
|
| -bool HtmlDialogGtk::ShouldShowDialogTitle() const {
|
| - return true;
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// TabContentsDelegate implementation:
|
| -
|
| -void HtmlDialogGtk::MoveContents(TabContents* source, const gfx::Rect& pos) {
|
| - // The contained web page wishes to resize itself. We let it do this because
|
| - // if it's a dialog we know about, we trust it not to be mean to the user.
|
| -}
|
| -
|
| -void HtmlDialogGtk::ToolbarSizeChanged(TabContents* source,
|
| - bool is_animating) {
|
| - // Ignored.
|
| -}
|
| -
|
| -// A simplified version of BrowserWindowGtk::HandleKeyboardEvent().
|
| -// We don't handle global keyboard shortcuts here, but that's fine since
|
| -// they're all browser-specific. (This may change in the future.)
|
| -void HtmlDialogGtk::HandleKeyboardEvent(const NativeWebKeyboardEvent& event) {
|
| - GdkEventKey* os_event = event.os_event;
|
| - if (!os_event || event.type == WebKit::WebInputEvent::Char)
|
| - return;
|
| -
|
| - // To make sure the default key bindings can still work, such as Escape to
|
| - // close the dialog.
|
| - gtk_bindings_activate_event(GTK_OBJECT(dialog_), os_event);
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// HtmlDialogGtk:
|
| -
|
| -void HtmlDialogGtk::InitDialog() {
|
| - tab_contents_.reset(
|
| - new TabContents(profile(), NULL, MSG_ROUTING_NONE, NULL, NULL));
|
| - tab_contents_->set_delegate(this);
|
| -
|
| - // This must be done before loading the page; see the comments in
|
| - // HtmlDialogUI.
|
| - HtmlDialogUI::GetPropertyAccessor().SetProperty(tab_contents_->property_bag(),
|
| - this);
|
| -
|
| - tab_contents_->controller().LoadURL(GetDialogContentURL(),
|
| - GURL(), PageTransition::START_PAGE);
|
| - GtkDialogFlags flags = GTK_DIALOG_NO_SEPARATOR;
|
| - if (delegate_->IsDialogModal())
|
| - flags = static_cast<GtkDialogFlags>(flags | GTK_DIALOG_MODAL);
|
| -
|
| - dialog_ = gtk_dialog_new_with_buttons(
|
| - WideToUTF8(delegate_->GetDialogTitle()).c_str(),
|
| - parent_window_,
|
| - flags,
|
| - NULL);
|
| -
|
| - g_signal_connect(dialog_, "response", G_CALLBACK(OnResponseThunk), this);
|
| -
|
| - tab_contents_container_.reset(new TabContentsContainerGtk(NULL));
|
| - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_)->vbox),
|
| - tab_contents_container_->widget(), TRUE, TRUE, 0);
|
| -
|
| - tab_contents_container_->SetTabContents(tab_contents_.get());
|
| -
|
| - gfx::Size dialog_size;
|
| - delegate_->GetDialogSize(&dialog_size);
|
| -
|
| - gtk_widget_set_size_request(GTK_WIDGET(tab_contents_container_->widget()),
|
| - dialog_size.width(),
|
| - dialog_size.height());
|
| -
|
| - gtk_widget_show_all(dialog_);
|
| -}
|
| -
|
| -void HtmlDialogGtk::OnResponse(GtkWidget* dialog, int response_id) {
|
| - OnDialogClosed(std::string());
|
| -}
|
|
|