Optional<WebCore::PluginLoadClientPolicy> WebPluginInfoProvider::pluginLoadClientPolicyForHost(const String& host, const WebCore::PluginInfo& info) const { String hostToLookUp = host; String identifier = info.bundleIdentifier; auto policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp); if (!identifier.isNull() && policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end()) { if (!replaceHostWithMatchedWildcardHost(hostToLookUp, identifier)) hostToLookUp = "*"; policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp); if (hostToLookUp != "*" && policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end()) { hostToLookUp = "*"; policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp); } } if (policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end()) return Nullopt; auto& policiesByIdentifier = policiesByIdentifierIterator->value; if (!identifier) identifier = "*"; auto identifierPolicyIterator = policiesByIdentifier.find(identifier); if (identifier != "*" && identifierPolicyIterator == policiesByIdentifier.end()) { identifier = "*"; identifierPolicyIterator = policiesByIdentifier.find(identifier); } if (identifierPolicyIterator == policiesByIdentifier.end()) return Nullopt; auto& versionsToPolicies = identifierPolicyIterator->value; String version = info.versionString; if (!version) version = "*"; auto policyIterator = versionsToPolicies.find(version); if (version != "*" && policyIterator == versionsToPolicies.end()) { version = "*"; policyIterator = versionsToPolicies.find(version); } if (policyIterator == versionsToPolicies.end()) return Nullopt; return policyIterator->value; }
bool WebPlatformStrategies::pluginLoadClientPolicyForHost(const String& host, const PluginInfo& info, PluginLoadClientPolicy& policy) const { String hostToLookUp = host; String identifier = info.bundleIdentifier; auto policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp); if (!identifier.isNull() && policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end()) { if (!replaceHostWithMatchedWildcardHost(hostToLookUp, identifier)) hostToLookUp = "*"; policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp); if (hostToLookUp != "*" && policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end()) { hostToLookUp = "*"; policiesByIdentifierIterator = m_hostsToPluginIdentifierData.find(hostToLookUp); } } if (policiesByIdentifierIterator == m_hostsToPluginIdentifierData.end()) return false; auto& policiesByIdentifier = policiesByIdentifierIterator->value; if (!identifier) identifier = "*"; auto identifierPolicyIterator = policiesByIdentifier.find(identifier); if (identifier != "*" && identifierPolicyIterator == policiesByIdentifier.end()) { identifier = "*"; identifierPolicyIterator = policiesByIdentifier.find(identifier); } if (identifierPolicyIterator == policiesByIdentifier.end()) return false; auto& versionsToPolicies = identifierPolicyIterator->value; String version = info.versionString; if (!version) version = "*"; auto policyIterator = versionsToPolicies.find(version); if (version != "*" && policyIterator == versionsToPolicies.end()) { version = "*"; policyIterator = versionsToPolicies.find(version); } if (policyIterator == versionsToPolicies.end()) return false; policy = policyIterator->value; return true; }