Index: content/renderer/presentation/presentation_dispatcher.cc |
diff --git a/content/renderer/presentation/presentation_dispatcher.cc b/content/renderer/presentation/presentation_dispatcher.cc |
index dbbfc1e4f48810c959c8b339b67602663ef2ba66..9543fb9129c205c90e32b3a5e23a8286b88307a3 100644 |
--- a/content/renderer/presentation/presentation_dispatcher.cc |
+++ b/content/renderer/presentation/presentation_dispatcher.cc |
@@ -4,7 +4,6 @@ |
#include "content/renderer/presentation/presentation_dispatcher.h" |
-#include <algorithm> |
#include <utility> |
#include <vector> |
@@ -16,6 +15,7 @@ |
#include "content/renderer/presentation/presentation_connection_client.h" |
#include "services/shell/public/cpp/interface_provider.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
+#include "third_party/WebKit/public/platform/WebURL.h" |
#include "third_party/WebKit/public/platform/WebVector.h" |
#include "third_party/WebKit/public/platform/modules/presentation/WebPresentationAvailabilityObserver.h" |
#include "third_party/WebKit/public/platform/modules/presentation/WebPresentationController.h" |
@@ -100,14 +100,14 @@ void PresentationDispatcher::setController( |
} |
void PresentationDispatcher::startSession( |
- const blink::WebVector<blink::WebString>& presentationUrls, |
+ const blink::WebVector<blink::WebURL>& presentationUrls, |
blink::WebPresentationConnectionClientCallbacks* callback) { |
DCHECK(callback); |
ConnectToPresentationServiceIfNeeded(); |
- std::vector<GURL> urls(presentationUrls.size()); |
- std::transform(presentationUrls.begin(), presentationUrls.end(), urls.begin(), |
- [](const blink::WebString& url) { return GURL(url.utf8()); }); |
+ std::vector<GURL> urls; |
+ for (const auto& url : presentationUrls) |
+ urls.push_back(url); |
// The dispatcher owns the service so |this| will be valid when |
// OnSessionCreated() is called. |callback| needs to be alive and also needs |
@@ -118,15 +118,15 @@ void PresentationDispatcher::startSession( |
} |
void PresentationDispatcher::joinSession( |
- const blink::WebVector<blink::WebString>& presentationUrls, |
+ const blink::WebVector<blink::WebURL>& presentationUrls, |
const blink::WebString& presentationId, |
blink::WebPresentationConnectionClientCallbacks* callback) { |
DCHECK(callback); |
ConnectToPresentationServiceIfNeeded(); |
- std::vector<GURL> urls(presentationUrls.size()); |
- std::transform(presentationUrls.begin(), presentationUrls.end(), urls.begin(), |
- [](const blink::WebString& url) { return GURL(url.utf8()); }); |
+ std::vector<GURL> urls; |
+ for (const auto& url : presentationUrls) |
+ urls.push_back(url); |
// The dispatcher owns the service so |this| will be valid when |
// OnSessionCreated() is called. |callback| needs to be alive and also needs |
@@ -137,10 +137,9 @@ void PresentationDispatcher::joinSession( |
base::Unretained(this), base::Owned(callback))); |
} |
-void PresentationDispatcher::sendString( |
- const blink::WebString& presentationUrl, |
- const blink::WebString& presentationId, |
- const blink::WebString& message) { |
+void PresentationDispatcher::sendString(const blink::WebURL& presentationUrl, |
+ const blink::WebString& presentationId, |
+ const blink::WebString& message) { |
if (message.utf8().size() > kMaxPresentationSessionMessageSize) { |
// TODO(crbug.com/459008): Limit the size of individual messages to 64k |
// for now. Consider throwing DOMException or splitting bigger messages |
@@ -157,7 +156,7 @@ void PresentationDispatcher::sendString( |
} |
void PresentationDispatcher::sendArrayBuffer( |
- const blink::WebString& presentationUrl, |
+ const blink::WebURL& presentationUrl, |
const blink::WebString& presentationId, |
const uint8_t* data, |
size_t length) { |
@@ -177,7 +176,7 @@ void PresentationDispatcher::sendArrayBuffer( |
} |
void PresentationDispatcher::sendBlobData( |
- const blink::WebString& presentationUrl, |
+ const blink::WebURL& presentationUrl, |
const blink::WebString& presentationId, |
const uint8_t* data, |
size_t length) { |
@@ -227,30 +226,28 @@ void PresentationDispatcher::HandleSendMessageRequests(bool success) { |
} |
void PresentationDispatcher::closeSession( |
- const blink::WebString& presentationUrl, |
+ const blink::WebURL& presentationUrl, |
const blink::WebString& presentationId) { |
ConnectToPresentationServiceIfNeeded(); |
- presentation_service_->CloseConnection(GURL(presentationUrl.utf8()), |
+ presentation_service_->CloseConnection(presentationUrl, |
presentationId.utf8()); |
} |
void PresentationDispatcher::terminateSession( |
- const blink::WebString& presentationUrl, |
+ const blink::WebURL& presentationUrl, |
const blink::WebString& presentationId) { |
ConnectToPresentationServiceIfNeeded(); |
- presentation_service_->Terminate(GURL(presentationUrl.utf8()), |
- presentationId.utf8()); |
+ presentation_service_->Terminate(presentationUrl, presentationId.utf8()); |
} |
void PresentationDispatcher::getAvailability( |
- const blink::WebString& availabilityUrl, |
+ const blink::WebURL& availabilityUrl, |
blink::WebPresentationAvailabilityCallbacks* callbacks) { |
- const std::string& availability_url = availabilityUrl.utf8(); |
AvailabilityStatus* status = nullptr; |
- auto status_it = availability_status_.find(availability_url); |
+ auto status_it = availability_status_.find(availabilityUrl); |
if (status_it == availability_status_.end()) { |
- status = new AvailabilityStatus(availability_url); |
- availability_status_[availability_url] = base::WrapUnique(status); |
+ status = new AvailabilityStatus(availabilityUrl); |
+ availability_status_[availabilityUrl] = base::WrapUnique(status); |
} else { |
status = status_it->second.get(); |
} |
@@ -268,11 +265,10 @@ void PresentationDispatcher::getAvailability( |
void PresentationDispatcher::startListening( |
blink::WebPresentationAvailabilityObserver* observer) { |
- const std::string& availability_url = observer->url().string().utf8(); |
- auto status_it = availability_status_.find(availability_url); |
+ auto status_it = availability_status_.find(observer->url()); |
if (status_it == availability_status_.end()) { |
DLOG(WARNING) << "Start listening for availability for unknown URL " |
- << availability_url; |
+ << observer->url(); |
return; |
} |
status_it->second->availability_observers.insert(observer); |
@@ -281,11 +277,10 @@ void PresentationDispatcher::startListening( |
void PresentationDispatcher::stopListening( |
blink::WebPresentationAvailabilityObserver* observer) { |
- const std::string& availability_url = observer->url().string().utf8(); |
- auto status_it = availability_status_.find(availability_url); |
+ auto status_it = availability_status_.find(observer->url()); |
if (status_it == availability_status_.end()) { |
DLOG(WARNING) << "Stop listening for availability for unknown URL " |
- << availability_url; |
+ << observer->url(); |
return; |
} |
status_it->second->availability_observers.erase(observer); |
@@ -293,12 +288,13 @@ void PresentationDispatcher::stopListening( |
} |
void PresentationDispatcher::setDefaultPresentationUrls( |
- const blink::WebVector<blink::WebString>& presentationUrls) { |
+ const blink::WebVector<blink::WebURL>& presentationUrls) { |
ConnectToPresentationServiceIfNeeded(); |
- std::vector<GURL> urls(presentationUrls.size()); |
- std::transform(presentationUrls.begin(), presentationUrls.end(), urls.begin(), |
- [](const blink::WebString& url) { return GURL(url.utf8()); }); |
+ std::vector<GURL> urls; |
+ for (const auto& url : presentationUrls) |
+ urls.push_back(url); |
+ |
presentation_service_->SetDefaultPresentationUrls(urls); |
} |
@@ -321,7 +317,7 @@ void PresentationDispatcher::OnDestruct() { |
void PresentationDispatcher::OnScreenAvailabilityUpdated(const GURL& url, |
bool available) { |
- auto status_it = availability_status_.find(url.spec()); |
+ auto status_it = availability_status_.find(url); |
if (status_it == availability_status_.end()) |
return; |
AvailabilityStatus* status = status_it->second.get(); |
@@ -343,7 +339,7 @@ void PresentationDispatcher::OnScreenAvailabilityUpdated(const GURL& url, |
} |
void PresentationDispatcher::OnScreenAvailabilityNotSupported(const GURL& url) { |
- auto status_it = availability_status_.find(url.spec()); |
+ auto status_it = availability_status_.find(url); |
if (status_it == availability_status_.end()) |
return; |
AvailabilityStatus* status = status_it->second.get(); |
@@ -475,11 +471,10 @@ void PresentationDispatcher::UpdateListeningState(AvailabilityStatus* status) { |
ConnectToPresentationServiceIfNeeded(); |
if (should_listen) { |
status->listening_state = ListeningState::WAITING; |
- presentation_service_->ListenForScreenAvailability(GURL(status->url)); |
+ presentation_service_->ListenForScreenAvailability(status->url); |
} else { |
status->listening_state = ListeningState::INACTIVE; |
- presentation_service_->StopListeningForScreenAvailability( |
- GURL(status->url)); |
+ presentation_service_->StopListeningForScreenAvailability(status->url); |
} |
} |
@@ -493,12 +488,12 @@ PresentationDispatcher::SendMessageRequest::~SendMessageRequest() {} |
// static |
PresentationDispatcher::SendMessageRequest* |
PresentationDispatcher::CreateSendTextMessageRequest( |
- const blink::WebString& presentationUrl, |
+ const blink::WebURL& presentationUrl, |
const blink::WebString& presentationId, |
const blink::WebString& message) { |
blink::mojom::PresentationSessionInfoPtr session_info = |
blink::mojom::PresentationSessionInfo::New(); |
- session_info->url = GURL(presentationUrl.utf8()); |
+ session_info->url = presentationUrl; |
session_info->id = presentationId.utf8(); |
blink::mojom::SessionMessagePtr session_message = |
@@ -512,14 +507,14 @@ PresentationDispatcher::CreateSendTextMessageRequest( |
// static |
PresentationDispatcher::SendMessageRequest* |
PresentationDispatcher::CreateSendBinaryMessageRequest( |
- const blink::WebString& presentationUrl, |
+ const blink::WebURL& presentationUrl, |
const blink::WebString& presentationId, |
blink::mojom::PresentationMessageType type, |
const uint8_t* data, |
size_t length) { |
blink::mojom::PresentationSessionInfoPtr session_info = |
blink::mojom::PresentationSessionInfo::New(); |
- session_info->url = GURL(presentationUrl.utf8()); |
+ session_info->url = presentationUrl; |
session_info->id = presentationId.utf8(); |
blink::mojom::SessionMessagePtr session_message = |
@@ -531,7 +526,7 @@ PresentationDispatcher::CreateSendBinaryMessageRequest( |
} |
PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( |
- const std::string& availability_url) |
+ const GURL& availability_url) |
: url(availability_url), |
last_known_availability(false), |
listening_state(ListeningState::INACTIVE) {} |