Diff
Modified: trunk/LayoutTests/ChangeLog (135594 => 135595)
--- trunk/LayoutTests/ChangeLog 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/LayoutTests/ChangeLog 2012-11-23 12:55:45 UTC (rev 135595)
@@ -1,3 +1,21 @@
+2012-11-23 Wojciech Bielawski <[email protected]>
+
+ [WK2][WKTR] WebKitTestRunner needs eventSender.contextClick()
+ https://bugs.webkit.org/show_bug.cgi?id=86881
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Added expected results for two tests for EFL platform. Test expectations changed
+ for EFL WK1/WK2 and GTK platforms
+
+ * platform/efl/TestExpectations:
+ * platform/efl-wk1/TestExpectations:
+ * platform/efl-wk2/TestExpectations:
+ * platform/gkt-wk2/TestExpectations:
+ * platform/gtk/editing/selection/5354455-2-expected.txt:
+ * platform/efl/editing/selection/5354455-2-expected.txt: Added.
+ * platform/efl/fast/events/context-no-deselect-expected.txt: Added.
+
2012-11-23 Sudarsana Nagineni <[email protected]>
[EFL] Newly added tests in r135436 and r135456 are failng
Modified: trunk/LayoutTests/platform/efl/TestExpectations (135594 => 135595)
--- trunk/LayoutTests/platform/efl/TestExpectations 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/LayoutTests/platform/efl/TestExpectations 2012-11-23 12:55:45 UTC (rev 135595)
@@ -1563,9 +1563,6 @@
# Entering into full screen playback mode fails when triggered by context menu
Bug(EFL) media/context-menu-actions.html [ Failure ]
-# ESC key does not cancel context menu in EFL port
-Bug(EFL) editing/selection/5354455-1.html [ Failure ]
-
# Tests that create an extra graphics layer
webkit.org/b/102697 compositing/overflow/overflow-auto-with-touch-no-overflow.html [ Failure ]
webkit.org/b/102697 compositing/overflow/overflow-hidden-with-touch.html [ Failure ]
@@ -1691,3 +1688,9 @@
webkit.org/b/61138 http/tests/w3c/webperf/submission/resource-timing [ Skip ]
webkit.org/b/103109 fast/dom/shadow/host-wrapper-reclaimed.html [ Failure ]
+
+# Start of media player causes timeout.
+Bug(EFL) media/controls-right-click-on-timebar.html [ Failure ]
+
+# No spellcheck suggestions in context menu
+Bug(EFL) editing/spelling/context-menu-suggestions.html [ Failure ]
Modified: trunk/LayoutTests/platform/efl-wk1/TestExpectations (135594 => 135595)
--- trunk/LayoutTests/platform/efl-wk1/TestExpectations 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/LayoutTests/platform/efl-wk1/TestExpectations 2012-11-23 12:55:45 UTC (rev 135595)
@@ -278,3 +278,6 @@
webkit.org/b/102517 css3/device-adapt/opera/syntax-001.xhtml [ Failure ]
webkit.org/b/102517 css3/device-adapt/opera/syntax-002.xhtml [ Failure ]
webkit.org/b/102517 css3/device-adapt/opera/syntax-003.xhtml [ Failure ]
+
+# ESC key does not cancel context menu in EFL port
+Bug(EFL) editing/selection/5354455-1.html [ Failure ]
Modified: trunk/LayoutTests/platform/efl-wk2/TestExpectations (135594 => 135595)
--- trunk/LayoutTests/platform/efl-wk2/TestExpectations 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/LayoutTests/platform/efl-wk2/TestExpectations 2012-11-23 12:55:45 UTC (rev 135595)
@@ -279,24 +279,10 @@
# Comparison of two _javascript_ objects in C++ is failing.
webkit.org/b/98739 plugins/npruntime/embed-property-equality.html [ Failure ]
-# WebKitTestRunner needs an implementation for eventSender.contextClick
-webkit.org/b/86881 editing/pasteboard/copy-standalone-image-crash.html [ Failure ]
-webkit.org/b/86881 editing/selection/5354455-1.html [ Failure ]
-webkit.org/b/86881 editing/selection/5354455-2.html [ Failure ]
-webkit.org/b/86881 editing/selection/button-right-click.html [ Failure ]
-webkit.org/b/86881 editing/selection/context-menu-on-text.html [ Failure ]
-webkit.org/b/86881 editing/selection/context-menu-text-selection.html [ Failure ]
-webkit.org/b/86881 editing/selection/empty-cell-right-click.html [ Failure ]
-webkit.org/b/86881 editing/shadow/rightclick-on-meter-in-shadow-crash.html [ Failure ]
-webkit.org/b/86881 editing/spelling/context-menu-suggestions.html [ Failure ]
-webkit.org/b/86881 fast/events/context-no-deselect.html [ Failure ]
+# EFL's EventSender contextClick should return objects that implements click() method
+webkit.org/b/98410 editing/pasteboard/copy-standalone-image-crash.html [ Failure ]
+webkit.org/b/98410 media/context-menu-actions.html [ Failure ]
webkit.org/b/86881 fast/events/context-nodrag.html [ Failure ]
-webkit.org/b/86881 fast/events/context-onmousedown-event.html [ Failure ]
-webkit.org/b/86881 fast/events/contextmenu-scrolled-page-with-frame.html [ Failure ]
-webkit.org/b/86881 fast/events/right-click-focus.html [ Failure ]
-webkit.org/b/86881 fast/events/selectstart-prevent-selection-on-right-click.html [ Failure ]
-webkit.org/b/86881 media/context-menu-actions.html [ Failure ]
-webkit.org/b/86881 media/controls-right-click-on-timebar.html [ Failure ]
webkit.org/b/102201 fast/dom/Window/window-resize.html [ Failure ]
webkit.org/b/102201 fast/dom/Window/open-window-min-size.html [ Failure ]
Modified: trunk/LayoutTests/platform/gtk-wk2/TestExpectations (135594 => 135595)
--- trunk/LayoutTests/platform/gtk-wk2/TestExpectations 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/LayoutTests/platform/gtk-wk2/TestExpectations 2012-11-23 12:55:45 UTC (rev 135595)
@@ -132,19 +132,6 @@
# WebKit2 needs textInputController.selectedRange
Bug(GTK) editing/selection/mixed-editability-10.html [ Failure ]
-# Implement eventSender.contextClick
-Bug(GTK) editing/pasteboard/copy-standalone-image-crash.html [ Failure ]
-Bug(GTK) editing/selection/empty-cell-right-click.html [ Failure ]
-Bug(GTK) editing/selection/button-right-click.html [ Failure ]
-Bug(GTK) editing/selection/context-menu-on-text.html [ Failure ]
-Bug(GTK) editing/selection/empty-cell-right-click.html [ Failure ]
-Bug(GTK) fast/events/selectstart-prevent-selection-on-right-click.html [ Failure ]
-Bug(GTK) fast/events/context-no-deselect.html [ Failure ]
-Bug(GTK) fast/events/contextmenu-scrolled-page-with-frame.html [ Failure ]
-Bug(GTK) fast/events/context-onmousedown-event.html [ Failure ]
-Bug(GTK) media/controls-right-click-on-timebar.html [ Failure ]
-Bug(GTK) svg/custom/use-events-crash.svg [ Failure ]
-
# Implement PageClientImpl::registerEditCommand and handling commands functions
Bug(GTK) editing/deleting/delete-by-word-002.html [ Failure ]
Bug(GTK) editing/deleting/delete-and-undo.html [ Failure ]
@@ -592,3 +579,25 @@
# End of Tests working in WK2 and failing in WK1
#////////////////////////////////////////////////////////////////////////////////////////
+
+# Selection doesn't work properly.
+Bug(GTK) editing/selection/context-menu-text-selection.html [ Failure Pass ]
+Bug(GTK) editing/selection/empty-cell-right-click.html [ Failure ]
+Bug(GTK) editing/spelling/context-menu-suggestions.html [ Failure ]
+
+# EventSender's contextClick should return objects that implements click() method
+webkit.org/b/98410 editing/pasteboard/copy-standalone-image-crash.html [ Failure ]
+webkit.org/b/98410 media/context-menu-actions.html [ Failure ]
+
+# An oncontextmenu attribute is not called.
+Bug(GTK) editing/spelling/spellcheck-input-search-crash.html [ Failure ]
+Bug(GTK) fast/events/contextmenu-scrolled-page-with-frame.html [ Failure ]
+
+# An onmousedown attribute is not called.
+Bug(GTK) fast/events/context-onmousedown-event.html [ Failure ]
+
+# An onselectstart attribute is not called.
+Bug(GTK) fast/events/selectstart-prevent-selection-on-right-click.html [ Failure ]
+
+# Start of media player causes timeout
+Bug(GTK) media/controls-right-click-on-timebar.html [ Failure ]
Modified: trunk/Source/WebKit2/ChangeLog (135594 => 135595)
--- trunk/Source/WebKit2/ChangeLog 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Source/WebKit2/ChangeLog 2012-11-23 12:55:45 UTC (rev 135595)
@@ -1,3 +1,25 @@
+2012-11-23 Wojciech Bielawski <[email protected]>
+
+ [WK2][WKTR] WebKitTestRunner needs eventSender.contextClick()
+ https://bugs.webkit.org/show_bug.cgi?id=86881
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ InjectedBundle API extended to retrieve contextMenu entries names.
+ WebContextMenu exteded with function to retrieve menu items.
+ This API is required by layout tests.
+ Common code in WebContextMenu.cpp moved to separate method menuItemsWithUserData().
+ Behaviour of dependend methods is unchanged.
+
+ * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
+ (WKBundlePageGetContextMenuEntriesNames):
+ * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
+ * WebProcess/WebPage/WebContextMenu.cpp:
+ (WebKit::WebContextMenu::items):
+ (WebKit):
+ * WebProcess/WebPage/WebContextMenu.h:
+ (WebContextMenu):
+
2012-11-22 Pierre Rossi <[email protected]>
[Qt] Avoid initializing PlatformStrategies twice.
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp (135594 => 135595)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp 2012-11-23 12:55:45 UTC (rev 135595)
@@ -30,13 +30,19 @@
#include "InjectedBundleBackForwardList.h"
#include "InjectedBundleNodeHandle.h"
#include "WKAPICast.h"
+#include "WKArray.h"
#include "WKBundleAPICast.h"
+#include "WKRetainPtr.h"
+#include "WKString.h"
+#include "WebContextMenu.h"
+#include "WebContextMenuItem.h"
#include "WebFrame.h"
#include "WebFullScreenManager.h"
#include "WebImage.h"
#include "WebPage.h"
#include "WebRenderLayer.h"
#include "WebRenderObject.h"
+#include "WebString.h"
#include "WebURL.h"
#include "WebURLRequest.h"
@@ -145,6 +151,22 @@
return toAPI(toImpl(pageRef)->mainWebFrame());
}
+WKArrayRef WKBundlePageCopyContextMenuItemTitles(WKBundlePageRef pageRef)
+{
+#if ENABLE(CONTEXT_MENUS)
+ WebContextMenu* contextMenu = toImpl(pageRef)->contextMenu();
+ const Vector<WebContextMenuItemData> &items = contextMenu->items();
+ size_t arrayLength = items.size();
+ OwnArrayPtr<WKTypeRef> itemNames = adoptArrayPtr(new WKTypeRef[arrayLength]);
+ for (size_t i = 0; i < arrayLength; ++i)
+ itemNames[i] = WKStringCreateWithUTF8CString(items[i].title().utf8().data());
+
+ return WKArrayCreateAdoptingValues(itemNames.get(), arrayLength);
+#else
+ return 0;
+#endif
+}
+
void* WKAccessibilityRootObject(WKBundlePageRef pageRef)
{
#if HAVE(ACCESSIBILITY)
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h (135594 => 135595)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h 2012-11-23 12:55:45 UTC (rev 135595)
@@ -77,6 +77,8 @@
WK_EXPORT void* WKAccessibilityRootObject(WKBundlePageRef);
WK_EXPORT void* WKAccessibilityFocusedObject(WKBundlePageRef);
+WK_EXPORT WKArrayRef WKBundlePageCopyContextMenuItemTitles(WKBundlePageRef);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp (135594 => 135595)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp 2012-11-23 12:55:45 UTC (rev 135595)
@@ -66,6 +66,32 @@
if (!view)
return;
+ Vector<WebContextMenuItemData> menuItems;
+ RefPtr<APIObject> userData;
+ menuItemsWithUserData(menuItems, userData);
+ WebHitTestResult::Data webHitTestResultData(controller->hitTestResult());
+
+ // Mark the WebPage has having a shown context menu then notify the UIProcess.
+ m_page->contextMenuShowing();
+ m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, menuItems, InjectedBundleUserMessageEncoder(userData.get())));
+}
+
+void WebContextMenu::itemSelected(const WebContextMenuItemData& item)
+{
+ ContextMenuItem coreItem(ActionType, static_cast<ContextMenuAction>(item.action()), item.title());
+ m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem);
+}
+
+void WebContextMenu::menuItemsWithUserData(Vector<WebContextMenuItemData> &menuItems, RefPtr<APIObject>& userData) const
+{
+ ContextMenuController* controller = m_page->corePage()->contextMenuController();
+ if (!controller)
+ return;
+
+ ContextMenu* menu = controller->contextMenu();
+ if (!menu)
+ return;
+
// Give the bundle client a chance to process the menu.
#if USE(CROSS_PLATFORM_CONTEXT_MENUS)
const Vector<ContextMenuItem>& coreItems = menu->items();
@@ -74,22 +100,18 @@
#endif
Vector<WebContextMenuItemData> proposedMenu = kitItems(coreItems, menu);
Vector<WebContextMenuItemData> newMenu;
- RefPtr<APIObject> userData;
RefPtr<InjectedBundleHitTestResult> hitTestResult = InjectedBundleHitTestResult::create(controller->hitTestResult());
if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, hitTestResult.get(), proposedMenu, newMenu, userData))
proposedMenu = newMenu;
-
- WebHitTestResult::Data webHitTestResultData(controller->hitTestResult());
-
- // Mark the WebPage has having a shown context menu then notify the UIProcess.
- m_page->contextMenuShowing();
- m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, proposedMenu, InjectedBundleUserMessageEncoder(userData.get())));
+ menuItems = proposedMenu;
}
-void WebContextMenu::itemSelected(const WebContextMenuItemData& item)
+Vector<WebContextMenuItemData> WebContextMenu::items() const
{
- ContextMenuItem coreItem(ActionType, static_cast<ContextMenuAction>(item.action()), item.title());
- m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem);
+ Vector<WebContextMenuItemData> menuItems;
+ RefPtr<APIObject> userData;
+ menuItemsWithUserData(menuItems, userData);
+ return menuItems;
}
} // namespace WebKit
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.h (135594 => 135595)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.h 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebContextMenu.h 2012-11-23 12:55:45 UTC (rev 135595)
@@ -43,10 +43,12 @@
void show();
void itemSelected(const WebContextMenuItemData&);
+ Vector<WebContextMenuItemData> items() const;
private:
WebContextMenu(WebPage*);
-
+ void menuItemsWithUserData(Vector<WebContextMenuItemData>&, RefPtr<APIObject>&) const;
+
WebPage* m_page;
};
Modified: trunk/Tools/ChangeLog (135594 => 135595)
--- trunk/Tools/ChangeLog 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Tools/ChangeLog 2012-11-23 12:55:45 UTC (rev 135595)
@@ -1,3 +1,22 @@
+2012-11-23 Wojciech Bielawski <[email protected]>
+
+ [WK2][WKTR] WebKitTestRunner needs eventSender.contextClick()
+ https://bugs.webkit.org/show_bug.cgi?id=86881
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ eventSender object extended with contextClick() method in WebKitTestRunner.
+ contextClick() method returns an array of menu items objects with field 'title' containing title of single
+ context menu entry. According to some tests menu items objects shall also support 'click()' method, but it's not
+ delivered in this patch.
+
+ * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
+ * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
+ (WTR::EventSendingController::contextClick):
+ (WTR):
+ * WebKitTestRunner/InjectedBundle/EventSendingController.h:
+ (EventSendingController):
+
2012-11-23 Simon Hausmann <[email protected]>
[Qt] Compiling against QtWebkit API requires QT_DLL to be defined
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl (135594 => 135595)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl 2012-11-23 12:55:45 UTC (rev 135595)
@@ -29,6 +29,7 @@
void mouseMoveTo(in long x, in long y);
void mouseScrollBy(in long x, in long y);
void continuousMouseScrollBy(in long x, in long y, in [Optional] boolean paged);
+ object contextClick();
void scheduleAsynchronousClick();
void leapForward(in long milliseconds);
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp (135594 => 135595)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp 2012-11-23 12:55:45 UTC (rev 135595)
@@ -319,6 +319,37 @@
WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
+JSValueRef EventSendingController::contextClick()
+{
+ WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(page);
+ JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
+#if ENABLE(CONTEXT_MENUS)
+ // Do mouse context click.
+ mouseDown(2, 0);
+ mouseUp(2, 0);
+
+ WKRetainPtr<WKArrayRef> entriesNames = adoptWK(WKBundlePageCopyContextMenuItemTitles(page));
+ JSRetainPtr<JSStringRef> jsPropertyName(Adopt, JSStringCreateWithUTF8CString("title"));
+ size_t entriesSize = WKArrayGetSize(entriesNames.get());
+ OwnArrayPtr<JSValueRef> jsValuesArray = adoptArrayPtr(new JSValueRef[entriesSize]);
+ for (size_t i = 0; i < entriesSize; ++i) {
+ ASSERT(WKGetTypeID(WKArrayGetItemAtIndex(entriesNames.get(), i)) == WKStringGetTypeID());
+
+ WKStringRef wkEntryName = static_cast<WKStringRef>(WKArrayGetItemAtIndex(entriesNames.get(), i));
+ JSObjectRef jsItemObject = JSObjectMake(context, /* JSClassRef */0, /* privData */0);
+ JSRetainPtr<JSStringRef> jsNameCopy(Adopt, WKStringCopyJSString(wkEntryName));
+ JSValueRef jsEntryName = JSValueMakeString(context, jsNameCopy.get());
+ JSObjectSetProperty(context, jsItemObject, jsPropertyName.get(), jsEntryName, kJSPropertyAttributeReadOnly, 0);
+ jsValuesArray[i] = jsItemObject;
+ }
+
+ return JSObjectMakeArray(context, entriesSize, jsValuesArray.get(), 0);
+#else
+ return JSValueMakeUndefined(context);
+#endif
+}
+
#ifdef USE_WEBPROCESS_EVENT_SIMULATION
void EventSendingController::updateClickCount(WKEventMouseButton button)
{
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h (135594 => 135595)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h 2012-11-23 12:54:53 UTC (rev 135594)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h 2012-11-23 12:55:45 UTC (rev 135595)
@@ -52,6 +52,7 @@
void mouseMoveTo(int x, int y);
void mouseScrollBy(int x, int y);
void continuousMouseScrollBy(int x, int y, bool paged);
+ JSValueRef contextClick();
void leapForward(int milliseconds);
void scheduleAsynchronousClick();