Index: webkit/tools/test_shell/test_webview_delegate_gtk.cc |
diff --git a/webkit/tools/test_shell/test_webview_delegate_gtk.cc b/webkit/tools/test_shell/test_webview_delegate_gtk.cc |
deleted file mode 100644 |
index 4ce4a223ac553b106511d2c234b02355c1606953..0000000000000000000000000000000000000000 |
--- a/webkit/tools/test_shell/test_webview_delegate_gtk.cc |
+++ /dev/null |
@@ -1,265 +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. |
- |
-// This file was forked off the Mac port. |
- |
-#include "webkit/tools/test_shell/test_webview_delegate.h" |
- |
-#include <gdk/gdkx.h> |
-#include <gtk/gtk.h> |
- |
-#include "base/bind.h" |
-#include "base/message_loop.h" |
-#include "base/utf_string_conversions.h" |
-#include "net/base/net_errors.h" |
-#include "third_party/WebKit/Source/Platform/chromium/public/WebCString.h" |
-#include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h" |
-#include "third_party/WebKit/Source/Platform/chromium/public/WebString.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
-#include "ui/base/window_open_disposition.h" |
-#include "ui/gfx/gtk_util.h" |
-#include "ui/gfx/point.h" |
-#include "webkit/glue/webcursor.h" |
-#include "webkit/glue/webdropdata.h" |
-#include "webkit/glue/webpreferences.h" |
-#include "webkit/plugins/npapi/gtk_plugin_container_manager.h" |
-#include "webkit/plugins/npapi/plugin_list.h" |
-#include "webkit/plugins/npapi/webplugin.h" |
-#include "webkit/plugins/npapi/webplugin_delegate_impl.h" |
-#include "webkit/tools/test_shell/test_navigation_controller.h" |
-#include "webkit/tools/test_shell/test_shell.h" |
- |
-using WebKit::WebCursorInfo; |
-using WebKit::WebFrame; |
-using WebKit::WebNavigationPolicy; |
-using WebKit::WebPopupMenuInfo; |
-using WebKit::WebRect; |
-using WebKit::WebWidget; |
-using WebKit::WebView; |
- |
-namespace { |
- |
-enum SelectionClipboardType { |
- TEXT_HTML, |
- PLAIN_TEXT, |
-}; |
- |
-GdkAtom GetTextHtmlAtom() { |
- GdkAtom kTextHtmlGdkAtom = gdk_atom_intern_static_string("text/html"); |
- return kTextHtmlGdkAtom; |
-} |
- |
-void SelectionClipboardGetContents(GtkClipboard* clipboard, |
- GtkSelectionData* selection_data, guint info, gpointer data) { |
- // Ignore formats that we don't know about. |
- if (info != TEXT_HTML && info != PLAIN_TEXT) |
- return; |
- |
- WebView* webview = static_cast<WebView*>(data); |
- WebFrame* frame = webview->focusedFrame(); |
- if (!frame) |
- frame = webview->mainFrame(); |
- DCHECK(frame); |
- |
- std::string selection; |
- if (TEXT_HTML == info) { |
- selection = frame->selectionAsMarkup().utf8(); |
- } else { |
- selection = frame->selectionAsText().utf8(); |
- } |
- if (TEXT_HTML == info) { |
- gtk_selection_data_set(selection_data, |
- GetTextHtmlAtom(), |
- 8 /* bits per data unit, ie, char */, |
- reinterpret_cast<const guchar*>(selection.data()), |
- selection.length()); |
- } else { |
- gtk_selection_data_set_text(selection_data, selection.data(), |
- selection.length()); |
- } |
-} |
- |
-} // namespace |
- |
-// WebViewClient -------------------------------------------------------------- |
- |
-WebWidget* TestWebViewDelegate::createPopupMenu( |
- const WebPopupMenuInfo& info) { |
- NOTREACHED(); |
- return NULL; |
-} |
- |
-// WebWidgetClient ------------------------------------------------------------ |
- |
-void TestWebViewDelegate::show(WebNavigationPolicy policy) { |
- WebWidgetHost* host = GetWidgetHost(); |
- GtkWidget* drawing_area = host->view_handle(); |
- GtkWidget* window = |
- gtk_widget_get_parent(gtk_widget_get_parent(drawing_area)); |
- gtk_widget_show_all(window); |
-} |
- |
-void TestWebViewDelegate::closeWidgetSoon() { |
- if (this == shell_->delegate()) { |
- MessageLoop::current()->PostTask( |
- FROM_HERE, |
- base::Bind(>k_widget_destroy, GTK_WIDGET(shell_->mainWnd()))); |
- } else if (this == shell_->popup_delegate()) { |
- shell_->ClosePopup(); |
- } |
-} |
- |
-void TestWebViewDelegate::didChangeCursor(const WebCursorInfo& cursor_info) { |
- current_cursor_.InitFromCursorInfo(cursor_info); |
- GdkCursorType cursor_type = |
- static_cast<GdkCursorType>(current_cursor_.GetCursorType()); |
- GdkCursor* gdk_cursor; |
- if (cursor_type == GDK_CURSOR_IS_PIXMAP) { |
- // TODO(port): WebKit bug https://bugs.webkit.org/show_bug.cgi?id=16388 is |
- // that calling gdk_window_set_cursor repeatedly is expensive. We should |
- // avoid it here where possible. |
- gdk_cursor = current_cursor_.GetCustomCursor(); |
- } else { |
- // Optimize the common case, where the cursor hasn't changed. |
- // However, we can switch between different pixmaps, so only on the |
- // non-pixmap branch. |
- if (cursor_type_ == cursor_type) |
- return; |
- if (cursor_type == GDK_LAST_CURSOR) |
- gdk_cursor = NULL; |
- else |
- gdk_cursor = gfx::GetCursor(cursor_type); |
- } |
- cursor_type_ = cursor_type; |
- gdk_window_set_cursor(shell_->webViewWnd()->window, gdk_cursor); |
-} |
- |
-WebRect TestWebViewDelegate::windowRect() { |
- WebWidgetHost* host = GetWidgetHost(); |
- GtkWidget* drawing_area = host->view_handle(); |
- GtkWidget* vbox = gtk_widget_get_parent(drawing_area); |
- GtkWidget* window = gtk_widget_get_parent(vbox); |
- |
- gint x, y; |
- gtk_window_get_position(GTK_WINDOW(window), &x, &y); |
- x += vbox->allocation.x + drawing_area->allocation.x; |
- y += vbox->allocation.y + drawing_area->allocation.y; |
- |
- return WebRect(x, y, |
- drawing_area->allocation.width, |
- drawing_area->allocation.height); |
-} |
- |
-void TestWebViewDelegate::setWindowRect(const WebRect& rect) { |
- if (this == shell_->delegate()) { |
- set_fake_window_rect(rect); |
- } else if (this == shell_->popup_delegate()) { |
- WebWidgetHost* host = GetWidgetHost(); |
- GtkWidget* drawing_area = host->view_handle(); |
- GtkWidget* window = |
- gtk_widget_get_parent(gtk_widget_get_parent(drawing_area)); |
- gtk_window_resize(GTK_WINDOW(window), rect.width, rect.height); |
- gtk_window_move(GTK_WINDOW(window), rect.x, rect.y); |
- } |
-} |
- |
-WebRect TestWebViewDelegate::rootWindowRect() { |
- if (using_fake_rect_) { |
- return fake_window_rect(); |
- } |
- if (WebWidgetHost* host = GetWidgetHost()) { |
- // We are being asked for the x/y and width/height of the entire browser |
- // window. This means the x/y is the distance from the corner of the |
- // screen, and the width/height is the size of the entire browser window. |
- // For example, this is used to implement window.screenX and window.screenY. |
- GtkWidget* drawing_area = host->view_handle(); |
- GtkWidget* window = |
- gtk_widget_get_parent(gtk_widget_get_parent(drawing_area)); |
- gint x, y, width, height; |
- gtk_window_get_position(GTK_WINDOW(window), &x, &y); |
- gtk_window_get_size(GTK_WINDOW(window), &width, &height); |
- return WebRect(x, y, width, height); |
- } |
- return WebRect(); |
-} |
- |
-WebRect TestWebViewDelegate::windowResizerRect() { |
- // Not necessary on Linux. |
- return WebRect(); |
-} |
- |
-void TestWebViewDelegate::runModal() { |
- NOTIMPLEMENTED(); |
-} |
- |
-// WebPluginPageDelegate ------------------------------------------------------ |
- |
-webkit::npapi::WebPluginDelegate* TestWebViewDelegate::CreatePluginDelegate( |
- const base::FilePath& path, |
- const std::string& mime_type) { |
- return webkit::npapi::WebPluginDelegateImpl::Create(path, mime_type); |
-} |
- |
-void TestWebViewDelegate::CreatedPluginWindow( |
- gfx::PluginWindowHandle id) { |
- shell_->webViewHost()->CreatePluginContainer(id); |
-} |
- |
-void TestWebViewDelegate::WillDestroyPluginWindow( |
- gfx::PluginWindowHandle id) { |
- shell_->webViewHost()->DestroyPluginContainer(id); |
-} |
- |
-void TestWebViewDelegate::DidMovePlugin( |
- const webkit::npapi::WebPluginGeometry& move) { |
- WebWidgetHost* host = GetWidgetHost(); |
- webkit::npapi::GtkPluginContainerManager* plugin_container_manager = |
- static_cast<WebViewHost*>(host)->plugin_container_manager(); |
- plugin_container_manager->MovePluginContainer(move); |
-} |
- |
-// Public methods ------------------------------------------------------------- |
- |
-void TestWebViewDelegate::UpdateSelectionClipboard(bool is_empty_selection) { |
- if (is_empty_selection) |
- return; |
- |
- GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); |
- // Put data on the X clipboard. This doesn't actually grab the text from |
- // the HTML, it just registers a callback for when someone tries to paste. |
- GtkTargetList* target_list = gtk_target_list_new(NULL, 0); |
- gtk_target_list_add(target_list, GetTextHtmlAtom(), 0, TEXT_HTML); |
- gtk_target_list_add_text_targets(target_list, PLAIN_TEXT); |
- |
- gint num_targets = 0; |
- GtkTargetEntry* targets = gtk_target_table_new_from_list(target_list, |
- &num_targets); |
- gtk_clipboard_set_with_data(clipboard, targets, num_targets, |
- SelectionClipboardGetContents, NULL, |
- shell_->webView()); |
- gtk_target_list_unref(target_list); |
- gtk_target_table_free(targets, num_targets); |
-} |
- |
-// Private methods ------------------------------------------------------------ |
- |
-void TestWebViewDelegate::ShowJavaScriptAlert(const base::string16& message) { |
- GtkWidget* dialog = gtk_message_dialog_new( |
- shell_->mainWnd(), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, |
- GTK_BUTTONS_OK, "%s", UTF16ToUTF8(message).c_str()); |
- gtk_window_set_title(GTK_WINDOW(dialog), "JavaScript Alert"); |
- gtk_dialog_run(GTK_DIALOG(dialog)); // Runs a nested message loop. |
- gtk_widget_destroy(dialog); |
-} |
- |
-void TestWebViewDelegate::SetPageTitle(const base::string16& title) { |
- gtk_window_set_title(GTK_WINDOW(shell_->mainWnd()), |
- ("Test Shell - " + UTF16ToUTF8(title)).c_str()); |
-} |
- |
-void TestWebViewDelegate::SetAddressBarURL(const GURL& url) { |
- gtk_entry_set_text(GTK_ENTRY(shell_->editWnd()), url.spec().c_str()); |
-} |