| Index: webkit/tools/test_shell/test_webview_delegate_mac.mm
|
| diff --git a/webkit/tools/test_shell/test_webview_delegate_mac.mm b/webkit/tools/test_shell/test_webview_delegate_mac.mm
|
| deleted file mode 100644
|
| index f7e58dff48f22c7449ad7f14ff30275530f837a7..0000000000000000000000000000000000000000
|
| --- a/webkit/tools/test_shell/test_webview_delegate_mac.mm
|
| +++ /dev/null
|
| @@ -1,284 +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.
|
| -
|
| -#include "webkit/tools/test_shell/test_webview_delegate.h"
|
| -
|
| -#import <Cocoa/Cocoa.h>
|
| -#include "base/strings/sys_string_conversions.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupMenu.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
|
| -#include "webkit/glue/webcursor.h"
|
| -#include "webkit/glue/webmenurunner_mac.h"
|
| -#include "webkit/plugins/npapi/plugin_list.h"
|
| -#include "webkit/plugins/npapi/webplugin_delegate_impl.h"
|
| -#include "webkit/tools/test_shell/test_shell.h"
|
| -
|
| -using webkit::npapi::WebPluginDelegateImpl;
|
| -using WebKit::WebCursorInfo;
|
| -using WebKit::WebNavigationPolicy;
|
| -using WebKit::WebPopupMenu;
|
| -using WebKit::WebPopupMenuInfo;
|
| -using WebKit::WebRect;
|
| -using WebKit::WebWidget;
|
| -
|
| -namespace {
|
| -
|
| -// Helper function for manufacturing input events to send to WebKit.
|
| -NSEvent* EventWithMenuAction(BOOL item_chosen, int window_num,
|
| - int item_height, int selected_index,
|
| - NSRect menu_bounds, NSRect view_bounds) {
|
| - NSEvent* event = nil;
|
| - double event_time = (double)(AbsoluteToDuration(UpTime())) / 1000.0;
|
| -
|
| - if (item_chosen) {
|
| - // Construct a mouse up event to simulate the selection of an appropriate
|
| - // menu item.
|
| - NSPoint click_pos;
|
| - click_pos.x = menu_bounds.size.width / 2;
|
| -
|
| - // This is going to be hard to calculate since the button is painted by
|
| - // WebKit, the menu by Cocoa, and we have to translate the selected_item
|
| - // index to a coordinate that WebKit's PopupMenu expects which uses a
|
| - // different font *and* expects to draw the menu below the button like we do
|
| - // on Windows.
|
| - // The WebKit popup menu thinks it will draw just below the button, so
|
| - // create the click at the offset based on the selected item's index and
|
| - // account for the different coordinate system used by NSView.
|
| - int item_offset = selected_index * item_height + item_height / 2;
|
| - click_pos.y = view_bounds.size.height - item_offset;
|
| - event = [NSEvent mouseEventWithType:NSLeftMouseUp
|
| - location:click_pos
|
| - modifierFlags:0
|
| - timestamp:event_time
|
| - windowNumber:window_num
|
| - context:nil
|
| - eventNumber:0
|
| - clickCount:1
|
| - pressure:1.0];
|
| - } else {
|
| - // Fake an ESC key event (keyCode = 0x1B, from webinputevent_mac.mm) and
|
| - // forward that to WebKit.
|
| - NSPoint key_pos;
|
| - key_pos.x = 0;
|
| - key_pos.y = 0;
|
| - NSString* escape_str = [NSString stringWithFormat:@"%c", 0x1B];
|
| - event = [NSEvent keyEventWithType:NSKeyDown
|
| - location:key_pos
|
| - modifierFlags:0
|
| - timestamp:event_time
|
| - windowNumber:window_num
|
| - context:nil
|
| - characters:@""
|
| - charactersIgnoringModifiers:escape_str
|
| - isARepeat:NO
|
| - keyCode:0x1B];
|
| - }
|
| -
|
| - return event;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// WebViewClient --------------------------------------------------------------
|
| -
|
| -WebWidget* TestWebViewDelegate::createPopupMenu(
|
| - const WebPopupMenuInfo& info) {
|
| - WebWidget* webwidget = shell_->CreatePopupWidget();
|
| - popup_menu_info_.reset(new WebPopupMenuInfo(info));
|
| - return webwidget;
|
| -}
|
| -
|
| -// WebWidgetClient ------------------------------------------------------------
|
| -
|
| -void TestWebViewDelegate::show(WebNavigationPolicy policy) {
|
| - if (!popup_menu_info_.get())
|
| - return;
|
| - if (this != shell_->popup_delegate())
|
| - return;
|
| - // Display a HTML select menu.
|
| -
|
| - std::vector<WebMenuItem> items;
|
| - for (size_t i = 0; i < popup_menu_info_->items.size(); ++i)
|
| - items.push_back(popup_menu_info_->items[i]);
|
| -
|
| - int item_height = popup_menu_info_->itemHeight;
|
| - double font_size = popup_menu_info_->itemFontSize;
|
| - int selected_index = popup_menu_info_->selectedIndex;
|
| - bool right_aligned = popup_menu_info_->rightAligned;
|
| - popup_menu_info_.reset(); // No longer needed.
|
| -
|
| - const WebRect& bounds = popup_bounds_;
|
| -
|
| - // Set up the menu position.
|
| - NSView* web_view = shell_->webViewWnd();
|
| - NSRect view_rect = [web_view bounds];
|
| - int y_offset = bounds.y + bounds.height;
|
| - NSRect position = NSMakeRect(bounds.x, view_rect.size.height - y_offset,
|
| - bounds.width, bounds.height);
|
| -
|
| - // Display the menu.
|
| - scoped_nsobject<WebMenuRunner> menu_runner;
|
| - menu_runner.reset([[WebMenuRunner alloc] initWithItems:items
|
| - fontSize:font_size
|
| - rightAligned:right_aligned]);
|
| -
|
| - [menu_runner runMenuInView:shell_->webViewWnd()
|
| - withBounds:position
|
| - initialIndex:selected_index];
|
| -
|
| - // Get the selected item and forward to WebKit. WebKit expects an input event
|
| - // (mouse down, keyboard activity) for this, so we calculate the proper
|
| - // position based on the selected index and provided bounds.
|
| - WebWidgetHost* popup = shell_->popupHost();
|
| - int window_num = [shell_->mainWnd() windowNumber];
|
| - NSEvent* event = EventWithMenuAction([menu_runner menuItemWasChosen],
|
| - window_num, item_height,
|
| - [menu_runner indexOfSelectedItem],
|
| - position, view_rect);
|
| -
|
| - if ([menu_runner menuItemWasChosen]) {
|
| - // Construct a mouse up event to simulate the selection of an appropriate
|
| - // menu item.
|
| - popup->MouseEvent(event);
|
| - } else {
|
| - // Fake an ESC key event (keyCode = 0x1B, from webinputevent_mac.mm) and
|
| - // forward that to WebKit.
|
| - popup->KeyEvent(event);
|
| - }
|
| -}
|
| -
|
| -void TestWebViewDelegate::closeWidgetSoon() {
|
| - if (this == shell_->delegate()) {
|
| - NSWindow *win = shell_->mainWnd();
|
| - [win performSelector:@selector(performClose:) withObject:nil afterDelay:0];
|
| - } else if (this == shell_->popup_delegate()) {
|
| - shell_->ClosePopup();
|
| - }
|
| -}
|
| -
|
| -void TestWebViewDelegate::didChangeCursor(const WebCursorInfo& cursor_info) {
|
| - NSCursor* ns_cursor = WebCursor(cursor_info).GetNativeCursor();
|
| - [ns_cursor set];
|
| -}
|
| -
|
| -WebRect TestWebViewDelegate::windowRect() {
|
| - if (WebWidgetHost* host = GetWidgetHost()) {
|
| - NSView *view = host->view_handle();
|
| - NSRect rect = [view frame];
|
| - return gfx::Rect(NSRectToCGRect(rect));
|
| - }
|
| - return WebRect();
|
| -}
|
| -
|
| -void TestWebViewDelegate::setWindowRect(const WebRect& rect) {
|
| - if (this == shell_->delegate()) {
|
| - set_fake_window_rect(rect);
|
| - } else if (this == shell_->popup_delegate()) {
|
| - popup_bounds_ = rect; // The initial position of the popup.
|
| - }
|
| -}
|
| -
|
| -WebRect TestWebViewDelegate::rootWindowRect() {
|
| - if (using_fake_rect_) {
|
| - return fake_window_rect();
|
| - }
|
| - if (WebWidgetHost* host = GetWidgetHost()) {
|
| - NSView *view = host->view_handle();
|
| - NSRect rect = [[[view window] contentView] frame];
|
| - return gfx::Rect(NSRectToCGRect(rect));
|
| - }
|
| - return WebRect();
|
| -}
|
| -
|
| -@interface NSWindow(OSInternals)
|
| -- (NSRect)_growBoxRect;
|
| -@end
|
| -
|
| -WebRect TestWebViewDelegate::windowResizerRect() {
|
| - NSRect resize_rect = NSMakeRect(0, 0, 0, 0);
|
| - WebWidgetHost* host = GetWidgetHost();
|
| - // To match the WebKit screen shots, we need the resize area to overlap
|
| - // the scroll arrows, so in layout test mode, we don't return a real rect.
|
| - if (!(shell_->layout_test_mode()) && host) {
|
| - NSView *view = host->view_handle();
|
| - NSWindow* window = [view window];
|
| - resize_rect = [window _growBoxRect];
|
| - // The scrollbar assumes that the resizer goes all the way down to the
|
| - // bottom corner, so we ignore any y offset to the rect itself and use the
|
| - // entire bottom corner.
|
| - resize_rect.origin.y = 0;
|
| - // Convert to view coordinates from window coordinates.
|
| - resize_rect = [view convertRect:resize_rect fromView:nil];
|
| - // Flip the rect in view coordinates
|
| - resize_rect.origin.y =
|
| - [view frame].size.height - resize_rect.origin.y -
|
| - resize_rect.size.height;
|
| - }
|
| - return gfx::Rect(NSRectToCGRect(resize_rect));
|
| -}
|
| -
|
| -void TestWebViewDelegate::runModal() {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -// WebPluginPageDelegate ------------------------------------------------------
|
| -
|
| -webkit::npapi::WebPluginDelegate* TestWebViewDelegate::CreatePluginDelegate(
|
| - const base::FilePath& path,
|
| - const std::string& mime_type) {
|
| - WebWidgetHost *host = GetWidgetHost();
|
| - if (!host)
|
| - return NULL;
|
| -
|
| - WebPluginDelegateImpl* delegate =
|
| - WebPluginDelegateImpl::Create(path, mime_type);
|
| - if (delegate)
|
| - delegate->SetNoBufferContext();
|
| - return delegate;
|
| -}
|
| -
|
| -void TestWebViewDelegate::CreatedPluginWindow(
|
| - gfx::PluginWindowHandle handle) {
|
| -}
|
| -
|
| -void TestWebViewDelegate::WillDestroyPluginWindow(
|
| - gfx::PluginWindowHandle handle) {
|
| -}
|
| -
|
| -void TestWebViewDelegate::DidMovePlugin(
|
| - const webkit::npapi::WebPluginGeometry& move) {
|
| - // TODO(port): add me once plugins work.
|
| -}
|
| -
|
| -// Public methods -------------------------------------------------------------
|
| -
|
| -void TestWebViewDelegate::UpdateSelectionClipboard(bool is_empty_selection) {
|
| - // No selection clipboard on mac, do nothing.
|
| -}
|
| -
|
| -// Private methods ------------------------------------------------------------
|
| -
|
| -void TestWebViewDelegate::ShowJavaScriptAlert(const base::string16& message) {
|
| - NSString *text =
|
| - [NSString stringWithUTF8String:UTF16ToUTF8(message).c_str()];
|
| - NSAlert *alert = [NSAlert alertWithMessageText:@"JavaScript Alert"
|
| - defaultButton:@"OK"
|
| - alternateButton:nil
|
| - otherButton:nil
|
| - informativeTextWithFormat:@"%@", text];
|
| - [alert runModal];
|
| -}
|
| -
|
| -void TestWebViewDelegate::SetPageTitle(const base::string16& title) {
|
| - [[shell_->webViewHost()->view_handle() window]
|
| - setTitle:[NSString stringWithUTF8String:UTF16ToUTF8(title).c_str()]];
|
| -}
|
| -
|
| -void TestWebViewDelegate::SetAddressBarURL(const GURL& url) {
|
| - const char* frameURL = url.spec().c_str();
|
| - NSString *address = [NSString stringWithUTF8String:frameURL];
|
| - [shell_->editWnd() setStringValue:address];
|
| -}
|
|
|