Index: third_party/WebKit/Source/core/origin_trials/OriginTrialContext.cpp |
diff --git a/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.cpp b/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.cpp |
index fb45fcff2d457c0d57c2564ec07cdb1d42272382..4d27565472a3e86f951dfcc061ecfe6167567978 100644 |
--- a/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.cpp |
+++ b/third_party/WebKit/Source/core/origin_trials/OriginTrialContext.cpp |
@@ -158,6 +158,7 @@ void OriginTrialContext::addToken(const String& token) { |
m_tokens.append(token); |
validateToken(token); |
} |
+ initializePendingFeatures(); |
} |
void OriginTrialContext::addTokens(const Vector<String>& tokens) { |
@@ -167,6 +168,22 @@ void OriginTrialContext::addTokens(const Vector<String>& tokens) { |
validateToken(token); |
} |
} |
+ initializePendingFeatures(); |
+} |
+ |
+void OriginTrialContext::initializePendingFeatures() { |
+ if (!m_host->isDocument()) |
+ return; |
+ LocalFrame* frame = toDocument(m_host.get())->frame(); |
+ if (!frame) |
+ return; |
+ ScriptState* scriptState = ScriptState::forMainWorld(frame); |
+ if (!scriptState) |
+ return; |
+ if (!scriptState->contextIsValid()) |
+ return; |
+ ScriptState::Scope scope(scriptState); |
+ installPendingConditionalFeaturesOnWindow(scriptState); |
} |
bool OriginTrialContext::isTrialEnabled(const String& trialName) { |