diff options
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm')
-rw-r--r-- | Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm deleted file mode 100644 index 025896373..000000000 --- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm +++ /dev/null @@ -1,230 +0,0 @@ -/* - * 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. - */ - -#import "config.h" -#import "Test.h" - -#import "PlatformUtilities.h" -#import "TestBrowsingContextLoadDelegate.h" -#import <JavaScriptCore/JSRetainPtr.h> -#import <JavaScriptCore/JavaScriptCore.h> -#import <WebKit2/WKSerializedScriptValue.h> -#import <WebKit2/WKViewPrivate.h> -#import <WebKit2/WebKit2.h> - - -static bool testFinished = false; -static NSString *htmlString = @"<body style='background-color: red'>"; -static NSString *userStyleSheet = @"body { background-color: green !important; }"; -static const char* backgroundColorScript = "window.getComputedStyle(document.body, null).getPropertyValue('background-color')"; -static const char* greenInRGB = "rgb(0, 128, 0)"; -static const char* redInRGB = "rgb(255, 0, 0)"; -static const char* userScriptTestProperty = "window._userScriptInstalled"; - -namespace { - class WebKit2UserContentTest : public ::testing::Test { - public: - WKProcessGroup *processGroup; - WKBrowsingContextGroup *browsingContextGroup; - - WebKit2UserContentTest() - : processGroup(nil) - , browsingContextGroup(nil) - { - } - - virtual void SetUp() - { - processGroup = [[WKProcessGroup alloc] init]; - browsingContextGroup = [[WKBrowsingContextGroup alloc] initWithIdentifier:@"UserContentIdentifier"]; - } - - virtual void TearDown() - { - [browsingContextGroup release]; - [processGroup release]; - } - }; -} // namespace - -static void expectScriptValueIsString(WKSerializedScriptValueRef serializedScriptValue, const char* expectedValue) -{ - JSGlobalContextRef scriptContext = JSGlobalContextCreate(0); - - JSValueRef scriptValue = WKSerializedScriptValueDeserialize(serializedScriptValue, scriptContext, 0); - EXPECT_TRUE(JSValueIsString(scriptContext, scriptValue)); - - JSRetainPtr<JSStringRef> scriptString(Adopt, JSValueToStringCopy(scriptContext, scriptValue, 0)); - EXPECT_TRUE(JSStringIsEqualToUTF8CString(scriptString.get(), expectedValue)); - - JSGlobalContextRelease(scriptContext); -} - -static void expectScriptValueIsBoolean(WKSerializedScriptValueRef serializedScriptValue, bool expectedValue) -{ - JSGlobalContextRef scriptContext = JSGlobalContextCreate(0); - - JSValueRef scriptValue = WKSerializedScriptValueDeserialize(serializedScriptValue, scriptContext, 0); - EXPECT_TRUE(JSValueIsBoolean(scriptContext, scriptValue)); - EXPECT_EQ(JSValueToBoolean(scriptContext, scriptValue), expectedValue); - - JSGlobalContextRelease(scriptContext); -} - -static void expectScriptValueIsUndefined(WKSerializedScriptValueRef serializedScriptValue) -{ - JSGlobalContextRef scriptContext = JSGlobalContextCreate(0); - - JSValueRef scriptValue = WKSerializedScriptValueDeserialize(serializedScriptValue, scriptContext, 0); - EXPECT_TRUE(JSValueIsUndefined(scriptContext, scriptValue)); - - JSGlobalContextRelease(scriptContext); -} - -TEST_F(WebKit2UserContentTest, AddUserStyleSheetBeforeCreatingView) -{ - testFinished = false; - [browsingContextGroup addUserStyleSheet:userStyleSheet baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil mainFrameOnly:YES]; - - WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup]; - WKStringRef backgroundColorQuery = WKStringCreateWithUTF8CString(backgroundColorScript); - wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) { - WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, backgroundColorQuery, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) { - expectScriptValueIsString(serializedScriptValue, greenInRGB); - testFinished = true; - WKRelease(backgroundColorQuery); - }); - }]; - - [wkView.browsingContextController loadHTMLString:htmlString baseURL:nil]; - - TestWebKitAPI::Util::run(&testFinished); -} - -TEST_F(WebKit2UserContentTest, AddUserStyleSheetAfterCreatingView) -{ - testFinished = false; - - WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup]; - WKStringRef backgroundColorQuery = WKStringCreateWithUTF8CString(backgroundColorScript); - wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) { - WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, backgroundColorQuery, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) { - expectScriptValueIsString(serializedScriptValue, greenInRGB); - testFinished = true; - WKRelease(backgroundColorQuery); - }); - }]; - - [browsingContextGroup addUserStyleSheet:userStyleSheet baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil mainFrameOnly:YES]; - - [wkView.browsingContextController loadHTMLString:htmlString baseURL:nil]; - - TestWebKitAPI::Util::run(&testFinished); -} - -TEST_F(WebKit2UserContentTest, RemoveAllUserStyleSheets) -{ - testFinished = false; - [browsingContextGroup addUserStyleSheet:userStyleSheet baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil mainFrameOnly:YES]; - - WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup]; - WKStringRef backgroundColorQuery = WKStringCreateWithUTF8CString(backgroundColorScript); - wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) { - WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, backgroundColorQuery, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) { - expectScriptValueIsString(serializedScriptValue, redInRGB); - testFinished = true; - WKRelease(backgroundColorQuery); - }); - }]; - - [browsingContextGroup removeAllUserStyleSheets]; - - [wkView.browsingContextController loadHTMLString:htmlString baseURL:nil]; - - TestWebKitAPI::Util::run(&testFinished); -} - -TEST_F(WebKit2UserContentTest, AddUserScriptBeforeCreatingView) -{ - testFinished = false; - [browsingContextGroup addUserScript:[NSString stringWithFormat:@"%s = true;", userScriptTestProperty] baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil injectionTime:kWKInjectAtDocumentStart mainFrameOnly:YES]; - - WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup]; - WKStringRef userScriptTestPropertyString = WKStringCreateWithUTF8CString(userScriptTestProperty); - wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) { - WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, userScriptTestPropertyString, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) { - expectScriptValueIsBoolean(serializedScriptValue, true); - testFinished = true; - WKRelease(userScriptTestPropertyString); - }); - }]; - - [wkView.browsingContextController loadHTMLString:@"" baseURL:nil]; - - TestWebKitAPI::Util::run(&testFinished); -} - -TEST_F(WebKit2UserContentTest, AddUserScriptAfterCreatingView) -{ - testFinished = false; - - WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup]; - WKStringRef userScriptTestPropertyString = WKStringCreateWithUTF8CString(userScriptTestProperty); - wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) { - WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, userScriptTestPropertyString, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) { - expectScriptValueIsBoolean(serializedScriptValue, true); - testFinished = true; - WKRelease(userScriptTestPropertyString); - }); - }]; - - [browsingContextGroup addUserScript:[NSString stringWithFormat:@"%s = true;", userScriptTestProperty] baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil injectionTime:kWKInjectAtDocumentStart mainFrameOnly:YES]; - - [wkView.browsingContextController loadHTMLString:@"" baseURL:nil]; - - TestWebKitAPI::Util::run(&testFinished); -} - -TEST_F(WebKit2UserContentTest, RemoveAllUserScripts) -{ - testFinished = false; - [browsingContextGroup addUserScript:[NSString stringWithFormat:@"%s = true;", userScriptTestProperty] baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil injectionTime:kWKInjectAtDocumentStart mainFrameOnly:YES]; - - WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup]; - WKStringRef userScriptTestPropertyString = WKStringCreateWithUTF8CString(userScriptTestProperty); - wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) { - WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, userScriptTestPropertyString, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) { - expectScriptValueIsUndefined(serializedScriptValue); - testFinished = true; - WKRelease(userScriptTestPropertyString); - }); - }]; - - [browsingContextGroup removeAllUserScripts]; - - [wkView.browsingContextController loadHTMLString:htmlString baseURL:nil]; - - TestWebKitAPI::Util::run(&testFinished); -} |