diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
commit | 43a42f108af6bcbd91f2672731c3047c26213af1 (patch) | |
tree | 7fa092e5f5d873c72f2486a70e26be26f7a38bec /Tools/TestWebKitAPI | |
parent | d9cf437c840c6eb7417bdd97e6c40979255d3158 (diff) | |
download | qtwebkit-43a42f108af6bcbd91f2672731c3047c26213af1.tar.gz |
Imported WebKit commit 302e7806bff028bd1167a1ec7c86a1ee00ecfb49 (http://svn.webkit.org/repository/webkit/trunk@132067)
New snapshot that fixes build without QtWidgets
Diffstat (limited to 'Tools/TestWebKitAPI')
5 files changed, 187 insertions, 2 deletions
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj b/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj index 77eee845d..973a6d0fa 100644 --- a/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj +++ b/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj @@ -42,6 +42,9 @@ 37200B9213A16230007A4FAD /* VectorReverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37200B9113A16230007A4FAD /* VectorReverse.cpp */; }; 3722C8691461E03E00C45D00 /* RenderedImageFromDOMRange.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3722C8681461E03E00C45D00 /* RenderedImageFromDOMRange.mm */; }; 3776BC63150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3776BC62150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm */; }; + 378E64731632646D00B6C676 /* InjectedBundleFrameHitTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */; }; + 378E64771632655E00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378E64751632655D00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp */; }; + 378E64791632707400B6C676 /* link-with-title.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 378E647816326FDF00B6C676 /* link-with-title.html */; }; 379028B614FABD92007E6B43 /* AcceptsFirstMouse.mm in Sources */ = {isa = PBXBuildFile; fileRef = 379028B514FABD92007E6B43 /* AcceptsFirstMouse.mm */; }; 379028B914FAC24C007E6B43 /* acceptsFirstMouse.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 379028B814FABE49007E6B43 /* acceptsFirstMouse.html */; }; 3799AD3A14120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3799AD3914120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm */; }; @@ -223,6 +226,7 @@ 33DC8912141955FE00747EF7 /* simple-iframe.html in Copy Resources */, 1A9E52C913E65EF4006917F5 /* 18-characters.html in Copy Resources */, C07E6CB213FD73930038B22B /* devicePixelRatio.html in Copy Resources */, + 378E64791632707400B6C676 /* link-with-title.html in Copy Resources */, 9361002914DC95A70061379D /* lots-of-iframes.html in Copy Resources */, 93AF4ED11506F130007FD57E /* lots-of-images.html in Copy Resources */, 930AD402150698D00067970F /* lots-of-text.html in Copy Resources */, @@ -279,6 +283,9 @@ 37200B9113A16230007A4FAD /* VectorReverse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VectorReverse.cpp; path = WTF/VectorReverse.cpp; sourceTree = "<group>"; }; 3722C8681461E03E00C45D00 /* RenderedImageFromDOMRange.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderedImageFromDOMRange.mm; sourceTree = "<group>"; }; 3776BC62150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceScaleFactorInDashboardRegions.mm; sourceTree = "<group>"; }; + 378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleFrameHitTest.cpp; sourceTree = "<group>"; }; + 378E64751632655D00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleFrameHitTest_Bundle.cpp; sourceTree = "<group>"; }; + 378E647816326FDF00B6C676 /* link-with-title.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "link-with-title.html"; sourceTree = "<group>"; }; 379028B514FABD92007E6B43 /* AcceptsFirstMouse.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AcceptsFirstMouse.mm; sourceTree = "<group>"; }; 379028B814FABE49007E6B43 /* acceptsFirstMouse.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = acceptsFirstMouse.html; sourceTree = "<group>"; }; 3799AD3914120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StringByEvaluatingJavaScriptFromString.mm; sourceTree = "<group>"; }; @@ -592,6 +599,8 @@ 4BFDFFA61314776C0061F24B /* HitTestResultNodeHandle_Bundle.cpp */, BC575AAC126E83B9006F0F12 /* InjectedBundleBasic.cpp */, BC575AAF126E83C8006F0F12 /* InjectedBundleBasic_Bundle.cpp */, + 378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */, + 378E64751632655D00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp */, F660AA1215A619C8003A1243 /* InjectedBundleInitializationUserDataCallbackWins.cpp */, F660AA1415A61ABF003A1243 /* InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp */, 52CB47401448FB9300873995 /* LoadAlternateHTMLStringWithNonDirectoryURL.cpp */, @@ -670,9 +679,11 @@ isa = PBXGroup; children = ( C045F9461385C2F800C0F3CD /* 18-characters.html */, + 76E182DE15475A8300F1FADD /* auto-submitting-form.html */, BC2D004A12A9FEB300E732A3 /* file-with-anchor.html */, 1A02C84B125D4A5E00E3F4BD /* find.html */, BCBD372E125ABBE600D2C29F /* icon.png */, + 378E647816326FDF00B6C676 /* link-with-title.html */, 9361002814DC957B0061379D /* lots-of-iframes.html */, 93AF4ECF1506F123007FD57E /* lots-of-images.html */, 930AD401150698B30067970F /* lots-of-text.html */, @@ -684,7 +695,6 @@ BCAA485514A021640088FAC4 /* simple-tall.html */, BC909778125571AB00083756 /* simple.html */, C02B7882126615410026BF0F /* spacebar-scrolling.html */, - 76E182DE15475A8300F1FADD /* auto-submitting-form.html */, ); name = Resources; sourceTree = "<group>"; @@ -995,6 +1005,7 @@ 9318778915EEC57700A9CCE3 /* NewFirstVisuallyNonEmptyLayoutForImages.cpp in Sources */, 2943BE86161DFEB800999E3D /* UserContentTest.mm in Sources */, 4F4D2C0E1626FE2700320FE1 /* MemoryInstrumentationTest.cpp in Sources */, + 378E64731632646D00B6C676 /* InjectedBundleFrameHitTest.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1029,6 +1040,7 @@ F6F49C6B15545CA70007F39D /* DOMWindowExtensionNoCache_Bundle.cpp in Sources */, F660AA1115A5F631003A1243 /* GetInjectedBundleInitializationUserDataCallback_Bundle.cpp in Sources */, F660AA1515A61ABF003A1243 /* InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp in Sources */, + 378E64771632655E00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Tools/TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp b/Tools/TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp index 7847d7d26..c6368bf3f 100644 --- a/Tools/TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp +++ b/Tools/TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp @@ -95,7 +95,7 @@ public: private: class Client : public WTF::MemoryInstrumentationClient { public: - virtual void countObjectSize(MemoryObjectType objectType, size_t size) + virtual void countObjectSize(const void*, MemoryObjectType objectType, size_t size) { TypeToSizeMap::AddResult result = m_totalSizes.add(objectType, size); if (!result.isNewEntry) @@ -734,5 +734,28 @@ TEST(MemoryInstrumentationTest, arrayBuffer) EXPECT_EQ(2u, helper.visitedObjects()); } +class ClassWithTwoAncestors : public NotInstrumented, public Instrumented { +public: + virtual void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const + { + MemoryClassInfo info(memoryObjectInfo, this, TestType); + } +}; + + +TEST(MemoryInstrumentationTest, instrumentedWithMultipleAncestors) +{ + InstrumentationTestHelper helper; + OwnPtr<ClassWithTwoAncestors> instance = adoptPtr(new ClassWithTwoAncestors()); + ClassWithTwoAncestors* descendantPointer = instance.get(); + InstrumentedOwner<ClassWithTwoAncestors*> descendantPointerOwner(descendantPointer); + Instrumented* ancestorPointer = descendantPointer; + InstrumentedOwner<Instrumented*> ancestorPointerOwner(ancestorPointer); + helper.addRootObject(descendantPointerOwner); + helper.addRootObject(ancestorPointerOwner); + EXPECT_EQ(sizeof(ClassWithTwoAncestors), helper.reportedSizeForAllTypes()); + EXPECT_EQ(1u, helper.visitedObjects()); +} + } // namespace diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp new file mode 100644 index 000000000..9320801d3 --- /dev/null +++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2012 Apple 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 INC. 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 INC. 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 "PlatformUtilities.h" +#include "PlatformWebView.h" +#include <WebKit2/WKRetainPtr.h> + +namespace TestWebKitAPI { + +static bool done; + +static void didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRef messageName, WKTypeRef messageBody, const void* clientInfo) +{ + if (WKStringIsEqualToUTF8CString(messageName, "InjectedBundleFrameHitTestDone")) { + done = true; + WKStringRef linkTitle = (WKStringRef)messageBody; + EXPECT_WK_STREQ("HitTestLinkTitle", linkTitle); + } +} + +static void setInjectedBundleClient(WKContextRef context) +{ + WKContextInjectedBundleClient injectedBundleClient; + memset(&injectedBundleClient, 0, sizeof(injectedBundleClient)); + injectedBundleClient.version = 0; + injectedBundleClient.clientInfo = 0; + injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle; + WKContextSetInjectedBundleClient(context, &injectedBundleClient); +} + +TEST(WebKit2, InjectedBundleFrameHitTest) +{ + WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("InjectedBundleFrameHitTestTest")); + + setInjectedBundleClient(context.get()); + + PlatformWebView webView(context.get()); + + WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("link-with-title", "html")).get()); + + Util::run(&done); +} + +} // namespace TestWebKitAPI diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp new file mode 100644 index 000000000..ddaeec182 --- /dev/null +++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2012 Apple 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 INC. 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 INC. 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 "InjectedBundleTest.h" +#include "PlatformUtilities.h" +#include <WebKit2/WKBundle.h> +#include <WebKit2/WKBundleFramePrivate.h> +#include <WebKit2/WKBundleHitTestResult.h> +#include <WebKit2/WKBundlePage.h> +#include <WebKit2/WKRetainPtr.h> + +namespace TestWebKitAPI { + +class InjectedBundleFrameHitTestTest : public InjectedBundleTest { +public: + InjectedBundleFrameHitTestTest(const std::string& identifier) + : InjectedBundleTest(identifier) + { + } + + virtual void didCreatePage(WKBundleRef, WKBundlePageRef) OVERRIDE; + void frameLoadFinished(WKBundleFrameRef); + + WKBundleRef m_bundle; +}; + +static InjectedBundleTest::Register<InjectedBundleFrameHitTestTest> registrar("InjectedBundleFrameHitTestTest"); + +static void didFinishLoadForFrameCallback(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo) +{ + ((InjectedBundleFrameHitTestTest*)clientInfo)->frameLoadFinished(frame); +} + +void InjectedBundleFrameHitTestTest::didCreatePage(WKBundleRef bundle, WKBundlePageRef page) +{ + m_bundle = bundle; + + WKBundlePageLoaderClient pageLoaderClient; + memset(&pageLoaderClient, 0, sizeof(pageLoaderClient)); + + pageLoaderClient.version = 1; + pageLoaderClient.clientInfo = this; + pageLoaderClient.didFinishLoadForFrame = didFinishLoadForFrameCallback; + + WKBundlePageSetPageLoaderClient(page, &pageLoaderClient); +} + +void InjectedBundleFrameHitTestTest::frameLoadFinished(WKBundleFrameRef frame) +{ + WKBundleHitTestResultRef hitTestResult = WKBundleFrameCreateHitTestResult(frame, WKPointMake(50, 50)); + WKRetainPtr<WKStringRef> linkTitle(AdoptWK, WKBundleHitTestResultCopyLinkTitle(hitTestResult)); + WKBundlePostMessage(m_bundle, Util::toWK("InjectedBundleFrameHitTestDone").get(), linkTitle.get()); +} + +} // namespace TestWebKitAPI diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/link-with-title.html b/Tools/TestWebKitAPI/Tests/WebKit2/link-with-title.html new file mode 100644 index 000000000..971ed281b --- /dev/null +++ b/Tools/TestWebKitAPI/Tests/WebKit2/link-with-title.html @@ -0,0 +1,5 @@ +<html> + <body> + <a href="#" style="display: block; height: 100%;" title="HitTestLinkTitle"></a> + </body> +</html> |