summaryrefslogtreecommitdiff
path: root/Tools/WebKitTestRunner
diff options
context:
space:
mode:
authorjoepeck@webkit.org <joepeck@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>2013-01-28 22:38:23 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-08-08 17:34:02 +0200
commit0dd9e57645d192fca388abe8f04e93ca7bef6ad6 (patch)
tree580a6d97c337b8e5cd7ad71e58ee6081e01d84e8 /Tools/WebKitTestRunner
parentf0ce121cf5367b340160408821ab6b9d00d3d0cb (diff)
downloadqtwebkit-0dd9e57645d192fca388abe8f04e93ca7bef6ad6.tar.gz
Improve PageVisibility API with enums
https://bugs.webkit.org/show_bug.cgi?id=107364 Reviewed by Sam Weinig. Source/WebKit/mac: * WebView/WebView.mm: * WebView/WebViewPrivate.h: (corePageVisibilityState): (-[WebView _setVisibilityState:isInitialState:]): Switch the private API form int to a WebPageVisibilityState enum. Source/WebKit2: * Shared/API/c/WKPageVisibilityTypes.h: Added. * Shared/API/c/WKSharedAPICast.h: (WebKit::toPageVisibilityState): Create an enum for page visibility APIs and a conversion function for the WK2 values to WebCore values. * Target.pri: * GNUmakefile.list.am: * WebKit2.xcodeproj/project.pbxproj: Add WKPageVisibilityTypes.h to the build as a private export. * UIProcess/API/C/WKPage.h: * UIProcess/API/C/WKPage.cpp: (WKPageSetVisibilityState): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setVisibilityState): UIProcess API to set visibility state. WebPageProxy already had m_visibilityState, so update that when setter is used. * WebProcess/InjectedBundle/API/c/WKBundle.cpp: * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: * WebProcess/InjectedBundle/InjectedBundle.h: Remove the old SPI for WebKitTestRunner. Tests now use the C API. * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::setVisibilityState): * WebProcess/WebPage/WebPage.messages.in: Update the existing WebPage API to use uint32_t, which matches other enum message types. Tools: * DumpRenderTree/mac/TestRunnerMac.mm: (TestRunner::resetPageVisibility): (TestRunner::setPageVisibility): Update the WK1 test code to use the new WK1 enums. * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::setVisibilityState): * WebKitTestRunner/InjectedBundle/InjectedBundle.h: (InjectedBundle): * WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setPageVisibility): (WTR::TestRunner::resetPageVisibility): * WebKitTestRunner/TestController.cpp: (WTR::TestController::setVisibilityState): * WebKitTestRunner/TestController.h: (TestController): * WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Update the WK2 test code to use the new WK2 API and enums. * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp: Added. (TestWebKitAPI): (TestWebKitAPI::setPageVisibilityStateWithEvalContinuation): (TestWebKitAPI::assertSerializedScriptValueIsStringValue): (TestWebKitAPI::didRunStep1StateChangeVisibleToHidden): (TestWebKitAPI::didRunStep2StateChangeHiddenToPrerender): (TestWebKitAPI::didRunStep3StateChangePrerenderToPreview): (TestWebKitAPI::didRunStep4InStatePreview): (TestWebKitAPI::TEST): Test the new WK2 API with all enum types. Change-Id: I0a057111d7ef26cb87ade328291d4f94322480b7 git-svn-id: http://svn.webkit.org/repository/webkit/trunk@141010 268f45cc-cd09-0410-ab3c-d52691b4dbfc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Tools/WebKitTestRunner')
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp16
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h3
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp15
-rw-r--r--Tools/WebKitTestRunner/TestController.cpp5
-rw-r--r--Tools/WebKitTestRunner/TestController.h3
-rw-r--r--Tools/WebKitTestRunner/TestInvocation.cpp16
6 files changed, 51 insertions, 7 deletions
diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
index fa7939d3e..96b3d657b 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
@@ -458,6 +458,22 @@ void InjectedBundle::setCustomPolicyDelegate(bool enabled, bool permissive)
WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
}
+void InjectedBundle::setVisibilityState(WKPageVisibilityState visibilityState, bool isInitialState)
+{
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetVisibilityState"));
+ WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> visibilityStateKeyWK(AdoptWK, WKStringCreateWithUTF8CString("visibilityState"));
+ WKRetainPtr<WKUInt64Ref> visibilityStateWK(AdoptWK, WKUInt64Create(visibilityState));
+ WKDictionaryAddItem(messageBody.get(), visibilityStateKeyWK.get(), visibilityStateWK.get());
+
+ WKRetainPtr<WKStringRef> isInitialKeyWK(AdoptWK, WKStringCreateWithUTF8CString("isInitialState"));
+ WKRetainPtr<WKBooleanRef> isInitialWK(AdoptWK, WKBooleanCreate(isInitialState));
+ WKDictionaryAddItem(messageBody.get(), isInitialKeyWK.get(), isInitialWK.get());
+
+ WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+}
+
bool InjectedBundle::shouldProcessWorkQueue() const
{
if (!m_useWorkQueue)
diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
index 41469ec79..527641e40 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
@@ -98,6 +98,9 @@ public:
// Policy delegate.
void setCustomPolicyDelegate(bool enabled, bool permissive);
+ // Page Visibility.
+ void setVisibilityState(WKPageVisibilityState, bool isInitialState);
+
// Work queue.
bool shouldProcessWorkQueue() const;
void processWorkQueue();
diff --git a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
index 10fccc23e..602e600f0 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
@@ -32,12 +32,13 @@
#include "PlatformWebView.h"
#include "StringFunctions.h"
#include "TestController.h"
-#include <WebCore/PageVisibilityState.h>
+#include <WebKit2/WKBundle.h>
#include <WebKit2/WKBundleBackForwardList.h>
#include <WebKit2/WKBundleFrame.h>
#include <WebKit2/WKBundleFramePrivate.h>
#include <WebKit2/WKBundleInspector.h>
#include <WebKit2/WKBundleNodeHandlePrivate.h>
+#include <WebKit2/WKBundlePage.h>
#include <WebKit2/WKBundlePagePrivate.h>
#include <WebKit2/WKBundlePrivate.h>
#include <WebKit2/WKBundleScriptWorld.h>
@@ -539,21 +540,21 @@ void TestRunner::setDefersLoading(bool shouldDeferLoading)
void TestRunner::setPageVisibility(JSStringRef state)
{
- WebCore::PageVisibilityState visibilityState = WebCore::PageVisibilityStateVisible;
+ WKPageVisibilityState visibilityState = kWKPageVisibilityStateVisible;
if (JSStringIsEqualToUTF8CString(state, "hidden"))
- visibilityState = WebCore::PageVisibilityStateHidden;
+ visibilityState = kWKPageVisibilityStateHidden;
else if (JSStringIsEqualToUTF8CString(state, "prerender"))
- visibilityState = WebCore::PageVisibilityStatePrerender;
+ visibilityState = kWKPageVisibilityStatePrerender;
else if (JSStringIsEqualToUTF8CString(state, "preview"))
- visibilityState = WebCore::PageVisibilityStatePreview;
+ visibilityState = kWKPageVisibilityStatePreview;
- WKBundleSetPageVisibilityState(InjectedBundle::shared().bundle(), InjectedBundle::shared().page()->page(), visibilityState, /* isInitialState */ false);
+ InjectedBundle::shared().setVisibilityState(visibilityState, false);
}
void TestRunner::resetPageVisibility()
{
- WKBundleSetPageVisibilityState(InjectedBundle::shared().bundle(), InjectedBundle::shared().page()->page(), WebCore::PageVisibilityStateVisible, /* isInitialState */ true);
+ InjectedBundle::shared().setVisibilityState(kWKPageVisibilityStateVisible, true);
}
typedef WTF::HashMap<unsigned, JSValueRef> CallbackMap;
diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp
index 0e47f3c24..006892f4f 100644
--- a/Tools/WebKitTestRunner/TestController.cpp
+++ b/Tools/WebKitTestRunner/TestController.cpp
@@ -1077,6 +1077,11 @@ void TestController::setCustomPolicyDelegate(bool enabled, bool permissive)
m_policyDelegatePermissive = permissive;
}
+void TestController::setVisibilityState(WKPageVisibilityState visibilityState, bool isInitialState)
+{
+ WKPageSetVisibilityState(m_mainWebView->page(), visibilityState, isInitialState);
+}
+
void TestController::decidePolicyForGeolocationPermissionRequestIfPossible()
{
if (!m_isGeolocationPermissionSet)
diff --git a/Tools/WebKitTestRunner/TestController.h b/Tools/WebKitTestRunner/TestController.h
index 332e33b70..b0ad979e0 100644
--- a/Tools/WebKitTestRunner/TestController.h
+++ b/Tools/WebKitTestRunner/TestController.h
@@ -79,6 +79,9 @@ public:
// Policy delegate.
void setCustomPolicyDelegate(bool enabled, bool permissive);
+ // Page Visibility.
+ void setVisibilityState(WKPageVisibilityState, bool isInitialState);
+
bool resetStateToConsistentValues();
WorkQueueManager& workQueueManager() { return m_workQueueManager; }
diff --git a/Tools/WebKitTestRunner/TestInvocation.cpp b/Tools/WebKitTestRunner/TestInvocation.cpp
index 8f66cc0dd..f6ad9aa45 100644
--- a/Tools/WebKitTestRunner/TestInvocation.cpp
+++ b/Tools/WebKitTestRunner/TestInvocation.cpp
@@ -478,6 +478,22 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
return;
}
+ if (WKStringIsEqualToUTF8CString(messageName, "SetVisibilityState")) {
+ ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
+ WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
+
+ WKRetainPtr<WKStringRef> visibilityStateKeyWK(AdoptWK, WKStringCreateWithUTF8CString("visibilityState"));
+ WKUInt64Ref visibilityStateWK = static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, visibilityStateKeyWK.get()));
+ WKPageVisibilityState visibilityState = static_cast<WKPageVisibilityState>(WKUInt64GetValue(visibilityStateWK));
+
+ WKRetainPtr<WKStringRef> isInitialKeyWK(AdoptWK, WKStringCreateWithUTF8CString("isInitialState"));
+ WKBooleanRef isInitialWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, isInitialKeyWK.get()));
+ bool isInitialState = WKBooleanGetValue(isInitialWK);
+
+ TestController::shared().setVisibilityState(visibilityState, isInitialState);
+ return;
+ }
+
if (WKStringIsEqualToUTF8CString(messageName, "ProcessWorkQueue")) {
if (TestController::shared().workQueueManager().processWorkQueue()) {
WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("WorkQueueProcessedCallback"));