Changeset 130967 in webkit
- Timestamp:
- Oct 10, 2012 3:11:31 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r130965 r130967 1 2012-10-10 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> 2 3 [WK2][WTR] WebKitTestRunner UI process should be aware of Custom Policy Delegate 4 https://bugs.webkit.org/show_bug.cgi?id=95974 5 6 Reviewed by Kenneth Rohde Christiansen. 7 8 Unskipped fast/loader/onload-policy-ignore-for-frame.html for WK2. 9 10 * platform/wk2/TestExpectations: 11 1 12 2012-10-10 Adam Barth <abarth@webkit.org> 2 13 -
trunk/LayoutTests/platform/wk2/TestExpectations
r130824 r130967 553 553 inspector/geolocation-success.html 554 554 555 # WebFrameLoaderClient::dispatchDecidePolicy methods should consider556 # 'WKBundlePagePolicyActionPassThrough' policy action557 # https://bugs.webkit.org/show_bug.cgi?id=95974558 fast/loader/onload-policy-ignore-for-frame.html559 560 555 ### END OF (1) Classified failures with bug reports 561 556 ######################################## -
trunk/Tools/ChangeLog
r130956 r130967 1 2012-10-10 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> 2 3 [WK2][WTR] WebKitTestRunner UI process should be aware of Custom Policy Delegate 4 https://bugs.webkit.org/show_bug.cgi?id=95974 5 6 Reviewed by Kenneth Rohde Christiansen. 7 8 Added TestController::decidePolicyForNavigationAction() function as a 'decidePolicyForNavigationAction' WKPagePolicyClient callback 9 for WTR UI process. WTR bundle client notifies UI process about Custom Policy Delegate via newly added message, 10 so that TestController is aware of whether Custom Policy Delegate as enabled and 11 permissive. This data is used then in TestController::decidePolicyForNavigationAction for making policy decision. 12 13 * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: 14 (WTR::InjectedBundle::setCustomPolicyDelegate): 15 (WTR): 16 * WebKitTestRunner/InjectedBundle/InjectedBundle.h: 17 (InjectedBundle): 18 * WebKitTestRunner/InjectedBundle/TestRunner.cpp: 19 (WTR::TestRunner::setCustomPolicyDelegate): 20 * WebKitTestRunner/TestController.cpp: 21 (WTR::TestController::TestController): 22 (WTR::TestController::initialize): 23 (WTR::TestController::resetStateToConsistentValues): 24 (WTR::TestController::setCustomPolicyDelegate): 25 (WTR): 26 (WTR::TestController::decidePolicyForNavigationAction): 27 * WebKitTestRunner/TestController.h: 28 (TestController): 29 * WebKitTestRunner/TestInvocation.cpp: 30 (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): 31 1 32 2012-10-10 Zoltan Horvath <zoltan@webkit.org> 2 33 -
trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
r130568 r130967 430 430 } 431 431 432 void InjectedBundle::setCustomPolicyDelegate(bool enabled, bool permissive) 433 { 434 WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetCustomPolicyDelegate")); 435 436 WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate()); 437 438 WKRetainPtr<WKStringRef> enabledKeyWK(AdoptWK, WKStringCreateWithUTF8CString("enabled")); 439 WKRetainPtr<WKBooleanRef> enabledWK(AdoptWK, WKBooleanCreate(enabled)); 440 WKDictionaryAddItem(messageBody.get(), enabledKeyWK.get(), enabledWK.get()); 441 442 WKRetainPtr<WKStringRef> permissiveKeyWK(AdoptWK, WKStringCreateWithUTF8CString("permissive")); 443 WKRetainPtr<WKBooleanRef> permissiveWK(AdoptWK, WKBooleanCreate(permissive)); 444 WKDictionaryAddItem(messageBody.get(), permissiveKeyWK.get(), permissiveWK.get()); 445 446 WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); 447 } 448 432 449 } // namespace WTR -
trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
r130416 r130967 96 96 void setMockGeolocationPositionUnavailableError(WKStringRef errorMessage); 97 97 98 // Policy delegate. 99 void setCustomPolicyDelegate(bool enabled, bool permissive); 100 98 101 private: 99 102 InjectedBundle(); -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
r130776 r130967 124 124 } 125 125 126 // FIXME: Needs a full implementation see https://bugs.webkit.org/show_bug.cgi?id=42546127 126 void TestRunner::setCustomPolicyDelegate(bool enabled, bool permissive) 128 127 { 129 128 m_policyDelegateEnabled = enabled; 130 129 m_policyDelegatePermissive = permissive; 130 131 InjectedBundle::shared().setCustomPolicyDelegate(enabled, permissive); 131 132 } 132 133 -
trunk/Tools/WebKitTestRunner/TestController.cpp
r130522 r130967 94 94 , m_isGeolocationPermissionSet(false) 95 95 , m_isGeolocationPermissionAllowed(false) 96 , m_policyDelegateEnabled(false) 97 , m_policyDelegatePermissive(false) 96 98 #if PLATFORM(MAC) || PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL) 97 99 , m_eventSenderProxy(new EventSenderProxy(this)) … … 433 435 }; 434 436 WKPageSetPageLoaderClient(m_mainWebView->page(), &pageLoaderClient); 437 438 WKPagePolicyClient pagePolicyClient = { 439 kWKPagePolicyClientCurrentVersion, 440 this, 441 decidePolicyForNavigationAction, 442 0, // decidePolicyForNewWindowAction 443 0, // decidePolicyForResponse 444 0, // unableToImplementPolicy 445 }; 446 WKPageSetPagePolicyClient(m_mainWebView->page(), &pagePolicyClient); 435 447 } 436 448 … … 516 528 m_isGeolocationPermissionAllowed = false; 517 529 530 // Reset Custom Policy Delegate. 531 setCustomPolicyDelegate(false, false); 532 518 533 // Reset main page back to about:blank 519 534 m_doneResetting = false; … … 1010 1025 } 1011 1026 1027 void TestController::setCustomPolicyDelegate(bool enabled, bool permissive) 1028 { 1029 m_policyDelegateEnabled = enabled; 1030 m_policyDelegatePermissive = permissive; 1031 } 1032 1012 1033 void TestController::decidePolicyForGeolocationPermissionRequestIfPossible() 1013 1034 { … … 1035 1056 } 1036 1057 1058 void TestController::decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo) 1059 { 1060 static_cast<TestController*>(const_cast<void*>(clientInfo))->decidePolicyForNavigationAction(listener); 1061 } 1062 1063 void TestController::decidePolicyForNavigationAction(WKFramePolicyListenerRef listener) 1064 { 1065 if (m_policyDelegateEnabled && !m_policyDelegatePermissive) { 1066 WKFramePolicyListenerIgnore(listener); 1067 return; 1068 } 1069 1070 WKFramePolicyListenerUse(listener); 1071 } 1072 1037 1073 } // namespace WTR -
trunk/Tools/WebKitTestRunner/TestController.h
r130416 r130967 74 74 void handleGeolocationPermissionRequest(WKGeolocationPermissionRequestRef); 75 75 76 // Policy delegate. 77 void setCustomPolicyDelegate(bool enabled, bool permissive); 78 76 79 bool resetStateToConsistentValues(); 77 80 … … 110 113 static void decidePolicyForNotificationPermissionRequest(WKPageRef, WKSecurityOriginRef, WKNotificationPermissionRequestRef, const void*); 111 114 void decidePolicyForNotificationPermissionRequest(WKPageRef, WKSecurityOriginRef, WKNotificationPermissionRequestRef); 115 116 // WKPagePolicyClient 117 static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKURLRequestRef, WKFramePolicyListenerRef, WKTypeRef, const void*); 118 void decidePolicyForNavigationAction(WKFramePolicyListenerRef); 112 119 113 120 static WKPageRef createOtherPage(WKPageRef oldPage, WKURLRequestRef, WKDictionaryRef, WKEventModifiers, WKEventMouseButton, const void*); … … 159 166 bool m_isGeolocationPermissionAllowed; 160 167 168 bool m_policyDelegateEnabled; 169 bool m_policyDelegatePermissive; 170 161 171 EventSenderProxy* m_eventSenderProxy; 162 172 }; -
trunk/Tools/WebKitTestRunner/TestInvocation.cpp
r130416 r130967 415 415 } 416 416 417 if (WKStringIsEqualToUTF8CString(messageName, "SetCustomPolicyDelegate")) { 418 ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID()); 419 WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody); 420 421 WKRetainPtr<WKStringRef> enabledKeyWK(AdoptWK, WKStringCreateWithUTF8CString("enabled")); 422 WKBooleanRef enabledWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, enabledKeyWK.get())); 423 bool enabled = WKBooleanGetValue(enabledWK); 424 425 WKRetainPtr<WKStringRef> permissiveKeyWK(AdoptWK, WKStringCreateWithUTF8CString("permissive")); 426 WKBooleanRef permissiveWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, permissiveKeyWK.get())); 427 bool permissive = WKBooleanGetValue(permissiveWK); 428 429 TestController::shared().setCustomPolicyDelegate(enabled, permissive); 430 return; 431 } 432 417 433 ASSERT_NOT_REACHED(); 418 434 }
Note: See TracChangeset
for help on using the changeset viewer.