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 7f79b25b0201050a6d7c4407e1e76bcf8d40ebed..608b09638fe3eeebddaa99ab355ad7c4dd8f6541 100644 |
--- a/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp |
+++ b/third_party/WebKit/Source/modules/presentation/PresentationRequest.cpp |
@@ -20,6 +20,7 @@ |
#include "modules/presentation/PresentationController.h" |
#include "modules/presentation/PresentationError.h" |
#include "platform/UserGestureIndicator.h" |
+#include "wtf/text/WTFString.h" |
namespace blink { |
@@ -50,13 +51,23 @@ Settings* settings(ExecutionContext* executionContext) |
// static |
PresentationRequest* PresentationRequest::create(ExecutionContext* executionContext, const String& url, ExceptionState& exceptionState) |
{ |
- KURL parsedUrl = KURL(executionContext->url(), url); |
- if (!parsedUrl.isValid() || parsedUrl.protocolIsAbout()) { |
- exceptionState.throwTypeError("'" + url + "' can't be resolved to a valid URL."); |
- return nullptr; |
- } |
+ WTF::Vector<String> urls(1); |
+ urls[0] = url; |
+ return create(executionContext, urls, exceptionState); |
+} |
- PresentationRequest* request = new PresentationRequest(executionContext, parsedUrl); |
+PresentationRequest* PresentationRequest::create(ExecutionContext* executionContext, const WTF::Vector<String>& urls, ExceptionState& exceptionState) |
+{ |
+ WTF::Vector<KURL> parsedUrls(urls.size()); |
+ for (size_t i = 0; i < urls.size(); ++i) { |
+ const KURL& parsedUrl = KURL(executionContext->url(), urls[i]); |
+ if (!parsedUrl.isValid() || parsedUrl.protocolIsAbout()) { |
+ exceptionState.throwTypeError("'" + urls[i] + "' can't be resolved to a valid URL."); |
+ return nullptr; |
+ } |
+ parsedUrls[i] = parsedUrl; |
+ } |
+ PresentationRequest* request = new PresentationRequest(executionContext, parsedUrls); |
request->suspendIfNeeded(); |
return request; |
} |
@@ -111,7 +122,7 @@ ScriptPromise PresentationRequest::start(ScriptState* scriptState) |
resolver->reject(DOMException::create(InvalidStateError, "The PresentationRequest is no longer associated to a frame.")); |
return promise; |
} |
- client->startSession(m_url.getString(), new PresentationConnectionCallbacks(resolver, this)); |
+ client->startSession(m_urls, new PresentationConnectionCallbacks(resolver, this)); |
return promise; |
} |
@@ -130,7 +141,7 @@ ScriptPromise PresentationRequest::reconnect(ScriptState* scriptState, const Str |
resolver->reject(DOMException::create(InvalidStateError, "The PresentationRequest is no longer associated to a frame.")); |
return promise; |
} |
- client->joinSession(m_url.getString(), id, new PresentationConnectionCallbacks(resolver, this)); |
+ client->joinSession(m_urls, id, new PresentationConnectionCallbacks(resolver, this)); |
return promise; |
} |
@@ -149,13 +160,14 @@ ScriptPromise PresentationRequest::getAvailability(ScriptState* scriptState) |
resolver->reject(DOMException::create(InvalidStateError, "The object is no longer associated to a frame.")); |
return promise; |
} |
- client->getAvailability(m_url.getString(), new PresentationAvailabilityCallbacks(resolver, m_url)); |
+ |
+ client->getAvailability(m_urls, new PresentationAvailabilityCallbacks(resolver, m_urls)); |
return promise; |
} |
-const KURL& PresentationRequest::url() const |
+const WTF::Vector<KURL>& PresentationRequest::urls() const |
{ |
- return m_url; |
+ return m_urls; |
} |
DEFINE_TRACE(PresentationRequest) |
@@ -164,10 +176,10 @@ DEFINE_TRACE(PresentationRequest) |
ActiveDOMObject::trace(visitor); |
} |
-PresentationRequest::PresentationRequest(ExecutionContext* executionContext, const KURL& url) |
+PresentationRequest::PresentationRequest(ExecutionContext* executionContext, const WTF::Vector<KURL>& urls) |
: ActiveScriptWrappable(this) |
, ActiveDOMObject(executionContext) |
- , m_url(url) |
+ , m_urls(urls) |
{ |
} |