Chromium Code Reviews| Index: third_party/WebKit/Source/platform/weborigin/SecurityPolicy.cpp |
| diff --git a/third_party/WebKit/Source/platform/weborigin/SecurityPolicy.cpp b/third_party/WebKit/Source/platform/weborigin/SecurityPolicy.cpp |
| index a0bb8b1c9491f6078da4eb4c1411797fef262c42..e8de40e1e0aa33fc79531b81d28f66ffb94a1796 100644 |
| --- a/third_party/WebKit/Source/platform/weborigin/SecurityPolicy.cpp |
| +++ b/third_party/WebKit/Source/platform/weborigin/SecurityPolicy.cpp |
| @@ -46,6 +46,7 @@ namespace blink { |
| using OriginAccessWhiteList = Vector<OriginAccessEntry>; |
| using OriginAccessMap = HashMap<String, OwnPtr<OriginAccessWhiteList>>; |
| using OriginSet = HashSet<String>; |
| +using SchemeSet = HashSet<String>; |
|
Mike West
2015/10/06 07:22:34
I'd prefer to see this done via `Source/platform/w
jww
2015/10/06 21:53:56
Done.
|
| static OriginAccessMap& originAccessMap() |
| { |
| @@ -59,10 +60,17 @@ static OriginSet& trustworthyOriginSet() |
| return trustworthyOriginSet; |
| } |
| +static SchemeSet& schemesBypassingSecureContextCheckSet() |
| +{ |
| + DEFINE_STATIC_LOCAL(SchemeSet, bypassSecureContextCheckSet, ()); |
| + return bypassSecureContextCheckSet; |
| +} |
| + |
| void SecurityPolicy::init() |
| { |
| originAccessMap(); |
| trustworthyOriginSet(); |
| + schemesBypassingSecureContextCheckSet(); |
| } |
| bool SecurityPolicy::shouldHideReferrer(const KURL& url, const String& referrer) |
| @@ -146,6 +154,20 @@ bool SecurityPolicy::isOriginWhiteListedTrustworthy(const SecurityOrigin& origin |
| return trustworthyOriginSet().contains(origin.toRawString()); |
| } |
| +void SecurityPolicy::addSchemeToBypassSecureContextWhitelist(const String& scheme) |
| +{ |
| + // Must be called before we start other threads. |
| + ASSERT(WTF::isBeforeThreadCreated()); |
| + schemesBypassingSecureContextCheckSet().add(scheme); |
| +} |
| + |
| +bool SecurityPolicy::shouldOriginBypassSecureContextCheck(const SecurityOrigin& origin) |
| +{ |
| + if (origin.isUnique()) |
| + return false; |
| + return schemesBypassingSecureContextCheckSet().contains(origin.protocol()); |
| +} |
| + |
| bool SecurityPolicy::isAccessWhiteListed(const SecurityOrigin* activeOrigin, const SecurityOrigin* targetOrigin) |
| { |
| if (OriginAccessWhiteList* list = originAccessMap().get(activeOrigin->toString())) { |