WebKit Bugzilla
Attachment 347816 Details for
Bug 188764
: WKNavigationDelegate needs to allow clients to specify a custom blocked plug-in message
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188764-20180822103905.patch (text/plain), 22.69 KB, created by
Jeff Miller
on 2018-08-22 10:39:06 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Jeff Miller
Created:
2018-08-22 10:39:06 PDT
Size:
22.69 KB
patch
obsolete
>Subversion Revision: 235171 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index f17ee231603c97c69020d549be048c09685226bc..ccabbfdd035c743891277ef8531e01946d10e934 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,59 @@ >+2018-08-22 Jeff Miller <jeffm@apple.com> >+ >+ WKNavigationDelegate needs to allow clients to specify a custom blocked plug-in message >+ https://bugs.webkit.org/show_bug.cgi?id=188764 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add a new private WKNavigationDelegate method that takes a completion handler so clients can return >+ a custom unavailability description in addition to the policy. Change WebPageProxy::findPlugin() to >+ send a delayed reply and API::LoaderClient::pluginLoadPolicy()/API::NavigationClient::decidePolicyForPluginLoad() >+ to take a completion handler to support this. >+ >+ * UIProcess/API/APILoaderClient.h: >+ (API::LoaderClient::pluginLoadPolicy): >+ Changed to take a completion handler. The default implementation doesn't return a custom >+ unavailability description. >+ >+ * UIProcess/API/APINavigationClient.h: >+ (API::NavigationClient::decidePolicyForPluginLoad): >+ Ditto. >+ >+ * UIProcess/API/C/WKPage.cpp: >+ (WKPageSetPageLoaderClient): >+ Changed pluginLoadPolicy() to take a completion handler. >+ >+ (WKPageSetPageNavigationClient): >+ Changed decidePolicyForPluginLoad() to take a completion handler. >+ >+ * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: >+ Add alternate version of -decidePolicyForPluginLoadWithCurrentPolicy: that allows clients to return >+ the unavailibility description. >+ >+ * UIProcess/Cocoa/NavigationState.h: >+ Add flag for new delegate method. >+ Changed decidePolicyForPluginLoad() to take a completion handler. >+ >+ * UIProcess/Cocoa/NavigationState.mm: >+ (WebKit::NavigationState::setNavigationDelegate): >+ Calculate flag for new delegate method. >+ >+ (WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad): >+ Changed to take a completion handler. >+ Prefer new delegate method, if available. >+ >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::findPlugin): >+ Changed to send a delayed reply. >+ Refactored some code into a lambda so it can be shared when using m_navigationClient->decidePolicyForPluginLoad(). >+ Removed unneeded UNUSED_PARAM() macros. >+ >+ * UIProcess/WebPageProxy.h: >+ Changed findPlugin() to send a delayed reply. >+ >+ * UIProcess/WebPageProxy.messages.in: >+ Ditto. >+ > 2018-08-22 Antti Koivisto <antti@apple.com> > > Use OptionSet for NetworkCache::Storage::TraverseFlags >diff --git a/Source/WebKit/UIProcess/API/APILoaderClient.h b/Source/WebKit/UIProcess/API/APILoaderClient.h >index 29e8c945572511c7bf3404fb263cf0f9d3dbe538..751d5cebae41d26371729a337182b4a33c253bb6 100644 >--- a/Source/WebKit/UIProcess/API/APILoaderClient.h >+++ b/Source/WebKit/UIProcess/API/APILoaderClient.h >@@ -103,7 +103,7 @@ public: > virtual void navigationGestureDidEnd(WebKit::WebPageProxy&, bool willNavigate, WebKit::WebBackForwardListItem&) { } > > #if ENABLE(NETSCAPE_PLUGIN_API) >- virtual WebKit::PluginModuleLoadPolicy pluginLoadPolicy(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary&, WTF::String& /* unavailabilityDescription */) { return currentPluginLoadPolicy; } >+ virtual void pluginLoadPolicy(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary&, CompletionHandler<void(WebKit::PluginModuleLoadPolicy, const WTF::String&)>&& completionHandler) { completionHandler(currentPluginLoadPolicy, { }); } > virtual void didFailToInitializePlugin(WebKit::WebPageProxy&, API::Dictionary&) { } > virtual void didBlockInsecurePluginVersion(WebKit::WebPageProxy&, API::Dictionary&) { } > #endif // ENABLE(NETSCAPE_PLUGIN_API) >diff --git a/Source/WebKit/UIProcess/API/APINavigationClient.h b/Source/WebKit/UIProcess/API/APINavigationClient.h >index 45c19e6b0628e3b556ea3b1e06adaf24c24f257a..6398ac7c1cc9a4cc0de1a3aa25e4e7648762971c 100644 >--- a/Source/WebKit/UIProcess/API/APINavigationClient.h >+++ b/Source/WebKit/UIProcess/API/APINavigationClient.h >@@ -117,9 +117,9 @@ public: > #if ENABLE(NETSCAPE_PLUGIN_API) > virtual bool didFailToInitializePlugIn(WebKit::WebPageProxy&, API::Dictionary&) { return false; } > virtual bool didBlockInsecurePluginVersion(WebKit::WebPageProxy&, API::Dictionary&) { return false; } >- virtual WebKit::PluginModuleLoadPolicy decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, Dictionary&, WTF::String&) >+ virtual void decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, Dictionary&, CompletionHandler<void(WebKit::PluginModuleLoadPolicy, const WTF::String&)>&& completionHandler) > { >- return currentPluginLoadPolicy; >+ completionHandler(currentPluginLoadPolicy, { }); > } > #endif > >diff --git a/Source/WebKit/UIProcess/API/C/WKPage.cpp b/Source/WebKit/UIProcess/API/C/WKPage.cpp >index 5a2b9ff48b90a3ee023d3b56a7a52c8e190d4dc2..e759db2ff7826f762fa82f8c43fb7d24a4af3d22 100644 >--- a/Source/WebKit/UIProcess/API/C/WKPage.cpp >+++ b/Source/WebKit/UIProcess/API/C/WKPage.cpp >@@ -1302,7 +1302,7 @@ void WKPageSetPageLoaderClient(WKPageRef pageRef, const WKPageLoaderClientBase* > m_client.pluginDidFail(toAPI(&page), kWKErrorCodeInsecurePlugInVersion, toAPI(&pluginInformation), m_client.base.clientInfo); > } > >- PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy& page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, String& unavailabilityDescription) override >+ void pluginLoadPolicy(WebPageProxy& page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, CompletionHandler<void(WebKit::PluginModuleLoadPolicy, const String&)>&& completionHandler) override > { > WKStringRef unavailabilityDescriptionOut = 0; > PluginModuleLoadPolicy loadPolicy = currentPluginLoadPolicy; >@@ -1312,12 +1312,13 @@ void WKPageSetPageLoaderClient(WKPageRef pageRef, const WKPageLoaderClientBase* > else if (m_client.pluginLoadPolicy) > loadPolicy = toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(&page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(&pluginInformation), &unavailabilityDescriptionOut, m_client.base.clientInfo)); > >+ String unavailabilityDescription; > if (unavailabilityDescriptionOut) { > RefPtr<API::String> webUnavailabilityDescription = adoptRef(toImpl(unavailabilityDescriptionOut)); > unavailabilityDescription = webUnavailabilityDescription->string(); > } > >- return loadPolicy; >+ completionHandler(loadPolicy, unavailabilityDescription); > } > #endif // ENABLE(NETSCAPE_PLUGIN_API) > >@@ -2405,7 +2406,7 @@ void WKPageSetPageNavigationClient(WKPageRef pageRef, const WKPageNavigationClie > m_client.contentRuleListNotification(toAPI(&page), toURLRef(url.string().impl()), toAPI(API::Array::create(WTFMove(apiListIdentifiers)).ptr()), toAPI(API::Array::create(WTFMove(apiNotifications)).ptr()), m_client.base.clientInfo); > } > #if ENABLE(NETSCAPE_PLUGIN_API) >- PluginModuleLoadPolicy decidePolicyForPluginLoad(WebPageProxy& page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, String& unavailabilityDescription) override >+ void decidePolicyForPluginLoad(WebPageProxy& page, PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, CompletionHandler<void(PluginModuleLoadPolicy, const String&)>&& completionHandler) override > { > WKStringRef unavailabilityDescriptionOut = 0; > PluginModuleLoadPolicy loadPolicy = currentPluginLoadPolicy; >@@ -2413,12 +2414,13 @@ void WKPageSetPageNavigationClient(WKPageRef pageRef, const WKPageNavigationClie > if (m_client.decidePolicyForPluginLoad) > loadPolicy = toPluginModuleLoadPolicy(m_client.decidePolicyForPluginLoad(toAPI(&page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(&pluginInformation), &unavailabilityDescriptionOut, m_client.base.clientInfo)); > >+ String unavailabilityDescription; > if (unavailabilityDescriptionOut) { > RefPtr<API::String> webUnavailabilityDescription = adoptRef(toImpl(unavailabilityDescriptionOut)); > unavailabilityDescription = webUnavailabilityDescription->string(); > } > >- return loadPolicy; >+ completionHandler(loadPolicy, unavailabilityDescription); > } > #endif > }; >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h b/Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h >index fea2ae751af595b2b401ed7a280b7b94b8c1bf5c..edaf84061e240cf5bb2f8f889a634e99b4876e2b 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h >@@ -107,6 +107,7 @@ static const WKNavigationResponsePolicy _WKNavigationResponsePolicyBecomeDownloa > - (void)_webView:(WKWebView *)webView didFailToInitializePlugInWithInfo:(NSDictionary *)info WK_API_AVAILABLE(macosx(10.13.4)); > - (void)_webView:(WKWebView *)webView didBlockInsecurePluginVersionWithInfo:(NSDictionary *)info WK_API_AVAILABLE(macosx(WK_MAC_TBA)); > - (_WKPluginModuleLoadPolicy)_webView:(WKWebView *)webView decidePolicyForPluginLoadWithCurrentPolicy:(_WKPluginModuleLoadPolicy)policy pluginInfo:(NSDictionary *)info unavailabilityDescription:(NSString *)unavailabilityDescription WK_API_AVAILABLE(macosx(WK_MAC_TBA)); >+- (void)_webView:(WKWebView *)webView decidePolicyForPluginLoadWithCurrentPolicy:(_WKPluginModuleLoadPolicy)policy pluginInfo:(NSDictionary *)info completionHandler:(void (^)(_WKPluginModuleLoadPolicy policy, NSString * unavailabilityDescription))completionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA)); > - (void)_webView:(WKWebView *)webView backForwardListItemAdded:(WKBackForwardListItem *)itemAdded removed:(NSArray<WKBackForwardListItem *> *)itemsRemoved WK_API_AVAILABLE(macosx(10.13.4)); > #endif > >diff --git a/Source/WebKit/UIProcess/Cocoa/NavigationState.h b/Source/WebKit/UIProcess/Cocoa/NavigationState.h >index d16d2a9f9bc215bd7055749316f90a80ca0657de..e2a0b8bc69822ec41bb212b22db7a8e7be09ac4a 100644 >--- a/Source/WebKit/UIProcess/Cocoa/NavigationState.h >+++ b/Source/WebKit/UIProcess/Cocoa/NavigationState.h >@@ -128,7 +128,7 @@ private: > bool willGoToBackForwardListItem(WebPageProxy&, WebBackForwardListItem&, bool inPageCache, API::Object*) final; > bool didFailToInitializePlugIn(WebPageProxy&, API::Dictionary&) final; > bool didBlockInsecurePluginVersion(WebPageProxy&, API::Dictionary&) final; >- WebKit::PluginModuleLoadPolicy decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy, API::Dictionary&, WTF::String&) final; >+ void decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy, API::Dictionary&, CompletionHandler<void(WebKit::PluginModuleLoadPolicy, const WTF::String&)>&&) final; > bool didChangeBackForwardList(WebPageProxy&, WebBackForwardListItem*, const Vector<Ref<WebBackForwardListItem>>&) final; > #endif > >@@ -230,6 +230,7 @@ private: > bool webViewDidBlockInsecurePluginVersionWithInfo : 1; > bool webViewWillGoToBackForwardListItemInPageCache : 1; > bool webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoUnavailabilityDescription : 1; >+ bool webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoCompletionHandler : 1; > #endif > } m_navigationDelegateMethods; > >diff --git a/Source/WebKit/UIProcess/Cocoa/NavigationState.mm b/Source/WebKit/UIProcess/Cocoa/NavigationState.mm >index 8f60c3697b1a3dda4aff4fa3480107bb73b92323..76cfa5e2df6c6910d5e0a7e76c5f72d7afb0ac8b 100644 >--- a/Source/WebKit/UIProcess/Cocoa/NavigationState.mm >+++ b/Source/WebKit/UIProcess/Cocoa/NavigationState.mm >@@ -187,6 +187,7 @@ void NavigationState::setNavigationDelegate(id <WKNavigationDelegate> delegate) > m_navigationDelegateMethods.webViewDidBlockInsecurePluginVersionWithInfo = [delegate respondsToSelector:@selector(_webView:didBlockInsecurePluginVersionWithInfo:)]; > m_navigationDelegateMethods.webViewBackForwardListItemAddedRemoved = [delegate respondsToSelector:@selector(_webView:backForwardListItemAdded:removed:)]; > m_navigationDelegateMethods.webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoUnavailabilityDescription = [delegate respondsToSelector:@selector(_webView:decidePolicyForPluginLoadWithCurrentPolicy:pluginInfo:unavailabilityDescription:)]; >+ m_navigationDelegateMethods.webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoCompletionHandler = [delegate respondsToSelector:@selector(_webView:decidePolicyForPluginLoadWithCurrentPolicy:pluginInfo:completionHandler:)]; > #endif > } > >@@ -359,16 +360,23 @@ static _WKPluginModuleLoadPolicy wkPluginModuleLoadPolicy(WebKit::PluginModuleLo > return _WKPluginModuleLoadPolicyLoadNormally; > } > >-WebKit::PluginModuleLoadPolicy NavigationState::NavigationClient::decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, WTF::String& unavailabilityDescription) >+void NavigationState::NavigationClient::decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, API::Dictionary& pluginInformation, CompletionHandler<void(WebKit::PluginModuleLoadPolicy, const String&)>&& completionHandler) > { >- if (!m_navigationState.m_navigationDelegateMethods.webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoUnavailabilityDescription) >- return currentPluginLoadPolicy; >+ if (!m_navigationState.m_navigationDelegateMethods.webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoUnavailabilityDescription && !m_navigationState.m_navigationDelegateMethods.webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoCompletionHandler) >+ completionHandler(currentPluginLoadPolicy, String()); > > auto navigationDelegate = m_navigationState.m_navigationDelegate.get(); > if (!navigationDelegate) >- return currentPluginLoadPolicy; >+ completionHandler(currentPluginLoadPolicy, { }); > >- return pluginModuleLoadPolicy([(id <WKNavigationDelegatePrivate>)navigationDelegate _webView:m_navigationState.m_webView decidePolicyForPluginLoadWithCurrentPolicy:wkPluginModuleLoadPolicy(currentPluginLoadPolicy) pluginInfo:wrapper(pluginInformation) unavailabilityDescription:unavailabilityDescription]); >+ if (m_navigationState.m_navigationDelegateMethods.webViewDecidePolicyForPluginLoadWithCurrentPolicyPluginInfoCompletionHandler) { >+ [(id <WKNavigationDelegatePrivate>)navigationDelegate _webView:m_navigationState.m_webView decidePolicyForPluginLoadWithCurrentPolicy:wkPluginModuleLoadPolicy(currentPluginLoadPolicy) pluginInfo:wrapper(pluginInformation) completionHandler:^(_WKPluginModuleLoadPolicy policy, NSString *unavailabilityDescription) { >+ completionHandler(pluginModuleLoadPolicy(policy), unavailabilityDescription); >+ }]; >+ return; >+ } >+ >+ completionHandler(pluginModuleLoadPolicy([(id <WKNavigationDelegatePrivate>)navigationDelegate _webView:m_navigationState.m_webView decidePolicyForPluginLoadWithCurrentPolicy:wkPluginModuleLoadPolicy(currentPluginLoadPolicy) pluginInfo:wrapper(pluginInformation) unavailabilityDescription:nil]), { }); > } > > inline WebCore::WebGLLoadPolicy toWebCoreWebGLLoadPolicy(_WKWebGLLoadPolicy policy) >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 9e36b1b2e0a8b96131ade97148eaed7bb22c9e4e..0621906d69c1b4c2e6faa587964cfd8c3e838ec1 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -2140,62 +2140,62 @@ WebPreferencesStore WebPageProxy::preferencesStore() const > } > > #if ENABLE(NETSCAPE_PLUGIN_API) >-void WebPageProxy::findPlugin(const String& mimeType, uint32_t processType, const String& urlString, const String& frameURLString, const String& pageURLString, bool allowOnlyApplicationPlugins, uint64_t& pluginProcessToken, String& newMimeType, uint32_t& pluginLoadPolicy, String& unavailabilityDescription, bool& isUnsupported) >+void WebPageProxy::findPlugin(const String& mimeType, uint32_t processType, const String& urlString, const String& frameURLString, const String& pageURLString, bool allowOnlyApplicationPlugins, Messages::WebPageProxy::FindPlugin::DelayedReply&& reply) > { > PageClientProtector protector(m_pageClient); > > MESSAGE_CHECK_URL(urlString); > > URL pluginURL = URL { URL(), urlString }; >- newMimeType = mimeType.convertToASCIILowercase(); >+ String newMimeType = mimeType.convertToASCIILowercase(); > > PluginData::AllowedPluginTypes allowedPluginTypes = allowOnlyApplicationPlugins ? PluginData::OnlyApplicationPlugins : PluginData::AllPlugins; > > URL pageURL = URL { URL(), pageURLString }; > if (!m_process->processPool().pluginInfoStore().isSupportedPlugin(mimeType, pluginURL, frameURLString, pageURL)) { >- isUnsupported = true; >- pluginProcessToken = 0; >+ reply(0, newMimeType, PluginModuleLoadNormally, { }, true); > return; > } > >- isUnsupported = false; >- pluginLoadPolicy = PluginModuleLoadNormally; > PluginModuleInfo plugin = m_process->processPool().pluginInfoStore().findPlugin(newMimeType, pluginURL, allowedPluginTypes); > if (!plugin.path) { >- pluginProcessToken = 0; >+ reply(0, newMimeType, PluginModuleLoadNormally, { }, false); > return; > } > >- pluginLoadPolicy = PluginInfoStore::defaultLoadPolicyForPlugin(plugin); >+ uint32_t pluginLoadPolicy = PluginInfoStore::defaultLoadPolicyForPlugin(plugin); > > #if PLATFORM(COCOA) > auto pluginInformation = createPluginInformationDictionary(plugin, frameURLString, String(), pageURLString, String(), String()); >- if (m_navigationClient) >- pluginLoadPolicy = m_navigationClient->decidePolicyForPluginLoad(*this, static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy), pluginInformation.get(), unavailabilityDescription); >- else >- pluginLoadPolicy = m_loaderClient->pluginLoadPolicy(*this, static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy), pluginInformation.get(), unavailabilityDescription); >-#else >- UNUSED_PARAM(frameURLString); >- UNUSED_PARAM(pageURLString); >- UNUSED_PARAM(unavailabilityDescription); > #endif > >- PluginProcessSandboxPolicy pluginProcessSandboxPolicy = PluginProcessSandboxPolicyNormal; >- switch (pluginLoadPolicy) { >- case PluginModuleLoadNormally: >- pluginProcessSandboxPolicy = PluginProcessSandboxPolicyNormal; >- break; >- case PluginModuleLoadUnsandboxed: >- pluginProcessSandboxPolicy = PluginProcessSandboxPolicyUnsandboxed; >- break; >+ auto findPluginCompletion = [processType, reply = WTFMove(reply), newMimeType = WTFMove(newMimeType), plugin = WTFMove(plugin)] (uint32_t pluginLoadPolicy, const String& unavailabilityDescription) mutable { >+ PluginProcessSandboxPolicy pluginProcessSandboxPolicy = PluginProcessSandboxPolicyNormal; >+ switch (pluginLoadPolicy) { >+ case PluginModuleLoadNormally: >+ pluginProcessSandboxPolicy = PluginProcessSandboxPolicyNormal; >+ break; >+ case PluginModuleLoadUnsandboxed: >+ pluginProcessSandboxPolicy = PluginProcessSandboxPolicyUnsandboxed; >+ break; > >- case PluginModuleBlockedForSecurity: >- case PluginModuleBlockedForCompatibility: >- pluginProcessToken = 0; >- return; >- } >+ case PluginModuleBlockedForSecurity: >+ case PluginModuleBlockedForCompatibility: >+ reply(0, newMimeType, pluginLoadPolicy, unavailabilityDescription, false); >+ return; >+ } > >- pluginProcessToken = PluginProcessManager::singleton().pluginProcessToken(plugin, static_cast<PluginProcessType>(processType), pluginProcessSandboxPolicy); >+ reply(PluginProcessManager::singleton().pluginProcessToken(plugin, static_cast<PluginProcessType>(processType), pluginProcessSandboxPolicy), newMimeType, pluginLoadPolicy, unavailabilityDescription, false); >+ }; >+ >+#if PLATFORM(COCOA) >+ if (m_navigationClient) >+ m_navigationClient->decidePolicyForPluginLoad(*this, static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy), pluginInformation.get(), WTFMove(findPluginCompletion)); >+ else >+ m_loaderClient->pluginLoadPolicy(*this, static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy), pluginInformation.get(), WTFMove(findPluginCompletion)); >+#else >+ findPluginCompletion(pluginLoadPolicy, { }); >+#endif > } > > #endif // ENABLE(NETSCAPE_PLUGIN_API) >diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h >index 488f17a5de3d8b1156623245ad81a3d3e47f59dc..117b6a7014daba5870766e60b68a14f7b3d01ad2 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.h >+++ b/Source/WebKit/UIProcess/WebPageProxy.h >@@ -1748,7 +1748,7 @@ private: > #endif > > #if ENABLE(NETSCAPE_PLUGIN_API) >- void findPlugin(const String& mimeType, uint32_t processType, const String& urlString, const String& frameURLString, const String& pageURLString, bool allowOnlyApplicationPlugins, uint64_t& pluginProcessToken, String& newMIMEType, uint32_t& pluginLoadPolicy, String& unavailabilityDescription, bool& isUnsupported); >+ void findPlugin(const String& mimeType, uint32_t processType, const String& urlString, const String& frameURLString, const String& pageURLString, bool allowOnlyApplicationPlugins, Messages::WebPageProxy::FindPlugin::DelayedReply&&); > #endif > > #if USE(QUICK_LOOK) >diff --git a/Source/WebKit/UIProcess/WebPageProxy.messages.in b/Source/WebKit/UIProcess/WebPageProxy.messages.in >index 97048e9024be53c2394009ef0d0cd519423ff1fa..b8c01c02e798bb07062a50b86160e48a06e815d8 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.messages.in >+++ b/Source/WebKit/UIProcess/WebPageProxy.messages.in >@@ -432,7 +432,7 @@ messages -> WebPageProxy { > #endif > > #if ENABLE(NETSCAPE_PLUGIN_API) >- FindPlugin(String mimeType, uint32_t processType, String urlString, String frameURLString, String pageURLString, bool allowOnlyApplicationPlugins) -> (uint64_t pluginProcessToken, String newMIMEType, uint32_t pluginLoadPolicy, String unavailabilityDescription, bool isUnsupported) >+ FindPlugin(String mimeType, uint32_t processType, String urlString, String frameURLString, String pageURLString, bool allowOnlyApplicationPlugins) -> (uint64_t pluginProcessToken, String newMIMEType, uint32_t pluginLoadPolicy, String unavailabilityDescription, bool isUnsupported) Delayed > #endif > > DidUpdateActivityState()
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
achristensen
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188764
:
347586
|
347651
|
347713
|
347726
| 347816