Index: third_party/WebKit/Source/bindings/modules/v8/ConditionalFeaturesForModules.cpp |
diff --git a/third_party/WebKit/Source/bindings/modules/v8/ConditionalFeaturesForModules.cpp b/third_party/WebKit/Source/bindings/modules/v8/ConditionalFeaturesForModules.cpp |
index e2dfd258efd27c08df165965ede974fa3172017f..28a10f002ee8b361952342a33d6d81576bc7003b 100644 |
--- a/third_party/WebKit/Source/bindings/modules/v8/ConditionalFeaturesForModules.cpp |
+++ b/third_party/WebKit/Source/bindings/modules/v8/ConditionalFeaturesForModules.cpp |
@@ -52,6 +52,14 @@ void installConditionalFeaturesForModules( |
v8::Isolate* isolate = scriptState->isolate(); |
const DOMWrapperWorld& world = scriptState->world(); |
if (wrapperTypeInfo == &V8Navigator::wrapperTypeInfo) { |
+ // Mimics the [SecureContext] extended attribute. Work-around for |
+ // https://crbug.com/695123. |
+ if (OriginTrials::installedAppEnabled(executionContext) && |
+ executionContext->isSecureContext()) { |
+ V8NavigatorPartial::installInstalledApp(isolate, world, |
+ v8::Local<v8::Object>(), |
+ prototypeObject, interfaceObject); |
+ } |
if (OriginTrials::webShareEnabled(executionContext)) { |
V8NavigatorPartial::installWebShare(isolate, world, |
v8::Local<v8::Object>(), |
@@ -178,6 +186,16 @@ void installPendingConditionalFeatureForModules( |
v8::Local<v8::Function>()); |
return; |
} |
+ if (feature == "InstalledApp") { |
+ if (contextData->getExistingConstructorAndPrototypeForType( |
+ &V8Navigator::wrapperTypeInfo, &prototypeObject, |
+ &interfaceObject)) { |
+ V8NavigatorPartial::installInstalledApp(isolate, world, |
+ v8::Local<v8::Object>(), |
+ prototypeObject, interfaceObject); |
+ } |
+ return; |
+ } |
if (feature == "ServiceWorkerNavigationPreload") { |
globalInstanceObject = scriptState->context()->Global(); |
V8WindowPartial::installServiceWorkerNavigationPreload( |