| Index: third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp
|
| diff --git a/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp b/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp
|
| index 4aa8e0263cd23561b5d4e24f87662f067f14a607..a79e321554cd934336f420935d49d64160b2c75b 100644
|
| --- a/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp
|
| +++ b/third_party/WebKit/Source/modules/remoteplayback/RemotePlayback.cpp
|
| @@ -80,24 +80,30 @@ ScriptPromise RemotePlayback::getAvailability(ScriptState* scriptState)
|
| return promise;
|
| }
|
|
|
| -ScriptPromise RemotePlayback::connect(ScriptState* scriptState)
|
| +ScriptPromise RemotePlayback::prompt(ScriptState* scriptState)
|
| {
|
| + // TODO(avayvod): implement steps 3, 4, 5, 8, 9 of the algorithm.
|
| + // https://crbug.com/647441
|
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
|
| ScriptPromise promise = resolver->promise();
|
|
|
| // TODO(avayvod): should we have a separate flag to disable the user gesture
|
| // requirement (for tests) or reuse the one for the PresentationRequest::start()?
|
| if (!UserGestureIndicator::utilizeUserGesture()) {
|
| - resolver->reject(DOMException::create(InvalidAccessError, "RemotePlayback::connect() requires user gesture."));
|
| + resolver->reject(DOMException::create(InvalidAccessError, "RemotePlayback::prompt() requires user gesture."));
|
| return promise;
|
| }
|
|
|
| if (m_state == WebRemotePlaybackState::Disconnected) {
|
| - m_connectPromiseResolvers.append(resolver);
|
| + m_promptPromiseResolvers.append(resolver);
|
| m_mediaElement->requestRemotePlayback();
|
| } else {
|
| m_mediaElement->requestRemotePlaybackControl();
|
| - resolver->resolve(false);
|
| + // TODO(avayvod): Need to keep the resolver until user chooses to stop
|
| + // the remote playback (resolve) or dismisses the UI (reject).
|
| + // Steps 11 and 12 of the prompt() algorithm.
|
| + // https://crbug.com/647441
|
| + resolver->resolve();
|
| }
|
|
|
| return promise;
|
| @@ -112,7 +118,7 @@ bool RemotePlayback::hasPendingActivity() const
|
| {
|
| return hasEventListeners()
|
| || !m_availabilityObjects.isEmpty()
|
| - || !m_connectPromiseResolvers.isEmpty();
|
| + || !m_promptPromiseResolvers.isEmpty();
|
| }
|
|
|
| void RemotePlayback::stateChanged(WebRemotePlaybackState state)
|
| @@ -123,13 +129,13 @@ void RemotePlayback::stateChanged(WebRemotePlaybackState state)
|
| // TODO(avayvod): cleanup this logic when we implementing the "connecting"
|
| // state.
|
| if (state != WebRemotePlaybackState::Disconnected) {
|
| - for (auto& resolver : m_connectPromiseResolvers)
|
| - resolver->resolve(true);
|
| + for (auto& resolver : m_promptPromiseResolvers)
|
| + resolver->resolve();
|
| } else {
|
| - for (auto& resolver : m_connectPromiseResolvers)
|
| + for (auto& resolver : m_promptPromiseResolvers)
|
| resolver->reject(DOMException::create(AbortError, "Failed to connect to the remote device."));
|
| }
|
| - m_connectPromiseResolvers.clear();
|
| + m_promptPromiseResolvers.clear();
|
|
|
| if (m_state == state)
|
| return;
|
| @@ -148,17 +154,17 @@ void RemotePlayback::availabilityChanged(bool available)
|
| availabilityObject->availabilityChanged(available);
|
| }
|
|
|
| -void RemotePlayback::connectCancelled()
|
| +void RemotePlayback::promptCancelled()
|
| {
|
| - for (auto& resolver : m_connectPromiseResolvers)
|
| - resolver->resolve(false);
|
| - m_connectPromiseResolvers.clear();
|
| + for (auto& resolver : m_promptPromiseResolvers)
|
| + resolver->resolve();
|
| + m_promptPromiseResolvers.clear();
|
| }
|
|
|
| DEFINE_TRACE(RemotePlayback)
|
| {
|
| visitor->trace(m_availabilityObjects);
|
| - visitor->trace(m_connectPromiseResolvers);
|
| + visitor->trace(m_promptPromiseResolvers);
|
| visitor->trace(m_mediaElement);
|
| EventTargetWithInlineData::trace(visitor);
|
| }
|
|
|