summaryrefslogtreecommitdiff
path: root/Tools/DumpRenderTree
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-15 16:08:57 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-15 16:08:57 +0200
commit5466563f4b5b6b86523e3f89bb7f77e5b5270c78 (patch)
tree8caccf7cd03a15207cde3ba282c88bf132482a91 /Tools/DumpRenderTree
parent33b26980cb24288b5a9f2590ccf32a949281bb79 (diff)
downloadqtwebkit-5466563f4b5b6b86523e3f89bb7f77e5b5270c78.tar.gz
Imported WebKit commit 0dc6cd75e1d4836eaffbb520be96fac4847cc9d2 (http://svn.webkit.org/repository/webkit/trunk@131300)
WebKit update which introduces the QtWebKitWidgets module that contains the WK1 widgets based API. (In fact it renames QtWebKit to QtWebKitWidgets while we're working on completing the entire split as part of https://bugs.webkit.org/show_bug.cgi?id=99314
Diffstat (limited to 'Tools/DumpRenderTree')
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp105
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.gypi4
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt1
-rw-r--r--Tools/DumpRenderTree/TestRunner.cpp44
-rw-r--r--Tools/DumpRenderTree/TestRunner.h4
-rw-r--r--Tools/DumpRenderTree/blackberry/EventSender.cpp5
-rw-r--r--Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp10
-rw-r--r--Tools/DumpRenderTree/chromium/DRTTestRunner.cpp6
-rw-r--r--Tools/DumpRenderTree/chromium/DRTTestRunner.h2
-rw-r--r--Tools/DumpRenderTree/chromium/DumpRenderTree.cpp5
-rw-r--r--Tools/DumpRenderTree/chromium/MockConstraints.cpp79
-rw-r--r--Tools/DumpRenderTree/chromium/MockConstraints.h49
-rw-r--r--Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp93
-rw-r--r--Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h3
-rw-r--r--Tools/DumpRenderTree/chromium/MockWebSpeechInputController.cpp2
-rw-r--r--Tools/DumpRenderTree/chromium/NotificationPresenter.cpp4
-rw-r--r--Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp42
-rw-r--r--Tools/DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp14
-rw-r--r--Tools/DumpRenderTree/chromium/TestShell.cpp7
-rw-r--r--Tools/DumpRenderTree/chromium/TestShell.h3
-rw-r--r--Tools/DumpRenderTree/chromium/TestWebPlugin.cpp82
-rw-r--r--Tools/DumpRenderTree/chromium/TestWebPlugin.h8
-rw-r--r--Tools/DumpRenderTree/chromium/WebPreferences.cpp4
-rw-r--r--Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp57
-rw-r--r--Tools/DumpRenderTree/chromium/WebUserMediaClientMock.h22
-rw-r--r--Tools/DumpRenderTree/chromium/WebViewHost.cpp16
-rw-r--r--Tools/DumpRenderTree/chromium/WebViewHost.h10
-rw-r--r--Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp24
-rw-r--r--Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h9
-rw-r--r--Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp58
-rw-r--r--Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h54
-rw-r--r--Tools/DumpRenderTree/chromium/android_fallback_fonts.xml29
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTree.cpp4
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp19
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h4
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp8
-rw-r--r--Tools/DumpRenderTree/efl/TestRunnerEfl.cpp15
-rw-r--r--Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp9
-rw-r--r--Tools/DumpRenderTree/gtk/DumpRenderTree.cpp1
-rw-r--r--Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp12
-rw-r--r--Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm2
-rw-r--r--Tools/DumpRenderTree/mac/Configurations/Base.xcconfig2
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTree.mm11
-rw-r--r--Tools/DumpRenderTree/mac/EventSendingController.mm28
-rw-r--r--Tools/DumpRenderTree/mac/MockWebNotificationProvider.h3
-rw-r--r--Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm4
-rw-r--r--Tools/DumpRenderTree/mac/TestRunnerMac.mm49
-rw-r--r--Tools/DumpRenderTree/mac/UIDelegate.mm15
-rw-r--r--Tools/DumpRenderTree/qt/DumpRenderTree.pro2
-rw-r--r--Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp8
-rwxr-xr-xTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp19
-rw-r--r--Tools/DumpRenderTree/qt/EventSenderQt.cpp33
-rw-r--r--Tools/DumpRenderTree/qt/EventSenderQt.h5
-rw-r--r--Tools/DumpRenderTree/qt/TestRunnerQt.cpp8
-rw-r--r--Tools/DumpRenderTree/qt/TestRunnerQt.h1
-rw-r--r--Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp6
-rw-r--r--Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp2
-rw-r--r--Tools/DumpRenderTree/win/TestRunnerWin.cpp23
-rw-r--r--Tools/DumpRenderTree/wx/TestRunnerWx.cpp7
59 files changed, 884 insertions, 271 deletions
diff --git a/Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp b/Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp
index 982c767fd..4145b9cc0 100644
--- a/Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp
+++ b/Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp
@@ -78,6 +78,7 @@
'target_name': 'TestRunner',
'type': 'static_library',
'dependencies': [
+ 'TestRunner_resources',
'<(source_dir)/WebKit/chromium/WebKit.gyp:webkit',
'<(source_dir)/WTF/WTF.gyp/WTF.gyp:wtf',
'<(chromium_src_dir)/webkit/support/webkit_support.gyp:webkit_support',
@@ -111,13 +112,77 @@
],
},
{
+ 'target_name': 'TestRunner_resources',
+ 'type': 'none',
+ 'dependencies': [
+ 'ImageDiff',
+ 'copy_TestNetscapePlugIn',
+ ],
+ 'conditions': [
+ ['OS=="win"', {
+ 'dependencies': [
+ 'LayoutTestHelper',
+ ],
+ 'copies': [{
+ 'destination': '<(PRODUCT_DIR)',
+ 'files': ['<(ahem_path)'],
+ }],
+ }],
+ ['OS=="mac"', {
+ 'dependencies': [
+ 'LayoutTestHelper',
+ ],
+ 'mac_bundle_resources': [
+ '<(ahem_path)',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf',
+ '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf',
+ '<(SHARED_INTERMEDIATE_DIR)/webkit/missingImage.png',
+ '<(SHARED_INTERMEDIATE_DIR)/webkit/textAreaResizeCorner.png',
+ ],
+ }],
+ ['use_x11 == 1', {
+ 'copies': [{
+ 'destination': '<(PRODUCT_DIR)',
+ 'files': [
+ '<(ahem_path)',
+ '<(tools_dir)/DumpRenderTree/chromium/fonts.conf',
+ ]
+ }],
+ }],
+ ['OS=="android"', {
+ 'dependencies!': [
+ 'ImageDiff',
+ 'copy_TestNetscapePlugIn',
+ ],
+ 'copies': [{
+ 'destination': '<(PRODUCT_DIR)',
+ 'files': [
+ '<(ahem_path)',
+ '<(tools_dir)/DumpRenderTree/chromium/android_main_fonts.xml',
+ '<(tools_dir)/DumpRenderTree/chromium/android_fallback_fonts.xml',
+ ]
+ }],
+ }],
+ ['OS=="android" and android_build_type==0', {
+ 'dependencies': [
+ 'ImageDiff#host',
+ ],
+ }],
+ ],
+ },
+ {
'target_name': 'DumpRenderTree',
'type': 'executable',
'mac_bundle': 1,
'dependencies': [
- 'ImageDiff',
'TestRunner',
- 'copy_TestNetscapePlugIn',
'<(source_dir)/WebKit/chromium/WebKit.gyp:inspector_resources',
'<(source_dir)/WebKit/chromium/WebKit.gyp:webkit',
'<(source_dir)/WTF/WTF.gyp/WTF.gyp:wtf',
@@ -126,7 +191,6 @@
'<(chromium_src_dir)/third_party/icu/icu.gyp:icuuc',
'<(chromium_src_dir)/third_party/mesa/mesa.gyp:osmesa',
'<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
- '<(chromium_src_dir)/webkit/support/webkit_support.gyp:blob',
'<(chromium_src_dir)/webkit/support/webkit_support.gyp:webkit_support',
],
'include_dirs': [
@@ -153,7 +217,6 @@
}],
['OS=="win"', {
'dependencies': [
- 'LayoutTestHelper',
'<(chromium_src_dir)/third_party/angle/src/build_angle.gyp:libEGL',
'<(chromium_src_dir)/third_party/angle/src/build_angle.gyp:libGLESv2',
],
@@ -177,10 +240,6 @@
},
}],
],
- 'copies': [{
- 'destination': '<(PRODUCT_DIR)',
- 'files': ['<(ahem_path)'],
- }],
},{ # OS!="win"
'sources/': [
['exclude', 'Win\\.cpp$'],
@@ -212,21 +271,6 @@
['OS=="mac"', {
'dependencies': [
'<(source_dir)/WebKit/chromium/WebKit.gyp:copy_mesa',
- 'LayoutTestHelper',
- ],
- 'mac_bundle_resources': [
- '<(ahem_path)',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf',
- '<(tools_dir)/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf',
- '<(SHARED_INTERMEDIATE_DIR)/webkit/missingImage.png',
- '<(SHARED_INTERMEDIATE_DIR)/webkit/textAreaResizeCorner.png',
],
},{ # OS!="mac"
'sources/': [
@@ -246,8 +290,6 @@
'copies': [{
'destination': '<(PRODUCT_DIR)',
'files': [
- '<(ahem_path)',
- '<(tools_dir)/DumpRenderTree/chromium/fonts.conf',
'<(INTERMEDIATE_DIR)/repack/DumpRenderTree.pak',
]
}],
@@ -286,17 +328,9 @@
'<(chromium_src_dir)/tools/android/forwarder/forwarder.gyp:forwarder',
'<(chromium_src_dir)/tools/android/md5sum/md5sum.gyp:md5sum',
],
- 'dependencies!': [
- 'ImageDiff',
- 'copy_TestNetscapePlugIn',
- '<(chromium_src_dir)/third_party/mesa/mesa.gyp:osmesa',
- ],
'copies': [{
'destination': '<(PRODUCT_DIR)',
'files': [
- '<(ahem_path)',
- '<(tools_dir)/DumpRenderTree/chromium/android_main_fonts.xml',
- '<(tools_dir)/DumpRenderTree/chromium/android_fallback_fonts.xml',
'<(INTERMEDIATE_DIR)/repack/DumpRenderTree.pak',
]
}],
@@ -305,11 +339,6 @@
['exclude', 'Android\\.cpp$'],
],
}],
- ['OS=="android" and android_build_type==0', {
- 'dependencies': [
- 'ImageDiff#host',
- ],
- }],
['inside_chromium_build==1 and component=="shared_library"', {
'sources': [
'<(source_dir)/WebKit/chromium/src/ChromiumCurrentTime.cpp',
diff --git a/Tools/DumpRenderTree/DumpRenderTree.gypi b/Tools/DumpRenderTree/DumpRenderTree.gypi
index 832ffc991..4562aaf73 100644
--- a/Tools/DumpRenderTree/DumpRenderTree.gypi
+++ b/Tools/DumpRenderTree/DumpRenderTree.gypi
@@ -8,6 +8,8 @@
'chromium/DumpRenderTree.cpp',
'chromium/DRTTestRunner.cpp',
'chromium/DRTTestRunner.h',
+ 'chromium/MockConstraints.cpp',
+ 'chromium/MockConstraints.h',
'chromium/MockGrammarCheck.cpp',
'chromium/MockGrammarCheck.h',
'chromium/MockSpellCheck.cpp',
@@ -56,6 +58,8 @@
'chromium/WebViewHost.h',
'chromium/WebViewHostOutputSurface.cpp',
'chromium/WebViewHostOutputSurface.h',
+ 'chromium/WebViewHostSoftwareOutputDevice.cpp',
+ 'chromium/WebViewHostSoftwareOutputDevice.h',
],
'test_runner_files': [
'DumpRenderTree.h',
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt b/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
index 59492dd79..65a7427cd 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
@@ -21,6 +21,7 @@ SET(WebKitTestNetscapePlugin_SOURCES
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/NullNPPGetValuePointer.cpp
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/PassDifferentNPPStruct.cpp
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/PluginScriptableNPObjectInvokeDefault.cpp
+ ${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/PluginScriptableObjectOverridesAllProperties.cpp
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/PrivateBrowsing.cpp
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/x11/CallInvalidateRectWithNullNPPArgument.cpp
)
diff --git a/Tools/DumpRenderTree/TestRunner.cpp b/Tools/DumpRenderTree/TestRunner.cpp
index 9f7a7c1be..fe28a2911 100644
--- a/Tools/DumpRenderTree/TestRunner.cpp
+++ b/Tools/DumpRenderTree/TestRunner.cpp
@@ -699,13 +699,6 @@ static JSValueRef computedStyleIncludingVisitedInfoCallback(JSContextRef context
return controller->computedStyleIncludingVisitedInfo(context, arguments[0]);
}
-static JSValueRef layerTreeAsTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- return JSValueMakeString(context, controller->layerTreeAsText().get());
-}
-
static JSValueRef notifyDoneCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
// Has mac & windows implementation
@@ -1087,10 +1080,40 @@ static JSValueRef setMockGeolocationPositionCallback(JSContextRef context, JSObj
if (argumentCount < 3)
return JSValueMakeUndefined(context);
+ double latitude = JSValueToNumber(context, arguments[0], 0);
+ double longitude = JSValueToNumber(context, arguments[1], 0);
+ double accuracy = JSValueToNumber(context, arguments[2], 0);
+
+ bool canProvideAltitude = false;
+ double altitude = 0.;
+ if (argumentCount > 3 && !JSValueIsUndefined(context, arguments[3])) {
+ canProvideAltitude = true;
+ altitude = JSValueToNumber(context, arguments[3], 0);
+ }
+
+ bool canProvideAltitudeAccuracy = false;
+ double altitudeAccuracy = 0.;
+ if (argumentCount > 4 && !JSValueIsUndefined(context, arguments[4])) {
+ canProvideAltitudeAccuracy = true;
+ altitudeAccuracy = JSValueToNumber(context, arguments[4], 0);
+ }
+
+ bool canProvideHeading = false;
+ double heading = 0.;
+ if (argumentCount > 5 && !JSValueIsUndefined(context, arguments[5])) {
+ canProvideHeading = true;
+ heading = JSValueToNumber(context, arguments[5], 0);
+ }
+
+ bool canProvideSpeed = false;
+ double speed = 0.;
+ if (argumentCount > 6 && !JSValueIsUndefined(context, arguments[6])) {
+ canProvideSpeed = true;
+ speed = JSValueToNumber(context, arguments[6], 0);
+ }
+
TestRunner* controller = reinterpret_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- controller->setMockGeolocationPosition(JSValueToNumber(context, arguments[0], NULL), // latitude
- JSValueToNumber(context, arguments[1], NULL), // longitude
- JSValueToNumber(context, arguments[2], NULL)); // accuracy
+ controller->setMockGeolocationPosition(latitude, longitude, accuracy, canProvideAltitude, altitude, canProvideAltitudeAccuracy, altitudeAccuracy, canProvideHeading, heading, canProvideSpeed, speed);
return JSValueMakeUndefined(context);
}
@@ -2214,7 +2237,6 @@ JSStaticFunction* TestRunner::staticFunctions()
{ "ignoreLegacyWebNotificationPermissionRequests", ignoreLegacyWebNotificationPermissionRequestsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isCommandEnabled", isCommandEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "keepWebHistory", keepWebHistoryCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "layerTreeAsText", layerTreeAsTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "numberOfPendingGeolocationPermissionRequests", numberOfPendingGeolocationPermissionRequestsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "markerTextForListItem", markerTextForListItemCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "notifyDone", notifyDoneCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
diff --git a/Tools/DumpRenderTree/TestRunner.h b/Tools/DumpRenderTree/TestRunner.h
index edd0dfda7..fa76c7642 100644
--- a/Tools/DumpRenderTree/TestRunner.h
+++ b/Tools/DumpRenderTree/TestRunner.h
@@ -100,7 +100,7 @@ public:
void setAutomaticLinkDetectionEnabled(bool flag);
void setMainFrameIsFirstResponder(bool flag);
void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
- void setMockGeolocationPosition(double latitude, double longitude, double accuracy);
+ void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
void setMockGeolocationPositionUnavailableError(JSStringRef message);
void addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language);
void setMockSpeechInputDumpRect(bool flag);
@@ -336,8 +336,6 @@ public:
// Simulate a request an embedding application could make, populating per-session credential storage.
void authenticateSession(JSStringRef url, JSStringRef username, JSStringRef password);
- JSRetainPtr<JSStringRef> layerTreeAsText() const;
-
JSRetainPtr<JSStringRef> markerTextForListItem(JSContextRef, JSValueRef nodeObject) const;
JSValueRef originsWithLocalStorage(JSContextRef);
diff --git a/Tools/DumpRenderTree/blackberry/EventSender.cpp b/Tools/DumpRenderTree/blackberry/EventSender.cpp
index 5c30ea408..ab7f808f8 100644
--- a/Tools/DumpRenderTree/blackberry/EventSender.cpp
+++ b/Tools/DumpRenderTree/blackberry/EventSender.cpp
@@ -151,6 +151,7 @@ static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JS
static const JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
bool needsAltKeyModifier = false;
+ bool needsCtrlKeyModifier = false;
if (argumentCount > 1) {
if (JSObjectRef modifiersArray = JSValueToObject(context, arguments[1], 0)) {
int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty, 0), 0);
@@ -160,6 +161,8 @@ static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JS
needsShiftKeyModifier = true;
else if (JSStringIsEqualToUTF8CString(string, "altKey"))
needsAltKeyModifier = true;
+ else if (JSStringIsEqualToUTF8CString(string, "ctrlKey"))
+ needsCtrlKeyModifier = true;
JSStringRelease(string);
}
}
@@ -172,6 +175,8 @@ static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JS
modifiers |= KEYMOD_SHIFT;
if (needsAltKeyModifier)
modifiers |= KEYMOD_ALT;
+ if (needsCtrlKeyModifier)
+ modifiers |= KEYMOD_CTRL;
page->keyEvent(BlackBerry::Platform::KeyboardEvent(charCode, BlackBerry::Platform::KeyboardEvent::KeyChar, modifiers));
diff --git a/Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp b/Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp
index 62be5fe18..c9d013775 100644
--- a/Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp
+++ b/Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp
@@ -437,6 +437,8 @@ void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
DumpRenderTreeSupport::setLinksIncludedInFocusChain(valueStr == "true" || valueStr == "1");
else if (keyStr == "WebKitHyperlinkAuditingEnabled")
mainFrame->page()->settings()->setHyperlinkAuditingEnabled(valueStr == "true" || valueStr == "1");
+ else if (keyStr == "WebSocketsEnabled")
+ BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setWebSocketsEnabled(valueStr == "true" || valueStr == "1");
}
void TestRunner::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
@@ -585,12 +587,6 @@ JSValueRef TestRunner::computedStyleIncludingVisitedInfo(JSContextRef context, J
return DumpRenderTreeSupport::computedStyleIncludingVisitedInfo(context, value);
}
-JSRetainPtr<JSStringRef> TestRunner::layerTreeAsText() const
-{
- notImplemented();
- return 0;
-}
-
JSRetainPtr<JSStringRef> TestRunner::markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const
{
WebCore::Element* element = toElement(toJS(toJS(context), nodeObject));
@@ -623,7 +619,7 @@ void TestRunner::setApplicationCacheOriginQuota(unsigned long long quota)
void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
{
- notImplemented();
+ DumpRenderTreeSupport::setMockDeviceOrientation(BlackBerry::WebKit::DumpRenderTree::currentInstance()->page(), canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma);
}
void TestRunner::addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language)
diff --git a/Tools/DumpRenderTree/chromium/DRTTestRunner.cpp b/Tools/DumpRenderTree/chromium/DRTTestRunner.cpp
index f4f3aed22..8aee7c5b2 100644
--- a/Tools/DumpRenderTree/chromium/DRTTestRunner.cpp
+++ b/Tools/DumpRenderTree/chromium/DRTTestRunner.cpp
@@ -166,7 +166,6 @@ DRTTestRunner::DRTTestRunner(TestShell* shell)
bindMethod("findString", &DRTTestRunner::findString);
bindMethod("isCommandEnabled", &DRTTestRunner::isCommandEnabled);
bindMethod("hasCustomPageSizeStyle", &DRTTestRunner::hasCustomPageSizeStyle);
- bindMethod("layerTreeAsText", &DRTTestRunner::layerTreeAsText);
bindMethod("loseCompositorContext", &DRTTestRunner::loseCompositorContext);
bindMethod("markerTextForListItem", &DRTTestRunner::markerTextForListItem);
bindMethod("notifyDone", &DRTTestRunner::notifyDone);
@@ -1904,11 +1903,6 @@ void DRTTestRunner::startSpeechInput(const CppArgumentList& arguments, CppVarian
input->startSpeechInput();
}
-void DRTTestRunner::layerTreeAsText(const CppArgumentList& args, CppVariant* result)
-{
- result->set(m_shell->webView()->mainFrame()->layerTreeAsText(m_showDebugLayerTree).utf8());
-}
-
void DRTTestRunner::loseCompositorContext(const CppArgumentList& args, CppVariant*)
{
int numTimes;
diff --git a/Tools/DumpRenderTree/chromium/DRTTestRunner.h b/Tools/DumpRenderTree/chromium/DRTTestRunner.h
index 55940acd1..3041b86a7 100644
--- a/Tools/DumpRenderTree/chromium/DRTTestRunner.h
+++ b/Tools/DumpRenderTree/chromium/DRTTestRunner.h
@@ -355,8 +355,6 @@ public:
#endif
void startSpeechInput(const CppArgumentList&, CppVariant*);
- void layerTreeAsText(const CppArgumentList& args, CppVariant* result);
-
void loseCompositorContext(const CppArgumentList& args, CppVariant* result);
void markerTextForListItem(const CppArgumentList&, CppVariant*);
diff --git a/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp b/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp
index 0949aa7a6..30ce28851 100644
--- a/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp
+++ b/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp
@@ -55,6 +55,7 @@ static const char optionStartupDialog[] = "--testshell-startup-dialog";
static const char optionCheckLayoutTestSystemDeps[] = "--check-layout-test-sys-deps";
static const char optionHardwareAcceleratedGL[] = "--enable-hardware-gpu";
+static const char optionEnableSoftwareCompositing[] = "--enable-software-compositing";
static const char optionEnableThreadedCompositing[] = "--enable-threaded-compositing";
static const char optionForceCompositingMode[] = "--force-compositing-mode";
static const char optionEnableAccelerated2DCanvas[] = "--enable-accelerated-2d-canvas";
@@ -125,6 +126,7 @@ int main(int argc, char* argv[])
bool allowExternalPages = false;
bool startupDialog = false;
bool acceleratedCompositingForVideoEnabled = false;
+ bool softwareCompositingEnabled = false;
bool threadedCompositingEnabled = false;
bool forceCompositingMode = false;
bool accelerated2DCanvasEnabled = false;
@@ -159,6 +161,8 @@ int main(int argc, char* argv[])
hardwareAcceleratedGL = true;
else if (argument == optionEnableAcceleratedCompositingForVideo)
acceleratedCompositingForVideoEnabled = true;
+ else if (argument == optionEnableSoftwareCompositing)
+ softwareCompositingEnabled = true;
else if (argument == optionEnableThreadedCompositing)
threadedCompositingEnabled = true;
else if (argument == optionForceCompositingMode)
@@ -211,6 +215,7 @@ int main(int argc, char* argv[])
TestShell shell;
shell.setAllowExternalPages(allowExternalPages);
shell.setAcceleratedCompositingForVideoEnabled(acceleratedCompositingForVideoEnabled);
+ shell.setSoftwareCompositingEnabled(softwareCompositingEnabled);
shell.setThreadedCompositingEnabled(threadedCompositingEnabled);
shell.setForceCompositingMode(forceCompositingMode);
shell.setAccelerated2dCanvasEnabled(accelerated2DCanvasEnabled);
diff --git a/Tools/DumpRenderTree/chromium/MockConstraints.cpp b/Tools/DumpRenderTree/chromium/MockConstraints.cpp
new file mode 100644
index 000000000..a4f15842e
--- /dev/null
+++ b/Tools/DumpRenderTree/chromium/MockConstraints.cpp
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#if ENABLE(MEDIA_STREAM)
+
+#include "MockConstraints.h"
+
+#include <public/WebMediaConstraints.h>
+
+using namespace WebKit;
+
+namespace MockConstraints {
+
+static bool isSupported(const WebString& constraint)
+{
+ return constraint == "valid_and_supported_1" || constraint == "valid_and_supported_2";
+}
+
+static bool isValid(const WebString& constraint)
+{
+ return isSupported(constraint) || constraint == "valid_but_unsupported_1" || constraint == "valid_but_unsupported_2";
+}
+
+bool verifyConstraints(const WebMediaConstraints& constraints)
+{
+ WebVector<WebMediaConstraint> mandatoryConstraints;
+ constraints.getMandatoryConstraints(mandatoryConstraints);
+ if (mandatoryConstraints.size()) {
+ for (size_t i = 0; i < mandatoryConstraints.size(); ++i) {
+ const WebMediaConstraint& curr = mandatoryConstraints[i];
+ if (!isSupported(curr.m_name) || curr.m_value != "1")
+ return false;
+ }
+ }
+
+ WebVector<WebMediaConstraint> optionalConstraints;
+ constraints.getOptionalConstraints(optionalConstraints);
+ if (optionalConstraints.size()) {
+ for (size_t i = 0; i < optionalConstraints.size(); ++i) {
+ const WebMediaConstraint& curr = optionalConstraints[i];
+ if (!isValid(curr.m_name) || curr.m_value != "0")
+ return false;
+ }
+ }
+
+ return true;
+}
+
+} // namespace MockConstraints
+
+#endif // ENABLE(MEDIA_STREAM)
diff --git a/Tools/DumpRenderTree/chromium/MockConstraints.h b/Tools/DumpRenderTree/chromium/MockConstraints.h
new file mode 100644
index 000000000..6bf0da9b1
--- /dev/null
+++ b/Tools/DumpRenderTree/chromium/MockConstraints.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MockConstraints_h
+#define MockConstraints_h
+
+#if ENABLE(MEDIA_STREAM)
+
+namespace WebKit {
+class WebMediaConstraints;
+}
+
+namespace MockConstraints {
+
+bool verifyConstraints(const WebKit::WebMediaConstraints&);
+
+} // namespace MockConstraints
+
+#endif // ENABLE(MEDIA_STREAM)
+
+#endif // MockConstraints_h
+
diff --git a/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp b/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp
index b2d50feb3..09f5c5d5e 100644
--- a/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp
+++ b/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp
@@ -33,19 +33,23 @@
#include "MockWebRTCPeerConnectionHandler.h"
+#include "MockConstraints.h"
#include <public/WebMediaConstraints.h>
#include <public/WebRTCPeerConnectionHandlerClient.h>
#include <public/WebRTCSessionDescription.h>
#include <public/WebRTCSessionDescriptionRequest.h>
+#include <public/WebRTCStatsRequest.h>
+#include <public/WebRTCStatsResponse.h>
#include <public/WebRTCVoidRequest.h>
#include <public/WebString.h>
#include <public/WebVector.h>
+#include <wtf/DateMath.h>
using namespace WebKit;
class RTCSessionDescriptionRequestSuccededTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
public:
- RTCSessionDescriptionRequestSuccededTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCSessionDescriptionRequest& request, const WebKit::WebRTCSessionDescription& result)
+ RTCSessionDescriptionRequestSuccededTask(MockWebRTCPeerConnectionHandler* object, const WebRTCSessionDescriptionRequest& request, const WebRTCSessionDescription& result)
: MethodTask<MockWebRTCPeerConnectionHandler>(object)
, m_request(request)
, m_result(result)
@@ -58,13 +62,13 @@ public:
}
private:
- WebKit::WebRTCSessionDescriptionRequest m_request;
- WebKit::WebRTCSessionDescription m_result;
+ WebRTCSessionDescriptionRequest m_request;
+ WebRTCSessionDescription m_result;
};
class RTCSessionDescriptionRequestFailedTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
public:
- RTCSessionDescriptionRequestFailedTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCSessionDescriptionRequest& request)
+ RTCSessionDescriptionRequestFailedTask(MockWebRTCPeerConnectionHandler* object, const WebRTCSessionDescriptionRequest& request)
: MethodTask<MockWebRTCPeerConnectionHandler>(object)
, m_request(request)
{
@@ -76,12 +80,31 @@ public:
}
private:
- WebKit::WebRTCSessionDescriptionRequest m_request;
+ WebRTCSessionDescriptionRequest m_request;
+};
+
+class RTCStatsRequestSucceededTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
+public:
+ RTCStatsRequestSucceededTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCStatsRequest& request, const WebKit::WebRTCStatsResponse& response)
+ : MethodTask<MockWebRTCPeerConnectionHandler>(object)
+ , m_request(request)
+ , m_response(response)
+ {
+ }
+
+ virtual void runIfValid() OVERRIDE
+ {
+ m_request.requestSucceeded(m_response);
+ }
+
+private:
+ WebKit::WebRTCStatsRequest m_request;
+ WebKit::WebRTCStatsResponse m_response;
};
class RTCVoidRequestTask : public MethodTask<MockWebRTCPeerConnectionHandler> {
public:
- RTCVoidRequestTask(MockWebRTCPeerConnectionHandler* object, const WebKit::WebRTCVoidRequest& request, bool succeeded)
+ RTCVoidRequestTask(MockWebRTCPeerConnectionHandler* object, const WebRTCVoidRequest& request, bool succeeded)
: MethodTask<MockWebRTCPeerConnectionHandler>(object)
, m_request(request)
, m_succeeded(succeeded)
@@ -97,7 +120,7 @@ public:
}
private:
- WebKit::WebRTCVoidRequest m_request;
+ WebRTCVoidRequest m_request;
bool m_succeeded;
};
@@ -105,48 +128,13 @@ private:
MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler(WebRTCPeerConnectionHandlerClient* client)
: m_client(client)
+ , m_streamCount(0)
{
}
-static bool isSupportedConstraint(const WebString& constraint)
-{
- return constraint == "valid_and_supported_1" || constraint == "valid_and_supported_2";
-}
-
-static bool isValidConstraint(const WebString& constraint)
-{
- return isSupportedConstraint(constraint) || constraint == "valid_but_unsupported_1" || constraint == "valid_but_unsupported_2";
-}
-
bool MockWebRTCPeerConnectionHandler::initialize(const WebRTCConfiguration&, const WebMediaConstraints& constraints)
{
- WebVector<WebString> mandatoryConstraintNames;
- constraints.getMandatoryConstraintNames(mandatoryConstraintNames);
- if (mandatoryConstraintNames.size()) {
- for (size_t i = 0; i < mandatoryConstraintNames.size(); ++i) {
- if (!isSupportedConstraint(mandatoryConstraintNames[i]))
- return false;
- WebString value;
- constraints.getMandatoryConstraintValue(mandatoryConstraintNames[i], value);
- if (value != "1")
- return false;
- }
- }
-
- WebVector<WebString> optionalConstraintNames;
- constraints.getOptionalConstraintNames(optionalConstraintNames);
- if (optionalConstraintNames.size()) {
- for (size_t i = 0; i < optionalConstraintNames.size(); ++i) {
- if (!isValidConstraint(optionalConstraintNames[i]))
- return false;
- WebString value;
- constraints.getOptionalConstraintValue(optionalConstraintNames[i], value);
- if (value != "0")
- return false;
- }
- }
-
- return true;
+ return MockConstraints::verifyConstraints(constraints);
}
void MockWebRTCPeerConnectionHandler::createOffer(const WebRTCSessionDescriptionRequest& request, const WebMediaConstraints& constraints)
@@ -212,6 +200,7 @@ bool MockWebRTCPeerConnectionHandler::addICECandidate(const WebRTCICECandidate&
bool MockWebRTCPeerConnectionHandler::addStream(const WebMediaStreamDescriptor& stream, const WebMediaConstraints&)
{
+ m_streamCount += 1;
m_client->didAddRemoteStream(stream);
m_client->negotiationNeeded();
return true;
@@ -219,10 +208,26 @@ bool MockWebRTCPeerConnectionHandler::addStream(const WebMediaStreamDescriptor&
void MockWebRTCPeerConnectionHandler::removeStream(const WebMediaStreamDescriptor& stream)
{
+ m_streamCount -= 1;
m_client->didRemoveRemoteStream(stream);
m_client->negotiationNeeded();
}
+void MockWebRTCPeerConnectionHandler::getStats(const WebRTCStatsRequest& request)
+{
+ WebRTCStatsResponse response = request.createResponse();
+ double currentDate = WTF::jsCurrentTime();
+ for (int i = 0; i < m_streamCount; ++i) {
+ size_t reportIndex = response.addReport();
+ response.addElement(reportIndex, true, currentDate);
+ response.addStatistic(reportIndex, true, "type", "audio");
+ reportIndex = response.addReport();
+ response.addElement(reportIndex, true, currentDate);
+ response.addStatistic(reportIndex, true, "type", "video");
+ }
+ postTask(new RTCStatsRequestSucceededTask(this, request, response));
+}
+
void MockWebRTCPeerConnectionHandler::stop()
{
}
diff --git a/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h b/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h
index 2bf139afa..43d087e35 100644
--- a/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h
+++ b/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h
@@ -37,6 +37,7 @@
#include <public/WebRTCPeerConnectionHandler.h>
#include <public/WebRTCSessionDescription.h>
#include <public/WebRTCSessionDescriptionRequest.h>
+#include <public/WebRTCStatsRequest.h>
namespace WebKit {
class WebRTCPeerConnectionHandlerClient;
@@ -58,6 +59,7 @@ public:
virtual bool addICECandidate(const WebKit::WebRTCICECandidate&) OVERRIDE;
virtual bool addStream(const WebKit::WebMediaStreamDescriptor&, const WebKit::WebMediaConstraints&) OVERRIDE;
virtual void removeStream(const WebKit::WebMediaStreamDescriptor&) OVERRIDE;
+ virtual void getStats(const WebKit::WebRTCStatsRequest&) OVERRIDE;
virtual void stop() OVERRIDE;
// Task related methods
@@ -70,6 +72,7 @@ private:
TaskList m_taskList;
WebKit::WebRTCSessionDescription m_localDescription;
WebKit::WebRTCSessionDescription m_remoteDescription;
+ int m_streamCount;
};
#endif // ENABLE(MEDIA_STREAM)
diff --git a/Tools/DumpRenderTree/chromium/MockWebSpeechInputController.cpp b/Tools/DumpRenderTree/chromium/MockWebSpeechInputController.cpp
index 716222f9a..13c8ff1ec 100644
--- a/Tools/DumpRenderTree/chromium/MockWebSpeechInputController.cpp
+++ b/Tools/DumpRenderTree/chromium/MockWebSpeechInputController.cpp
@@ -52,7 +52,7 @@ void MockWebSpeechInputController::addMockRecognitionResult(const WebString& res
String langString = String::fromUTF8(language.utf8().data());
if (!m_recognitionResults.contains(langString))
m_recognitionResults.set(langString, Vector<WebSpeechInputResult>());
- m_recognitionResults.find(langString)->second.append(res);
+ m_recognitionResults.find(langString)->value.append(res);
}
}
diff --git a/Tools/DumpRenderTree/chromium/NotificationPresenter.cpp b/Tools/DumpRenderTree/chromium/NotificationPresenter.cpp
index 0c5400f5e..a21588f74 100644
--- a/Tools/DumpRenderTree/chromium/NotificationPresenter.cpp
+++ b/Tools/DumpRenderTree/chromium/NotificationPresenter.cpp
@@ -75,7 +75,7 @@ bool NotificationPresenter::simulateClick(const WebString& title)
if (m_activeNotifications.find(id) == m_activeNotifications.end())
return false;
- const WebNotification& notification = m_activeNotifications.find(id)->second;
+ const WebNotification& notification = m_activeNotifications.find(id)->value;
WebNotification eventTarget(notification);
eventTarget.dispatchClickEvent();
return true;
@@ -89,7 +89,7 @@ bool NotificationPresenter::show(const WebNotification& notification)
WTF::String replaceId(notification.replaceId().data(), notification.replaceId().length());
if (m_replacements.find(replaceId) != m_replacements.end())
printf("REPLACING NOTIFICATION %s\n",
- m_replacements.find(replaceId)->second.utf8().data());
+ m_replacements.find(replaceId)->value.utf8().data());
m_replacements.set(replaceId, WTF::String(identifier.data(), identifier.length()));
}
diff --git a/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp b/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp
index b795aeb83..d60822be8 100644
--- a/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp
+++ b/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp
@@ -221,8 +221,48 @@ static string roleToString(WebAccessibilityRole role)
return result.append("HorizontalRule");
case WebAccessibilityRoleLegend:
return result.append("Legend");
+ case WebAccessibilityRoleApplicationAlert:
+ return result.append("Alert");
+ case WebAccessibilityRoleApplicationAlertDialog:
+ return result.append("AlertDialog");
+ case WebAccessibilityRoleApplicationDialog:
+ return result.append("ApplicationDialog");
+ case WebAccessibilityRoleDirectory:
+ return result.append("Directory");
+ case WebAccessibilityRoleDocumentMath:
+ return result.append("Math");
+ case WebAccessibilityRoleEditableText:
+ return result.append("EditableText");
+ case WebAccessibilityRoleFooter:
+ return result.append("Footer");
+ case WebAccessibilityRoleIgnored:
+ return result.append("Ignored");
+ case WebAccessibilityRoleListItem:
+ return result.append("ListItem");
+ case WebAccessibilityRoleMenuListPopup:
+ return result.append("MenuListPopup");
+ case WebAccessibilityRoleMenuListOption:
+ return result.append("MenuListOption");
+ case WebAccessibilityRolePresentational:
+ return result.append("Presentational");
+ case WebAccessibilityRoleSpinButton:
+ return result.append("SpinButton");
+ case WebAccessibilityRoleSpinButtonPart:
+ return result.append("SpinButtonPart");
+ case WebAccessibilityRoleTabList:
+ return result.append("TabList");
+ case WebAccessibilityRoleTabPanel:
+ return result.append("TabPanel");
+ case WebAccessibilityRoleTab:
+ return result.append("Tab");
+ case WebAccessibilityRoleTreeRole:
+ return result.append("Tree");
+ case WebAccessibilityRoleTreeGrid:
+ return result.append("TreeGrid");
+ case WebAccessibilityRoleTreeItemRole:
+ return result.append("TreeItem");
+ case WebAccessibilityRoleUnknown:
default:
- // Also matches WebAccessibilityRoleUnknown.
return result.append("Unknown");
}
}
diff --git a/Tools/DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp b/Tools/DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp
index 9b4a3b646..1b29d2b0f 100644
--- a/Tools/DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp
+++ b/Tools/DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp
@@ -203,10 +203,10 @@ bool CppNPObject::setProperty(NPObject* npObj, NPIdentifier ident, const NPVaria
CppBoundClass::~CppBoundClass()
{
for (MethodList::iterator i = m_methods.begin(); i != m_methods.end(); ++i)
- delete i->second;
+ delete i->value;
for (PropertyList::iterator i = m_properties.begin(); i != m_properties.end(); ++i)
- delete i->second;
+ delete i->value;
// Unregister ourselves if we were bound to a frame.
if (m_boundToFrame)
@@ -237,7 +237,7 @@ bool CppBoundClass::invoke(NPIdentifier ident,
}
callback = m_fallbackCallback.get();
} else
- callback = (*method).second;
+ callback = (*method).value;
// Build a CppArgumentList argument vector from the NPVariants coming in.
CppArgumentList cppArguments(argumentCount);
@@ -260,7 +260,7 @@ bool CppBoundClass::getProperty(NPIdentifier ident, NPVariant* result) const
}
CppVariant cppValue;
- if (!callback->second->getValue(&cppValue))
+ if (!callback->value->getValue(&cppValue))
return false;
cppValue.copyToNPVariant(result);
return true;
@@ -274,7 +274,7 @@ bool CppBoundClass::setProperty(NPIdentifier ident, const NPVariant* value)
CppVariant cppValue;
cppValue.set(*value);
- return (*callback).second->setValue(cppValue);
+ return (*callback).value->setValue(cppValue);
}
void CppBoundClass::bindCallback(const string& name, Callback* callback)
@@ -282,7 +282,7 @@ void CppBoundClass::bindCallback(const string& name, Callback* callback)
NPIdentifier ident = WebBindings::getStringIdentifier(name.c_str());
MethodList::iterator oldCallback = m_methods.find(ident);
if (oldCallback != m_methods.end()) {
- delete oldCallback->second;
+ delete oldCallback->value;
if (!callback) {
m_methods.remove(oldCallback);
return;
@@ -309,7 +309,7 @@ void CppBoundClass::bindProperty(const string& name, PropertyCallback* callback)
NPIdentifier ident = WebBindings::getStringIdentifier(name.c_str());
PropertyList::iterator oldCallback = m_properties.find(ident);
if (oldCallback != m_properties.end()) {
- delete oldCallback->second;
+ delete oldCallback->value;
if (!callback) {
m_properties.remove(oldCallback);
return;
diff --git a/Tools/DumpRenderTree/chromium/TestShell.cpp b/Tools/DumpRenderTree/chromium/TestShell.cpp
index e5e9ded6a..32585faa1 100644
--- a/Tools/DumpRenderTree/chromium/TestShell.cpp
+++ b/Tools/DumpRenderTree/chromium/TestShell.cpp
@@ -108,6 +108,7 @@ TestShell::TestShell()
, m_dumpPixelsForCurrentTest(false)
, m_allowExternalPages(false)
, m_acceleratedCompositingForVideoEnabled(false)
+ , m_softwareCompositingEnabled(false)
, m_threadedCompositingEnabled(false)
, m_forceCompositingMode(false)
, m_accelerated2dCanvasEnabled(false)
@@ -399,7 +400,7 @@ static string dumpFramesAsText(WebFrame* frame, bool recursive)
// Add header for all but the main frame. Skip empty frames.
if (frame->parent() && !frame->document().documentElement().isNull()) {
result.append("\n--------\nFrame: '");
- result.append(frame->name().utf8().data());
+ result.append(frame->uniqueName().utf8().data());
result.append("'\n--------\n");
}
@@ -425,7 +426,7 @@ static string dumpFramesAsPrintedText(WebFrame* frame, bool recursive)
// Add header for all but the main frame. Skip empty frames.
if (frame->parent() && !frame->document().documentElement().isNull()) {
result.append("\n--------\nFrame: '");
- result.append(frame->name().utf8().data());
+ result.append(frame->uniqueName().utf8().data());
result.append("'\n--------\n");
}
@@ -445,7 +446,7 @@ static void dumpFrameScrollPosition(WebFrame* frame, bool recursive)
WebSize offset = frame->scrollOffset();
if (offset.width > 0 || offset.height > 0) {
if (frame->parent())
- printf("frame '%s' ", frame->name().utf8().data());
+ printf("frame '%s' ", frame->uniqueName().utf8().data());
printf("scrolled to %d,%d\n", offset.width, offset.height);
}
diff --git a/Tools/DumpRenderTree/chromium/TestShell.h b/Tools/DumpRenderTree/chromium/TestShell.h
index 405034a4e..44b5ae388 100644
--- a/Tools/DumpRenderTree/chromium/TestShell.h
+++ b/Tools/DumpRenderTree/chromium/TestShell.h
@@ -130,6 +130,8 @@ public:
void setAllowExternalPages(bool allowExternalPages) { m_allowExternalPages = allowExternalPages; }
void setAcceleratedCompositingForVideoEnabled(bool enabled) { m_acceleratedCompositingForVideoEnabled = enabled; }
+ bool softwareCompositingEnabled() { return m_softwareCompositingEnabled; }
+ void setSoftwareCompositingEnabled(bool enabled) { m_softwareCompositingEnabled = enabled; }
void setThreadedCompositingEnabled(bool enabled) { m_threadedCompositingEnabled = enabled; }
void setForceCompositingMode(bool enabled) { m_forceCompositingMode = enabled; }
void setAccelerated2dCanvasEnabled(bool enabled) { m_accelerated2dCanvasEnabled = enabled; }
@@ -226,6 +228,7 @@ private:
int m_timeout; // timeout value in millisecond
bool m_allowExternalPages;
bool m_acceleratedCompositingForVideoEnabled;
+ bool m_softwareCompositingEnabled;
bool m_threadedCompositingEnabled;
bool m_forceCompositingMode;
bool m_accelerated2dCanvasEnabled;
diff --git a/Tools/DumpRenderTree/chromium/TestWebPlugin.cpp b/Tools/DumpRenderTree/chromium/TestWebPlugin.cpp
index c78c9ed12..c54ebedea 100644
--- a/Tools/DumpRenderTree/chromium/TestWebPlugin.cpp
+++ b/Tools/DumpRenderTree/chromium/TestWebPlugin.cpp
@@ -33,6 +33,7 @@
#include "platform/WebKitPlatformSupport.h"
#include "WebPluginContainer.h"
#include "WebPluginParams.h"
+#include "WebTouchPoint.h"
#include <wtf/Assertions.h>
#include <wtf/text/CString.h>
@@ -76,16 +77,61 @@ static void premultiplyAlpha(const unsigned colorIn[3], float alpha, float color
colorOut[3] = alpha;
}
+static const char* pointState(WebKit::WebTouchPoint::State state)
+{
+ switch (state) {
+ case WebKit::WebTouchPoint::StateReleased:
+ return "Released";
+ case WebKit::WebTouchPoint::StatePressed:
+ return "Pressed";
+ case WebKit::WebTouchPoint::StateMoved:
+ return "Moved";
+ case WebKit::WebTouchPoint::StateCancelled:
+ return "Cancelled";
+ default:
+ return "Unknown";
+ }
+
+ ASSERT_NOT_REACHED();
+ return 0;
+}
+
+static void printTouchList(const WebKit::WebTouchPoint* points, int length)
+{
+ for (int i = 0; i < length; ++i)
+ printf("* %d, %d: %s\n", points[i].position.x, points[i].position.y, pointState(points[i].state));
+}
+
+static void printEventDetails(const WebKit::WebInputEvent& event)
+{
+ if (WebKit::WebInputEvent::isTouchEventType(event.type)) {
+ const WebKit::WebTouchEvent& touch = static_cast<const WebKit::WebTouchEvent&>(event);
+ printTouchList(touch.touches, touch.touchesLength);
+ printTouchList(touch.changedTouches, touch.changedTouchesLength);
+ printTouchList(touch.targetTouches, touch.targetTouchesLength);
+ } else if (WebKit::WebInputEvent::isMouseEventType(event.type) || event.type == WebKit::WebInputEvent::MouseWheel) {
+ const WebKit::WebMouseEvent& mouse = static_cast<const WebKit::WebMouseEvent&>(event);
+ printf("* %d, %d\n", mouse.x, mouse.y);
+ } else if (WebKit::WebInputEvent::isGestureEventType(event.type)) {
+ const WebKit::WebGestureEvent& gesture = static_cast<const WebKit::WebGestureEvent&>(event);
+ printf("* %d, %d\n", gesture.x, gesture.y);
+ }
+}
+
TestWebPlugin::TestWebPlugin(WebKit::WebFrame* frame,
const WebKit::WebPluginParams& params)
: m_frame(frame)
, m_container(0)
, m_context(0)
+ , m_acceptsTouchEvent(false)
+ , m_printEventDetails(false)
{
static const WebString kAttributePrimitive = WebString::fromUTF8("primitive");
static const WebString kAttributeBackgroundColor = WebString::fromUTF8("background-color");
static const WebString kAttributePrimitiveColor = WebString::fromUTF8("primitive-color");
static const WebString kAttributeOpacity = WebString::fromUTF8("opacity");
+ static const WebString kAttributeAcceptsTouch = WebString::fromUTF8("accepts-touch");
+ static const WebString kAttributePrintEventDetails = WebString::fromUTF8("print-event-details");
ASSERT(params.attributeNames.size() == params.attributeValues.size());
size_t size = params.attributeNames.size();
@@ -101,6 +147,10 @@ TestWebPlugin::TestWebPlugin(WebKit::WebFrame* frame,
parseColor(attributeValue, m_scene.primitiveColor);
else if (attributeName == kAttributeOpacity)
m_scene.opacity = parseOpacity(attributeValue);
+ else if (attributeName == kAttributeAcceptsTouch)
+ m_acceptsTouchEvent = parseBoolean(attributeValue);
+ else if (attributeName == kAttributePrintEventDetails)
+ m_printEventDetails = parseBoolean(attributeValue);
}
}
@@ -129,6 +179,7 @@ bool TestWebPlugin::initialize(WebPluginContainer* container)
m_container = container;
m_container->setBackingTextureId(m_colorTexture);
+ m_container->setIsAcceptingTouchEvents(m_acceptsTouchEvent);
return true;
}
@@ -208,6 +259,12 @@ float TestWebPlugin::parseOpacity(const WebString& string)
return static_cast<float>(atof(string.utf8().data()));
}
+bool TestWebPlugin::parseBoolean(const WebString& string)
+{
+ static const WebString kPrimitiveTrue = WebString::fromUTF8("true");
+ return string == kPrimitiveTrue;
+}
+
bool TestWebPlugin::initScene()
{
float color[4];
@@ -407,6 +464,31 @@ bool TestWebPlugin::handleInputEvent(const WebKit::WebInputEvent& event, WebKit:
}
printf("Plugin received event: %s\n", eventName ? eventName : "unknown");
+ if (m_printEventDetails)
+ printEventDetails(event);
+ return false;
+}
+
+bool TestWebPlugin::handleDragStatusUpdate(WebKit::WebDragStatus dragStatus, const WebKit::WebDragData&, WebKit::WebDragOperationsMask, const WebKit::WebPoint& position, const WebKit::WebPoint& screenPosition)
+{
+ const char* dragStatusName = 0;
+ switch (dragStatus) {
+ case WebKit::WebDragStatusEnter:
+ dragStatusName = "DragEnter";
+ break;
+ case WebKit::WebDragStatusOver:
+ dragStatusName = "DragOver";
+ break;
+ case WebKit::WebDragStatusLeave:
+ dragStatusName = "DragLeave";
+ break;
+ case WebKit::WebDragStatusDrop:
+ dragStatusName = "DragDrop";
+ break;
+ case WebKit::WebDragStatusUnknown:
+ ASSERT_NOT_REACHED();
+ }
+ printf("Plugin received event: %s\n", dragStatusName);
return false;
}
diff --git a/Tools/DumpRenderTree/chromium/TestWebPlugin.h b/Tools/DumpRenderTree/chromium/TestWebPlugin.h
index 025b11095..aa6533e32 100644
--- a/Tools/DumpRenderTree/chromium/TestWebPlugin.h
+++ b/Tools/DumpRenderTree/chromium/TestWebPlugin.h
@@ -42,6 +42,9 @@ class WebGraphicsContext3D;
// background-color: black (default), red, green, blue.
// primitive-color: black (default), red, green, blue.
// opacity: [0.0 - 1.0]. Default is 1.0.
+//
+// Whether the plugin accepts touch events or not can be customized using the
+// 'accepts-touch' plugin parameter (defaults to false).
class TestWebPlugin : public WebKit::WebPlugin {
public:
TestWebPlugin(WebKit::WebFrame*, const WebKit::WebPluginParams&);
@@ -62,6 +65,7 @@ public:
virtual void updateVisibility(bool) { }
virtual bool acceptsInputEvents() { return true; }
virtual bool handleInputEvent(const WebKit::WebInputEvent&, WebKit::WebCursorInfo&);
+ virtual bool handleDragStatusUpdate(WebKit::WebDragStatus, const WebKit::WebDragData&, WebKit::WebDragOperationsMask, const WebKit::WebPoint& position, const WebKit::WebPoint& screenPosition);
virtual void didReceiveResponse(const WebKit::WebURLResponse&) { }
virtual void didReceiveData(const char* data, int dataLength) { }
virtual void didFinishLoading() { }
@@ -104,6 +108,7 @@ private:
Primitive parsePrimitive(const WebKit::WebString&);
void parseColor(const WebKit::WebString&, unsigned color[3]);
float parseOpacity(const WebKit::WebString&);
+ bool parseBoolean(const WebKit::WebString&);
// Functions for loading and drawing scene.
bool initScene();
@@ -124,6 +129,9 @@ private:
unsigned m_colorTexture;
unsigned m_framebuffer;
Scene m_scene;
+
+ bool m_acceptsTouchEvent;
+ bool m_printEventDetails;
};
#endif // TestPepperPlugin_h
diff --git a/Tools/DumpRenderTree/chromium/WebPreferences.cpp b/Tools/DumpRenderTree/chromium/WebPreferences.cpp
index 5eebf596d..3bc2cdd9f 100644
--- a/Tools/DumpRenderTree/chromium/WebPreferences.cpp
+++ b/Tools/DumpRenderTree/chromium/WebPreferences.cpp
@@ -156,9 +156,9 @@ typedef void (*SetFontFamilyWrapper)(WebSettings*, const WebString&, UScriptCode
static void applyFontMap(WebSettings* settings, const WebPreferences::ScriptFontFamilyMap& map, SetFontFamilyWrapper setter)
{
for (WebPreferences::ScriptFontFamilyMap::const_iterator iter = map.begin(); iter != map.end(); ++iter) {
- const WebString& font = iter->second;
+ const WebString& font = iter->value;
if (!font.isNull() && !font.isEmpty())
- (*setter)(settings, font, static_cast<UScriptCode>(iter->first));
+ (*setter)(settings, font, static_cast<UScriptCode>(iter->key));
}
}
diff --git a/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp b/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp
index a373c3b30..ed13ffa58 100644
--- a/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp
+++ b/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp
@@ -33,15 +33,41 @@
#include "WebUserMediaClientMock.h"
+#include "MockConstraints.h"
#include "WebDocument.h"
#include "WebMediaStreamRegistry.h"
#include "WebUserMediaRequest.h"
-#include "platform/WebMediaStreamDescriptor.h"
-#include "platform/WebMediaStreamSource.h"
-#include "platform/WebVector.h"
+#include <public/WebMediaConstraints.h>
+#include <public/WebMediaStreamDescriptor.h>
+#include <public/WebMediaStreamSource.h>
+#include <public/WebVector.h>
#include <wtf/Assertions.h>
-namespace WebKit {
+using namespace WebKit;
+
+class UserMediaRequestTask : public MethodTask<WebUserMediaClientMock> {
+public:
+ UserMediaRequestTask(WebUserMediaClientMock* object, const WebUserMediaRequest& request, const WebMediaStreamDescriptor result)
+ : MethodTask<WebUserMediaClientMock>(object)
+ , m_request(request)
+ , m_result(result)
+ {
+ }
+
+ virtual void runIfValid() OVERRIDE
+ {
+ if (m_result.isNull())
+ m_request.requestFailed();
+ else
+ m_request.requestSucceeded(m_result);
+ }
+
+private:
+ WebUserMediaRequest m_request;
+ WebMediaStreamDescriptor m_result;
+};
+
+////////////////////////////////
class MockExtraData : public WebMediaStreamDescriptor::ExtraData {
public:
@@ -59,7 +85,18 @@ void WebUserMediaClientMock::requestUserMedia(const WebUserMediaRequest& streamR
WebUserMediaRequest request = streamRequest;
if (request.ownerDocument().isNull() || !request.ownerDocument().frame()) {
- request.requestFailed();
+ postTask(new UserMediaRequestTask(this, request, WebMediaStreamDescriptor()));
+ return;
+ }
+
+ WebMediaConstraints constraints = request.audioConstraints();
+ if (!constraints.isNull() && !MockConstraints::verifyConstraints(constraints)) {
+ postTask(new UserMediaRequestTask(this, request, WebMediaStreamDescriptor()));
+ return;
+ }
+ constraints = request.videoConstraints();
+ if (!constraints.isNull() && !MockConstraints::verifyConstraints(constraints)) {
+ postTask(new UserMediaRequestTask(this, request, WebMediaStreamDescriptor()));
return;
}
@@ -74,18 +111,16 @@ void WebUserMediaClientMock::requestUserMedia(const WebUserMediaRequest& streamR
if (request.video())
videoSources[0].initialize("MockVideoDevice#1", WebMediaStreamSource::TypeVideo, "Mock video device");
- WebKit::WebMediaStreamDescriptor descriptor;
- descriptor.initialize("foobar", audioSources, videoSources);
+ WebMediaStreamDescriptor stream;
+ stream.initialize("foobar", audioSources, videoSources);
- descriptor.setExtraData(new MockExtraData());
+ stream.setExtraData(new MockExtraData());
- request.requestSucceeded(descriptor);
+ postTask(new UserMediaRequestTask(this, request, stream));
}
void WebUserMediaClientMock::cancelUserMediaRequest(const WebUserMediaRequest&)
{
}
-} // namespace WebKit
-
#endif // ENABLE(MEDIA_STREAM)
diff --git a/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.h b/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.h
index e2415985c..9e1beba4a 100644
--- a/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.h
+++ b/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.h
@@ -33,28 +33,30 @@
#if ENABLE(MEDIA_STREAM)
+#include "Task.h"
#include "WebUserMediaClient.h"
-#include "platform/WebCommon.h"
-#include "platform/WebString.h"
-#include "platform/WebURL.h"
#include "webkit/support/test_media_stream_client.h"
+#include <public/WebCommon.h>
+#include <public/WebString.h>
+#include <public/WebURL.h>
#include <wtf/PassOwnPtr.h>
-namespace WebKit {
-
-class WebUserMediaClientMock : public WebUserMediaClient {
+class WebUserMediaClientMock : public WebKit::WebUserMediaClient {
public:
static PassOwnPtr<WebUserMediaClientMock> create();
~WebUserMediaClientMock() { }
- virtual void requestUserMedia(const WebUserMediaRequest&, const WebVector<WebMediaStreamSource>&, const WebVector<WebMediaStreamSource>&) OVERRIDE;
- virtual void cancelUserMediaRequest(const WebUserMediaRequest&);
+ virtual void requestUserMedia(const WebKit::WebUserMediaRequest&, const WebKit::WebVector<WebKit::WebMediaStreamSource>&, const WebKit::WebVector<WebKit::WebMediaStreamSource>&) OVERRIDE;
+ virtual void cancelUserMediaRequest(const WebKit::WebUserMediaRequest&);
+
+ // Task related methods
+ TaskList* taskList() { return &m_taskList; }
private:
WebUserMediaClientMock() { }
-};
-} // namespace WebKit
+ TaskList m_taskList;
+};
#endif // ENABLE(MEDIA_STREAM)
diff --git a/Tools/DumpRenderTree/chromium/WebViewHost.cpp b/Tools/DumpRenderTree/chromium/WebViewHost.cpp
index f8d804e96..c7ab475e7 100644
--- a/Tools/DumpRenderTree/chromium/WebViewHost.cpp
+++ b/Tools/DumpRenderTree/chromium/WebViewHost.cpp
@@ -65,6 +65,7 @@
#include "WebUserMediaClientMock.h"
#include "WebView.h"
#include "WebViewHostOutputSurface.h"
+#include "WebViewHostSoftwareOutputDevice.h"
#include "WebWindowFeatures.h"
#include "platform/WebSerializedScriptValue.h"
#include "skia/ext/platform_canvas.h"
@@ -288,11 +289,14 @@ WebStorageNamespace* WebViewHost::createSessionStorageNamespace(unsigned quota)
return webkit_support::CreateSessionStorageNamespace(quota);
}
-WebKit::WebCompositorOutputSurface* WebViewHost::createOutputSurface()
+WebCompositorOutputSurface* WebViewHost::createOutputSurface()
{
if (!webView())
return 0;
- return new WebKit::WebViewHostOutputSurface(adoptPtr(webkit_support::CreateGraphicsContext3D(WebKit::WebGraphicsContext3D::Attributes(), webView())));
+
+ if (m_shell->softwareCompositingEnabled())
+ return WebViewHostOutputSurface::createSoftware(adoptPtr(new WebViewHostSoftwareOutputDevice)).leakPtr();
+ return WebViewHostOutputSurface::create3d(adoptPtr(webkit_support::CreateGraphicsContext3D(WebGraphicsContext3D::Attributes(), webView()))).leakPtr();
}
void WebViewHost::didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine)
@@ -1096,7 +1100,7 @@ void WebViewHost::unableToImplementPolicyWithError(WebFrame* frame, const WebURL
{
printf("Policy delegate: unable to implement policy with error domain '%s', "
"error code %d, in frame '%s'\n",
- error.domain.utf8().data(), error.reason, frame->name().utf8().data());
+ error.domain.utf8().data(), error.reason, frame->uniqueName().utf8().data());
}
void WebViewHost::willPerformClientRedirect(WebFrame* frame, const WebURL& from, const WebURL& to,
@@ -1399,7 +1403,7 @@ void WebViewHost::deleteFileSystem(WebKit::WebFrame* frame, WebKit::WebFileSyste
webkit_support::DeleteFileSystem(frame, type, callbacks);
}
-bool WebViewHost::willCheckAndDispatchMessageEvent(WebFrame* source, WebSecurityOrigin target, WebDOMMessageEvent event)
+bool WebViewHost::willCheckAndDispatchMessageEvent(WebFrame* sourceFrame, WebFrame* targetFrame, WebSecurityOrigin target, WebDOMMessageEvent event)
{
if (m_shell->testRunner()->shouldInterceptPostMessage()) {
fputs("intercepted postMessage\n", stdout);
@@ -1745,7 +1749,7 @@ void WebViewHost::updateSessionHistory(WebFrame* frame)
void WebViewHost::printFrameDescription(WebFrame* webframe)
{
- string name8 = webframe->name().utf8();
+ string name8 = webframe->uniqueName().utf8();
if (webframe == webView()->mainFrame()) {
if (!name8.length()) {
fputs("main frame", stdout);
@@ -1770,7 +1774,7 @@ void WebViewHost::printFrameUserGestureStatus(WebFrame* webframe, const char* ms
void WebViewHost::printResourceDescription(unsigned identifier)
{
ResourceMap::iterator it = m_resourceIdentifierMap.find(identifier);
- printf("%s", it != m_resourceIdentifierMap.end() ? it->second.c_str() : "<unknown>");
+ printf("%s", it != m_resourceIdentifierMap.end() ? it->value.c_str() : "<unknown>");
}
void WebViewHost::setPendingExtraData(PassOwnPtr<TestShellExtraData> extraData)
diff --git a/Tools/DumpRenderTree/chromium/WebViewHost.h b/Tools/DumpRenderTree/chromium/WebViewHost.h
index 4a3627f90..c9e17b07f 100644
--- a/Tools/DumpRenderTree/chromium/WebViewHost.h
+++ b/Tools/DumpRenderTree/chromium/WebViewHost.h
@@ -52,6 +52,7 @@ class MockWebSpeechInputController;
class MockWebSpeechRecognizer;
class SkCanvas;
class TestShell;
+class WebUserMediaClientMock;
namespace WebKit {
class WebFrame;
@@ -66,7 +67,6 @@ class WebSharedWorkerClient;
class WebSpeechInputController;
class WebSpeechInputListener;
class WebURL;
-class WebUserMediaClientMock;
struct WebRect;
struct WebURLError;
struct WebWindowFeatures;
@@ -268,7 +268,9 @@ class WebViewHost : public WebKit::WebViewClient, public WebKit::WebFrameClient,
virtual void didDetectXSS(WebKit::WebFrame*, const WebKit::WebURL&, bool didBlockEntirePage);
virtual void openFileSystem(WebKit::WebFrame*, WebKit::WebFileSystem::Type, long long size, bool create, WebKit::WebFileSystemCallbacks*);
virtual void deleteFileSystem(WebKit::WebFrame*, WebKit::WebFileSystem::Type, WebKit::WebFileSystemCallbacks*);
- virtual bool willCheckAndDispatchMessageEvent(WebKit::WebFrame* source, WebKit::WebSecurityOrigin target, WebKit::WebDOMMessageEvent);
+ virtual bool willCheckAndDispatchMessageEvent(
+ WebKit::WebFrame* sourceFrame, WebKit::WebFrame* targetFrame,
+ WebKit::WebSecurityOrigin target, WebKit::WebDOMMessageEvent);
virtual void registerIntentService(WebKit::WebFrame*, const WebKit::WebIntentServiceInfo&);
virtual void dispatchIntent(WebKit::WebFrame*, const WebKit::WebIntentRequest&);
virtual void deliveredIntentResult(WebKit::WebFrame*, int, const WebKit::WebSerializedScriptValue&);
@@ -343,7 +345,7 @@ private:
void discardBackingStore();
#if ENABLE(MEDIA_STREAM)
- WebKit::WebUserMediaClientMock* userMediaClientMock();
+ WebUserMediaClientMock* userMediaClientMock();
webkit_support::TestMediaStreamClient* testMediaStreamClient();
#endif
@@ -430,7 +432,7 @@ private:
#endif
#if ENABLE(MEDIA_STREAM)
- OwnPtr<WebKit::WebUserMediaClientMock> m_userMediaClientMock;
+ OwnPtr<WebUserMediaClientMock> m_userMediaClientMock;
OwnPtr<webkit_support::TestMediaStreamClient> m_testMediaStreamClient;
#endif
diff --git a/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp b/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp
index 1d1b5840e..09a0af501 100644
--- a/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp
+++ b/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp
@@ -27,22 +27,41 @@
#include "WebViewHostOutputSurface.h"
+#include <public/WebCompositorSoftwareOutputDevice.h>
#include <public/WebGraphicsContext3D.h>
#include <wtf/Assertions.h>
namespace WebKit {
+PassOwnPtr<WebViewHostOutputSurface> WebViewHostOutputSurface::create3d(PassOwnPtr<WebKit::WebGraphicsContext3D> context3d)
+{
+ return adoptPtr(new WebViewHostOutputSurface(context3d));
+}
+
+PassOwnPtr<WebViewHostOutputSurface> WebViewHostOutputSurface::createSoftware(PassOwnPtr<WebKit::WebCompositorSoftwareOutputDevice> softwareDevice)
+{
+ return adoptPtr(new WebViewHostOutputSurface(softwareDevice));
+}
+
WebViewHostOutputSurface::WebViewHostOutputSurface(PassOwnPtr<WebKit::WebGraphicsContext3D> context)
: m_context(context)
{
}
+WebViewHostOutputSurface::WebViewHostOutputSurface(PassOwnPtr<WebKit::WebCompositorSoftwareOutputDevice> softwareDevice)
+ : m_softwareDevice(softwareDevice)
+{
+}
+
WebViewHostOutputSurface::~WebViewHostOutputSurface()
{
}
bool WebViewHostOutputSurface::bindToClient(WebCompositorOutputSurfaceClient*)
{
+ if (!m_context)
+ return true;
+
return m_context->makeContextCurrent();
}
@@ -56,6 +75,11 @@ WebGraphicsContext3D* WebViewHostOutputSurface::context3D() const
return m_context.get();
}
+WebCompositorSoftwareOutputDevice* WebViewHostOutputSurface::softwareDevice() const
+{
+ return m_softwareDevice.get();
+}
+
void WebViewHostOutputSurface::sendFrameToParentCompositor(const WebCompositorFrame&)
{
ASSERT_NOT_REACHED();
diff --git a/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h b/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h
index 412bc539d..bbd61a21a 100644
--- a/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h
+++ b/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h
@@ -33,22 +33,29 @@
namespace WebKit {
class WebCompositorOutputSurfaceClient;
+class WebCompositorSoftwareOutputDevice;
class WebGraphicsContext3D;
class WebViewHostOutputSurface : public WebKit::WebCompositorOutputSurface {
public:
- explicit WebViewHostOutputSurface(PassOwnPtr<WebKit::WebGraphicsContext3D>);
+ static PassOwnPtr<WebViewHostOutputSurface> create3d(PassOwnPtr<WebKit::WebGraphicsContext3D>);
+ static PassOwnPtr<WebViewHostOutputSurface> createSoftware(PassOwnPtr<WebKit::WebCompositorSoftwareOutputDevice>);
virtual ~WebViewHostOutputSurface();
virtual bool bindToClient(WebCompositorOutputSurfaceClient*) OVERRIDE;
virtual const WebKit::WebCompositorOutputSurface::Capabilities& capabilities() const OVERRIDE;
virtual WebGraphicsContext3D* context3D() const OVERRIDE;
+ virtual WebCompositorSoftwareOutputDevice* softwareDevice() const OVERRIDE;
virtual void sendFrameToParentCompositor(const WebCompositorFrame&) OVERRIDE;
private:
+ explicit WebViewHostOutputSurface(PassOwnPtr<WebKit::WebGraphicsContext3D>);
+ explicit WebViewHostOutputSurface(PassOwnPtr<WebKit::WebCompositorSoftwareOutputDevice>);
+
WebKit::WebCompositorOutputSurface::Capabilities m_capabilities;
OwnPtr<WebKit::WebGraphicsContext3D> m_context;
+ OwnPtr<WebKit::WebCompositorSoftwareOutputDevice> m_softwareDevice;
};
}
diff --git a/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp b/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp
new file mode 100644
index 000000000..ecee9940d
--- /dev/null
+++ b/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "WebViewHostSoftwareOutputDevice.h"
+
+#include "SkBitmap.h"
+#include "SkDevice.h"
+#include <public/WebSize.h>
+#include <wtf/Assertions.h>
+
+namespace WebKit {
+
+WebImage* WebViewHostSoftwareOutputDevice::lock(bool forWrite)
+{
+ ASSERT(m_device);
+ m_image = m_device->accessBitmap(forWrite);
+ return &m_image;
+}
+
+void WebViewHostSoftwareOutputDevice::unlock()
+{
+ m_image.reset();
+}
+
+void WebViewHostSoftwareOutputDevice::didChangeViewportSize(WebSize size)
+{
+ if (m_device && size.width == m_device->width() && size.height == m_device->height())
+ return;
+
+ m_device = adoptPtr(new SkDevice(SkBitmap::kARGB_8888_Config, size.width, size.height, true));
+}
+
+
+}
diff --git a/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h b/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h
new file mode 100644
index 000000000..5bd551ff9
--- /dev/null
+++ b/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebViewHostSoftwareOutputDevice_h
+#define WebViewHostSoftwareOutputDevice_h
+
+#include <public/WebCompositorSoftwareOutputDevice.h>
+#include <public/WebImage.h>
+#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
+
+class SkDevice;
+
+namespace WebKit {
+
+struct WebSize;
+
+class WebViewHostSoftwareOutputDevice : public WebKit::WebCompositorSoftwareOutputDevice {
+public:
+ virtual WebImage* lock(bool forWrite) OVERRIDE;
+ virtual void unlock() OVERRIDE;
+
+ virtual void didChangeViewportSize(WebSize) OVERRIDE;
+
+private:
+ OwnPtr<SkDevice> m_device;
+ WebImage m_image;
+};
+
+}
+
+#endif // WebViewHostSoftwareOutputDevice_h
diff --git a/Tools/DumpRenderTree/chromium/android_fallback_fonts.xml b/Tools/DumpRenderTree/chromium/android_fallback_fonts.xml
index 5ab6c2d59..79193b7c4 100644
--- a/Tools/DumpRenderTree/chromium/android_fallback_fonts.xml
+++ b/Tools/DumpRenderTree/chromium/android_fallback_fonts.xml
@@ -7,7 +7,32 @@
</family>
<family>
<fileset>
- <file>DroidSansFallback.ttf</file>
+ <file>kochi-mincho.ttf</file>
</fileset>
</family>
-</familyset> \ No newline at end of file
+ <family>
+ <fileset>
+ <file>lohit_hi.ttf</file>
+ </fileset>
+ </family>
+ <family>
+ <fileset>
+ <file>lohit_ta.ttf</file>
+ </fileset>
+ </family>
+ <family>
+ <fileset>
+ <file>MuktiNarrow.ttf</file>
+ </fileset>
+ </family>
+ <family>
+ <fileset>
+ <file>Garuda.ttf</file>
+ </fileset>
+ </family>
+ <family>
+ <fileset>
+ <file>lohit_pa.ttf</file>
+ </fileset>
+ </family>
+</familyset>
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTree.cpp b/Tools/DumpRenderTree/efl/DumpRenderTree.cpp
index c1e480134..69a4211a0 100644
--- a/Tools/DumpRenderTree/efl/DumpRenderTree.cpp
+++ b/Tools/DumpRenderTree/efl/DumpRenderTree.cpp
@@ -68,7 +68,6 @@ volatile bool done = false;
static bool dumpPixelsForCurrentTest;
static int dumpTree = true;
static int printSeparators = true;
-static int useX11Window = false;
static String dumpFramesAsText(Evas_Object* frame)
{
@@ -194,7 +193,6 @@ static bool parseCommandLineOptions(int argc, char** argv)
static const option options[] = {
{"notree", no_argument, &dumpTree, false},
{"tree", no_argument, &dumpTree, true},
- {"gui", no_argument, &useX11Window, true},
{0, 0, 0, 0}
};
@@ -420,7 +418,7 @@ void dump()
static Ecore_Evas* initEcoreEvas()
{
- Ecore_Evas* ecoreEvas = useX11Window ? ecore_evas_new(0, 0, 0, 800, 600, 0) : ecore_evas_buffer_new(800, 600);
+ Ecore_Evas* ecoreEvas = ecore_evas_new(0, 0, 0, 800, 600, 0);
if (!ecoreEvas) {
shutdownEfl();
exit(EXIT_FAILURE);
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp b/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
index 51a78c9b4..993135ee4 100644
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
+++ b/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
@@ -139,7 +139,7 @@ Evas_Object* DumpRenderTreeChrome::createView() const
return view;
}
-Evas_Object* DumpRenderTreeChrome::createWebInspectorView()
+Evas_Object* DumpRenderTreeChrome::createInspectorView()
{
Evas_Object* inspectorView = drtViewAdd(m_evas);
if (!inspectorView)
@@ -161,9 +161,9 @@ Evas_Object* DumpRenderTreeChrome::createWebInspectorView()
return inspectorView;
}
-void DumpRenderTreeChrome::removeWebInspectorView()
+void DumpRenderTreeChrome::removeInspectorView()
{
- Evas_Object* inspectorView = ewk_view_web_inspector_view_get(mainView());
+ Evas_Object* inspectorView = ewk_view_inspector_view_get(mainView());
if (!inspectorView)
return;
@@ -171,14 +171,14 @@ void DumpRenderTreeChrome::removeWebInspectorView()
evas_object_smart_callback_del(mainFrame, "load,finished", onInspectorFrameLoadFinished);
evas_object_del(inspectorView);
- ewk_view_web_inspector_view_set(mainView(), 0);
+ ewk_view_inspector_view_set(mainView(), 0);
}
void DumpRenderTreeChrome::waitInspectorLoadFinished()
{
// Waits until the page has finished loading.
// Because it can't complete loading inspector.html before loading testURL.
- Evas_Object* inspectorView = ewk_view_web_inspector_view_get(mainView());
+ Evas_Object* inspectorView = ewk_view_inspector_view_get(mainView());
if (inspectorView)
ecore_main_loop_begin();
}
@@ -318,6 +318,7 @@ void DumpRenderTreeChrome::resetDefaultsToConsistentValues()
DumpRenderTreeSupportEfl::setSerializeHTTPLoads(false);
DumpRenderTreeSupportEfl::setMinimumLogicalFontSize(mainView(), 9);
DumpRenderTreeSupportEfl::setCSSRegionsEnabled(mainView(), true);
+ DumpRenderTreeSupportEfl::setShouldTrackVisitedLinks(false);
// Reset capacities for the memory cache for dead objects.
static const unsigned cacheTotalCapacity = 8192 * 1024;
@@ -676,19 +677,19 @@ void DumpRenderTreeChrome::onWebViewPopulateVisitedLinks(void*, Evas_Object* ewk
void DumpRenderTreeChrome::onInspectorViewCreate(void*, Evas_Object*, void*)
{
- Evas_Object* inspectorView = browser->createWebInspectorView();
+ Evas_Object* inspectorView = browser->createInspectorView();
if (inspectorView)
- ewk_view_web_inspector_view_set(browser->mainView(), inspectorView);
+ ewk_view_inspector_view_set(browser->mainView(), inspectorView);
}
void DumpRenderTreeChrome::onInspectorViewClose(void*, Evas_Object*, void*)
{
- browser->removeWebInspectorView();
+ browser->removeInspectorView();
}
void DumpRenderTreeChrome::onInspectorFrameLoadFinished(void*, Evas_Object*, void*)
{
- Evas_Object* inspectorView = ewk_view_web_inspector_view_get(browser->mainView());
+ Evas_Object* inspectorView = ewk_view_inspector_view_get(browser->mainView());
if (inspectorView)
ecore_main_loop_quit();
}
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h b/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h
index 267c20003..32a365490 100644
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h
+++ b/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h
@@ -48,8 +48,8 @@ public:
Evas_Object* createNewWindow();
void removeWindow(Evas_Object*);
- Evas_Object* createWebInspectorView();
- void removeWebInspectorView();
+ Evas_Object* createInspectorView();
+ void removeInspectorView();
void waitInspectorLoadFinished();
const Vector<Evas_Object*>& extraViews() const;
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp b/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp
index ed31de328..d24bf3606 100644
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp
+++ b/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp
@@ -153,15 +153,15 @@ static int64_t onExceededApplicationCacheQuota(Ewk_View_Smart_Data*, Ewk_Securit
return defaultOriginQuota;
}
-static bool shouldUseSingleBackingStore()
+static bool shouldUseTiledBackingStore()
{
- const char* useSingleBackingStore = getenv("DRT_USE_SINGLE_BACKING_STORE");
- return useSingleBackingStore && *useSingleBackingStore == '1';
+ const char* useTiledBackingStore = getenv("DRT_USE_TILED_BACKING_STORE");
+ return useTiledBackingStore && *useTiledBackingStore == '1';
}
static bool chooseAndInitializeAppropriateSmartClass(Ewk_View_Smart_Class* api)
{
- return shouldUseSingleBackingStore() ? ewk_view_single_smart_set(api) : ewk_view_tiled_smart_set(api);
+ return !shouldUseTiledBackingStore() ? ewk_view_single_smart_set(api) : ewk_view_tiled_smart_set(api);
}
// Taken from the file "WebKit/Tools/DumpRenderTree/chromium/WebViewHost.cpp".
diff --git a/Tools/DumpRenderTree/efl/TestRunnerEfl.cpp b/Tools/DumpRenderTree/efl/TestRunnerEfl.cpp
index 964b31c76..19703aee6 100644
--- a/Tools/DumpRenderTree/efl/TestRunnerEfl.cpp
+++ b/Tools/DumpRenderTree/efl/TestRunnerEfl.cpp
@@ -109,7 +109,7 @@ void TestRunner::display()
void TestRunner::keepWebHistory()
{
- notImplemented();
+ DumpRenderTreeSupportEfl::setShouldTrackVisitedLinks(true);
}
JSValueRef TestRunner::computedStyleIncludingVisitedInfo(JSContextRef context, JSValueRef value)
@@ -117,13 +117,6 @@ JSValueRef TestRunner::computedStyleIncludingVisitedInfo(JSContextRef context, J
return DumpRenderTreeSupportEfl::computedStyleIncludingVisitedInfo(context, value);
}
-JSRetainPtr<JSStringRef> TestRunner::layerTreeAsText() const
-{
- String result = DumpRenderTreeSupportEfl::layerTreeAsText(browser->mainFrame());
-
- return JSRetainPtr<JSStringRef>(Adopt, JSStringCreateWithUTF8CString(result.utf8().data()));
-}
-
size_t TestRunner::webHistoryItemCount()
{
const Ewk_History* history = ewk_view_history_get(browser->mainView());
@@ -372,7 +365,7 @@ void TestRunner::setMockDeviceOrientation(bool, double, bool, double, bool, doub
notImplemented();
}
-void TestRunner::setMockGeolocationPosition(double, double, double)
+void TestRunner::setMockGeolocationPosition(double, double, double, bool, double, bool, double, bool, double, bool, double)
{
// FIXME: Implement for Geolocation layout tests.
// See https://bugs.webkit.org/show_bug.cgi?id=28264.
@@ -739,13 +732,13 @@ void TestRunner::setAsynchronousSpellCheckingEnabled(bool)
void TestRunner::showWebInspector()
{
- ewk_view_web_inspector_show(browser->mainView());
+ ewk_view_inspector_show(browser->mainView());
browser->waitInspectorLoadFinished();
}
void TestRunner::closeWebInspector()
{
- ewk_view_web_inspector_close(browser->mainView());
+ ewk_view_inspector_close(browser->mainView());
}
void TestRunner::evaluateInWebInspector(long callId, JSStringRef script)
diff --git a/Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp b/Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp
index 6b9edc94b..25c49e314 100644
--- a/Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp
+++ b/Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp
@@ -56,18 +56,21 @@ static inline gchar* replaceCharactersForResults(gchar* str)
AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
: m_element(element)
{
- g_object_ref(m_element);
+ if (m_element)
+ g_object_ref(m_element);
}
AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other)
: m_element(other.m_element)
{
- g_object_ref(m_element);
+ if (m_element)
+ g_object_ref(m_element);
}
AccessibilityUIElement::~AccessibilityUIElement()
{
- g_object_unref(m_element);
+ if (m_element)
+ g_object_unref(m_element);
}
void AccessibilityUIElement::getLinkedUIElements(Vector<AccessibilityUIElement>& elements)
diff --git a/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp b/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp
index 1f96622bb..f574c11e8 100644
--- a/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp
+++ b/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp
@@ -516,6 +516,7 @@ static void resetDefaultsToConsistentValues()
DumpRenderTreeSupportGtk::setCSSGridLayoutEnabled(webView, false);
DumpRenderTreeSupportGtk::setCSSRegionsEnabled(webView, true);
+ DumpRenderTreeSupportGtk::setCSSCustomFilterEnabled(webView, false);
DumpRenderTreeSupportGtk::setShadowDOMEnabled(true);
DumpRenderTreeSupportGtk::setStyleScopedEnabled(true);
}
diff --git a/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp b/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp
index db9628927..32d3dd5cb 100644
--- a/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp
+++ b/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp
@@ -112,13 +112,6 @@ JSValueRef TestRunner::computedStyleIncludingVisitedInfo(JSContextRef context, J
return DumpRenderTreeSupportGtk::computedStyleIncludingVisitedInfo(context, value);
}
-JSRetainPtr<JSStringRef> TestRunner::layerTreeAsText() const
-{
- // FIXME: implement
- JSRetainPtr<JSStringRef> string(Adopt, JSStringCreateWithUTF8CString(""));
- return string;
-}
-
size_t TestRunner::webHistoryItemCount()
{
WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
@@ -437,7 +430,7 @@ void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bo
// See https://bugs.webkit.org/show_bug.cgi?id=30335.
}
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy)
+void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool, double, bool, double, bool, double, bool, double)
{
WebKitWebView* view = WEBKIT_WEB_VIEW(g_slist_nth_data(webViewList, 0));
if (!view)
@@ -790,6 +783,9 @@ void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
} else if (g_str_equal(originalName.get(), "WebKitCSSRegionsEnabled")) {
DumpRenderTreeSupportGtk::setCSSRegionsEnabled(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
return;
+ } else if (g_str_equal(originalName.get(), "WebKitCSSCustomFilterEnabled")) {
+ DumpRenderTreeSupportGtk::setCSSCustomFilterEnabled(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
+ return;
} else {
fprintf(stderr, "TestRunner::overridePreference tried to override "
"unknown preference '%s'.\n", originalName.get());
diff --git a/Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm b/Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm
index 6e0213241..0909b86fa 100644
--- a/Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm
+++ b/Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm
@@ -79,6 +79,7 @@ static id findAccessibleObjectById(id obj, NSString *idAttribute)
return obj;
END_AX_OBJC_EXCEPTIONS
+ BEGIN_AX_OBJC_EXCEPTIONS
NSArray *children = [obj accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
NSUInteger childrenCount = [children count];
for (NSUInteger i = 0; i < childrenCount; ++i) {
@@ -86,6 +87,7 @@ static id findAccessibleObjectById(id obj, NSString *idAttribute)
if (result)
return result;
}
+ END_AX_OBJC_EXCEPTIONS
return 0;
}
diff --git a/Tools/DumpRenderTree/mac/Configurations/Base.xcconfig b/Tools/DumpRenderTree/mac/Configurations/Base.xcconfig
index 99f525622..3bc7a2a84 100644
--- a/Tools/DumpRenderTree/mac/Configurations/Base.xcconfig
+++ b/Tools/DumpRenderTree/mac/Configurations/Base.xcconfig
@@ -24,7 +24,7 @@
#include "CompilerVersion.xcconfig"
CLANG_WARN_CXX0X_EXTENSIONS = NO;
-HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include ForwardingHeaders mac/InternalHeaders $(NEXT_ROOT)/usr/local/include/WebCoreTestSupport;
+HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include ForwardingHeaders mac/InternalHeaders $(NEXT_ROOT)/usr/local/include/WebCoreTestSupport ${SRCROOT}/../../Source/JavaScriptCore/icu;
FRAMEWORK_SEARCH_PATHS = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/CoreServices.framework/Frameworks;
GCC_PREPROCESSOR_DEFINITIONS = ENABLE_DASHBOARD_SUPPORT WEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST;
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
diff --git a/Tools/DumpRenderTree/mac/DumpRenderTree.mm b/Tools/DumpRenderTree/mac/DumpRenderTree.mm
index 30ac8254c..f70e26259 100644
--- a/Tools/DumpRenderTree/mac/DumpRenderTree.mm
+++ b/Tools/DumpRenderTree/mac/DumpRenderTree.mm
@@ -57,6 +57,8 @@
#import "WorkQueueItem.h"
#import <Carbon/Carbon.h>
#import <CoreFoundation/CoreFoundation.h>
+#import <JavaScriptCore/HeapStatistics.h>
+#import <JavaScriptCore/Options.h>
#import <WebCore/FoundationExtras.h>
#import <WebKit/DOMElement.h>
#import <WebKit/DOMExtensions.h>
@@ -87,6 +89,7 @@
#import <getopt.h>
#import <objc/objc-runtime.h>
#import <wtf/Assertions.h>
+#import <wtf/FastMalloc.h>
#import <wtf/RetainPtr.h>
#import <wtf/Threading.h>
#import <wtf/ObjcRuntimeExtras.h>
@@ -917,7 +920,9 @@ int main(int argc, const char *argv[])
[DumpRenderTreeApplication sharedApplication]; // Force AppKit to init itself
dumpRenderTree(argc, argv);
[WebCoreStatistics garbageCollectJavaScriptObjects];
- [WebCoreStatistics emptyCache]; // Otherwise SVGImages trigger false positives for Frame/Node counts
+ [WebCoreStatistics emptyCache]; // Otherwise SVGImages trigger false positives for Frame/Node counts
+ if (JSC::Options::logHeapStatisticsAtExit())
+ JSC::HeapStatistics::reportSuccess();
[pool release];
return 0;
}
@@ -1179,6 +1184,10 @@ void dump()
if (gTestRunner->dumpAsAudio())
printf("Content-Transfer-Encoding: base64\n");
+ WTF::FastMallocStatistics mallocStats = WTF::fastMallocStatistics();
+ printf("DumpMalloc: %li\n", mallocStats.committedVMBytes);
+ printf("DumpJSHeap: %li\n", JSC::HeapStatistics::usedJSHeap());
+
if (resultData) {
fwrite([resultData bytes], 1, [resultData length], stdout);
diff --git a/Tools/DumpRenderTree/mac/EventSendingController.mm b/Tools/DumpRenderTree/mac/EventSendingController.mm
index dc8b26693..482bf93db 100644
--- a/Tools/DumpRenderTree/mac/EventSendingController.mm
+++ b/Tools/DumpRenderTree/mac/EventSendingController.mm
@@ -299,21 +299,31 @@ static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction acti
clickCount++;
}
+static int modifierFlags(const NSString* modifierName)
+{
+ int flags = 0;
+ if ([modifierName isEqual:@"ctrlKey"])
+ flags |= NSControlKeyMask;
+ else if ([modifierName isEqual:@"shiftKey"] || [modifierName isEqual:@"rangeSelectionKey"])
+ flags |= NSShiftKeyMask;
+ else if ([modifierName isEqual:@"altKey"])
+ flags |= NSAlternateKeyMask;
+ else if ([modifierName isEqual:@"metaKey"] || [modifierName isEqual:@"addSelectionKey"])
+ flags |= NSCommandKeyMask;
+
+ return flags;
+}
+
static int buildModifierFlags(const WebScriptObject* modifiers)
{
int flags = 0;
- if (![modifiers isKindOfClass:[WebScriptObject class]])
+ if ([modifiers isKindOfClass:[NSString class]])
+ return modifierFlags((NSString*)modifiers);
+ else if (![modifiers isKindOfClass:[WebScriptObject class]])
return flags;
for (unsigned i = 0; [[modifiers webScriptValueAtIndex:i] isKindOfClass:[NSString class]]; i++) {
NSString* modifierName = (NSString*)[modifiers webScriptValueAtIndex:i];
- if ([modifierName isEqual:@"ctrlKey"])
- flags |= NSControlKeyMask;
- else if ([modifierName isEqual:@"shiftKey"] || [modifierName isEqual:@"rangeSelectionKey"])
- flags |= NSShiftKeyMask;
- else if ([modifierName isEqual:@"altKey"])
- flags |= NSAlternateKeyMask;
- else if ([modifierName isEqual:@"metaKey"] || [modifierName isEqual:@"addSelectionKey"])
- flags |= NSCommandKeyMask;
+ flags |= modifierFlags(modifierName);
}
return flags;
}
diff --git a/Tools/DumpRenderTree/mac/MockWebNotificationProvider.h b/Tools/DumpRenderTree/mac/MockWebNotificationProvider.h
index d4063b81a..293ea49d0 100644
--- a/Tools/DumpRenderTree/mac/MockWebNotificationProvider.h
+++ b/Tools/DumpRenderTree/mac/MockWebNotificationProvider.h
@@ -48,7 +48,8 @@ typedef HashMap<uint64_t, WebView *> NotificationViewMap;
+ (MockWebNotificationProvider *)shared;
- (void)simulateWebNotificationClick:(uint64_t)notificationID;
-- (void)setWebNotificationOrigin:(NSString*)origin permission:(BOOL)allowed;
+- (void)setWebNotificationOrigin:(NSString *)origin permission:(BOOL)allowed;
+- (WebNotificationPermission)policyForOrigin:(WebSecurityOrigin *)origin;
- (void)removeAllWebNotificationPermissions;
- (void)reset;
diff --git a/Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm b/Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm
index 2b693fda2..4365d15d0 100644
--- a/Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm
+++ b/Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm
@@ -107,7 +107,7 @@
uint64_t id = [notificationID unsignedLongLongValue];
NotificationIDMap::iterator it = _notifications.find(id);
ASSERT(it != _notifications.end());
- [it->second.get() dispatchCloseEvent];
+ [it->value.get() dispatchCloseEvent];
_notifications.remove(it);
_notificationViewMap.remove(id);
}
@@ -129,7 +129,7 @@
return WebNotificationPermissionDenied;
}
-- (void)setWebNotificationOrigin:(NSString*)origin permission:(BOOL)allowed
+- (void)setWebNotificationOrigin:(NSString *)origin permission:(BOOL)allowed
{
[_permissions.get() setObject:[NSNumber numberWithBool:allowed] forKey:origin];
}
diff --git a/Tools/DumpRenderTree/mac/TestRunnerMac.mm b/Tools/DumpRenderTree/mac/TestRunnerMac.mm
index 1a0a04dc7..b520e096f 100644
--- a/Tools/DumpRenderTree/mac/TestRunnerMac.mm
+++ b/Tools/DumpRenderTree/mac/TestRunnerMac.mm
@@ -42,6 +42,8 @@
#import <JavaScriptCore/JSRetainPtr.h>
#import <JavaScriptCore/JSStringRef.h>
#import <JavaScriptCore/JSStringRefCF.h>
+#import <WebCore/GeolocationPosition.h>
+#import <WebCore/PageVisibilityState.h>
#import <WebKit/DOMDocument.h>
#import <WebKit/DOMElement.h>
#import <WebKit/WebApplicationCache.h>
@@ -108,6 +110,10 @@
@end
+@interface WebGeolocationPosition (Internal)
+- (id)initWithGeolocationPosition:(PassRefPtr<WebCore::GeolocationPosition>)coreGeolocationPosition;
+@end
+
TestRunner::~TestRunner()
{
}
@@ -269,12 +275,6 @@ JSValueRef TestRunner::computedStyleIncludingVisitedInfo(JSContextRef context, J
return [[mainFrame webView] _computedStyleIncludingVisitedInfo:context forElement:value];
}
-JSRetainPtr<JSStringRef> TestRunner::layerTreeAsText() const
-{
- JSRetainPtr<JSStringRef> string(Adopt, JSStringCreateWithCFString((CFStringRef)[mainFrame _layerTreeAsText]));
- return string;
-}
-
JSRetainPtr<JSStringRef> TestRunner::markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const
{
DOMElement *element = [DOMElement _DOMElementFromJSContext:context value:nodeObject];
@@ -472,9 +472,16 @@ void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bo
[orientation release];
}
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy)
+void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
{
- WebGeolocationPosition *position = [[WebGeolocationPosition alloc] initWithTimestamp:currentTime() latitude:latitude longitude:longitude accuracy:accuracy];
+ WebGeolocationPosition *position = nil;
+ if (!providesAltitude && !providesAltitudeAccuracy && !providesHeading && !providesSpeed) {
+ // Test the exposed API.
+ position = [[WebGeolocationPosition alloc] initWithTimestamp:currentTime() latitude:latitude longitude:longitude accuracy:accuracy];
+ } else {
+ RefPtr<WebCore::GeolocationPosition> coreGeolocationPosition = WebCore::GeolocationPosition::create(currentTime(), latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
+ position = [[WebGeolocationPosition alloc] initWithGeolocationPosition:(coreGeolocationPosition.release())];
+ }
[[MockGeolocationProvider shared] setPosition:position];
[position release];
}
@@ -892,8 +899,8 @@ unsigned worldIDForWorld(WebScriptWorld *world)
{
WorldMap::const_iterator end = worldMap().end();
for (WorldMap::const_iterator it = worldMap().begin(); it != end; ++it) {
- if (it->second == world)
- return it->first;
+ if (it->value == world)
+ return it->key;
}
return 0;
@@ -915,7 +922,7 @@ void TestRunner::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef glo
if (!worldID)
world = [WebScriptWorld world];
else {
- RetainPtr<WebScriptWorld>& worldSlot = worldMap().add(worldID, 0).iterator->second;
+ RetainPtr<WebScriptWorld>& worldSlot = worldMap().add(worldID, 0).iterator->value;
if (!worldSlot)
worldSlot.adoptNS([[WebScriptWorld alloc] init]);
world = worldSlot.get();
@@ -1148,12 +1155,26 @@ void TestRunner::setBackingScaleFactor(double backingScaleFactor)
void TestRunner::resetPageVisibility()
{
- // FIXME: Implement.
+ WebView *webView = [mainFrame webView];
+ if ([webView respondsToSelector:@selector(_setVisibilityState:isInitialState:)]) {
+ [webView _setVisibilityState:WebCore::PageVisibilityStateVisible isInitialState:NO];
+ }
}
-void TestRunner::setPageVisibility(const char*)
+void TestRunner::setPageVisibility(const char* newVisibility)
{
- // FIXME: Implement.
+ if (!newVisibility)
+ return;
+
+ WebView *webView = [mainFrame webView];
+ if (!strcmp(newVisibility, "visible"))
+ [webView _setVisibilityState:WebCore::PageVisibilityStateVisible isInitialState:NO];
+ else if (!strcmp(newVisibility, "hidden"))
+ [webView _setVisibilityState:WebCore::PageVisibilityStateHidden isInitialState:NO];
+ else if (!strcmp(newVisibility, "prerender"))
+ [webView _setVisibilityState:WebCore::PageVisibilityStatePrerender isInitialState:NO];
+ else if (!strcmp(newVisibility, "preview"))
+ [webView _setVisibilityState:WebCore::PageVisibilityStatePreview isInitialState:NO];
}
void TestRunner::sendWebIntentResponse(JSStringRef)
diff --git a/Tools/DumpRenderTree/mac/UIDelegate.mm b/Tools/DumpRenderTree/mac/UIDelegate.mm
index 1b6103ac8..3473d1797 100644
--- a/Tools/DumpRenderTree/mac/UIDelegate.mm
+++ b/Tools/DumpRenderTree/mac/UIDelegate.mm
@@ -293,8 +293,19 @@ DumpRenderTreeDraggingInfo *draggingInfo = nil;
- (void)webView:(WebView *)webView decidePolicyForNotificationRequestFromOrigin:(WebSecurityOrigin *)origin listener:(id<WebAllowDenyPolicyListener>)listener
{
- [(MockWebNotificationProvider *)[webView _notificationProvider] setWebNotificationOrigin:[origin stringValue] permission:YES];
- [listener allow];
+ MockWebNotificationProvider *provider = (MockWebNotificationProvider *)[webView _notificationProvider];
+ switch ([provider policyForOrigin:origin]) {
+ case WebNotificationPermissionAllowed:
+ [listener allow];
+ break;
+ case WebNotificationPermissionDenied:
+ [listener deny];
+ break;
+ case WebNotificationPermissionNotAllowed:
+ [provider setWebNotificationOrigin:[origin stringValue] permission:YES];
+ [listener allow];
+ break;
+ }
}
- (void)dealloc
diff --git a/Tools/DumpRenderTree/qt/DumpRenderTree.pro b/Tools/DumpRenderTree/qt/DumpRenderTree.pro
index baf025aed..1b8d8d3d7 100644
--- a/Tools/DumpRenderTree/qt/DumpRenderTree.pro
+++ b/Tools/DumpRenderTree/qt/DumpRenderTree.pro
@@ -17,7 +17,7 @@ INCLUDEPATH += \
$${ROOT_WEBKIT_DIR}/Source/WebKit/qt/WebCoreSupport \
$${ROOT_WEBKIT_DIR}/Source/WTF
-QT = core gui network testlib webkit widgets
+QT = core gui network testlib webkitwidgets widgets
have?(QTPRINTSUPPORT): QT += printsupport
macx: QT += xml
diff --git a/Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp b/Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp
index f5e7fc159..260360142 100644
--- a/Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp
+++ b/Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp
@@ -57,10 +57,10 @@
#include <wtf/Assertions.h>
-void messageHandler(QtMsgType type, const char *message)
+void messageHandler(QtMsgType type, const QMessageLogContext&, const QString &message)
{
- if (type == QtCriticalMsg) {
- fprintf(stderr, "%s\n", message);
+ if (type == QtCriticalMsg || type == QtFatalMsg) {
+ fprintf(stderr, "%s\n", qPrintable(message));
return;
}
// do nothing
@@ -113,7 +113,7 @@ int main(int argc, char* argv[])
// Has to be done before QApplication is constructed in case
// QApplication itself produces debug output.
if (suppressQtDebugOutput)
- qInstallMsgHandler(messageHandler);
+ qInstallMessageHandler(messageHandler);
WebKit::initializeTestFonts();
diff --git a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
index 46120a7b0..0d28cbcc1 100755
--- a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
+++ b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
@@ -471,6 +471,8 @@ DumpRenderTree::DumpRenderTree()
DumpRenderTreeSupportQt::setDumpRenderTreeModeEnabled(true);
DumpRenderTreeSupportQt::setInteractiveFormValidationEnabled(webPage(), true);
+ DumpRenderTreeSupportQt::enableMockScrollbars();
+
QFocusEvent event(QEvent::FocusIn, Qt::ActiveWindowFocusReason);
QApplication::sendEvent(m_mainView, &event);
}
@@ -947,6 +949,23 @@ void DumpRenderTree::dump()
} else
image = DumpRenderTreeSupportQt::paintPagesWithBoundaries(mainFrame);
+ if (DumpRenderTreeSupportQt::trackRepaintRects(m_page->mainFrame())) {
+ QVector<QRect> repaintRects;
+ DumpRenderTreeSupportQt::getTrackedRepaintRects(m_page->mainFrame(), repaintRects);
+ QImage mask(image.size(), image.format());
+ mask.fill(QColor(0, 0, 0, 0.66 * 255));
+
+ QPainter maskPainter(&mask);
+ maskPainter.setCompositionMode(QPainter::CompositionMode_Source);
+ for (int i = 0; i < repaintRects.size(); ++i)
+ maskPainter.fillRect(repaintRects[i], Qt::transparent);
+
+ QPainter painter(&image);
+ painter.drawImage(image.rect(), mask);
+
+ DumpRenderTreeSupportQt::setTrackRepaintRects(m_page->mainFrame(), false);
+ }
+
QCryptographicHash hash(QCryptographicHash::Md5);
for (int row = 0; row < image.height(); ++row)
hash.addData(reinterpret_cast<const char*>(image.scanLine(row)), image.width() * 4);
diff --git a/Tools/DumpRenderTree/qt/EventSenderQt.cpp b/Tools/DumpRenderTree/qt/EventSenderQt.cpp
index f0c64c369..fe1e96b67 100644
--- a/Tools/DumpRenderTree/qt/EventSenderQt.cpp
+++ b/Tools/DumpRenderTree/qt/EventSenderQt.cpp
@@ -72,6 +72,7 @@ EventSender::EventSender(QWebPage* parent)
startOfQueue = 0;
m_eventLoop = 0;
m_currentButton = 0;
+ m_currentDragActionsAllowed = 0;
resetClickCount();
m_page->view()->installEventFilter(this);
// This is a hack that works because we normally scroll 60 pixels (3*20) per tick, but Apple scrolls 120.
@@ -184,6 +185,13 @@ void EventSender::mouseUp(int button)
}
sendOrQueueEvent(event);
+
+ if (m_currentDragData.urls().isEmpty())
+ return;
+
+ event = new QDropEvent(m_mousePos, m_currentDragActionsAllowed, &m_currentDragData, m_mouseButtons, Qt::NoModifier);
+ sendEvent(m_page, event);
+ m_currentDragData.clear();
}
void EventSender::mouseMoveTo(int x, int y)
@@ -201,6 +209,31 @@ void EventSender::mouseMoveTo(int x, int y)
}
sendOrQueueEvent(event);
+
+ if (m_currentDragData.urls().isEmpty())
+ return;
+
+ Qt::MouseButtons mouseButtons = m_mouseButtons | Qt::LeftButton;
+ event = new QDragMoveEvent(m_mousePos, m_currentDragActionsAllowed, &m_currentDragData, mouseButtons, Qt::NoModifier);
+ sendEvent(m_page, event);
+}
+
+// Simulates a mouse down event for drag without sending an actual mouse down event.
+void EventSender::beginDragWithFiles(const QStringList& files)
+{
+ m_currentDragData.clear();
+ QList<QUrl> fileUrls;
+ QUrl baseUrl = m_page->mainFrame()->baseUrl();
+ foreach (const QString& file, files) {
+ QUrl resolvedUrl = baseUrl.resolved(file);
+ fileUrls.append(resolvedUrl);
+ }
+
+ m_currentDragData.setUrls(fileUrls);
+ m_currentDragActionsAllowed = Qt::CopyAction;
+ Qt::MouseButtons mouseButtons = m_mouseButtons | Qt::LeftButton;
+ QDragEnterEvent* event = new QDragEnterEvent(m_mousePos, m_currentDragActionsAllowed, &m_currentDragData, mouseButtons, Qt::NoModifier);
+ sendEvent(m_page, event);
}
#ifndef QT_NO_WHEELEVENT
diff --git a/Tools/DumpRenderTree/qt/EventSenderQt.h b/Tools/DumpRenderTree/qt/EventSenderQt.h
index 8a4d9362a..e6d9257d2 100644
--- a/Tools/DumpRenderTree/qt/EventSenderQt.h
+++ b/Tools/DumpRenderTree/qt/EventSenderQt.h
@@ -37,12 +37,14 @@
#include <QEvent>
#include <QEventLoop>
#include <QGesture>
+#include <QMimeData>
#include <QMouseEvent>
#include <QObject>
#include <QPoint>
#include <QString>
#include <QStringList>
#include <QTouchEvent>
+#include <Qt>
#include <qwebpage.h>
#include <qwebframe.h>
@@ -87,6 +89,7 @@ public Q_SLOTS:
#ifndef QT_NO_GESTURES
void gestureTap(int x, int y);
#endif
+ void beginDragWithFiles(const QStringList& files);
protected:
void timerEvent(QTimerEvent*);
@@ -111,6 +114,8 @@ private:
int m_currentButton;
bool m_mouseButtonPressed;
bool m_drag;
+ QMimeData m_currentDragData;
+ Qt::DropActions m_currentDragActionsAllowed;
QEventLoop* m_eventLoop;
QWebFrame* frameUnderMouse() const;
QBasicTimer m_clickTimer;
diff --git a/Tools/DumpRenderTree/qt/TestRunnerQt.cpp b/Tools/DumpRenderTree/qt/TestRunnerQt.cpp
index 9a92013ed..81f781430 100644
--- a/Tools/DumpRenderTree/qt/TestRunnerQt.cpp
+++ b/Tools/DumpRenderTree/qt/TestRunnerQt.cpp
@@ -236,6 +236,7 @@ void TestRunner::simulateLegacyWebNotificationClick(const QString& title)
void TestRunner::display()
{
+ DumpRenderTreeSupportQt::setTrackRepaintRects(m_topLoadingFrame, true);
emit showPage();
}
@@ -677,6 +678,8 @@ void TestRunner::overridePreference(const QString& name, const QVariant& value)
settings->setAttribute(QWebSettings::HyperlinkAuditingEnabled, value.toBool());
else if (name == "WebKitAcceleratedCompositingEnabled")
settings->setAttribute(QWebSettings::AcceleratedCompositingEnabled, value.toBool());
+ else if (name == "WebKitDisplayImagesKey")
+ settings->setAttribute(QWebSettings::AutoLoadImages, value.toBool());
else
printf("ERROR: TestRunner::overridePreference() does not support the '%s' preference\n",
name.toLatin1().data());
@@ -938,11 +941,6 @@ void TestRunner::setAutomaticLinkDetectionEnabled(bool)
// FIXME: Implement this.
}
-QString TestRunner::layerTreeAsText()
-{
- return DumpRenderTreeSupportQt::layerTreeAsText(m_drt->webPage()->mainFrame());
-}
-
void TestRunner::setTextDirection(const QString& directionName)
{
if (directionName == "auto")
diff --git a/Tools/DumpRenderTree/qt/TestRunnerQt.h b/Tools/DumpRenderTree/qt/TestRunnerQt.h
index 311bcd9de..9c58f1d83 100644
--- a/Tools/DumpRenderTree/qt/TestRunnerQt.h
+++ b/Tools/DumpRenderTree/qt/TestRunnerQt.h
@@ -270,7 +270,6 @@ public Q_SLOTS:
long long localStorageDiskUsageForOrigin(const QString& originIdentifier);
void observeStorageTrackerNotifications(unsigned number);
void syncLocalStorage();
- QString layerTreeAsText();
void setTextDirection(const QString& directionName);
void goBack();
void setDefersLoading(bool);
diff --git a/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp b/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp
index 9e76c8dda..995c5f115 100644
--- a/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp
+++ b/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp
@@ -58,7 +58,7 @@ AccessibilityController::~AccessibilityController()
UnhookWinEvent(m_notificationsEventHook);
for (HashMap<PlatformUIElement, JSObjectRef>::iterator it = m_notificationListeners.begin(); it != m_notificationListeners.end(); ++it)
- JSValueUnprotect(frame->globalContext(), it->second);
+ JSValueUnprotect(frame->globalContext(), it->value);
}
AccessibilityUIElement AccessibilityController::elementAtPoint(int x, int y)
@@ -299,7 +299,7 @@ void AccessibilityController::removeNotificationListener()
void AccessibilityController::winNotificationReceived(PlatformUIElement element, const string& eventName)
{
for (HashMap<PlatformUIElement, JSObjectRef>::iterator it = m_notificationListeners.begin(); it != m_notificationListeners.end(); ++it) {
- COMPtr<IServiceProvider> thisServiceProvider(Query, it->first);
+ COMPtr<IServiceProvider> thisServiceProvider(Query, it->key);
if (!thisServiceProvider)
continue;
@@ -322,7 +322,7 @@ void AccessibilityController::winNotificationReceived(PlatformUIElement element,
JSRetainPtr<JSStringRef> jsNotification(Adopt, JSStringCreateWithUTF8CString(eventName.c_str()));
JSValueRef argument = JSValueMakeString(frame->globalContext(), jsNotification.get());
- JSObjectCallAsFunction(frame->globalContext(), it->second, NULL, 1, &argument, NULL);
+ JSObjectCallAsFunction(frame->globalContext(), it->value, 0, 1, &argument, 0);
}
}
diff --git a/Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp b/Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp
index 90b9ae0fc..6859780f3 100644
--- a/Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp
+++ b/Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp
@@ -66,7 +66,7 @@ wstring ResourceLoadDelegate::descriptionSuitableForTestResult(unsigned long ide
if (it == m_urlMap.end())
return L"<unknown>";
- return urlSuitableForTestResult(it->second);
+ return urlSuitableForTestResult(it->value);
}
wstring ResourceLoadDelegate::descriptionSuitableForTestResult(IWebURLRequest* request)
diff --git a/Tools/DumpRenderTree/win/TestRunnerWin.cpp b/Tools/DumpRenderTree/win/TestRunnerWin.cpp
index c4400fdcb..3e48ade65 100644
--- a/Tools/DumpRenderTree/win/TestRunnerWin.cpp
+++ b/Tools/DumpRenderTree/win/TestRunnerWin.cpp
@@ -179,21 +179,6 @@ JSValueRef TestRunner::computedStyleIncludingVisitedInfo(JSContextRef context, J
return JSValueMakeUndefined(context);
}
-JSRetainPtr<JSStringRef> TestRunner::layerTreeAsText() const
-{
- COMPtr<IWebFramePrivate> framePrivate(Query, frame);
- if (!framePrivate)
- return false;
-
- BSTR textBSTR = 0;
- HRESULT hr = framePrivate->layerTreeAsText(&textBSTR);
-
- wstring text(textBSTR, SysStringLen(textBSTR));
- SysFreeString(textBSTR);
- JSRetainPtr<JSStringRef> textValueJS(Adopt, JSStringCreateWithCharacters(text.data(), text.length()));
- return textValueJS;
-}
-
JSRetainPtr<JSStringRef> TestRunner::markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const
{
COMPtr<IWebView> webView;
@@ -414,7 +399,7 @@ void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bo
// See https://bugs.webkit.org/show_bug.cgi?id=30335.
}
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy)
+void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
{
// FIXME: Implement for Geolocation layout tests.
// See https://bugs.webkit.org/show_bug.cgi?id=28264.
@@ -1246,8 +1231,8 @@ unsigned worldIDForWorld(IWebScriptWorld* world)
{
WorldMap::const_iterator end = worldMap().end();
for (WorldMap::const_iterator it = worldMap().begin(); it != end; ++it) {
- if (it->second == world)
- return it->first;
+ if (it->value == world)
+ return it->key;
}
return 0;
@@ -1271,7 +1256,7 @@ void TestRunner::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef glo
if (FAILED(WebKitCreateInstance(__uuidof(WebScriptWorld), 0, __uuidof(world), reinterpret_cast<void**>(&world))))
return;
} else {
- COMPtr<IWebScriptWorld>& worldSlot = worldMap().add(worldID, 0).iterator->second;
+ COMPtr<IWebScriptWorld>& worldSlot = worldMap().add(worldID, 0).iterator->value;
if (!worldSlot && FAILED(WebKitCreateInstance(__uuidof(WebScriptWorld), 0, __uuidof(worldSlot), reinterpret_cast<void**>(&worldSlot))))
return;
world = worldSlot;
diff --git a/Tools/DumpRenderTree/wx/TestRunnerWx.cpp b/Tools/DumpRenderTree/wx/TestRunnerWx.cpp
index e780cfe52..35a9137e7 100644
--- a/Tools/DumpRenderTree/wx/TestRunnerWx.cpp
+++ b/Tools/DumpRenderTree/wx/TestRunnerWx.cpp
@@ -333,7 +333,7 @@ void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bo
// See https://bugs.webkit.org/show_bug.cgi?id=30335.
}
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy)
+void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
{
// FIXME: Implement for Geolocation layout tests.
// See https://bugs.webkit.org/show_bug.cgi?id=28264.
@@ -497,11 +497,6 @@ bool TestRunner::callShouldCloseOnWebView()
return false;
}
-JSRetainPtr<JSStringRef> TestRunner::layerTreeAsText() const
-{
- return 0;
-}
-
JSRetainPtr<JSStringRef> TestRunner::markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const
{
return 0;