diff options
Diffstat (limited to 'WebKitTools/DumpRenderTree/chromium')
12 files changed, 615 insertions, 283 deletions
diff --git a/WebKitTools/DumpRenderTree/chromium/EventSender.cpp b/WebKitTools/DumpRenderTree/chromium/EventSender.cpp index c2ba380..5f51553 100644 --- a/WebKitTools/DumpRenderTree/chromium/EventSender.cpp +++ b/WebKitTools/DumpRenderTree/chromium/EventSender.cpp @@ -250,34 +250,34 @@ EventSender::EventSender(TestShell* shell) // they will use when called by JavaScript. The actual binding of those // names to their methods will be done by calling bindToJavaScript() (defined // by CppBoundClass, the parent to EventSender). - bindMethod("mouseDown", &EventSender::mouseDown); - bindMethod("mouseUp", &EventSender::mouseUp); + bindMethod("addTouchPoint", &EventSender::addTouchPoint); + bindMethod("beginDragWithFiles", &EventSender::beginDragWithFiles); + bindMethod("cancelTouchPoint", &EventSender::cancelTouchPoint); + bindMethod("clearKillRing", &EventSender::clearKillRing); + bindMethod("clearTouchPoints", &EventSender::clearTouchPoints); bindMethod("contextClick", &EventSender::contextClick); - bindMethod("mouseMoveTo", &EventSender::mouseMoveTo); - bindMethod("leapForward", &EventSender::leapForward); - bindMethod("keyDown", &EventSender::keyDown); + bindMethod("continuousMouseScrollBy", &EventSender::continuousMouseScrollBy); bindMethod("dispatchMessage", &EventSender::dispatchMessage); bindMethod("enableDOMUIEventLogging", &EventSender::enableDOMUIEventLogging); bindMethod("fireKeyboardEventsToElement", &EventSender::fireKeyboardEventsToElement); - bindMethod("clearKillRing", &EventSender::clearKillRing); - bindMethod("textZoomIn", &EventSender::textZoomIn); - bindMethod("textZoomOut", &EventSender::textZoomOut); - bindMethod("zoomPageIn", &EventSender::zoomPageIn); - bindMethod("zoomPageOut", &EventSender::zoomPageOut); + bindMethod("keyDown", &EventSender::keyDown); + bindMethod("leapForward", &EventSender::leapForward); + bindMethod("mouseDown", &EventSender::mouseDown); + bindMethod("mouseMoveTo", &EventSender::mouseMoveTo); bindMethod("mouseScrollBy", &EventSender::mouseScrollBy); - bindMethod("continuousMouseScrollBy", &EventSender::continuousMouseScrollBy); - bindMethod("scheduleAsynchronousClick", &EventSender::scheduleAsynchronousClick); - bindMethod("beginDragWithFiles", &EventSender::beginDragWithFiles); - bindMethod("addTouchPoint", &EventSender::addTouchPoint); - bindMethod("cancelTouchPoint", &EventSender::cancelTouchPoint); - bindMethod("clearTouchPoints", &EventSender::clearTouchPoints); + bindMethod("mouseUp", &EventSender::mouseUp); bindMethod("releaseTouchPoint", &EventSender::releaseTouchPoint); - bindMethod("updateTouchPoint", &EventSender::updateTouchPoint); + bindMethod("scheduleAsynchronousClick", &EventSender::scheduleAsynchronousClick); bindMethod("setTouchModifier", &EventSender::setTouchModifier); + bindMethod("textZoomIn", &EventSender::textZoomIn); + bindMethod("textZoomOut", &EventSender::textZoomOut); bindMethod("touchCancel", &EventSender::touchCancel); bindMethod("touchEnd", &EventSender::touchEnd); bindMethod("touchMove", &EventSender::touchMove); bindMethod("touchStart", &EventSender::touchStart); + bindMethod("updateTouchPoint", &EventSender::updateTouchPoint); + bindMethod("zoomPageIn", &EventSender::zoomPageIn); + bindMethod("zoomPageOut", &EventSender::zoomPageOut); // When set to true (the default value), we batch mouse move and mouse up // events so we can simulate drag & drop. diff --git a/WebKitTools/DumpRenderTree/chromium/ImageDiff.cpp b/WebKitTools/DumpRenderTree/chromium/ImageDiff.cpp index d1adc3d..f2875dd 100644 --- a/WebKitTools/DumpRenderTree/chromium/ImageDiff.cpp +++ b/WebKitTools/DumpRenderTree/chromium/ImageDiff.cpp @@ -36,7 +36,7 @@ #include "config.h" -#include "gfx/codec/png_codec.h" +#include "webkit/support/webkit_support_gfx.h" #include <algorithm> #include <stdio.h> #include <string.h> @@ -49,7 +49,6 @@ #define PATH_MAX MAX_PATH #endif -using namespace gfx; using namespace std; // Causes the app to remain open, waiting for pairs of filenames on stdin. @@ -93,8 +92,7 @@ public: if (fread(source.get(), 1, byteLength, stdin) != byteLength) return false; - if (!PNGCodec::Decode(source.get(), byteLength, PNGCodec::FORMAT_RGBA, - &m_data, &m_width, &m_height)) { + if (!webkit_support::DecodePNG(source.get(), byteLength, &m_data, &m_width, &m_height)) { clear(); return false; } @@ -118,8 +116,7 @@ public: fclose(f); - if (!PNGCodec::Decode(&compressed[0], compressed.size(), - PNGCodec::FORMAT_RGBA, &m_data, &m_width, &m_height)) { + if (!webkit_support::DecodePNG(&compressed[0], compressed.size(), &m_data, &m_width, &m_height)) { clear(); return false; } @@ -353,8 +350,8 @@ int diffImages(const char* file1, const char* file2, const char* outFile) return statusSame; vector<unsigned char> pngData; - PNGCodec::Encode(diffImage.data(), PNGCodec::FORMAT_RGBA, diffImage.width(), - diffImage.height(), diffImage.width() * 4, false, &pngData); + webkit_support::EncodeRGBAPNG(diffImage.data(), diffImage.width(), diffImage.height(), + diffImage.width() * 4, &pngData); if (!writeFile(outFile, &pngData.front(), pngData.size())) return statusError; return statusDifferent; diff --git a/WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp b/WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp index 6f962bf..2c6c600 100644 --- a/WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp +++ b/WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp @@ -38,6 +38,7 @@ #include "public/WebAnimationController.h" #include "public/WebBindings.h" #include "public/WebConsoleMessage.h" +#include "public/WebData.h" #include "public/WebDeviceOrientation.h" #include "public/WebDeviceOrientationClientMock.h" #include "public/WebDocument.h" @@ -77,113 +78,112 @@ LayoutTestController::LayoutTestController(TestShell* shell) // they will use when called by JavaScript. The actual binding of those // names to their methods will be done by calling bindToJavaScript() (defined // by CppBoundClass, the parent to LayoutTestController). + bindMethod("addFileToPasteboardOnDrag", &LayoutTestController::addFileToPasteboardOnDrag); + bindMethod("addOriginAccessWhitelistEntry", &LayoutTestController::addOriginAccessWhitelistEntry); + bindMethod("addUserScript", &LayoutTestController::addUserScript); + bindMethod("addUserStyleSheet", &LayoutTestController::addUserStyleSheet); + bindMethod("clearAllDatabases", &LayoutTestController::clearAllDatabases); + bindMethod("closeWebInspector", &LayoutTestController::closeWebInspector); + bindMethod("counterValueForElementById", &LayoutTestController::counterValueForElementById); + bindMethod("disableImageLoading", &LayoutTestController::disableImageLoading); + bindMethod("display", &LayoutTestController::display); bindMethod("dumpAsText", &LayoutTestController::dumpAsText); - bindMethod("dumpChildFrameScrollPositions", &LayoutTestController::dumpChildFrameScrollPositions); + bindMethod("dumpBackForwardList", &LayoutTestController::dumpBackForwardList); bindMethod("dumpChildFramesAsText", &LayoutTestController::dumpChildFramesAsText); + bindMethod("dumpChildFrameScrollPositions", &LayoutTestController::dumpChildFrameScrollPositions); bindMethod("dumpDatabaseCallbacks", &LayoutTestController::dumpDatabaseCallbacks); bindMethod("dumpEditingCallbacks", &LayoutTestController::dumpEditingCallbacks); - bindMethod("dumpBackForwardList", &LayoutTestController::dumpBackForwardList); bindMethod("dumpFrameLoadCallbacks", &LayoutTestController::dumpFrameLoadCallbacks); bindMethod("dumpResourceLoadCallbacks", &LayoutTestController::dumpResourceLoadCallbacks); + bindMethod("dumpResourceResponseMIMETypes", &LayoutTestController::dumpResourceResponseMIMETypes); + bindMethod("dumpSelectionRect", &LayoutTestController::dumpSelectionRect); bindMethod("dumpStatusCallbacks", &LayoutTestController::dumpWindowStatusChanges); bindMethod("dumpTitleChanges", &LayoutTestController::dumpTitleChanges); - bindMethod("setAcceptsEditing", &LayoutTestController::setAcceptsEditing); - bindMethod("waitUntilDone", &LayoutTestController::waitUntilDone); + bindMethod("elementDoesAutoCompleteForElementWithId", &LayoutTestController::elementDoesAutoCompleteForElementWithId); + bindMethod("evaluateInWebInspector", &LayoutTestController::evaluateInWebInspector); + bindMethod("evaluateScriptInIsolatedWorld", &LayoutTestController::evaluateScriptInIsolatedWorld); + bindMethod("execCommand", &LayoutTestController::execCommand); + bindMethod("forceRedSelectionColors", &LayoutTestController::forceRedSelectionColors); + bindMethod("grantDesktopNotificationPermission", &LayoutTestController::grantDesktopNotificationPermission); + bindMethod("isCommandEnabled", &LayoutTestController::isCommandEnabled); + bindMethod("markerTextForListItem", &LayoutTestController::markerTextForListItem); bindMethod("notifyDone", &LayoutTestController::notifyDone); - bindMethod("queueReload", &LayoutTestController::queueReload); - bindMethod("queueLoadingScript", &LayoutTestController::queueLoadingScript); - bindMethod("queueNonLoadingScript", &LayoutTestController::queueNonLoadingScript); - bindMethod("queueLoad", &LayoutTestController::queueLoad); - bindMethod("queueBackNavigation", &LayoutTestController::queueBackNavigation); - bindMethod("queueForwardNavigation", &LayoutTestController::queueForwardNavigation); - bindMethod("windowCount", &LayoutTestController::windowCount); - bindMethod("setCanOpenWindows", &LayoutTestController::setCanOpenWindows); - bindMethod("setCloseRemainingWindowsWhenComplete", &LayoutTestController::setCloseRemainingWindowsWhenComplete); + bindMethod("numberOfActiveAnimations", &LayoutTestController::numberOfActiveAnimations); + bindMethod("numberOfPages", &LayoutTestController::numberOfPages); bindMethod("objCIdentityIsEqual", &LayoutTestController::objCIdentityIsEqual); - bindMethod("setAlwaysAcceptCookies", &LayoutTestController::setAlwaysAcceptCookies); - bindMethod("showWebInspector", &LayoutTestController::showWebInspector); - bindMethod("closeWebInspector", &LayoutTestController::closeWebInspector); - bindMethod("setWindowIsKey", &LayoutTestController::setWindowIsKey); - bindMethod("setTabKeyCyclesThroughElements", &LayoutTestController::setTabKeyCyclesThroughElements); - bindMethod("setUserStyleSheetLocation", &LayoutTestController::setUserStyleSheetLocation); - bindMethod("setUserStyleSheetEnabled", &LayoutTestController::setUserStyleSheetEnabled); - bindMethod("setAuthorAndUserStylesEnabled", &LayoutTestController::setAuthorAndUserStylesEnabled); + bindMethod("overridePreference", &LayoutTestController::overridePreference); + bindMethod("pageNumberForElementById", &LayoutTestController::pageNumberForElementById); bindMethod("pathToLocalResource", &LayoutTestController::pathToLocalResource); - bindMethod("addFileToPasteboardOnDrag", &LayoutTestController::addFileToPasteboardOnDrag); - bindMethod("execCommand", &LayoutTestController::execCommand); - bindMethod("isCommandEnabled", &LayoutTestController::isCommandEnabled); - bindMethod("setPopupBlockingEnabled", &LayoutTestController::setPopupBlockingEnabled); - bindMethod("setStopProvisionalFrameLoads", &LayoutTestController::setStopProvisionalFrameLoads); - bindMethod("setSmartInsertDeleteEnabled", &LayoutTestController::setSmartInsertDeleteEnabled); - bindMethod("setSelectTrailingWhitespaceEnabled", &LayoutTestController::setSelectTrailingWhitespaceEnabled); bindMethod("pauseAnimationAtTimeOnElementWithId", &LayoutTestController::pauseAnimationAtTimeOnElementWithId); bindMethod("pauseTransitionAtTimeOnElementWithId", &LayoutTestController::pauseTransitionAtTimeOnElementWithId); - bindMethod("elementDoesAutoCompleteForElementWithId", &LayoutTestController::elementDoesAutoCompleteForElementWithId); - bindMethod("numberOfActiveAnimations", &LayoutTestController::numberOfActiveAnimations); - bindMethod("suspendAnimations", &LayoutTestController::suspendAnimations); + bindMethod("queueBackNavigation", &LayoutTestController::queueBackNavigation); + bindMethod("queueForwardNavigation", &LayoutTestController::queueForwardNavigation); + bindMethod("queueLoadingScript", &LayoutTestController::queueLoadingScript); + bindMethod("queueLoad", &LayoutTestController::queueLoad); + bindMethod("queueLoadHTMLString", &LayoutTestController::queueLoadHTMLString); + bindMethod("queueNonLoadingScript", &LayoutTestController::queueNonLoadingScript); + bindMethod("queueReload", &LayoutTestController::queueReload); + bindMethod("removeOriginAccessWhitelistEntry", &LayoutTestController::removeOriginAccessWhitelistEntry); + bindMethod("repaintSweepHorizontally", &LayoutTestController::repaintSweepHorizontally); bindMethod("resumeAnimations", &LayoutTestController::resumeAnimations); - bindMethod("disableImageLoading", &LayoutTestController::disableImageLoading); - bindMethod("setIconDatabaseEnabled", &LayoutTestController::setIconDatabaseEnabled); + bindMethod("setAcceptsEditing", &LayoutTestController::setAcceptsEditing); + bindMethod("setAllowFileAccessFromFileURLs", &LayoutTestController::setAllowFileAccessFromFileURLs); + bindMethod("setAllowUniversalAccessFromFileURLs", &LayoutTestController::setAllowUniversalAccessFromFileURLs); + bindMethod("setAlwaysAcceptCookies", &LayoutTestController::setAlwaysAcceptCookies); + bindMethod("setAuthorAndUserStylesEnabled", &LayoutTestController::setAuthorAndUserStylesEnabled); + bindMethod("setCanOpenWindows", &LayoutTestController::setCanOpenWindows); + bindMethod("setCloseRemainingWindowsWhenComplete", &LayoutTestController::setCloseRemainingWindowsWhenComplete); bindMethod("setCustomPolicyDelegate", &LayoutTestController::setCustomPolicyDelegate); + bindMethod("setDatabaseQuota", &LayoutTestController::setDatabaseQuota); + bindMethod("setDeferMainResourceDataLoad", &LayoutTestController::setDeferMainResourceDataLoad); + bindMethod("setDomainRelaxationForbiddenForURLScheme", &LayoutTestController::setDomainRelaxationForbiddenForURLScheme); + bindMethod("setEditingBehavior", &LayoutTestController::setEditingBehavior); + bindMethod("setGeolocationPermission", &LayoutTestController::setGeolocationPermission); + bindMethod("setIconDatabaseEnabled", &LayoutTestController::setIconDatabaseEnabled); + bindMethod("setJavaScriptCanAccessClipboard", &LayoutTestController::setJavaScriptCanAccessClipboard); + bindMethod("setMockDeviceOrientation", &LayoutTestController::setMockDeviceOrientation); + bindMethod("setMockGeolocationError", &LayoutTestController::setMockGeolocationError); + bindMethod("setMockGeolocationPosition", &LayoutTestController::setMockGeolocationPosition); + bindMethod("setMockSpeechInputResult", &LayoutTestController::setMockSpeechInputResult); + bindMethod("setPopupBlockingEnabled", &LayoutTestController::setPopupBlockingEnabled); + bindMethod("setPOSIXLocale", &LayoutTestController::setPOSIXLocale); bindMethod("setScrollbarPolicy", &LayoutTestController::setScrollbarPolicy); - bindMethod("waitForPolicyDelegate", &LayoutTestController::waitForPolicyDelegate); + bindMethod("setSelectTrailingWhitespaceEnabled", &LayoutTestController::setSelectTrailingWhitespaceEnabled); + bindMethod("setSmartInsertDeleteEnabled", &LayoutTestController::setSmartInsertDeleteEnabled); + bindMethod("setStopProvisionalFrameLoads", &LayoutTestController::setStopProvisionalFrameLoads); + bindMethod("setTabKeyCyclesThroughElements", &LayoutTestController::setTabKeyCyclesThroughElements); + bindMethod("setTimelineProfilingEnabled", &LayoutTestController::setTimelineProfilingEnabled); + bindMethod("setUserStyleSheetEnabled", &LayoutTestController::setUserStyleSheetEnabled); + bindMethod("setUserStyleSheetLocation", &LayoutTestController::setUserStyleSheetLocation); bindMethod("setWillSendRequestClearHeader", &LayoutTestController::setWillSendRequestClearHeader); - bindMethod("setWillSendRequestReturnsNullOnRedirect", &LayoutTestController::setWillSendRequestReturnsNullOnRedirect); bindMethod("setWillSendRequestReturnsNull", &LayoutTestController::setWillSendRequestReturnsNull); - bindMethod("addOriginAccessWhitelistEntry", &LayoutTestController::addOriginAccessWhitelistEntry); - bindMethod("removeOriginAccessWhitelistEntry", &LayoutTestController::removeOriginAccessWhitelistEntry); - bindMethod("clearAllDatabases", &LayoutTestController::clearAllDatabases); - bindMethod("setDatabaseQuota", &LayoutTestController::setDatabaseQuota); - bindMethod("setPOSIXLocale", &LayoutTestController::setPOSIXLocale); - bindMethod("counterValueForElementById", &LayoutTestController::counterValueForElementById); - bindMethod("addUserScript", &LayoutTestController::addUserScript); - bindMethod("addUserStyleSheet", &LayoutTestController::addUserStyleSheet); - bindMethod("pageNumberForElementById", &LayoutTestController::pageNumberForElementById); - bindMethod("numberOfPages", &LayoutTestController::numberOfPages); - bindMethod("dumpSelectionRect", &LayoutTestController::dumpSelectionRect); - bindMethod("grantDesktopNotificationPermission", &LayoutTestController::grantDesktopNotificationPermission); + bindMethod("setWillSendRequestReturnsNullOnRedirect", &LayoutTestController::setWillSendRequestReturnsNullOnRedirect); + bindMethod("setWindowIsKey", &LayoutTestController::setWindowIsKey); + bindMethod("setXSSAuditorEnabled", &LayoutTestController::setXSSAuditorEnabled); + bindMethod("showWebInspector", &LayoutTestController::showWebInspector); bindMethod("simulateDesktopNotificationClick", &LayoutTestController::simulateDesktopNotificationClick); + bindMethod("suspendAnimations", &LayoutTestController::suspendAnimations); + bindMethod("testRepaint", &LayoutTestController::testRepaint); + bindMethod("waitForPolicyDelegate", &LayoutTestController::waitForPolicyDelegate); + bindMethod("waitUntilDone", &LayoutTestController::waitUntilDone); + bindMethod("windowCount", &LayoutTestController::windowCount); // The following are stubs. - bindMethod("dumpAsWebArchive", &LayoutTestController::dumpAsWebArchive); - bindMethod("setMainFrameIsFirstResponder", &LayoutTestController::setMainFrameIsFirstResponder); - bindMethod("dumpSelectionRect", &LayoutTestController::dumpSelectionRect); - bindMethod("display", &LayoutTestController::display); - bindMethod("testRepaint", &LayoutTestController::testRepaint); - bindMethod("repaintSweepHorizontally", &LayoutTestController::repaintSweepHorizontally); - bindMethod("clearBackForwardList", &LayoutTestController::clearBackForwardList); - bindMethod("keepWebHistory", &LayoutTestController::keepWebHistory); - bindMethod("storeWebScriptObject", &LayoutTestController::storeWebScriptObject); + bindMethod("abortModal", &LayoutTestController::abortModal); bindMethod("accessStoredWebScriptObject", &LayoutTestController::accessStoredWebScriptObject); - bindMethod("objCClassNameOf", &LayoutTestController::objCClassNameOf); bindMethod("addDisallowedURL", &LayoutTestController::addDisallowedURL); bindMethod("callShouldCloseOnWebView", &LayoutTestController::callShouldCloseOnWebView); + bindMethod("clearAllApplicationCaches", &LayoutTestController::clearAllApplicationCaches); + bindMethod("clearBackForwardList", &LayoutTestController::clearBackForwardList); + bindMethod("dumpAsWebArchive", &LayoutTestController::dumpAsWebArchive); + bindMethod("keepWebHistory", &LayoutTestController::keepWebHistory); + bindMethod("objCClassNameOf", &LayoutTestController::objCClassNameOf); + bindMethod("setApplicationCacheOriginQuota", &LayoutTestController::setApplicationCacheOriginQuota); bindMethod("setCallCloseOnWebViews", &LayoutTestController::setCallCloseOnWebViews); + bindMethod("setMainFrameIsFirstResponder", &LayoutTestController::setMainFrameIsFirstResponder); bindMethod("setPrivateBrowsingEnabled", &LayoutTestController::setPrivateBrowsingEnabled); bindMethod("setUseDashboardCompatibilityMode", &LayoutTestController::setUseDashboardCompatibilityMode); - bindMethod("clearAllApplicationCaches", &LayoutTestController::clearAllApplicationCaches); - bindMethod("setApplicationCacheOriginQuota", &LayoutTestController::setApplicationCacheOriginQuota); - - bindMethod("setJavaScriptCanAccessClipboard", &LayoutTestController::setJavaScriptCanAccessClipboard); - bindMethod("setXSSAuditorEnabled", &LayoutTestController::setXSSAuditorEnabled); - bindMethod("evaluateScriptInIsolatedWorld", &LayoutTestController::evaluateScriptInIsolatedWorld); - bindMethod("overridePreference", &LayoutTestController::overridePreference); - bindMethod("setAllowUniversalAccessFromFileURLs", &LayoutTestController::setAllowUniversalAccessFromFileURLs); - bindMethod("setAllowFileAccessFromFileURLs", &LayoutTestController::setAllowFileAccessFromFileURLs); - bindMethod("setTimelineProfilingEnabled", &LayoutTestController::setTimelineProfilingEnabled); - bindMethod("evaluateInWebInspector", &LayoutTestController::evaluateInWebInspector); - bindMethod("forceRedSelectionColors", &LayoutTestController::forceRedSelectionColors); - bindMethod("setEditingBehavior", &LayoutTestController::setEditingBehavior); - - bindMethod("setMockDeviceOrientation", &LayoutTestController::setMockDeviceOrientation); - - bindMethod("setGeolocationPermission", &LayoutTestController::setGeolocationPermission); - bindMethod("setMockGeolocationPosition", &LayoutTestController::setMockGeolocationPosition); - bindMethod("setMockGeolocationError", &LayoutTestController::setMockGeolocationError); - bindMethod("abortModal", &LayoutTestController::abortModal); - bindMethod("setMockSpeechInputResult", &LayoutTestController::setMockSpeechInputResult); - - bindMethod("markerTextForListItem", &LayoutTestController::markerTextForListItem); + bindMethod("storeWebScriptObject", &LayoutTestController::storeWebScriptObject); // The fallback method is called when an unknown method is invoked. bindFallbackMethod(&LayoutTestController::fallbackMethod); @@ -291,6 +291,12 @@ void LayoutTestController::dumpResourceLoadCallbacks(const CppArgumentList&, Cpp result->setNull(); } +void LayoutTestController::dumpResourceResponseMIMETypes(const CppArgumentList&, CppVariant* result) +{ + m_dumpResourceResponseMIMETypes = true; + result->setNull(); +} + void LayoutTestController::dumpChildFrameScrollPositions(const CppArgumentList&, CppVariant* result) { m_dumpChildFrameScrollPositions = true; @@ -460,6 +466,34 @@ void LayoutTestController::queueLoad(const CppArgumentList& arguments, CppVarian result->setNull(); } +class WorkItemLoadHTMLString : public LayoutTestController::WorkItem { +public: + WorkItemLoadHTMLString(const std::string& html, const WebURL& baseURL) + : m_html(html) + , m_baseURL(baseURL) {} + bool run(TestShell* shell) + { + shell->webView()->mainFrame()->loadHTMLString( + WebKit::WebData(m_html.data(), m_html.length()), m_baseURL); + return true; + } +private: + std::string m_html; + WebURL m_baseURL; +}; + +void LayoutTestController::queueLoadHTMLString(const CppArgumentList& arguments, CppVariant* result) +{ + if (arguments.size() > 0 && arguments[0].isString()) { + string html = arguments[0].toString(); + WebURL baseURL; + if (arguments.size() > 1 && arguments[1].isString()) + baseURL = WebURL(GURL(arguments[1].toString())); + m_workQueue.addWork(new WorkItemLoadHTMLString(html, baseURL)); + } + result->setNull(); +} + void LayoutTestController::objCIdentityIsEqual(const CppArgumentList& arguments, CppVariant* result) { if (arguments.size() < 2) { @@ -486,6 +520,7 @@ void LayoutTestController::reset() m_dumpEditingCallbacks = false; m_dumpFrameLoadCallbacks = false; m_dumpResourceLoadCallbacks = false; + m_dumpResourceResponseMIMETypes = false; m_dumpBackForwardList = false; m_dumpChildFrameScrollPositions = false; m_dumpChildFramesAsText = false; @@ -500,6 +535,7 @@ void LayoutTestController::reset() m_sweepHorizontally = false; m_shouldAddFileToPasteboard = false; m_stopProvisionalFrameLoads = false; + m_deferMainResourceDataLoad = true; m_globalFlag.set(false); m_webHistoryItemCount.set(0); m_userStyleSheetLocation = WebURL(); @@ -591,24 +627,30 @@ void LayoutTestController::setWindowIsKey(const CppArgumentList& arguments, CppV void LayoutTestController::setUserStyleSheetEnabled(const CppArgumentList& arguments, CppVariant* result) { - if (arguments.size() > 0 && arguments[0].isBool()) - m_shell->webView()->settings()->setUserStyleSheetLocation(arguments[0].value.boolValue ? m_userStyleSheetLocation : WebURL()); + if (arguments.size() > 0 && arguments[0].isBool()) { + m_shell->preferences()->userStyleSheetLocation = arguments[0].value.boolValue ? m_userStyleSheetLocation : WebURL(); + m_shell->applyPreferences(); + } result->setNull(); } void LayoutTestController::setUserStyleSheetLocation(const CppArgumentList& arguments, CppVariant* result) { if (arguments.size() > 0 && arguments[0].isString()) { - m_userStyleSheetLocation = webkit_support::RewriteLayoutTestsURL(arguments[0].toString()); - m_shell->webView()->settings()->setUserStyleSheetLocation(m_userStyleSheetLocation); + m_userStyleSheetLocation = webkit_support::LocalFileToDataURL( + webkit_support::RewriteLayoutTestsURL(arguments[0].toString())); + m_shell->preferences()->userStyleSheetLocation = m_userStyleSheetLocation; + m_shell->applyPreferences(); } result->setNull(); } void LayoutTestController::setAuthorAndUserStylesEnabled(const CppArgumentList& arguments, CppVariant* result) { - if (arguments.size() > 0 && arguments[0].isBool()) - m_shell->webView()->settings()->setAuthorAndUserStylesEnabled(arguments[0].value.boolValue); + if (arguments.size() > 0 && arguments[0].isBool()) { + m_shell->preferences()->authorAndUserStylesEnabled = arguments[0].value.boolValue; + m_shell->applyPreferences(); + } result->setNull(); } @@ -645,7 +687,8 @@ void LayoutTestController::setPopupBlockingEnabled(const CppArgumentList& argume { if (arguments.size() > 0 && arguments[0].isBool()) { bool blockPopups = arguments[0].toBoolean(); - m_shell->webView()->settings()->setJavaScriptCanOpenWindowsAutomatically(!blockPopups); + m_shell->preferences()->javaScriptCanOpenWindowsAutomatically = !blockPopups; + m_shell->applyPreferences(); } result->setNull(); } @@ -918,7 +961,8 @@ void LayoutTestController::resumeAnimations(const CppArgumentList&, CppVariant* void LayoutTestController::disableImageLoading(const CppArgumentList&, CppVariant* result) { - m_shell->webView()->settings()->setLoadsImagesAutomatically(false); + m_shell->preferences()->loadsImagesAutomatically = false; + m_shell->applyPreferences(); result->setNull(); } @@ -955,6 +999,19 @@ void LayoutTestController::simulateDesktopNotificationClick(const CppArgumentLis result->set(false); } +void LayoutTestController::setDomainRelaxationForbiddenForURLScheme(const CppArgumentList& arguments, CppVariant* result) +{ + if (arguments.size() != 2 || !arguments[0].isBool() || !arguments[1].isString()) + return; + m_shell->webView()->setDomainRelaxationForbidden(cppVariantToBool(arguments[0]), cppVariantToWebString(arguments[1])); +} + +void LayoutTestController::setDeferMainResourceDataLoad(const CppArgumentList& arguments, CppVariant* result) +{ + if (arguments.size() == 1) + m_deferMainResourceDataLoad = cppVariantToBool(arguments[0]); +} + // // Unimplemented stubs // @@ -1027,6 +1084,7 @@ void LayoutTestController::addDisallowedURL(const CppArgumentList& arguments, Cp { result->setNull(); } + void LayoutTestController::setCallCloseOnWebViews(const CppArgumentList& arguments, CppVariant* result) { result->setNull(); @@ -1039,15 +1097,19 @@ void LayoutTestController::setPrivateBrowsingEnabled(const CppArgumentList& argu void LayoutTestController::setJavaScriptCanAccessClipboard(const CppArgumentList& arguments, CppVariant* result) { - if (arguments.size() > 0 && arguments[0].isBool()) - m_shell->webView()->settings()->setJavaScriptCanAccessClipboard(arguments[0].value.boolValue); + if (arguments.size() > 0 && arguments[0].isBool()) { + m_shell->preferences()->javaScriptCanAccessClipboard = arguments[0].value.boolValue; + m_shell->applyPreferences(); + } result->setNull(); } void LayoutTestController::setXSSAuditorEnabled(const CppArgumentList& arguments, CppVariant* result) { - if (arguments.size() > 0 && arguments[0].isBool()) - m_shell->webView()->settings()->setXSSAuditorEnabled(arguments[0].value.boolValue); + if (arguments.size() > 0 && arguments[0].isBool()) { + m_shell->preferences()->XSSAuditorEnabled = arguments[0].value.boolValue; + m_shell->applyPreferences(); + } result->setNull(); } @@ -1064,15 +1126,19 @@ void LayoutTestController::evaluateScriptInIsolatedWorld(const CppArgumentList& void LayoutTestController::setAllowUniversalAccessFromFileURLs(const CppArgumentList& arguments, CppVariant* result) { - if (arguments.size() > 0 && arguments[0].isBool()) - m_shell->webView()->settings()->setAllowUniversalAccessFromFileURLs(arguments[0].value.boolValue); + if (arguments.size() > 0 && arguments[0].isBool()) { + m_shell->preferences()->allowUniversalAccessFromFileURLs = arguments[0].value.boolValue; + m_shell->applyPreferences(); + } result->setNull(); } void LayoutTestController::setAllowFileAccessFromFileURLs(const CppArgumentList& arguments, CppVariant* result) { - if (arguments.size() > 0 && arguments[0].isBool()) - m_shell->webView()->settings()->setAllowFileAccessFromFileURLs(arguments[0].value.boolValue); + if (arguments.size() > 0 && arguments[0].isBool()) { + m_shell->preferences()->allowFileAccessFromFileURLs = arguments[0].value.boolValue; + m_shell->applyPreferences(); + } result->setNull(); } @@ -1128,68 +1194,69 @@ void LayoutTestController::overridePreference(const CppArgumentList& arguments, string key = arguments[0].toString(); CppVariant value = arguments[1]; - WebSettings* settings = m_shell->webView()->settings(); + WebPreferences* prefs = m_shell->preferences(); if (key == "WebKitStandardFont") - settings->setStandardFontFamily(cppVariantToWebString(value)); + prefs->standardFontFamily = cppVariantToWebString(value); else if (key == "WebKitFixedFont") - settings->setFixedFontFamily(cppVariantToWebString(value)); + prefs->fixedFontFamily = cppVariantToWebString(value); else if (key == "WebKitSerifFont") - settings->setSerifFontFamily(cppVariantToWebString(value)); + prefs->serifFontFamily = cppVariantToWebString(value); else if (key == "WebKitSansSerifFont") - settings->setSansSerifFontFamily(cppVariantToWebString(value)); + prefs->sansSerifFontFamily = cppVariantToWebString(value); else if (key == "WebKitCursiveFont") - settings->setCursiveFontFamily(cppVariantToWebString(value)); + prefs->cursiveFontFamily = cppVariantToWebString(value); else if (key == "WebKitFantasyFont") - settings->setFantasyFontFamily(cppVariantToWebString(value)); + prefs->fantasyFontFamily = cppVariantToWebString(value); else if (key == "WebKitDefaultFontSize") - settings->setDefaultFontSize(cppVariantToInt32(value)); + prefs->defaultFontSize = cppVariantToInt32(value); else if (key == "WebKitDefaultFixedFontSize") - settings->setDefaultFixedFontSize(cppVariantToInt32(value)); + prefs->defaultFixedFontSize = cppVariantToInt32(value); else if (key == "WebKitMinimumFontSize") - settings->setMinimumFontSize(cppVariantToInt32(value)); + prefs->minimumFontSize = cppVariantToInt32(value); else if (key == "WebKitMinimumLogicalFontSize") - settings->setMinimumLogicalFontSize(cppVariantToInt32(value)); + prefs->minimumLogicalFontSize = cppVariantToInt32(value); else if (key == "WebKitDefaultTextEncodingName") - settings->setDefaultTextEncodingName(cppVariantToWebString(value)); + prefs->defaultTextEncodingName = cppVariantToWebString(value); else if (key == "WebKitJavaScriptEnabled") - settings->setJavaScriptEnabled(cppVariantToBool(value)); + prefs->javaScriptEnabled = cppVariantToBool(value); else if (key == "WebKitWebSecurityEnabled") - settings->setWebSecurityEnabled(cppVariantToBool(value)); + prefs->webSecurityEnabled = cppVariantToBool(value); else if (key == "WebKitJavaScriptCanOpenWindowsAutomatically") - settings->setJavaScriptCanOpenWindowsAutomatically(cppVariantToBool(value)); + prefs->javaScriptCanOpenWindowsAutomatically = cppVariantToBool(value); else if (key == "WebKitDisplayImagesKey") - settings->setLoadsImagesAutomatically(cppVariantToBool(value)); + prefs->loadsImagesAutomatically = cppVariantToBool(value); else if (key == "WebKitPluginsEnabled") - settings->setPluginsEnabled(cppVariantToBool(value)); + prefs->pluginsEnabled = cppVariantToBool(value); else if (key == "WebKitDOMPasteAllowedPreferenceKey") - settings->setDOMPasteAllowed(cppVariantToBool(value)); + prefs->DOMPasteAllowed = cppVariantToBool(value); else if (key == "WebKitDeveloperExtrasEnabledPreferenceKey") - settings->setDeveloperExtrasEnabled(cppVariantToBool(value)); + prefs->developerExtrasEnabled = cppVariantToBool(value); else if (key == "WebKitShrinksStandaloneImagesToFit") - settings->setShrinksStandaloneImagesToFit(cppVariantToBool(value)); + prefs->shrinksStandaloneImagesToFit = cppVariantToBool(value); else if (key == "WebKitTextAreasAreResizable") - settings->setTextAreasAreResizable(cppVariantToBool(value)); + prefs->textAreasAreResizable = cppVariantToBool(value); else if (key == "WebKitJavaEnabled") - settings->setJavaEnabled(cppVariantToBool(value)); + prefs->javaEnabled = cppVariantToBool(value); else if (key == "WebKitUsesPageCachePreferenceKey") - settings->setUsesPageCache(cppVariantToBool(value)); + prefs->usesPageCache = cppVariantToBool(value); else if (key == "WebKitJavaScriptCanAccessClipboard") - settings->setJavaScriptCanAccessClipboard(cppVariantToBool(value)); + prefs->javaScriptCanAccessClipboard = cppVariantToBool(value); else if (key == "WebKitXSSAuditorEnabled") - settings->setXSSAuditorEnabled(cppVariantToBool(value)); + prefs->XSSAuditorEnabled = cppVariantToBool(value); else if (key == "WebKitLocalStorageEnabledPreferenceKey") - settings->setLocalStorageEnabled(cppVariantToBool(value)); + prefs->localStorageEnabled = cppVariantToBool(value); else if (key == "WebKitOfflineWebApplicationCacheEnabled") - settings->setOfflineWebApplicationCacheEnabled(cppVariantToBool(value)); + prefs->offlineWebApplicationCacheEnabled = cppVariantToBool(value); else if (key == "WebKitTabToLinksPreferenceKey") - m_shell->webView()->setTabsToLinks(cppVariantToBool(value)); + prefs->tabsToLinks = cppVariantToBool(value); else if (key == "WebKitWebGLEnabled") - settings->setExperimentalWebGLEnabled(cppVariantToBool(value)); + prefs->experimentalWebGLEnabled = cppVariantToBool(value); else { string message("Invalid name for preference: "); message.append(key); logErrorToConsole(message); } + m_shell->applyPreferences(); } void LayoutTestController::fallbackMethod(const CppArgumentList&, CppVariant* result) @@ -1381,13 +1448,14 @@ void LayoutTestController::addUserStyleSheet(const CppArgumentList& arguments, C void LayoutTestController::setEditingBehavior(const CppArgumentList& arguments, CppVariant* results) { - WebSettings* settings = m_shell->webView()->settings(); string key = arguments[0].toString(); - if (key == "mac") - settings->setEditingBehavior(WebSettings::EditingBehaviorMac); - else if (key == "win") - settings->setEditingBehavior(WebSettings::EditingBehaviorWin); - else + if (key == "mac") { + m_shell->preferences()->editingBehavior = WebSettings::EditingBehaviorMac; + m_shell->applyPreferences(); + } else if (key == "win") { + m_shell->preferences()->editingBehavior = WebSettings::EditingBehaviorWin; + m_shell->applyPreferences(); + } else logErrorToConsole("Passed invalid editing behavior. Should be 'mac' or 'win'."); } @@ -1397,7 +1465,7 @@ void LayoutTestController::setMockDeviceOrientation(const CppArgumentList& argum if (arguments.size() < 6 || !arguments[0].isBool() || !arguments[1].isNumber() || !arguments[2].isBool() || !arguments[3].isNumber() || !arguments[4].isBool() || !arguments[5].isNumber()) return; - WebKit::WebDeviceOrientation orientation(arguments[0].toBoolean(), arguments[1].toDouble(), arguments[2].toBoolean(), arguments[3].toDouble(), arguments[4].toBoolean(), arguments[5].toDouble()); + WebDeviceOrientation orientation(arguments[0].toBoolean(), arguments[1].toDouble(), arguments[2].toBoolean(), arguments[3].toDouble(), arguments[4].toBoolean(), arguments[5].toDouble()); ASSERT(m_deviceOrientationClientMock); m_deviceOrientationClientMock->setOrientation(orientation); @@ -1457,9 +1525,9 @@ void LayoutTestController::markerTextForListItem(const CppArgumentList& args, Cp result->set(element.document().frame()->markerTextForListItem(element).utf8()); } -WebKit::WebDeviceOrientationClient* LayoutTestController::deviceOrientationClient() +WebDeviceOrientationClient* LayoutTestController::deviceOrientationClient() { if (!m_deviceOrientationClientMock.get()) - m_deviceOrientationClientMock.set(new WebKit::WebDeviceOrientationClientMock()); + m_deviceOrientationClientMock.set(WebDeviceOrientationClientMock::create()); return m_deviceOrientationClientMock.get(); } diff --git a/WebKitTools/DumpRenderTree/chromium/LayoutTestController.h b/WebKitTools/DumpRenderTree/chromium/LayoutTestController.h index 7bb22ca..ec2503f 100644 --- a/WebKitTools/DumpRenderTree/chromium/LayoutTestController.h +++ b/WebKitTools/DumpRenderTree/chromium/LayoutTestController.h @@ -100,6 +100,16 @@ public: // dump all frames as plain text if the dumpAsText flag is set. // It takes no arguments, and ignores any that may be present. void dumpChildFramesAsText(const CppArgumentList&, CppVariant*); + + // This function sets a flag that tells the test_shell to dump a descriptive + // line for each resource load callback. It takes no arguments, and ignores + // any that may be present. + void dumpResourceLoadCallbacks(const CppArgumentList&, CppVariant*); + + // This function sets a flag that tells the test_shell to dump the MIME type + // for each resource that was loaded. It takes no arguments, and ignores any + // that may be present. + void dumpResourceResponseMIMETypes(const CppArgumentList&, CppVariant*); // This function sets a flag that tells the test_shell to dump all calls // to window.status(). @@ -129,6 +139,7 @@ public: void queueLoadingScript(const CppArgumentList&, CppVariant*); void queueNonLoadingScript(const CppArgumentList&, CppVariant*); void queueLoad(const CppArgumentList&, CppVariant*); + void queueLoadHTMLString(const CppArgumentList&, CppVariant*); // Although this is named "objC" to match the Mac version, it actually tests // the identity of its two arguments in C++. @@ -212,11 +223,8 @@ public: void numberOfActiveAnimations(const CppArgumentList&, CppVariant*); void suspendAnimations(const CppArgumentList&, CppVariant*); void resumeAnimations(const CppArgumentList&, CppVariant*); - void disableImageLoading(const CppArgumentList&, CppVariant*); - void setIconDatabaseEnabled(const CppArgumentList&, CppVariant*); - void dumpSelectionRect(const CppArgumentList&, CppVariant*); // Grants permission for desktop notifications to an origin @@ -224,13 +232,14 @@ public: // Simulates a click on a desktop notification. void simulateDesktopNotificationClick(const CppArgumentList&, CppVariant*); + void setDomainRelaxationForbiddenForURLScheme(const CppArgumentList&, CppVariant*); + void setDeferMainResourceDataLoad(const CppArgumentList&, CppVariant*); void setEditingBehavior(const CppArgumentList&, CppVariant*); // The following are only stubs. TODO(pamg): Implement any of these that // are needed to pass the layout tests. void dumpAsWebArchive(const CppArgumentList&, CppVariant*); void dumpTitleChanges(const CppArgumentList&, CppVariant*); - void dumpResourceLoadCallbacks(const CppArgumentList&, CppVariant*); void setMainFrameIsFirstResponder(const CppArgumentList&, CppVariant*); void display(const CppArgumentList&, CppVariant*); void testRepaint(const CppArgumentList&, CppVariant*); @@ -328,6 +337,8 @@ public: bool shouldDumpFrameLoadCallbacks() { return m_dumpFrameLoadCallbacks; } void setShouldDumpFrameLoadCallbacks(bool value) { m_dumpFrameLoadCallbacks = value; } bool shouldDumpResourceLoadCallbacks() {return m_dumpResourceLoadCallbacks; } + void setShouldDumpResourceResponseMIMETypes(bool value) { m_dumpResourceResponseMIMETypes = value; } + bool shouldDumpResourceResponseMIMETypes() {return m_dumpResourceResponseMIMETypes; } bool shouldDumpStatusCallbacks() { return m_dumpWindowStatusChanges; } bool shouldDumpSelectionRect() { return m_dumpSelectionRect; } bool shouldDumpBackForwardList() { return m_dumpBackForwardList; } @@ -339,6 +350,7 @@ public: bool canOpenWindows() { return m_canOpenWindows; } bool shouldAddFileToPasteboard() { return m_shouldAddFileToPasteboard; } bool stopProvisionalFrameLoads() { return m_stopProvisionalFrameLoads; } + bool deferMainResourceDataLoad() { return m_deferMainResourceDataLoad; } bool testRepaint() const { return m_testRepaint; } bool sweepHorizontally() const { return m_sweepHorizontally; } @@ -447,6 +459,10 @@ private: // If true, the test_shell will output a descriptive line for each resource // load callback. bool m_dumpResourceLoadCallbacks; + + // If true, the test_shell will output the MIME type for each resource that + // was loaded. + bool m_dumpResourceResponseMIMETypes; // If true, the test_shell will produce a dump of the back forward list as // well. @@ -501,6 +517,9 @@ private: // If true, don't dump output until notifyDone is called. bool m_waitUntilDone; + // If false, all new requests will not defer the main resource data load. + bool m_deferMainResourceDataLoad; + WorkQueue m_workQueue; CppVariant m_globalFlag; diff --git a/WebKitTools/DumpRenderTree/chromium/TestShell.cpp b/WebKitTools/DumpRenderTree/chromium/TestShell.cpp index 4557803..15d6dee 100644 --- a/WebKitTools/DumpRenderTree/chromium/TestShell.cpp +++ b/WebKitTools/DumpRenderTree/chromium/TestShell.cpp @@ -35,8 +35,6 @@ #include "DRTDevToolsClient.h" #include "LayoutTestController.h" #include "WebViewHost.h" -#include "base/string16.h" -#include "gfx/codec/png_codec.h" // FIXME: Remove dependecy. WebCore/platform/image-encoder is better? #include "public/WebDataSource.h" #include "public/WebDocument.h" #include "public/WebElement.h" @@ -55,6 +53,7 @@ #include "skia/ext/bitmap_platform_device.h" #include "skia/ext/platform_canvas.h" #include "webkit/support/webkit_support.h" +#include "webkit/support/webkit_support_gfx.h" #include <algorithm> #include <cctype> #include <vector> @@ -155,84 +154,8 @@ void TestShell::closeDevTools() void TestShell::resetWebSettings(WebView& webView) { - // Match the settings used by Mac DumpRenderTree, with the exception of - // fonts. - WebSettings* settings = webView.settings(); -#if OS(MAC_OS_X) - WebString serif = WebString::fromUTF8("Times"); - settings->setCursiveFontFamily(WebString::fromUTF8("Apple Chancery")); - settings->setFantasyFontFamily(WebString::fromUTF8("Papyrus")); -#else - // NOTE: case matters here, this must be 'times new roman', else - // some layout tests fail. - WebString serif = WebString::fromUTF8("times new roman"); - - // These two fonts are picked from the intersection of - // Win XP font list and Vista font list : - // http://www.microsoft.com/typography/fonts/winxp.htm - // http://blogs.msdn.com/michkap/archive/2006/04/04/567881.aspx - // Some of them are installed only with CJK and complex script - // support enabled on Windows XP and are out of consideration here. - // (although we enabled both on our buildbots.) - // They (especially Impact for fantasy) are not typical cursive - // and fantasy fonts, but it should not matter for layout tests - // as long as they're available. - settings->setCursiveFontFamily(WebString::fromUTF8("Comic Sans MS")); - settings->setFantasyFontFamily(WebString::fromUTF8("Impact")); -#endif - settings->setSerifFontFamily(serif); - settings->setStandardFontFamily(serif); - settings->setFixedFontFamily(WebString::fromUTF8("Courier")); - settings->setSansSerifFontFamily(WebString::fromUTF8("Helvetica")); - - settings->setDefaultTextEncodingName(WebString::fromUTF8("ISO-8859-1")); - settings->setDefaultFontSize(16); - settings->setDefaultFixedFontSize(13); - settings->setMinimumFontSize(1); - settings->setMinimumLogicalFontSize(9); - settings->setJavaScriptCanOpenWindowsAutomatically(true); - settings->setJavaScriptCanAccessClipboard(true); - settings->setDOMPasteAllowed(true); - settings->setDeveloperExtrasEnabled(false); - settings->setNeedsSiteSpecificQuirks(true); - settings->setShrinksStandaloneImagesToFit(false); - settings->setUsesEncodingDetector(false); - settings->setTextAreasAreResizable(false); - settings->setJavaEnabled(false); - settings->setAllowScriptsToCloseWindows(false); - settings->setXSSAuditorEnabled(false); - settings->setDownloadableBinaryFontsEnabled(true); - settings->setLocalStorageEnabled(true); - settings->setOfflineWebApplicationCacheEnabled(true); - settings->setAllowFileAccessFromFileURLs(true); - settings->setUserStyleSheetLocation(WebURL()); - - // LayoutTests were written with Safari Mac in mind which does not allow - // tabbing to links by default. - webView.setTabsToLinks(false); - - // Allow those layout tests running as local files, i.e. under - // LayoutTests/http/tests/local, to access http server. - settings->setAllowUniversalAccessFromFileURLs(true); - - settings->setJavaScriptEnabled(true); - settings->setPluginsEnabled(true); - settings->setWebSecurityEnabled(true); - settings->setEditableLinkBehaviorNeverLive(); - settings->setFontRenderingModeNormal(); - settings->setShouldPaintCustomScrollbars(true); - settings->setTextDirectionSubmenuInclusionBehaviorNeverIncluded(); - - settings->setLoadsImagesAutomatically(true); - settings->setImagesEnabled(true); - -#if OS(DARWIN) - settings->setEditingBehavior(WebSettings::EditingBehaviorMac); -#else - settings->setEditingBehavior(WebSettings::EditingBehaviorWin); -#endif - // FIXME: crbug.com/51879 - settings->setAcceleratedCompositingEnabled(false); + m_prefs.reset(); + m_prefs.applyTo(&webView); } void TestShell::runFileTest(const TestParams& params) @@ -244,7 +167,8 @@ void TestShell::runFileTest(const TestParams& params) bool inspectorTestMode = testUrl.find("/inspector/") != string::npos || testUrl.find("\\inspector\\") != string::npos; - m_webView->settings()->setDeveloperExtrasEnabled(inspectorTestMode); + m_prefs.developerExtrasEnabled = inspectorTestMode; + applyPreferences(); if (testUrl.find("loading/") != string::npos || testUrl.find("loading\\") != string::npos) @@ -585,23 +509,15 @@ void TestShell::dumpImage(skia::PlatformCanvas* canvas) const // to keep it. On Windows, the alpha channel is wrong since text/form control // drawing may have erased it in a few places. So on Windows we force it to // opaque and also don't write the alpha channel for the reference. Linux - // doesn't have the wrong alpha like Windows, but we ignore it anyway. -#if OS(WINDOWS) - bool discardTransparency = true; - device.makeOpaque(0, 0, sourceBitmap.width(), sourceBitmap.height()); -#elif OS(MAC_OS_X) + // doesn't have the wrong alpha like Windows, but we match Windows. +#if OS(MAC_OS_X) bool discardTransparency = false; -#elif OS(UNIX) +#else bool discardTransparency = true; - if (areLayoutTestImagesOpaque()) - device.makeOpaque(0, 0, sourceBitmap.width(), sourceBitmap.height()); + device.makeOpaque(0, 0, sourceBitmap.width(), sourceBitmap.height()); #endif - // Compute MD5 sum. We should have done this before calling - // device.makeOpaque on Windows. Because we do it after the call, there are - // some images that are the pixel identical on windows and other platforms - // but have different MD5 sums. At this point, rebaselining all the windows - // tests is too much of a pain, so we just check in different baselines. + // Compute MD5 sum. MD5 digester; Vector<uint8_t, 16> digestValue; digester.addBytes(reinterpret_cast<const uint8_t*>(sourceBitmap.getPixels()), sourceBitmap.getSize()); @@ -619,10 +535,9 @@ void TestShell::dumpImage(skia::PlatformCanvas* canvas) const // is really expensive. if (md5hash.compare(m_params.pixelHash)) { std::vector<unsigned char> png; - gfx::PNGCodec::ColorFormat colorFormat = gfx::PNGCodec::FORMAT_BGRA; - gfx::PNGCodec::Encode( + webkit_support::EncodeBGRAPNG( reinterpret_cast<const unsigned char*>(sourceBitmap.getPixels()), - colorFormat, sourceBitmap.width(), sourceBitmap.height(), + sourceBitmap.width(), sourceBitmap.height(), static_cast<int>(sourceBitmap.rowBytes()), discardTransparency, &png); m_printer->handleImage(md5hash.c_str(), m_params.pixelHash.c_str(), &png[0], png.size(), m_params.pixelFileName.c_str()); @@ -649,7 +564,7 @@ WebViewHost* TestShell::createNewWindow(const WebURL& url) WebViewHost* host = new WebViewHost(this); WebView* view = WebView::create(host, m_drtDevToolsAgent.get()); host->setWebWidget(view); - resetWebSettings(*view); + m_prefs.applyTo(view); view->initializeMainFrame(host); m_windowList.append(host); host->loadURLForFrame(url, WebString()); diff --git a/WebKitTools/DumpRenderTree/chromium/TestShell.h b/WebKitTools/DumpRenderTree/chromium/TestShell.h index cb5f862..6d93d4a 100644 --- a/WebKitTools/DumpRenderTree/chromium/TestShell.h +++ b/WebKitTools/DumpRenderTree/chromium/TestShell.h @@ -38,6 +38,7 @@ #include "PlainTextController.h" #include "TestEventPrinter.h" #include "TextInputController.h" +#include "WebPreferences.h" #include "WebViewHost.h" #include <string> #include <wtf/OwnPtr.h> @@ -50,7 +51,6 @@ namespace WebKit { class WebDevToolsAgentClient; class WebFrame; class WebNotificationPresenter; -class WebPreferences; class WebView; class WebURL; } @@ -92,6 +92,9 @@ public: NotificationPresenter* notificationPresenter() const { return m_notificationPresenter.get(); } TestEventPrinter* printer() const { return m_printer.get(); } + WebPreferences* preferences() { return &m_prefs; } + void applyPreferences() { m_prefs.applyTo(m_webView); } + void bindJSObjectsToWindow(WebKit::WebFrame*); void runFileTest(const TestParams&); void callJSGC(); @@ -107,6 +110,7 @@ public: void setFocus(WebKit::WebWidget*, bool enable); bool shouldDumpFrameLoadCallbacks() const { return (m_testIsPreparing || m_testIsPending) && layoutTestController()->shouldDumpFrameLoadCallbacks(); } bool shouldDumpResourceLoadCallbacks() const { return (m_testIsPreparing || m_testIsPending) && layoutTestController()->shouldDumpResourceLoadCallbacks(); } + bool shouldDumpResourceResponseMIMETypes() const { return (m_testIsPreparing || m_testIsPending) && layoutTestController()->shouldDumpResourceResponseMIMETypes(); } void setIsLoading(bool flag) { m_isLoading = flag; } // Called by the LayoutTestController to signal test completion. @@ -147,7 +151,7 @@ public: private: void createDRTDevToolsClient(DRTDevToolsAgent*); - static void resetWebSettings(WebKit::WebView&); + void resetWebSettings(WebKit::WebView&); void dump(); std::string dumpAllBackForwardLists(); void dumpImage(skia::PlatformCanvas*) const; @@ -172,6 +176,7 @@ private: TestParams m_params; int m_timeout; // timeout value in millisecond bool m_allowExternalPages; + WebPreferences m_prefs; // List of all windows in this process. // The main window should be put into windowList[0]. diff --git a/WebKitTools/DumpRenderTree/chromium/TextInputController.cpp b/WebKitTools/DumpRenderTree/chromium/TextInputController.cpp index 63c4719..16f1575 100644 --- a/WebKitTools/DumpRenderTree/chromium/TextInputController.cpp +++ b/WebKitTools/DumpRenderTree/chromium/TextInputController.cpp @@ -51,20 +51,21 @@ TextInputController::TextInputController(TestShell* shell) if (!testShell) testShell = shell; - bindMethod("insertText", &TextInputController::insertText); + bindMethod("attributedSubstringFromRange", &TextInputController::attributedSubstringFromRange); + bindMethod("characterIndexForPoint", &TextInputController::characterIndexForPoint); + bindMethod("conversationIdentifier", &TextInputController::conversationIdentifier); bindMethod("doCommand", &TextInputController::doCommand); - bindMethod("setMarkedText", &TextInputController::setMarkedText); - bindMethod("unmarkText", &TextInputController::unmarkText); + bindMethod("firstRectForCharacterRange", &TextInputController::firstRectForCharacterRange); bindMethod("hasMarkedText", &TextInputController::hasMarkedText); - bindMethod("conversationIdentifier", &TextInputController::conversationIdentifier); - bindMethod("substringFromRange", &TextInputController::substringFromRange); - bindMethod("attributedSubstringFromRange", &TextInputController::attributedSubstringFromRange); + bindMethod("hasSpellingMarker", &TextInputController::hasSpellingMarker); + bindMethod("insertText", &TextInputController::insertText); + bindMethod("makeAttributedString", &TextInputController::makeAttributedString); bindMethod("markedRange", &TextInputController::markedRange); bindMethod("selectedRange", &TextInputController::selectedRange); - bindMethod("firstRectForCharacterRange", &TextInputController::firstRectForCharacterRange); - bindMethod("characterIndexForPoint", &TextInputController::characterIndexForPoint); + bindMethod("setMarkedText", &TextInputController::setMarkedText); + bindMethod("substringFromRange", &TextInputController::substringFromRange); + bindMethod("unmarkText", &TextInputController::unmarkText); bindMethod("validAttributesForMarkedText", &TextInputController::validAttributesForMarkedText); - bindMethod("makeAttributedString", &TextInputController::makeAttributedString); } WebFrame* TextInputController::getMainFrame() @@ -214,3 +215,14 @@ void TextInputController::makeAttributedString(const CppArgumentList&, CppVarian // FIXME: Implement this. result->setNull(); } + +void TextInputController::hasSpellingMarker(const CppArgumentList& arguments, CppVariant* result) +{ + if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumber()) + return; + WebFrame* mainFrame = getMainFrame(); + if (!mainFrame) + return; + // Returns as a number for a compatibility reason. + result->set(mainFrame->selectionStartHasSpellingMarkerFor(arguments[0].toInt32(), arguments[1].toInt32()) ? 1 : 0); +} diff --git a/WebKitTools/DumpRenderTree/chromium/TextInputController.h b/WebKitTools/DumpRenderTree/chromium/TextInputController.h index 9896be5..ddacefe 100644 --- a/WebKitTools/DumpRenderTree/chromium/TextInputController.h +++ b/WebKitTools/DumpRenderTree/chromium/TextInputController.h @@ -61,6 +61,7 @@ public: void characterIndexForPoint(const CppArgumentList&, CppVariant*); void validAttributesForMarkedText(const CppArgumentList&, CppVariant*); void makeAttributedString(const CppArgumentList&, CppVariant*); + void hasSpellingMarker(const CppArgumentList&, CppVariant*); private: // Returns the test shell's main WebFrame. diff --git a/WebKitTools/DumpRenderTree/chromium/WebPreferences.cpp b/WebKitTools/DumpRenderTree/chromium/WebPreferences.cpp new file mode 100644 index 0000000..004865a --- /dev/null +++ b/WebKitTools/DumpRenderTree/chromium/WebPreferences.cpp @@ -0,0 +1,161 @@ +/* + * Copyright (C) 2010 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" +#include "WebPreferences.h" + +#include "public/WebView.h" + +using namespace WebKit; + +void WebPreferences::reset() +{ +#if OS(MAC_OS_X) + cursiveFontFamily = WebString::fromUTF8("Apple Chancery"); + fantasyFontFamily = WebString::fromUTF8("Papyrus"); + WebString serif = WebString::fromUTF8("Times"); +#else + // These two fonts are picked from the intersection of + // Win XP font list and Vista font list : + // http://www.microsoft.com/typography/fonts/winxp.htm + // http://blogs.msdn.com/michkap/archive/2006/04/04/567881.aspx + // Some of them are installed only with CJK and complex script + // support enabled on Windows XP and are out of consideration here. + // (although we enabled both on our buildbots.) + // They (especially Impact for fantasy) are not typical cursive + // and fantasy fonts, but it should not matter for layout tests + // as long as they're available. + cursiveFontFamily = WebString::fromUTF8("Comic Sans MS"); + fantasyFontFamily = WebString::fromUTF8("Impact"); + // NOTE: case matters here, this must be 'times new roman', else + // some layout tests fail. + WebString serif = WebString::fromUTF8("times new roman"); +#endif + serifFontFamily = serif; + standardFontFamily = serif; + fixedFontFamily = WebString::fromUTF8("Courier"); + sansSerifFontFamily = WebString::fromUTF8("Helvetica"); + + defaultFontSize = 16; + defaultFixedFontSize = 13; + minimumFontSize = 1; + minimumLogicalFontSize = 9; + + DOMPasteAllowed = true; + XSSAuditorEnabled = false; + allowFileAccessFromFileURLs = true; + authorAndUserStylesEnabled = true; + defaultTextEncodingName = WebString::fromUTF8("ISO-8859-1"); + developerExtrasEnabled = false; + experimentalWebGLEnabled = false; + javaEnabled = false; + javaScriptCanAccessClipboard = true; + javaScriptCanOpenWindowsAutomatically = true; + javaScriptEnabled = true; + loadsImagesAutomatically = true; + localStorageEnabled = true; + offlineWebApplicationCacheEnabled = true; + pluginsEnabled = true; + shrinksStandaloneImagesToFit = false; + textAreasAreResizable = false; + userStyleSheetLocation = WebURL(); + usesPageCache = false; + webSecurityEnabled = true; + + // Allow those layout tests running as local files, i.e. under + // LayoutTests/http/tests/local, to access http server. + allowUniversalAccessFromFileURLs = true; + +#if OS(DARWIN) + editingBehavior = WebSettings::EditingBehaviorMac; +#else + editingBehavior = WebSettings::EditingBehaviorWin; +#endif + + tabsToLinks = false; +} + +void WebPreferences::applyTo(WebView* webView) +{ + WebSettings* settings = webView->settings(); + settings->setCursiveFontFamily(cursiveFontFamily); + settings->setFantasyFontFamily(fantasyFontFamily); + settings->setSerifFontFamily(serifFontFamily); + settings->setStandardFontFamily(standardFontFamily); + settings->setFixedFontFamily(fixedFontFamily); + settings->setSansSerifFontFamily(sansSerifFontFamily); + + settings->setDefaultFontSize(defaultFontSize); + settings->setDefaultFixedFontSize(defaultFixedFontSize); + settings->setMinimumFontSize(minimumFontSize); + settings->setMinimumLogicalFontSize(minimumLogicalFontSize); + + settings->setDOMPasteAllowed(DOMPasteAllowed); + settings->setXSSAuditorEnabled(XSSAuditorEnabled); + settings->setAllowFileAccessFromFileURLs(allowFileAccessFromFileURLs); + settings->setAuthorAndUserStylesEnabled(authorAndUserStylesEnabled); + settings->setDefaultTextEncodingName(defaultTextEncodingName); + settings->setDeveloperExtrasEnabled(developerExtrasEnabled); + settings->setExperimentalWebGLEnabled(experimentalWebGLEnabled); + settings->setJavaEnabled(javaEnabled); + settings->setJavaScriptCanAccessClipboard(javaScriptCanAccessClipboard); + settings->setJavaScriptCanOpenWindowsAutomatically(javaScriptCanOpenWindowsAutomatically); + settings->setJavaScriptEnabled(javaScriptEnabled); + settings->setLoadsImagesAutomatically(loadsImagesAutomatically); + settings->setLocalStorageEnabled(localStorageEnabled); + settings->setOfflineWebApplicationCacheEnabled(offlineWebApplicationCacheEnabled); + settings->setPluginsEnabled(pluginsEnabled); + settings->setShrinksStandaloneImagesToFit(shrinksStandaloneImagesToFit); + settings->setTextAreasAreResizable(textAreasAreResizable); + settings->setUserStyleSheetLocation(userStyleSheetLocation); + settings->setUsesPageCache(usesPageCache); + settings->setWebSecurityEnabled(webSecurityEnabled); + settings->setAllowUniversalAccessFromFileURLs(allowUniversalAccessFromFileURLs); + settings->setEditingBehavior(editingBehavior); + // LayoutTests were written with Safari Mac in mind which does not allow + // tabbing to links by default. + webView->setTabsToLinks(tabsToLinks); + + // Fixed values. + settings->setShouldPaintCustomScrollbars(true); + settings->setTextDirectionSubmenuInclusionBehaviorNeverIncluded(); + settings->setDownloadableBinaryFontsEnabled(true); + settings->setAllowScriptsToCloseWindows(false); + settings->setNeedsSiteSpecificQuirks(true); + settings->setEditableLinkBehaviorNeverLive(); + settings->setFontRenderingModeNormal(); + settings->setTextDirectionSubmenuInclusionBehaviorNeverIncluded(); + settings->setUsesEncodingDetector(false); + settings->setImagesEnabled(true); + + // FIXME: crbug.com/51879 + settings->setAcceleratedCompositingEnabled(false); +} + diff --git a/WebKitTools/DumpRenderTree/chromium/WebPreferences.h b/WebKitTools/DumpRenderTree/chromium/WebPreferences.h new file mode 100644 index 0000000..f197c16 --- /dev/null +++ b/WebKitTools/DumpRenderTree/chromium/WebPreferences.h @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2010 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 WebPreferences_h +#define WebPerferences_h + +#include "public/WebSettings.h" +#include "public/WebString.h" +#include "public/WebURL.h" + +namespace WebKit { +class WebView; +} + +struct WebPreferences { + WebKit::WebString cursiveFontFamily; + WebKit::WebString fantasyFontFamily; + WebKit::WebString serifFontFamily; + WebKit::WebString standardFontFamily; + WebKit::WebString fixedFontFamily; + WebKit::WebString sansSerifFontFamily; + + int defaultFontSize; + int defaultFixedFontSize; + int minimumFontSize; + int minimumLogicalFontSize; + + bool DOMPasteAllowed; + bool XSSAuditorEnabled; + bool allowFileAccessFromFileURLs; + bool authorAndUserStylesEnabled; + WebKit::WebString defaultTextEncodingName; + bool developerExtrasEnabled; + bool experimentalWebGLEnabled; + bool javaEnabled; + bool javaScriptCanAccessClipboard; + bool javaScriptCanOpenWindowsAutomatically; + bool javaScriptEnabled; + bool loadsImagesAutomatically; + bool localStorageEnabled; + bool offlineWebApplicationCacheEnabled; + bool pluginsEnabled; + bool shrinksStandaloneImagesToFit; + bool textAreasAreResizable; + WebKit::WebURL userStyleSheetLocation; + bool usesPageCache; + bool webSecurityEnabled; + bool allowUniversalAccessFromFileURLs; + WebKit::WebSettings::EditingBehavior editingBehavior; + bool tabsToLinks; + + WebPreferences() { reset(); } + void reset(); + void applyTo(WebKit::WebView*); +}; + +#endif // WebPreferences_h diff --git a/WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp b/WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp index 1e3a4d6..9a086e4 100644 --- a/WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp +++ b/WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp @@ -40,6 +40,7 @@ #include "public/WebContextMenuData.h" #include "public/WebDataSource.h" #include "public/WebDragData.h" +#include "public/WebElement.h" #include "public/WebFrame.h" #include "public/WebGeolocationServiceMock.h" #include "public/WebHistoryItem.h" @@ -489,10 +490,68 @@ void WebViewHost::focusAccessibilityObject(const WebAccessibilityObject& object) m_shell->accessibilityController()->setFocusedElement(object); } -void WebViewHost::didChangeAccessibilityObjectChildren(const WebAccessibilityObject& object) -{ - if (m_shell->accessibilityController()->shouldDumpAccessibilityNotifications()) - printf("didChangeAccessibilityObjectChildren - new count: %d\n", object.childCount()); +void WebViewHost::postAccessibilityNotification(const WebAccessibilityObject& obj, WebAccessibilityNotification notification) +{ + if (m_shell->accessibilityController()->shouldDumpAccessibilityNotifications()) { + printf("AccessibilityNotification - "); + + switch (notification) { + case WebAccessibilityNotificationActiveDescendantChanged: + printf("ActiveDescendantChanged"); + break; + case WebAccessibilityNotificationCheckedStateChanged: + printf("CheckedStateChanged"); + break; + case WebAccessibilityNotificationChildrenChanged: + printf("ChildrenChanged"); + break; + case WebAccessibilityNotificationFocusedUIElementChanged: + printf("FocusedUIElementChanged"); + break; + case WebAccessibilityNotificationLayoutComplete: + printf("LayoutComplete"); + break; + case WebAccessibilityNotificationLoadComplete: + printf("LoadComplete"); + break; + case WebAccessibilityNotificationSelectedChildrenChanged: + printf("SelectedChildrenChanged"); + break; + case WebAccessibilityNotificationSelectedTextChanged: + printf("SelectedTextChanged"); + break; + case WebAccessibilityNotificationValueChanged: + printf("ValueChanged"); + break; + case WebAccessibilityNotificationScrolledToAnchor: + printf("ScrolledToAnchor"); + break; + case WebAccessibilityNotificationLiveRegionChanged: + printf("LiveRegionChanged"); + break; + case WebAccessibilityNotificationMenuListValueChanged: + printf("MenuListValueChanged"); + break; + case WebAccessibilityNotificationRowCountChanged: + printf("RowCountChanged"); + break; + case WebAccessibilityNotificationRowCollapsed: + printf("RowCollapsed"); + break; + case WebAccessibilityNotificationRowExpanded: + printf("RowExpanded"); + break; + } + + WebKit::WebNode node = obj.node(); + if (!node.isNull() && node.isElementNode()) { + WebKit::WebElement element = node.to<WebKit::WebElement>(); + if (element.hasAttribute("id")) + printf(" - id:%s", element.getAttribute("id").utf8().data()); + } + + printf("\n"); + } } WebNotificationPresenter* WebViewHost::notificationPresenter() @@ -731,6 +790,8 @@ void WebViewHost::didCancelClientRedirect(WebFrame* frame) void WebViewHost::didCreateDataSource(WebFrame*, WebDataSource* ds) { ds->setExtraData(m_pendingExtraData.leakPtr()); + if (!layoutTestController()->deferMainResourceDataLoad()) + ds->setDeferMainResourceDataLoad(false); } void WebViewHost::didStartProvisionalLoad(WebFrame* frame) @@ -920,12 +981,20 @@ void WebViewHost::willSendRequest(WebFrame*, unsigned identifier, WebURLRequest& void WebViewHost::didReceiveResponse(WebFrame*, unsigned identifier, const WebURLResponse& response) { - if (!m_shell->shouldDumpResourceLoadCallbacks()) - return; - printResourceDescription(identifier); - fputs(" - didReceiveResponse ", stdout); - printResponseDescription(response); - fputs("\n", stdout); + if (m_shell->shouldDumpResourceLoadCallbacks()) { + printResourceDescription(identifier); + fputs(" - didReceiveResponse ", stdout); + printResponseDescription(response); + fputs("\n", stdout); + } + if (m_shell->shouldDumpResourceResponseMIMETypes()) { + GURL url = response.url(); + WebString mimeType = response.mimeType(); + printf("%s has MIME type %s\n", + url.ExtractFileName().c_str(), + // Simulate NSURLResponse's mapping of empty/unknown MIME types to application/octet-stream + mimeType.isEmpty() ? "application/octet-stream" : mimeType.utf8().data()); + } } void WebViewHost::didFinishResourceLoad(WebFrame*, unsigned identifier) diff --git a/WebKitTools/DumpRenderTree/chromium/WebViewHost.h b/WebKitTools/DumpRenderTree/chromium/WebViewHost.h index 3a84ebd..bbb132d 100644 --- a/WebKitTools/DumpRenderTree/chromium/WebViewHost.h +++ b/WebKitTools/DumpRenderTree/chromium/WebViewHost.h @@ -33,6 +33,7 @@ #include "MockSpellCheck.h" #include "TestNavigationController.h" +#include "public/WebAccessibilityNotification.h" #include "public/WebCursorInfo.h" #include "public/WebFrameClient.h" #include "public/WebViewClient.h" @@ -127,7 +128,7 @@ class WebViewHost : public WebKit::WebViewClient, public WebKit::WebFrameClient, virtual int historyBackListCount(); virtual int historyForwardListCount(); virtual void focusAccessibilityObject(const WebKit::WebAccessibilityObject&); - virtual void didChangeAccessibilityObjectChildren(const WebKit::WebAccessibilityObject&); + virtual void postAccessibilityNotification(const WebKit::WebAccessibilityObject&, WebKit::WebAccessibilityNotification); virtual WebKit::WebNotificationPresenter* notificationPresenter(); virtual WebKit::WebGeolocationService* geolocationService(); virtual WebKit::WebSpeechInputController* speechInputController(WebKit::WebSpeechInputListener*); |