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]; |
-} |