Chromium Code Reviews| Index: third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp |
| diff --git a/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp b/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp |
| index ed5c0ab21d24567c49b6b0288747c292a1276e13..fe8af1b069c2034b9617f1fbc04681b299a7e0b8 100644 |
| --- a/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp |
| +++ b/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp |
| @@ -10,6 +10,7 @@ |
| #include "bindings/core/v8/ScriptPromiseResolver.h" |
| #include "core/dom/Document.h" |
| #include "core/dom/ExecutionContext.h" |
| +#include "core/frame/Settings.h" |
| #include "core/frame/UseCounter.h" |
| #include "modules/EventTargetModules.h" |
| #include "modules/presentation/PresentationAvailability.h" |
| @@ -36,6 +37,14 @@ WebPresentationClient* presentationClient(ExecutionContext* executionContext) |
| return controller ? controller->client() : nullptr; |
| } |
| +Settings* getSettings(ExecutionContext* executionContext) |
|
philipj_slow
2016/02/09 07:41:09
If one calls this a getter, https://www.chromium.o
Zhiqiang Zhang (Slow)
2016/02/09 12:15:06
Done.
|
| +{ |
| + ASSERT(executionContext && executionContext->isDocument()); |
| + |
| + Document* document = toDocument(executionContext); |
| + return document->settings(); |
| +} |
| + |
| } // anonymous namespace |
| // static |
| @@ -85,7 +94,10 @@ ScriptPromise PresentationRequest::start(ScriptState* scriptState) |
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
| ScriptPromise promise = resolver->promise(); |
| - if (!UserGestureIndicator::processingUserGesture()) { |
| + Settings* settings = getSettings(executionContext()); |
| + bool isUserGestureRequired = !settings || settings->presentationRequiresUserGesture(); |
| + |
| + if (isUserGestureRequired && !UserGestureIndicator::processingUserGesture()) { |
| resolver->reject(DOMException::create(InvalidAccessError, "PresentationRequest::start() requires user gesture.")); |
| return promise; |
| } |