Commit 55100839 authored by mfoltz's avatar mfoltz Committed by Commit bot

Converts Presentation API to use KURL/WebURL in place of string types for...

Converts Presentation API to use KURL/WebURL in place of string types for availability and presentation URLs.  Removes several conversions.

BUG=632623

Review-Url: https://codereview.chromium.org/2327993002
Cr-Commit-Position: refs/heads/master@{#418767}
parent e70150fb
...@@ -6,24 +6,25 @@ ...@@ -6,24 +6,25 @@
#include "base/logging.h" #include "base/logging.h"
#include "third_party/WebKit/public/platform/WebString.h" #include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/platform/WebURL.h"
namespace content { namespace content {
PresentationConnectionClient::PresentationConnectionClient( PresentationConnectionClient::PresentationConnectionClient(
blink::mojom::PresentationSessionInfoPtr session_info) blink::mojom::PresentationSessionInfoPtr session_info)
: url_(blink::WebString::fromUTF8(session_info->url.spec())), : url_(session_info->url),
id_(blink::WebString::fromUTF8(session_info->id)) {} id_(blink::WebString::fromUTF8(session_info->id)) {}
PresentationConnectionClient::PresentationConnectionClient( PresentationConnectionClient::PresentationConnectionClient(
const GURL& url, const GURL& url,
const mojo::String& id) const mojo::String& id)
: url_(blink::WebString::fromUTF8(url.spec())), : url_(url),
id_(blink::WebString::fromUTF8(id)) {} id_(blink::WebString::fromUTF8(id)) {}
PresentationConnectionClient::~PresentationConnectionClient() { PresentationConnectionClient::~PresentationConnectionClient() {
} }
blink::WebString PresentationConnectionClient::getUrl() { blink::WebURL PresentationConnectionClient::getUrl() {
return url_; return url_;
} }
......
...@@ -25,11 +25,11 @@ class CONTENT_EXPORT PresentationConnectionClient ...@@ -25,11 +25,11 @@ class CONTENT_EXPORT PresentationConnectionClient
~PresentationConnectionClient() override; ~PresentationConnectionClient() override;
// WebPresentationConnectionClient implementation. // WebPresentationConnectionClient implementation.
blink::WebString getUrl() override; blink::WebURL getUrl() override;
blink::WebString getId() override; blink::WebString getId() override;
private: private:
blink::WebString url_; blink::WebURL url_;
blink::WebString id_; blink::WebString id_;
}; };
......
...@@ -20,10 +20,12 @@ ...@@ -20,10 +20,12 @@
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/binding.h"
#include "third_party/WebKit/public/platform/modules/presentation/WebPresentationClient.h" #include "third_party/WebKit/public/platform/modules/presentation/WebPresentationClient.h"
#include "third_party/WebKit/public/platform/modules/presentation/presentation.mojom.h" #include "third_party/WebKit/public/platform/modules/presentation/presentation.mojom.h"
#include "url/gurl.h"
namespace blink { namespace blink {
class WebPresentationAvailabilityObserver; class WebPresentationAvailabilityObserver;
class WebString; class WebString;
class WebURL;
template <typename T> template <typename T>
class WebVector; class WebVector;
} // namespace blink } // namespace blink
...@@ -51,11 +53,11 @@ class CONTENT_EXPORT PresentationDispatcher ...@@ -51,11 +53,11 @@ class CONTENT_EXPORT PresentationDispatcher
}; };
static SendMessageRequest* CreateSendTextMessageRequest( static SendMessageRequest* CreateSendTextMessageRequest(
const blink::WebString& presentationUrl, const blink::WebURL& presentationUrl,
const blink::WebString& presentationId, const blink::WebString& presentationId,
const blink::WebString& message); const blink::WebString& message);
static SendMessageRequest* CreateSendBinaryMessageRequest( static SendMessageRequest* CreateSendBinaryMessageRequest(
const blink::WebString& presentationUrl, const blink::WebURL& presentationUrl,
const blink::WebString& presentationId, const blink::WebString& presentationId,
blink::mojom::PresentationMessageType type, blink::mojom::PresentationMessageType type,
const uint8_t* data, const uint8_t* data,
...@@ -64,34 +66,34 @@ class CONTENT_EXPORT PresentationDispatcher ...@@ -64,34 +66,34 @@ class CONTENT_EXPORT PresentationDispatcher
// WebPresentationClient implementation. // WebPresentationClient implementation.
void setController(blink::WebPresentationController* controller) override; void setController(blink::WebPresentationController* controller) override;
void startSession( void startSession(
const blink::WebVector<blink::WebString>& presentationUrls, const blink::WebVector<blink::WebURL>& presentationUrls,
blink::WebPresentationConnectionClientCallbacks* callback) override; blink::WebPresentationConnectionClientCallbacks* callback) override;
void joinSession( void joinSession(
const blink::WebVector<blink::WebString>& presentationUrls, const blink::WebVector<blink::WebURL>& presentationUrls,
const blink::WebString& presentationId, const blink::WebString& presentationId,
blink::WebPresentationConnectionClientCallbacks* callback) override; blink::WebPresentationConnectionClientCallbacks* callback) override;
void sendString(const blink::WebString& presentationUrl, void sendString(const blink::WebURL& presentationUrl,
const blink::WebString& presentationId, const blink::WebString& presentationId,
const blink::WebString& message) override; const blink::WebString& message) override;
void sendArrayBuffer(const blink::WebString& presentationUrl, void sendArrayBuffer(const blink::WebURL& presentationUrl,
const blink::WebString& presentationId, const blink::WebString& presentationId,
const uint8_t* data, const uint8_t* data,
size_t length) override; size_t length) override;
void sendBlobData(const blink::WebString& presentationUrl, void sendBlobData(const blink::WebURL& presentationUrl,
const blink::WebString& presentationId, const blink::WebString& presentationId,
const uint8_t* data, const uint8_t* data,
size_t length) override; size_t length) override;
void closeSession(const blink::WebString& presentationUrl, void closeSession(const blink::WebURL& presentationUrl,
const blink::WebString& presentationId) override; const blink::WebString& presentationId) override;
void terminateSession(const blink::WebString& presentationUrl, void terminateSession(const blink::WebURL& presentationUrl,
const blink::WebString& presentationId) override; const blink::WebString& presentationId) override;
void getAvailability( void getAvailability(
const blink::WebString& availabilityUrl, const blink::WebURL& availabilityUrl,
blink::WebPresentationAvailabilityCallbacks* callbacks) override; blink::WebPresentationAvailabilityCallbacks* callbacks) override;
void startListening(blink::WebPresentationAvailabilityObserver*) override; void startListening(blink::WebPresentationAvailabilityObserver*) override;
void stopListening(blink::WebPresentationAvailabilityObserver*) override; void stopListening(blink::WebPresentationAvailabilityObserver*) override;
void setDefaultPresentationUrls( void setDefaultPresentationUrls(
const blink::WebVector<blink::WebString>& presentationUrls) override; const blink::WebVector<blink::WebURL>& presentationUrls) override;
// RenderFrameObserver implementation. // RenderFrameObserver implementation.
void DidCommitProvisionalLoad( void DidCommitProvisionalLoad(
...@@ -153,17 +155,18 @@ class CONTENT_EXPORT PresentationDispatcher ...@@ -153,17 +155,18 @@ class CONTENT_EXPORT PresentationDispatcher
// Tracks status of presentation displays availability for |availability_url|. // Tracks status of presentation displays availability for |availability_url|.
struct AvailabilityStatus { struct AvailabilityStatus {
explicit AvailabilityStatus(const std::string& availability_url); explicit AvailabilityStatus(const GURL& availability_url);
~AvailabilityStatus(); ~AvailabilityStatus();
const std::string url; const GURL url;
bool last_known_availability; bool last_known_availability;
ListeningState listening_state; ListeningState listening_state;
AvailabilityCallbacksMap availability_callbacks; AvailabilityCallbacksMap availability_callbacks;
AvailabilityObserversSet availability_observers; AvailabilityObserversSet availability_observers;
}; };
std::map<std::string, std::unique_ptr<AvailabilityStatus>> // Map of AvailabilityStatus for known URLs.
std::map<GURL, std::unique_ptr<AvailabilityStatus>>
availability_status_; availability_status_;
// Updates the listening state of availability for |status| and notifies the // Updates the listening state of availability for |status| and notifies the
......
...@@ -157,7 +157,7 @@ private: ...@@ -157,7 +157,7 @@ private:
std::unique_ptr<FileReaderLoader> m_loader; std::unique_ptr<FileReaderLoader> m_loader;
}; };
PresentationConnection::PresentationConnection(LocalFrame* frame, const String& id, const String& url) PresentationConnection::PresentationConnection(LocalFrame* frame, const String& id, const KURL& url)
: DOMWindowProperty(frame) : DOMWindowProperty(frame)
, m_id(id) , m_id(id)
, m_url(url) , m_url(url)
...@@ -406,7 +406,7 @@ void PresentationConnection::terminate() ...@@ -406,7 +406,7 @@ void PresentationConnection::terminate()
bool PresentationConnection::matches(WebPresentationConnectionClient* client) const bool PresentationConnection::matches(WebPresentationConnectionClient* client) const
{ {
return client && m_url == static_cast<String>(client->getUrl()) && m_id == static_cast<String>(client->getId()); return client && m_url == KURL(client->getUrl()) && m_id == static_cast<String>(client->getId());
} }
void PresentationConnection::didChangeState(WebPresentationConnectionState state) void PresentationConnection::didChangeState(WebPresentationConnectionState state)
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "core/fileapi/FileError.h" #include "core/fileapi/FileError.h"
#include "core/frame/DOMWindowProperty.h" #include "core/frame/DOMWindowProperty.h"
#include "platform/heap/Handle.h" #include "platform/heap/Handle.h"
#include "platform/weborigin/KURL.h"
#include "public/platform/modules/presentation/WebPresentationConnectionClient.h" #include "public/platform/modules/presentation/WebPresentationConnectionClient.h"
#include "wtf/text/WTFString.h" #include "wtf/text/WTFString.h"
#include <memory> #include <memory>
...@@ -97,7 +98,7 @@ private: ...@@ -97,7 +98,7 @@ private:
class Message; class Message;
PresentationConnection(LocalFrame*, const String& id, const String& url); PresentationConnection(LocalFrame*, const String& id, const KURL&);
bool canSendMessage(ExceptionState&); bool canSendMessage(ExceptionState&);
void handleMessageQueue(); void handleMessageQueue();
...@@ -110,7 +111,7 @@ private: ...@@ -110,7 +111,7 @@ private:
void tearDown(); void tearDown();
String m_id; String m_id;
String m_url; KURL m_url;
WebPresentationConnectionState m_state; WebPresentationConnectionState m_state;
// For Blob data handling. // For Blob data handling.
......
...@@ -121,9 +121,9 @@ void PresentationController::setDefaultRequestUrl(const KURL& url) ...@@ -121,9 +121,9 @@ void PresentationController::setDefaultRequestUrl(const KURL& url)
return; return;
// TODO(crbug.com/627655): Accept multiple URLs per PresentationRequest. // TODO(crbug.com/627655): Accept multiple URLs per PresentationRequest.
WebVector<WebString> presentationUrls(static_cast<size_t>(1)); WebVector<WebURL> presentationUrls(static_cast<size_t>(1));
if (url.isValid()) if (url.isValid())
presentationUrls[0] = url.getString(); presentationUrls[0] = url;
m_client->setDefaultPresentationUrls(presentationUrls); m_client->setDefaultPresentationUrls(presentationUrls);
} }
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "core/frame/LocalFrame.h" #include "core/frame/LocalFrame.h"
#include "core/testing/DummyPageHolder.h" #include "core/testing/DummyPageHolder.h"
#include "modules/presentation/PresentationConnectionList.h" #include "modules/presentation/PresentationConnectionList.h"
#include "platform/testing/URLTestHelpers.h"
#include "public/platform/modules/presentation/WebPresentationConnectionClient.h" #include "public/platform/modules/presentation/WebPresentationConnectionClient.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -34,7 +35,7 @@ public: ...@@ -34,7 +35,7 @@ public:
class TestWebPresentationConnectionClient : public WebPresentationConnectionClient { class TestWebPresentationConnectionClient : public WebPresentationConnectionClient {
public: public:
WebString getId() override { return WebString::fromUTF8("id"); } WebString getId() override { return WebString::fromUTF8("id"); }
WebString getUrl() override { return WebString::fromUTF8("url"); } WebURL getUrl() override { return URLTestHelpers::toKURL("http://www.example.com"); }
}; };
class PresentationReceiverTest : public ::testing::Test { class PresentationReceiverTest : public ::testing::Test {
......
...@@ -106,8 +106,8 @@ ScriptPromise PresentationRequest::start(ScriptState* scriptState) ...@@ -106,8 +106,8 @@ ScriptPromise PresentationRequest::start(ScriptState* scriptState)
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
// TODO(crbug.com/627655): Accept multiple URLs per PresentationRequest. // TODO(crbug.com/627655): Accept multiple URLs per PresentationRequest.
WebVector<WebString> presentationUrls(static_cast<size_t>(1U)); WebVector<WebURL> presentationUrls(static_cast<size_t>(1U));
presentationUrls[0] = m_url.getString(); presentationUrls[0] = m_url;
client->startSession(presentationUrls, new PresentationConnectionCallbacks(resolver, this)); client->startSession(presentationUrls, new PresentationConnectionCallbacks(resolver, this));
return resolver->promise(); return resolver->promise();
} }
...@@ -123,8 +123,8 @@ ScriptPromise PresentationRequest::reconnect(ScriptState* scriptState, const Str ...@@ -123,8 +123,8 @@ ScriptPromise PresentationRequest::reconnect(ScriptState* scriptState, const Str
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
// TODO(crbug.com/627655): Accept multiple URLs per PresentationRequest. // TODO(crbug.com/627655): Accept multiple URLs per PresentationRequest.
WebVector<WebString> presentationUrls(static_cast<size_t>(1U)); WebVector<WebURL> presentationUrls(static_cast<size_t>(1U));
presentationUrls[0] = m_url.getString(); presentationUrls[0] = m_url;
client->joinSession(presentationUrls, id, new PresentationConnectionCallbacks(resolver, this)); client->joinSession(presentationUrls, id, new PresentationConnectionCallbacks(resolver, this));
return resolver->promise(); return resolver->promise();
} }
...@@ -139,7 +139,7 @@ ScriptPromise PresentationRequest::getAvailability(ScriptState* scriptState) ...@@ -139,7 +139,7 @@ ScriptPromise PresentationRequest::getAvailability(ScriptState* scriptState)
return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(InvalidStateError, "The PresentationRequest is no longer associated to a frame.")); return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(InvalidStateError, "The PresentationRequest is no longer associated to a frame."));
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
client->getAvailability(m_url.getString(), new PresentationAvailabilityCallbacks(resolver, m_url)); client->getAvailability(m_url, new PresentationAvailabilityCallbacks(resolver, m_url));
return resolver->promise(); return resolver->promise();
} }
......
...@@ -16,6 +16,7 @@ class WebPresentationAvailabilityObserver; ...@@ -16,6 +16,7 @@ class WebPresentationAvailabilityObserver;
class WebPresentationController; class WebPresentationController;
class WebPresentationConnectionClient; class WebPresentationConnectionClient;
class WebString; class WebString;
class WebURL;
struct WebPresentationError; struct WebPresentationError;
template <typename T> template <typename T>
class WebVector; class WebVector;
...@@ -29,7 +30,6 @@ using WebPresentationConnectionClientCallbacks = WebCallbacks<std::unique_ptr<We ...@@ -29,7 +30,6 @@ using WebPresentationConnectionClientCallbacks = WebCallbacks<std::unique_ptr<We
using WebPresentationAvailabilityCallbacks = WebCallbacks<bool, const WebPresentationError&>; using WebPresentationAvailabilityCallbacks = WebCallbacks<bool, const WebPresentationError&>;
// The implementation the embedder has to provide for the Presentation API to work. // The implementation the embedder has to provide for the Presentation API to work.
// TODO(crbug.com/632623): Use WebURL instead of WebString in this API.
class WebPresentationClient { class WebPresentationClient {
public: public:
virtual ~WebPresentationClient() { } virtual ~WebPresentationClient() { }
...@@ -39,34 +39,34 @@ public: ...@@ -39,34 +39,34 @@ public:
// Called when the frame requests to start a new session. // Called when the frame requests to start a new session.
// The ownership of the |callbacks| argument is transferred to the embedder. // The ownership of the |callbacks| argument is transferred to the embedder.
virtual void startSession(const WebVector<WebString>& presentationUrls, WebPresentationConnectionClientCallbacks*) = 0; virtual void startSession(const WebVector<WebURL>& presentationUrls, WebPresentationConnectionClientCallbacks*) = 0;
// Called when the frame requests to join an existing session. // Called when the frame requests to join an existing session.
// The ownership of the |callbacks| argument is transferred to the embedder. // The ownership of the |callbacks| argument is transferred to the embedder.
virtual void joinSession(const WebVector<WebString>& presentationUrls, const WebString& presentationId, WebPresentationConnectionClientCallbacks*) = 0; virtual void joinSession(const WebVector<WebURL>& presentationUrls, const WebString& presentationId, WebPresentationConnectionClientCallbacks*) = 0;
// Called when the frame requests to send String message to an existing session. // Called when the frame requests to send String message to an existing session.
virtual void sendString(const WebString& presentationUrl, const WebString& presentationId, const WebString& message) = 0; virtual void sendString(const WebURL& presentationUrl, const WebString& presentationId, const WebString& message) = 0;
// Called when the frame requests to send ArrayBuffer/View data to an existing session. // Called when the frame requests to send ArrayBuffer/View data to an existing session.
// Embedder copies the |data| and the ownership is not transferred. // Embedder copies the |data| and the ownership is not transferred.
virtual void sendArrayBuffer(const WebString& presentationUrl, const WebString& presentationId, const uint8_t* data, size_t length) = 0; virtual void sendArrayBuffer(const WebURL& presentationUrl, const WebString& presentationId, const uint8_t* data, size_t length) = 0;
// Called when the frame requests to send Blob data to an existing session. // Called when the frame requests to send Blob data to an existing session.
// Embedder copies the |data| and the ownership is not transferred. // Embedder copies the |data| and the ownership is not transferred.
virtual void sendBlobData(const WebString& presentationUrl, const WebString& presentationId, const uint8_t* data, size_t length) = 0; virtual void sendBlobData(const WebURL& presentationUrl, const WebString& presentationId, const uint8_t* data, size_t length) = 0;
// Called when the frame requests to close an existing session. // Called when the frame requests to close an existing session.
virtual void closeSession(const WebString& presentationUrl, const WebString& presentationId) = 0; virtual void closeSession(const WebURL& presentationUrl, const WebString& presentationId) = 0;
// Called when the frame requests to terminate an existing session. // Called when the frame requests to terminate an existing session.
virtual void terminateSession(const WebString& presentationUrl, const WebString& presentationId) = 0; virtual void terminateSession(const WebURL& presentationUrl, const WebString& presentationId) = 0;
// Called when the frame wants to know the availability of a presentation // Called when the frame wants to know the availability of a presentation
// display for |availabilityUrl|. The ownership of the callbacks argument // display for |availabilityUrl|. The ownership of the callbacks argument
// is transferred to the embedder. // is transferred to the embedder.
virtual void getAvailability(const WebString& availabilityUrl, WebPresentationAvailabilityCallbacks*) = 0; virtual void getAvailability(const WebURL& availabilityUrl, WebPresentationAvailabilityCallbacks*) = 0;
// Start listening to changes in presentation displays availability. The // Start listening to changes in presentation displays availability. The
// observer will be notified in case of a change. The observer is // observer will be notified in case of a change. The observer is
...@@ -79,7 +79,7 @@ public: ...@@ -79,7 +79,7 @@ public:
// Called when a defaultRequest has been set. It sends the url associated // Called when a defaultRequest has been set. It sends the url associated
// with it for the embedder. // with it for the embedder.
virtual void setDefaultPresentationUrls(const WebVector<WebString>&) = 0; virtual void setDefaultPresentationUrls(const WebVector<WebURL>&) = 0;
}; };
} // namespace blink } // namespace blink
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define WebPresentationConnectionClient_h #define WebPresentationConnectionClient_h
#include "public/platform/WebString.h" #include "public/platform/WebString.h"
#include "public/platform/WebURL.h"
namespace blink { namespace blink {
...@@ -27,7 +28,7 @@ public: ...@@ -27,7 +28,7 @@ public:
virtual ~WebPresentationConnectionClient() { } virtual ~WebPresentationConnectionClient() { }
virtual WebString getId() = 0; virtual WebString getId() = 0;
virtual WebString getUrl() = 0; virtual WebURL getUrl() = 0;
}; };
} // namespace blink } // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment