Index: Source/modules/presentation/PresentationRequest.cpp |
diff --git a/Source/modules/presentation/PresentationRequest.cpp b/Source/modules/presentation/PresentationRequest.cpp |
index 63f8aa2b4bbeda17b2af28b4d2738fad84e4dbfb..04b209a8cd634a693adddfb955c5ec1123727b60 100644 |
--- a/Source/modules/presentation/PresentationRequest.cpp |
+++ b/Source/modules/presentation/PresentationRequest.cpp |
@@ -19,6 +19,7 @@ |
#include "modules/presentation/PresentationError.h" |
#include "modules/presentation/PresentationSession.h" |
#include "modules/presentation/PresentationSessionCallbacks.h" |
+#include "platform/UserGestureIndicator.h" |
namespace blink { |
@@ -82,6 +83,11 @@ ScriptPromise PresentationRequest::start(ScriptState* scriptState) |
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
ScriptPromise promise = resolver->promise(); |
+ if (!UserGestureIndicator::processingUserGesture()) { |
+ resolver->reject(DOMException::create(InvalidAccessError, "PresentationRequest::start() requires user gesture.")); |
+ return promise; |
+ } |
+ |
WebPresentationClient* client = presentationClient(executionContext()); |
if (!client) { |
resolver->reject(DOMException::create(InvalidStateError, "The PresentationRequest is no longer associated to a frame.")); |