Title: [199691] trunk/Source
Revision
199691
Author
commit-qu...@webkit.org
Date
2016-04-18 15:28:33 -0700 (Mon, 18 Apr 2016)

Log Message

Source/WebCore:
Declare a virtual function in PluginStrategy to be implemented by subclasses.
https://bugs.webkit.org/show_bug.cgi?id=156540

Patch by Tina Liu <iting_...@apple.com> on 2016-04-18
Reviewed by Anders Carlsson.

* plugins/PluginStrategy.h:

Source/WebKit/mac:
Overrode a virtual function of WebCore::PluginStrategy
https://bugs.webkit.org/show_bug.cgi?id=156540

Patch by Tina Liu <iting_...@apple.com> on 2016-04-18
Reviewed by Anders Carlsson.

* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::setPrivateBrowsingPluginLoadClientPolicy):

Source/WebKit2:
Implement functions to set plug-in load policies for private browsing mode
https://bugs.webkit.org/show_bug.cgi?id=156540

Patch by Tina Liu <iting_...@apple.com> on 2016-04-18
Reviewed by Anders Carlsson.

This patch implements API and wrappers for clients to set policies to use when using
private browsing. WebPlatformStrategies would return which policies to use depending
on whether the page is in private browsing mode.

* Shared/WebProcessCreationParameters.h:
Add a hash map for plug-in load policies for private browsing.
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

* UIProcess/API/C/mac/WKContextPrivateMac.h:
* UIProcess/API/C/mac/WKContextPrivateMac.mm:
(WKContextSetPrivateBrowsingPluginLoadClientPolicy):
Add a wrapper.

* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
Set the WebProcessCreationParameters's pluginLoadClientPoliciesForPrivateBrowsing.
(WebKit::WebProcessPool::setPluginLoadClientPolicyForBrowsingMode):
A helper function that sets plug-in policies to the corresponding instance variable:
m_pluginLoadClientPolicies for general browsing and m_pluginLoadClientPoliciesForPrivateBrowsing
for private browsing. The logic is extracted from the original setPluginLoadClientPolicy.
While we are here, get rid of the .contains() lookup as .get() will just return a
constructed object if the key is not found.
(WebKit::WebProcessPool::setPluginLoadClientPolicy):
Switch to use the helper function to set policies.
(WebKit::WebProcessPool::setPrivateBrowsingPluginLoadClientPolicy):
Ditto. Also send a message to the WebProcess for setting policies for private browsing.
(WebKit::WebProcessPool::clearPluginClientPolicies):
Clear plug-ins' private browsing policies.

* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::setPluginLoadClientPolicyForBrowsingMode):
Ditto as WebProcessPool::setPluginLoadClientPolicyForBrowsingMode.
(WebKit::WebPlatformStrategies::setPluginLoadClientPolicy):
Switch to use setPluginLoadClientPolicyForBrowsingMode to set policies.
(WebKit::WebPlatformStrategies::setPrivateBrowsingPluginLoadClientPolicy):
Use setPluginLoadClientPolicyForBrowsingMode to set policies for private browsing.
(WebKit::WebPlatformStrategies::clearPluginClientPolicies):
Clear plug-ins' private browsing policies.
(WebKit::WebPlatformStrategies::longestMatchedWildcardHostForHost):
Add an argument for private browsing. Read from the corresponding ivar.
(WebKit::WebPlatformStrategies::replaceHostWithMatchedWildcardHost):
Ditto.
(WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHost): Deleted.
Renamed this function as pluginLoadClientPolicyForHostForBrowsingMode.
(WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHostForBrowsingMode):
Ditto.
(WebKit::WebPlatformStrategies::populatePluginCache):
Get the plug-in load policies for a specific host based on the page's session status. If the page
is using ephemeral session, use the private browsing policies.

* WebProcess/WebProcess.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
Switch to call the helper function setPluginLoadClientPolicyFromCreationParameters.
(WebKit::WebProcess::setPluginLoadClientPolicies):
Logic moved from initializeWebProcess. Call PluginStrategy::setPluginLoadClientPolicy or
PluginStrategy::setPrivateBrowsingPluginLoadClientPolicy depending on the input argument.
(WebKit::WebProcess::setPrivateBrowsingPluginLoadClientPolicy):
Add a wrapper to call PluginStrategy::setPrivateBrowsingPluginLoadClientPolicy.

* WebProcess/WebProcess.messages.in:
Declare an entry for setPrivateBrowsingPluginLoadClientPolicy.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (199690 => 199691)


--- trunk/Source/WebCore/ChangeLog	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebCore/ChangeLog	2016-04-18 22:28:33 UTC (rev 199691)
@@ -1,3 +1,12 @@
+2016-04-18  Tina Liu  <iting_...@apple.com>
+
+        Declare a virtual function in PluginStrategy to be implemented by subclasses.
+        https://bugs.webkit.org/show_bug.cgi?id=156540
+
+        Reviewed by Anders Carlsson.
+
+        * plugins/PluginStrategy.h:
+
 2016-04-18  Eric Carlson  <eric.carl...@apple.com>
 
         [iOS] don't toggle playback when media engine rate changes

Modified: trunk/Source/WebCore/plugins/PluginStrategy.h (199690 => 199691)


--- trunk/Source/WebCore/plugins/PluginStrategy.h	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebCore/plugins/PluginStrategy.h	2016-04-18 22:28:33 UTC (rev 199691)
@@ -39,6 +39,7 @@
     virtual void getWebVisiblePluginInfo(const Page*, Vector<PluginInfo>&) = 0;
 #if PLATFORM(MAC)
     virtual void setPluginLoadClientPolicy(PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString) = 0;
+    virtual void setPrivateBrowsingPluginLoadClientPolicy(PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString) = 0;
     virtual void clearPluginClientPolicies() = 0;
 #endif
 

Modified: trunk/Source/WebKit/mac/ChangeLog (199690 => 199691)


--- trunk/Source/WebKit/mac/ChangeLog	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit/mac/ChangeLog	2016-04-18 22:28:33 UTC (rev 199691)
@@ -1,3 +1,14 @@
+2016-04-18  Tina Liu  <iting_...@apple.com>
+
+        Overrode a virtual function of WebCore::PluginStrategy
+        https://bugs.webkit.org/show_bug.cgi?id=156540
+
+        Reviewed by Anders Carlsson.
+
+        * WebCoreSupport/WebPlatformStrategies.h:
+        * WebCoreSupport/WebPlatformStrategies.mm:
+        (WebPlatformStrategies::setPrivateBrowsingPluginLoadClientPolicy):
+
 2016-04-18  Brent Fulgham  <bfulg...@apple.com>
 
         CSP: Remove stubs for dynamically-added favicons (via link rel="icon")

Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h (199690 => 199691)


--- trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h	2016-04-18 22:28:33 UTC (rev 199691)
@@ -64,6 +64,7 @@
     void getWebVisiblePluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>&) override;
 #if PLATFORM(MAC)
     void setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String&, const String&, const String&) override;
+    void setPrivateBrowsingPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String&, const String&, const String&) override;
     void clearPluginClientPolicies() override;
 #endif
 

Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm (199690 => 199691)


--- trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm	2016-04-18 22:28:33 UTC (rev 199691)
@@ -150,6 +150,10 @@
 {
 }
 
+void WebPlatformStrategies::setPrivateBrowsingPluginLoadClientPolicy(PluginLoadClientPolicy, const String&, const String&, const String&)
+{
+}
+
 void WebPlatformStrategies::clearPluginClientPolicies()
 {
 }

Modified: trunk/Source/WebKit2/ChangeLog (199690 => 199691)


--- trunk/Source/WebKit2/ChangeLog	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/ChangeLog	2016-04-18 22:28:33 UTC (rev 199691)
@@ -1,3 +1,77 @@
+2016-04-18  Tina Liu  <iting_...@apple.com>
+
+        Implement functions to set plug-in load policies for private browsing mode
+        https://bugs.webkit.org/show_bug.cgi?id=156540
+
+        Reviewed by Anders Carlsson.
+
+        This patch implements API and wrappers for clients to set policies to use when using
+        private browsing. WebPlatformStrategies would return which policies to use depending
+        on whether the page is in private browsing mode.
+
+        * Shared/WebProcessCreationParameters.h:
+        Add a hash map for plug-in load policies for private browsing.
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode):
+        (WebKit::WebProcessCreationParameters::decode):
+
+        * UIProcess/API/C/mac/WKContextPrivateMac.h:
+        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
+        (WKContextSetPrivateBrowsingPluginLoadClientPolicy):
+        Add a wrapper.
+
+        * UIProcess/WebProcessPool.h:
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::createNewWebProcess):
+        Set the WebProcessCreationParameters's pluginLoadClientPoliciesForPrivateBrowsing.
+        (WebKit::WebProcessPool::setPluginLoadClientPolicyForBrowsingMode):
+        A helper function that sets plug-in policies to the corresponding instance variable:
+        m_pluginLoadClientPolicies for general browsing and m_pluginLoadClientPoliciesForPrivateBrowsing
+        for private browsing. The logic is extracted from the original setPluginLoadClientPolicy.
+        While we are here, get rid of the .contains() lookup as .get() will just return a
+        constructed object if the key is not found.
+        (WebKit::WebProcessPool::setPluginLoadClientPolicy):
+        Switch to use the helper function to set policies.
+        (WebKit::WebProcessPool::setPrivateBrowsingPluginLoadClientPolicy):
+        Ditto. Also send a message to the WebProcess for setting policies for private browsing.
+        (WebKit::WebProcessPool::clearPluginClientPolicies):
+        Clear plug-ins' private browsing policies.
+
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+        (WebKit::WebPlatformStrategies::setPluginLoadClientPolicyForBrowsingMode):
+        Ditto as WebProcessPool::setPluginLoadClientPolicyForBrowsingMode.
+        (WebKit::WebPlatformStrategies::setPluginLoadClientPolicy):
+        Switch to use setPluginLoadClientPolicyForBrowsingMode to set policies.
+        (WebKit::WebPlatformStrategies::setPrivateBrowsingPluginLoadClientPolicy):
+        Use setPluginLoadClientPolicyForBrowsingMode to set policies for private browsing.
+        (WebKit::WebPlatformStrategies::clearPluginClientPolicies):
+        Clear plug-ins' private browsing policies.
+        (WebKit::WebPlatformStrategies::longestMatchedWildcardHostForHost):
+        Add an argument for private browsing. Read from the corresponding ivar.
+        (WebKit::WebPlatformStrategies::replaceHostWithMatchedWildcardHost):
+        Ditto.
+        (WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHost): Deleted.
+        Renamed this function as pluginLoadClientPolicyForHostForBrowsingMode.
+        (WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHostForBrowsingMode):
+        Ditto.
+        (WebKit::WebPlatformStrategies::populatePluginCache):
+        Get the plug-in load policies for a specific host based on the page's session status. If the page
+        is using ephemeral session, use the private browsing policies.
+
+        * WebProcess/WebProcess.h:
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::initializeWebProcess):
+        Switch to call the helper function setPluginLoadClientPolicyFromCreationParameters.
+        (WebKit::WebProcess::setPluginLoadClientPolicies):
+        Logic moved from initializeWebProcess. Call PluginStrategy::setPluginLoadClientPolicy or
+        PluginStrategy::setPrivateBrowsingPluginLoadClientPolicy depending on the input argument.
+        (WebKit::WebProcess::setPrivateBrowsingPluginLoadClientPolicy):
+        Add a wrapper to call PluginStrategy::setPrivateBrowsingPluginLoadClientPolicy.
+
+        * WebProcess/WebProcess.messages.in:
+        Declare an entry for setPrivateBrowsingPluginLoadClientPolicy.
+
 2016-04-18  Chris Dumez  <cdu...@apple.com>
 
         [WK2][iOS] Only adjust network responses' MIME type for QuickLook in the context of a main resource load

Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (199690 => 199691)


--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp	2016-04-18 22:28:33 UTC (rev 199691)
@@ -138,6 +138,7 @@
 
 #if ENABLE(NETSCAPE_PLUGIN_API)
     encoder << pluginLoadClientPolicies;
+    encoder << pluginLoadClientPoliciesForPrivateBrowsing;
 #endif
 
 #if TARGET_OS_IPHONE || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
@@ -293,6 +294,8 @@
 #if ENABLE(NETSCAPE_PLUGIN_API)
     if (!decoder.decode(parameters.pluginLoadClientPolicies))
         return false;
+    if (!decoder.decode(parameters.pluginLoadClientPoliciesForPrivateBrowsing))
+        return false;
 #endif
 
 #if TARGET_OS_IPHONE || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)

Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (199690 => 199691)


--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h	2016-04-18 22:28:33 UTC (rev 199691)
@@ -163,6 +163,7 @@
 
 #if ENABLE(NETSCAPE_PLUGIN_API)
     HashMap<String, HashMap<String, HashMap<String, uint8_t>>> pluginLoadClientPolicies;
+    HashMap<String, HashMap<String, HashMap<String, uint8_t>>> pluginLoadClientPoliciesForPrivateBrowsing;
 #endif
 
 #if TARGET_OS_IPHONE || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)

Modified: trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h (199690 => 199691)


--- trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h	2016-04-18 22:28:33 UTC (rev 199691)
@@ -39,6 +39,7 @@
 WK_EXPORT bool WKContextIsPlugInUpdateAvailable(WKContextRef context, WKStringRef plugInBundleIdentifier);
 
 WK_EXPORT void WKContextSetPluginLoadClientPolicy(WKContextRef context, WKPluginLoadClientPolicy policy, WKStringRef host, WKStringRef bundleIdentifier, WKStringRef versionString);
+WK_EXPORT void WKContextSetPrivateBrowsingPluginLoadClientPolicy(WKContextRef context, WKPluginLoadClientPolicy policy, WKStringRef host, WKStringRef bundleIdentifier, WKStringRef versionString);
 WK_EXPORT void WKContextClearPluginClientPolicies(WKContextRef context);
 
 WK_EXPORT WKDictionaryRef WKContextCopyPlugInInfoForBundleIdentifier(WKContextRef context, WKStringRef plugInBundleIdentifier);

Modified: trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm (199690 => 199691)


--- trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm	2016-04-18 22:28:33 UTC (rev 199691)
@@ -59,6 +59,13 @@
 #endif
 }
 
+void WKContextSetPrivateBrowsingPluginLoadClientPolicy(WKContextRef contextRef, WKPluginLoadClientPolicy policy, WKStringRef host, WKStringRef bundleIdentifier, WKStringRef versionString)
+{
+#if ENABLE(NETSCAPE_PLUGIN_API)
+    toImpl(contextRef)->setPrivateBrowsingPluginLoadClientPolicy(toPluginLoadClientPolicy(policy), toWTFString(host), toWTFString(bundleIdentifier), toWTFString(versionString));
+#endif
+}
+
 void WKContextClearPluginClientPolicies(WKContextRef contextRef)
 {
 #if ENABLE(NETSCAPE_PLUGIN_API)

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (199690 => 199691)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2016-04-18 22:28:33 UTC (rev 199691)
@@ -624,6 +624,7 @@
 
 #if ENABLE(NETSCAPE_PLUGIN_API)
     parameters.pluginLoadClientPolicies = m_pluginLoadClientPolicies;
+    parameters.pluginLoadClientPoliciesForPrivateBrowsing = m_pluginLoadClientPoliciesForPrivateBrowsing;
 #endif
 
 #if OS(LINUX)
@@ -1321,29 +1322,37 @@
     m_client.plugInInformationBecameAvailable(this, API::Array::create(WTFMove(plugins)).ptr());
 }
 
-void WebProcessPool::setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy policy, const String& host, const String& bundleIdentifier, const String& versionString)
+void WebProcessPool::setPluginLoadClientPolicyForPrivateBrowsing(PrivateBrowsing privateBrowsing, WebCore::PluginLoadClientPolicy policy, const String& host, const String& bundleIdentifier, const String& versionString)
 {
 #if ENABLE(NETSCAPE_PLUGIN_API)
-    HashMap<String, HashMap<String, uint8_t>> policiesByIdentifier;
-    if (m_pluginLoadClientPolicies.contains(host))
-        policiesByIdentifier = m_pluginLoadClientPolicies.get(host);
+    auto& pluginLoadClientPolicies = privateBrowsing == PrivateBrowsing::Yes ? m_pluginLoadClientPolicies : m_pluginLoadClientPoliciesForPrivateBrowsing;
 
-    HashMap<String, uint8_t> versionsToPolicies;
-    if (policiesByIdentifier.contains(bundleIdentifier))
-        versionsToPolicies = policiesByIdentifier.get(bundleIdentifier);
+    HashMap<String, HashMap<String, uint8_t>> policiesByIdentifier = pluginLoadClientPolicies.get(host);
+    HashMap<String, uint8_t> versionsToPolicies = policiesByIdentifier.get(bundleIdentifier);
 
     versionsToPolicies.set(versionString, policy);
     policiesByIdentifier.set(bundleIdentifier, versionsToPolicies);
-    m_pluginLoadClientPolicies.set(host, policiesByIdentifier);
+    pluginLoadClientPolicies.set(host, policiesByIdentifier);
 #endif
+}
 
+void WebProcessPool::setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy policy, const String& host, const String& bundleIdentifier, const String& versionString)
+{
+    setPluginLoadClientPolicyForPrivateBrowsing(PrivateBrowsing::No, policy, host, bundleIdentifier, versionString);
     sendToAllProcesses(Messages::WebProcess::SetPluginLoadClientPolicy(policy, host, bundleIdentifier, versionString));
 }
 
+void WebProcessPool::setPrivateBrowsingPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy policy, const String& host, const String& bundleIdentifier, const String& versionString)
+{
+    setPluginLoadClientPolicyForPrivateBrowsing(PrivateBrowsing::Yes, policy, host, bundleIdentifier, versionString);
+    sendToAllProcesses(Messages::WebProcess::SetPrivateBrowsingPluginLoadClientPolicy(policy, host, bundleIdentifier, versionString));
+}
+
 void WebProcessPool::clearPluginClientPolicies()
 {
 #if ENABLE(NETSCAPE_PLUGIN_API)
     m_pluginLoadClientPolicies.clear();
+    m_pluginLoadClientPoliciesForPrivateBrowsing.clear();
 #endif
     sendToAllProcesses(Messages::WebProcess::ClearPluginClientPolicies());
 }

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (199690 => 199691)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2016-04-18 22:28:33 UTC (rev 199691)
@@ -184,6 +184,10 @@
     PluginInfoStore& pluginInfoStore() { return m_pluginInfoStore; }
 
     void setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString);
+    enum class PrivateBrowsing { Yes, No };
+    void setPluginLoadClientPolicyForPrivateBrowsing(PrivateBrowsing, WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString);
+    void setPrivateBrowsingPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString);
+
     void clearPluginClientPolicies();
 #endif
 
@@ -538,6 +542,7 @@
 
 #if ENABLE(NETSCAPE_PLUGIN_API)
     HashMap<String, HashMap<String, HashMap<String, uint8_t>>> m_pluginLoadClientPolicies;
+    HashMap<String, HashMap<String, HashMap<String, uint8_t>>> m_pluginLoadClientPoliciesForPrivateBrowsing;
 #endif
 };
 

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp (199690 => 199691)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp	2016-04-18 22:28:33 UTC (rev 199691)
@@ -218,28 +218,36 @@
 }
 
 #if PLATFORM(MAC)
-void WebPlatformStrategies::setPluginLoadClientPolicy(PluginLoadClientPolicy clientPolicy, const String& host, const String& bundleIdentifier, const String& versionString)
+void WebPlatformStrategies::setPluginLoadClientPolicyForPrivateBrowsing(PrivateBrowsing privateBrowsing, PluginLoadClientPolicy clientPolicy, const String& host, const String& bundleIdentifier, const String& versionString)
 {
     String hostToSet = host.isNull() || !host.length() ? "*" : host;
     String bundleIdentifierToSet = bundleIdentifier.isNull() || !bundleIdentifier.length() ? "*" : bundleIdentifier;
     String versionStringToSet = versionString.isNull() || !versionString.length() ? "*" : versionString;
 
-    PluginPolicyMapsByIdentifier policiesByIdentifier;
-    if (m_hostsToPluginIdentifierData.contains(hostToSet))
-        policiesByIdentifier = m_hostsToPluginIdentifierData.get(hostToSet);
+    auto& hostsToPluginIdentifierData = privateBrowsing == PrivateBrowsing::Yes ? m_hostsToPluginIdentifierDataInPrivateBrowsing : m_hostsToPluginIdentifierData;
 
-    PluginLoadClientPoliciesByBundleVersion versionsToPolicies;
-    if (policiesByIdentifier.contains(bundleIdentifierToSet))
-        versionsToPolicies = policiesByIdentifier.get(bundleIdentifierToSet);
+    PluginPolicyMapsByIdentifier policiesByIdentifier = hostsToPluginIdentifierData.get(hostToSet);
+    PluginLoadClientPoliciesByBundleVersion versionsToPolicies = policiesByIdentifier.get(bundleIdentifierToSet);
 
     versionsToPolicies.set(versionStringToSet, clientPolicy);
     policiesByIdentifier.set(bundleIdentifierToSet, versionsToPolicies);
-    m_hostsToPluginIdentifierData.set(hostToSet, policiesByIdentifier);
+    hostsToPluginIdentifierData.set(hostToSet, policiesByIdentifier);
 }
 
+void WebPlatformStrategies::setPluginLoadClientPolicy(PluginLoadClientPolicy clientPolicy, const String& host, const String& bundleIdentifier, const String& versionString)
+{
+    setPluginLoadClientPolicyForPrivateBrowsing(PrivateBrowsing::No, clientPolicy, host, bundleIdentifier, versionString);
+}
+
+void WebPlatformStrategies::setPrivateBrowsingPluginLoadClientPolicy(PluginLoadClientPolicy clientPolicy, const String& host, const String& bundleIdentifier, const String& versionString)
+{
+    setPluginLoadClientPolicyForPrivateBrowsing(PrivateBrowsing::Yes, clientPolicy, host, bundleIdentifier, versionString);
+}
+
 void WebPlatformStrategies::clearPluginClientPolicies()
 {
     m_hostsToPluginIdentifierData.clear();
+    m_hostsToPluginIdentifierDataInPrivateBrowsing.clear();
 }
 
 #endif
@@ -247,11 +255,12 @@
 #if ENABLE(NETSCAPE_PLUGIN_API)
 #if PLATFORM(MAC)
 
-String WebPlatformStrategies::longestMatchedWildcardHostForHost(const String& host) const
+String WebPlatformStrategies::longestMatchedWildcardHostForHost(const String& host, PrivateBrowsing privateBrowsing) const
 {
     String longestMatchedHost;
 
-    for (auto& key : m_hostsToPluginIdentifierData.keys()) {
+    auto& hostsToPluginIdentifierData = privateBrowsing == PrivateBrowsing::Yes ? m_hostsToPluginIdentifierDataInPrivateBrowsing : m_hostsToPluginIdentifierData;
+    for (auto& key : hostsToPluginIdentifierData.keys()) {
         if (key.contains('*') && key != "*" && stringMatchesWildcardString(host, key)) {
             if (key.length() > longestMatchedHost.length())
                 longestMatchedHost = key;
@@ -263,38 +272,40 @@
     return longestMatchedHost;
 }
 
-bool WebPlatformStrategies::replaceHostWithMatchedWildcardHost(String& host, const String& identifier) const
+bool WebPlatformStrategies::replaceHostWithMatchedWildcardHost(String& host, const String& identifier, PrivateBrowsing privateBrowsing) const
 {
-    String matchedWildcardHost = longestMatchedWildcardHostForHost(host);
+    String matchedWildcardHost = longestMatchedWildcardHostForHost(host, privateBrowsing);
 
     if (matchedWildcardHost.isNull())
         return false;
 
-    auto plugInIdentifierData = m_hostsToPluginIdentifierData.find(matchedWildcardHost);
-    if (plugInIdentifierData == m_hostsToPluginIdentifierData.end() || !plugInIdentifierData->value.contains(identifier))
+    auto& hostsToPluginIdentifierData = privateBrowsing == PrivateBrowsing::Yes ? m_hostsToPluginIdentifierDataInPrivateBrowsing : m_hostsToPluginIdentifierData;
+    auto plugInIdentifierData = hostsToPluginIdentifierData.find(matchedWildcardHost);
+    if (plugInIdentifierData == hostsToPluginIdentifierData.end() || !plugInIdentifierData->value.contains(identifier))
         return false;
 
     host = matchedWildcardHost;
     return true;
 }
 
-bool WebPlatformStrategies::pluginLoadClientPolicyForHost(const String& host, const PluginInfo& info, PluginLoadClientPolicy& policy) const
+bool WebPlatformStrategies::pluginLoadClientPolicyForHostForPrivateBrowsing(PrivateBrowsing privateBrowsing, const String& host, const PluginInfo& info, PluginLoadClientPolicy& policy) const
 {
     String hostToLookUp = host;
     String identifier = info.bundleIdentifier;
 
-    auto policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp);
+    auto& hostsToPluginIdentifierData = privateBrowsing == PrivateBrowsing::Yes ? m_hostsToPluginIdentifierDataInPrivateBrowsing : m_hostsToPluginIdentifierData;
+    auto policiesByIdentifierIterator = hostsToPluginIdentifierData.find(hostToLookUp);
 
-    if (!identifier.isNull() && policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end()) {
-        if (!replaceHostWithMatchedWildcardHost(hostToLookUp, identifier))
+    if (!identifier.isNull() && policiesByIdentifierIterator == hostsToPluginIdentifierData.end()) {
+        if (!replaceHostWithMatchedWildcardHost(hostToLookUp, identifier, privateBrowsing))
             hostToLookUp = "*";
-        policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp);
-        if (hostToLookUp != "*" && policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end()) {
+        policiesByIdentifierIterator = hostsToPluginIdentifierData.find(hostToLookUp);
+        if (hostToLookUp != "*" && policiesByIdentifierIterator == hostsToPluginIdentifierData.end()) {
             hostToLookUp = "*";
-            policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp);
+            policiesByIdentifierIterator = hostsToPluginIdentifierData.find(hostToLookUp);
         }
     }
-    if (policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end())
+    if (policiesByIdentifierIterator == hostsToPluginIdentifierData.end())
         return false;
 
     auto& policiesByIdentifier = policiesByIdentifierIterator->value;
@@ -345,7 +356,7 @@
     String pageHost = page.mainFrame().loader().documentLoader()->responseURL().host();
     for (PluginInfo& info : m_cachedPlugins) {
         PluginLoadClientPolicy clientPolicy;
-        if (pluginLoadClientPolicyForHost(pageHost, info, clientPolicy))
+        if (pluginLoadClientPolicyForHostForPrivateBrowsing(page.usesEphemeralSession() ? PrivateBrowsing::Yes : PrivateBrowsing::No, pageHost, info, clientPolicy))
             info.clientLoadPolicy = clientPolicy;
     }
 #else

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h (199690 => 199691)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h	2016-04-18 22:28:33 UTC (rev 199691)
@@ -70,6 +70,7 @@
     typedef HashMap<String, PluginLoadClientPoliciesByBundleVersion> PluginPolicyMapsByIdentifier;
 
     void setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString) override;
+    void setPrivateBrowsingPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString) override;
     void clearPluginClientPolicies() override;
 #endif
 
@@ -112,9 +113,12 @@
 
 #if PLATFORM(MAC)
     HashMap<String, PluginPolicyMapsByIdentifier> m_hostsToPluginIdentifierData;
-    bool pluginLoadClientPolicyForHost(const String&, const WebCore::PluginInfo&, WebCore::PluginLoadClientPolicy&) const;
-    String longestMatchedWildcardHostForHost(const String& host) const;
-    bool replaceHostWithMatchedWildcardHost(String& host, const String& identifier) const;
+    HashMap<String, PluginPolicyMapsByIdentifier> m_hostsToPluginIdentifierDataInPrivateBrowsing;
+    enum class PrivateBrowsing { Yes, No };
+    String longestMatchedWildcardHostForHost(const String& host, PrivateBrowsing) const;
+    bool pluginLoadClientPolicyForHostForPrivateBrowsing(PrivateBrowsing, const String&, const WebCore::PluginInfo&, WebCore::PluginLoadClientPolicy&) const;
+    bool replaceHostWithMatchedWildcardHost(String& host, const String& identifier, PrivateBrowsing) const;
+    void setPluginLoadClientPolicyForPrivateBrowsing(PrivateBrowsing, WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString);
 #endif // PLATFORM(MAC)
 #endif // ENABLE(NETSCAPE_PLUGIN_API)
 };

Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (199690 => 199691)


--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp	2016-04-18 22:28:33 UTC (rev 199691)
@@ -385,14 +385,26 @@
 #endif
 
 #if ENABLE(NETSCAPE_PLUGIN_API) && PLATFORM(MAC)
-    for (auto hostIter = parameters.pluginLoadClientPolicies.begin(); hostIter != parameters.pluginLoadClientPolicies.end(); ++hostIter) {
+    setPluginLoadClientPolicies(parameters.pluginLoadClientPoliciesForPrivateBrowsing, PrivateBrowsing::Yes);
+    setPluginLoadClientPolicies(parameters.pluginLoadClientPolicies, PrivateBrowsing::No);
+#endif
+}
+
+#if ENABLE(NETSCAPE_PLUGIN_API) && PLATFORM(MAC)
+void WebProcess::setPluginLoadClientPolicies(const HashMap<String, HashMap<String, HashMap<String, uint8_t>>> &pluginPolicies, PrivateBrowsing privateBrowsing)
+{
+    for (auto hostIter = pluginPolicies.begin(); hostIter != pluginPolicies.end(); ++hostIter) {
         for (auto bundleIdentifierIter = hostIter->value.begin(); bundleIdentifierIter != hostIter->value.end(); ++bundleIdentifierIter) {
-            for (auto versionIter = bundleIdentifierIter->value.begin(); versionIter != bundleIdentifierIter->value.end(); ++versionIter)
-                platformStrategies()->pluginStrategy()->setPluginLoadClientPolicy(static_cast<PluginLoadClientPolicy>(versionIter->value), hostIter->key, bundleIdentifierIter->key, versionIter->key);
+            for (auto versionIter = bundleIdentifierIter->value.begin(); versionIter != bundleIdentifierIter->value.end(); ++versionIter) {
+                if (privateBrowsing == PrivateBrowsing::No)
+                    platformStrategies()->pluginStrategy()->setPluginLoadClientPolicy(static_cast<PluginLoadClientPolicy>(versionIter->value), hostIter->key, bundleIdentifierIter->key, versionIter->key);
+                else
+                    platformStrategies()->pluginStrategy()->setPrivateBrowsingPluginLoadClientPolicy(static_cast<PluginLoadClientPolicy>(versionIter->value), hostIter->key, bundleIdentifierIter->key, versionIter->key);
+            }
         }
     }
+}
 #endif
-}
 
 void WebProcess::ensureNetworkProcessConnection()
 {
@@ -873,6 +885,13 @@
 #endif
 }
 
+void WebProcess::setPrivateBrowsingPluginLoadClientPolicy(uint8_t policy, const String& host, const String& bundleIdentifier, const String& versionString)
+{
+#if ENABLE(NETSCAPE_PLUGIN_API) && PLATFORM(MAC)
+    platformStrategies()->pluginStrategy()->setPrivateBrowsingPluginLoadClientPolicy(static_cast<PluginLoadClientPolicy>(policy), host, bundleIdentifier, versionString);
+#endif
+}
+
 void WebProcess::clearPluginClientPolicies()
 {
 #if ENABLE(NETSCAPE_PLUGIN_API) && PLATFORM(MAC)

Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (199690 => 199691)


--- trunk/Source/WebKit2/WebProcess/WebProcess.h	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h	2016-04-18 22:28:33 UTC (rev 199691)
@@ -127,6 +127,7 @@
     void plugInDidStartFromOrigin(const String& pageOrigin, const String& pluginOrigin, const String& mimeType, WebCore::SessionID);
     void plugInDidReceiveUserInteraction(const String& pageOrigin, const String& pluginOrigin, const String& mimeType, WebCore::SessionID);
     void setPluginLoadClientPolicy(uint8_t policy, const String& host, const String& bundleIdentifier, const String& versionString);
+    void setPrivateBrowsingPluginLoadClientPolicy(uint8_t policy, const String& host, const String& bundleIdentifier, const String& versionString);
     void clearPluginClientPolicies();
 
     bool fullKeyboardAccessEnabled() const { return m_fullKeyboardAccessEnabled; }
@@ -368,6 +369,10 @@
 #endif
 
 #if ENABLE(NETSCAPE_PLUGIN_API)
+#if PLATFORM(MAC)
+    enum class PrivateBrowsing { Yes, No };
+    void setPluginLoadClientPolicies(const HashMap<String, HashMap<String, HashMap<String, uint8_t>>>&, PrivateBrowsing);
+#endif
     RefPtr<PluginProcessConnectionManager> m_pluginProcessConnectionManager;
 #endif
 

Modified: trunk/Source/WebKit2/WebProcess/WebProcess.messages.in (199690 => 199691)


--- trunk/Source/WebKit2/WebProcess/WebProcess.messages.in	2016-04-18 22:09:27 UTC (rev 199690)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.messages.in	2016-04-18 22:28:33 UTC (rev 199691)
@@ -57,6 +57,7 @@
     ResetPlugInAutoStartOriginDefaultHashes(HashMap<uint32_t,double> hashes)
     ResetPlugInAutoStartOriginHashes(HashMap<WebCore::SessionID, HashMap<uint32_t,double>> hashes)
     SetPluginLoadClientPolicy(uint8_t policy, String host, String bundleIdentifier, String versionString)
+    SetPrivateBrowsingPluginLoadClientPolicy(uint8_t policy, String host, String bundleIdentifier, String versionString)
     ClearPluginClientPolicies()
 
     void StartMemorySampler(WebKit::SandboxExtension::Handle sampleLogFileHandle, String sampleLogFilePath, double interval);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to