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);