Index: third_party/WebKit/Source/core/testing/v8/WebCoreTestSupport.cpp |
diff --git a/third_party/WebKit/Source/core/testing/v8/WebCoreTestSupport.cpp b/third_party/WebKit/Source/core/testing/v8/WebCoreTestSupport.cpp |
index 6b6a8c15d57546b7a93686650ac5a7c187a83640..b3ddee390907211132efb59c448555b20f0022e8 100644 |
--- a/third_party/WebKit/Source/core/testing/v8/WebCoreTestSupport.cpp |
+++ b/third_party/WebKit/Source/core/testing/v8/WebCoreTestSupport.cpp |
@@ -25,6 +25,7 @@ |
#include "core/testing/v8/WebCoreTestSupport.h" |
+#include "bindings/core/v8/ConditionalFeatures.h" |
#include "bindings/core/v8/DOMWrapperWorld.h" |
#include "bindings/core/v8/V8Binding.h" |
#include "bindings/core/v8/V8OriginTrialsTest.h" |
@@ -41,7 +42,7 @@ using namespace blink; |
namespace WebCoreTestSupport { |
namespace { |
-blink::InstallOriginTrialsFunction s_originalInstallOriginTrialsFunction = nullptr; |
+blink::InstallConditionalFeaturesFunction s_originalInstallConditionalFeaturesFunction = nullptr; |
} |
v8::Local<v8::Value> createInternalsObject(v8::Local<v8::Context> context) |
@@ -58,6 +59,11 @@ v8::Local<v8::Value> createInternalsObject(v8::Local<v8::Context> context) |
void injectInternalsObject(v8::Local<v8::Context> context) |
{ |
+ // Set conditional features installation function to |installConditionalFeaturesForTests| |
+ if (!s_originalInstallConditionalFeaturesFunction) { |
+ s_originalInstallConditionalFeaturesFunction = setInstallConditionalFeaturesFunction(installConditionalFeaturesForTests); |
+ } |
+ |
ScriptState* scriptState = ScriptState::from(context); |
ScriptState::Scope scope(scriptState); |
v8::Local<v8::Object> global = scriptState->context()->Global(); |
@@ -67,43 +73,18 @@ void injectInternalsObject(v8::Local<v8::Context> context) |
global->Set(scriptState->context(), v8AtomicString(scriptState->isolate(), Internals::internalsId), internals).ToChecked(); |
- // Set origin trials installation function to |installOriginTrialsForTests| |
- if (!s_originalInstallOriginTrialsFunction) { |
- s_originalInstallOriginTrialsFunction = setInstallOriginTrialsFunction(installOriginTrialsForTests); |
- } |
- |
- // If Origin Trials have been registered before the internals object was ready, |
- // then inject them into the context now |
- ExecutionContext* executionContext = toExecutionContext(context); |
- if (executionContext) { |
- OriginTrialContext* originTrialContext = OriginTrialContext::from(executionContext); |
- if (originTrialContext) |
- originTrialContext->initializePendingFeatures(); |
- } |
} |
-void installOriginTrialsForTests(ScriptState* scriptState) |
+void installConditionalFeaturesForTests(const WrapperTypeInfo* type, const blink::ScriptState* scriptState, v8::Local<v8::Object> prototypeObject, v8::Local<v8::Function> interfaceObject) |
{ |
- (*s_originalInstallOriginTrialsFunction)(scriptState); |
+ (*s_originalInstallConditionalFeaturesFunction)(type, scriptState, prototypeObject, interfaceObject); |
- v8::Local<v8::Context> context = scriptState->context(); |
- ExecutionContext* executionContext = toExecutionContext(scriptState->context()); |
- if (!executionContext->isDocument() && !executionContext->isWorkerGlobalScope()) |
- return; |
+ ExecutionContext* executionContext = scriptState->getExecutionContext(); |
OriginTrialContext* originTrialContext = OriginTrialContext::from(executionContext, OriginTrialContext::DontCreateIfNotExists); |
- if (!originTrialContext) |
- return; |
- ScriptState::Scope scope(scriptState); |
- v8::Local<v8::Object> global = context->Global(); |
- v8::Isolate* isolate = scriptState->isolate(); |
- |
- if (!originTrialContext->featureBindingsInstalled("Frobulate") && originTrialContext->isFeatureEnabled("Frobulate")) { |
- v8::Local<v8::String> internalsName = v8::String::NewFromOneByte(isolate, reinterpret_cast<const uint8_t*>("internals"), v8::NewStringType::kNormal).ToLocalChecked(); |
- v8::Local<v8::Value> v8Internals = global->Get(context, internalsName).ToLocalChecked(); |
- if (v8Internals->IsObject()) { |
- V8OriginTrialsTest::installOriginTrialsSampleAPI(scriptState); |
- originTrialContext->setFeatureBindingsInstalled("Frobulate"); |
+ if (type == &V8OriginTrialsTest::wrapperTypeInfo) { |
+ if (originTrialContext && originTrialContext->isFeatureEnabled("Frobulate")) { |
+ V8OriginTrialsTest::installOriginTrialsSampleAPI(scriptState->isolate(), scriptState->world(), v8::Local<v8::Object>(), prototypeObject, interfaceObject); |
} |
} |
} |