Changeset 226609 in webkit
- Timestamp:
- Jan 8, 2018, 7:26:18 PM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r226608 r226609 1 2018-01-08 Alex Christensen <achristensen@webkit.org> 2 3 Make ObjC SPI equivalent to WKPageNavigationClient.decidePolicyForPluginLoad 4 https://bugs.webkit.org/show_bug.cgi?id=181413 5 <rdar://problem/36169005> 6 7 Reviewed by Wenson Hsieh. 8 9 * UIProcess/API/APINavigationClient.h: 10 (API::NavigationClient::decidePolicyForPluginLoad): 11 * UIProcess/API/C/WKPage.cpp: 12 (WKPageSetPageNavigationClient): 13 * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: 14 * UIProcess/Cocoa/NavigationState.h: 15 * UIProcess/Cocoa/NavigationState.mm: 16 (WebKit::NavigationState::setNavigationDelegate): 17 (WebKit::toPluginModuleLoadPolicy): 18 (WebKit::toWKPluginModuleLoadPolicy): 19 (WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad): 20 * UIProcess/WebPageProxy.cpp: 21 (WebKit::WebPageProxy::findPlugin): 22 1 23 2018-01-08 Ryosuke Niwa <rniwa@webkit.org> 2 24 -
trunk/Source/WebKit/UIProcess/API/APILoaderClient.h
r223737 r226609 104 104 105 105 #if ENABLE(NETSCAPE_PLUGIN_API) 106 virtual WebKit::PluginModuleLoadPolicy pluginLoadPolicy(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary *, WTF::String& /* unavailabilityDescription */) { return currentPluginLoadPolicy; }106 virtual WebKit::PluginModuleLoadPolicy pluginLoadPolicy(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary&, WTF::String& /* unavailabilityDescription */) { return currentPluginLoadPolicy; } 107 107 virtual void didFailToInitializePlugin(WebKit::WebPageProxy&, API::Dictionary&) { } 108 108 virtual void didBlockInsecurePluginVersion(WebKit::WebPageProxy&, API::Dictionary*) { } -
trunk/Source/WebKit/UIProcess/API/APINavigationClient.h
r225954 r226609 114 114 #if ENABLE(NETSCAPE_PLUGIN_API) 115 115 virtual bool didFailToInitializePlugIn(WebKit::WebPageProxy&, API::Dictionary&) { return false; } 116 virtual WebKit::PluginModuleLoadPolicy decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, Dictionary *, WTF::String&)116 virtual WebKit::PluginModuleLoadPolicy decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, Dictionary&, WTF::String&) 117 117 { 118 118 return currentPluginLoadPolicy; -
trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp
r226323 r226609 1279 1279 } 1280 1280 1281 PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy& page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary *pluginInformation, String& unavailabilityDescription) override1281 PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy& page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, String& unavailabilityDescription) override 1282 1282 { 1283 1283 WKStringRef unavailabilityDescriptionOut = 0; … … 1285 1285 1286 1286 if (m_client.pluginLoadPolicy_deprecatedForUseWithV2) 1287 loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy_deprecatedForUseWithV2(toAPI(&page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI( pluginInformation), m_client.base.clientInfo));1287 loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy_deprecatedForUseWithV2(toAPI(&page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(&pluginInformation), m_client.base.clientInfo)); 1288 1288 else if (m_client.pluginLoadPolicy) 1289 loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(&page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI( pluginInformation), &unavailabilityDescriptionOut, m_client.base.clientInfo));1289 loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(&page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(&pluginInformation), &unavailabilityDescriptionOut, m_client.base.clientInfo)); 1290 1290 1291 1291 if (unavailabilityDescriptionOut) { … … 2314 2314 } 2315 2315 #if ENABLE(NETSCAPE_PLUGIN_API) 2316 PluginModuleLoadPolicy decidePolicyForPluginLoad(WebPageProxy& page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary *pluginInformation, String& unavailabilityDescription) override2316 PluginModuleLoadPolicy decidePolicyForPluginLoad(WebPageProxy& page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, String& unavailabilityDescription) override 2317 2317 { 2318 2318 WKStringRef unavailabilityDescriptionOut = 0; … … 2320 2320 2321 2321 if (m_client.decidePolicyForPluginLoad) 2322 loadPolicy = toPluginModuleLoadPolicy(m_client.decidePolicyForPluginLoad(toAPI(&page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI( pluginInformation), &unavailabilityDescriptionOut, m_client.base.clientInfo));2322 loadPolicy = toPluginModuleLoadPolicy(m_client.decidePolicyForPluginLoad(toAPI(&page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(&pluginInformation), &unavailabilityDescriptionOut, m_client.base.clientInfo)); 2323 2323 2324 2324 if (unavailabilityDescriptionOut) { -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h
r223737 r226609 39 39 _WKWebGLLoadPolicyAllowCreation, 40 40 _WKWebGLLoadPolicyPendingCreation, 41 } WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 42 43 typedef NS_ENUM(NSInteger, _WKPluginModuleLoadPolicy) { 44 _WKPluginModuleLoadPolicyLoadNormally, 45 _WKPluginModuleLoadPolicyLoadUnsandboxed, 46 _WKPluginModuleLoadPolicyBlockedForSecurity, 47 _WKPluginModuleLoadPolicyBlockedForCompatibility, 41 48 } WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 42 49 #endif … … 93 100 - (void)_webView:(WKWebView *)webView willGoToBackForwardListItem:(WKBackForwardListItem *)item inPageCache:(BOOL)inPageCache WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 94 101 - (void)_webView:(WKWebView *)webView didFailToInitializePlugInWithInfo:(NSDictionary *)info WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 102 - (_WKPluginModuleLoadPolicy)_webView:(WKWebView *)webView decidePolicyForPluginLoadWithCurrentPolicy:(_WKPluginModuleLoadPolicy)policy pluginInfo:(NSDictionary *)info unavailabilityDescription:(NSString *)unavailabilityDescription WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 95 103 - (void)_webView:(WKWebView *)webView backForwardListItemAdded:(WKBackForwardListItem *)itemAdded removed:(NSArray<WKBackForwardListItem *> *)itemsRemoved WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 96 104 #endif -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.h
r224677 r226609 122 122 bool willGoToBackForwardListItem(WebPageProxy&, WebBackForwardListItem&, bool inPageCache, API::Object*) final; 123 123 bool didFailToInitializePlugIn(WebPageProxy&, API::Dictionary&) final; 124 WebKit::PluginModuleLoadPolicy decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy, API::Dictionary&, WTF::String&) final; 124 125 bool didChangeBackForwardList(WebPageProxy&, WebBackForwardListItem*, const Vector<Ref<WebBackForwardListItem>>&) final; 125 126 #endif … … 222 223 bool webViewDidFailToInitializePlugInWithInfo : 1; 223 224 bool webViewWillGoToBackForwardListItemInPageCache : 1; 225 bool webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoUnavailabilityDescription : 1; 224 226 #endif 225 227 } m_navigationDelegateMethods; -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm
r226472 r226609 186 186 m_navigationDelegateMethods.webViewDidFailToInitializePlugInWithInfo = [delegate respondsToSelector:@selector(_webView:didFailToInitializePlugInWithInfo:)]; 187 187 m_navigationDelegateMethods.webViewBackForwardListItemAddedRemoved = [delegate respondsToSelector:@selector(_webView:backForwardListItemAdded:removed:)]; 188 m_navigationDelegateMethods.webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoUnavailabilityDescription = [delegate respondsToSelector:@selector(_webView:decidePolicyForPluginLoadWithCurrentPolicy:pluginInfo:unavailabilityDescription:)]; 188 189 #endif 189 190 } … … 311 312 [(id <WKNavigationDelegatePrivate>)navigationDelegate _webView:m_navigationState.m_webView didFailToInitializePlugInWithInfo:wrapper(info)]; 312 313 return true; 314 } 315 316 static WebKit::PluginModuleLoadPolicy pluginModuleLoadPolicy(_WKPluginModuleLoadPolicy policy) 317 { 318 switch (policy) { 319 case _WKPluginModuleLoadPolicyLoadNormally: 320 return WebKit::PluginModuleLoadNormally; 321 case _WKPluginModuleLoadPolicyLoadUnsandboxed: 322 return WebKit::PluginModuleLoadUnsandboxed; 323 case _WKPluginModuleLoadPolicyBlockedForSecurity: 324 return WebKit::PluginModuleBlockedForSecurity; 325 case _WKPluginModuleLoadPolicyBlockedForCompatibility: 326 return WebKit::PluginModuleBlockedForCompatibility; 327 } 328 ASSERT_NOT_REACHED(); 329 return WebKit::PluginModuleLoadNormally; 330 } 331 332 static _WKPluginModuleLoadPolicy wkPluginModuleLoadPolicy(WebKit::PluginModuleLoadPolicy policy) 333 { 334 switch (policy) { 335 case WebKit::PluginModuleLoadNormally: 336 return _WKPluginModuleLoadPolicyLoadNormally; 337 case WebKit::PluginModuleLoadUnsandboxed: 338 return _WKPluginModuleLoadPolicyLoadUnsandboxed; 339 case WebKit::PluginModuleBlockedForSecurity: 340 return _WKPluginModuleLoadPolicyBlockedForSecurity; 341 case WebKit::PluginModuleBlockedForCompatibility: 342 return _WKPluginModuleLoadPolicyBlockedForCompatibility; 343 } 344 ASSERT_NOT_REACHED(); 345 return _WKPluginModuleLoadPolicyLoadNormally; 346 } 347 348 WebKit::PluginModuleLoadPolicy NavigationState::NavigationClient::decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, WTF::String& unavailabilityDescription) 349 { 350 if (!m_navigationState.m_navigationDelegateMethods.webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoUnavailabilityDescription) 351 return currentPluginLoadPolicy; 352 353 auto navigationDelegate = m_navigationState.m_navigationDelegate.get(); 354 if (!navigationDelegate) 355 return currentPluginLoadPolicy; 356 357 return pluginModuleLoadPolicy([(id <WKNavigationDelegatePrivate>)navigationDelegate _webView:m_navigationState.m_webView decidePolicyForPluginLoadWithCurrentPolicy:wkPluginModuleLoadPolicy(currentPluginLoadPolicy) pluginInfo:wrapper(pluginInformation) unavailabilityDescription:unavailabilityDescription]); 313 358 } 314 359 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r226604 r226609 2056 2056 2057 2057 #if PLATFORM(COCOA) 2058 RefPtr<API::Dictionary>pluginInformation = createPluginInformationDictionary(plugin, frameURLString, String(), pageURLString, String(), String());2058 auto pluginInformation = createPluginInformationDictionary(plugin, frameURLString, String(), pageURLString, String(), String()); 2059 2059 if (m_navigationClient) 2060 2060 pluginLoadPolicy = m_navigationClient->decidePolicyForPluginLoad(*this, static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy), pluginInformation.get(), unavailabilityDescription);
Note:
See TracChangeset
for help on using the changeset viewer.