Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(837)

Unified Diff: content/browser/presentation/presentation_service_impl.cc

Issue 2174693004: [Presentation API] Add support to content/ for multiple URLs per PresentationRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update service, dispatcher to use Mojo URLs. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/presentation/presentation_service_impl.cc
diff --git a/content/browser/presentation/presentation_service_impl.cc b/content/browser/presentation/presentation_service_impl.cc
index c9b30d472f9ce084f396aef9d25c2ece26ebb84e..0f7fafe2de25a02d04e6277a1daea8882147a5d9 100644
--- a/content/browser/presentation/presentation_service_impl.cc
+++ b/content/browser/presentation/presentation_service_impl.cc
@@ -7,9 +7,7 @@
#include <stddef.h>
#include <stdint.h>
#include <algorithm>
-#include <string>
#include <utility>
-#include <vector>
#include "base/logging.h"
#include "base/stl_util.h"
@@ -183,35 +181,35 @@ void PresentationServiceImpl::SetClient(
}
void PresentationServiceImpl::ListenForScreenAvailability(
- const std::string& url) {
- DVLOG(2) << "ListenForScreenAvailability " << url;
+ url::mojom::UrlPtr url) {
+ DVLOG(2) << "ListenForScreenAvailability " << url->url;
if (!delegate_) {
- client_->OnScreenAvailabilityUpdated(url, false);
+ client_->OnScreenAvailabilityUpdated(std::move(url), false);
return;
}
- if (screen_availability_listeners_.count(url))
+ if (screen_availability_listeners_.count(url->url))
return;
std::unique_ptr<ScreenAvailabilityListenerImpl> listener(
- new ScreenAvailabilityListenerImpl(url, this));
+ new ScreenAvailabilityListenerImpl(url->url, this));
if (delegate_->AddScreenAvailabilityListener(
render_process_id_,
render_frame_id_,
listener.get())) {
- screen_availability_listeners_[url] = std::move(listener);
+ screen_availability_listeners_[url->url] = std::move(listener);
} else {
DVLOG(1) << "AddScreenAvailabilityListener failed. Ignoring request.";
}
}
void PresentationServiceImpl::StopListeningForScreenAvailability(
- const std::string& url) {
- DVLOG(2) << "StopListeningForScreenAvailability " << url;
+ url::mojom::UrlPtr url) {
+ DVLOG(2) << "StopListeningForScreenAvailability " << url->url;
if (!delegate_)
return;
- auto listener_it = screen_availability_listeners_.find(url);
+ auto listener_it = screen_availability_listeners_.find(url->url);
if (listener_it == screen_availability_listeners_.end())
return;
@@ -220,8 +218,9 @@ void PresentationServiceImpl::StopListeningForScreenAvailability(
screen_availability_listeners_.erase(listener_it);
}
-void PresentationServiceImpl::StartSession(const std::string& presentation_url,
- const NewSessionCallback& callback) {
+void PresentationServiceImpl::StartSession(
+ std::vector<url::mojom::UrlPtr> presentation_urls,
+ const NewSessionCallback& callback) {
DVLOG(2) << "StartSession";
if (!delegate_) {
callback.Run(
@@ -238,10 +237,16 @@ void PresentationServiceImpl::StartSession(const std::string& presentation_url,
return;
}
+ std::vector<std::string> presentation_urls_for_delegate(
+ presentation_urls.size());
+ std::transform(presentation_urls.begin(), presentation_urls.end(),
+ presentation_urls_for_delegate.begin(),
+ [](const url::mojom::UrlPtr& url) { return url->url; });
+
start_session_request_id_ = GetNextRequestSessionId();
pending_start_session_cb_.reset(new NewSessionCallbackWrapper(callback));
delegate_->StartSession(
- render_process_id_, render_frame_id_, presentation_url,
+ render_process_id_, render_frame_id_, presentation_urls_for_delegate,
base::Bind(&PresentationServiceImpl::OnStartSessionSucceeded,
weak_factory_.GetWeakPtr(), start_session_request_id_),
base::Bind(&PresentationServiceImpl::OnStartSessionError,
@@ -249,7 +254,7 @@ void PresentationServiceImpl::StartSession(const std::string& presentation_url,
}
void PresentationServiceImpl::JoinSession(
- const std::string& presentation_url,
+ std::vector<url::mojom::UrlPtr> presentation_urls,
const base::Optional<std::string>& presentation_id,
const NewSessionCallback& callback) {
DVLOG(2) << "JoinSession";
@@ -261,13 +266,19 @@ void PresentationServiceImpl::JoinSession(
return;
}
+ std::vector<std::string> presentation_urls_for_delegate(
+ presentation_urls.size());
+ std::transform(presentation_urls.begin(), presentation_urls.end(),
+ presentation_urls_for_delegate.begin(),
+ [](const url::mojom::UrlPtr& url) { return url->url; });
+
int request_session_id = RegisterJoinSessionCallback(callback);
if (request_session_id == kInvalidRequestSessionId) {
InvokeNewSessionCallbackWithError(callback);
return;
}
delegate_->JoinSession(
- render_process_id_, render_frame_id_, presentation_url,
+ render_process_id_, render_frame_id_, presentation_urls_for_delegate,
presentation_id.value_or(std::string()),
base::Bind(&PresentationServiceImpl::OnJoinSessionSucceeded,
weak_factory_.GetWeakPtr(), request_session_id),
@@ -357,18 +368,24 @@ bool PresentationServiceImpl::RunAndEraseJoinSessionMojoCallback(
return true;
}
-void PresentationServiceImpl::SetDefaultPresentationURL(
- const std::string& url) {
- DVLOG(2) << "SetDefaultPresentationURL";
+void PresentationServiceImpl::SetDefaultPresentationUrls(
+ std::vector<url::mojom::UrlPtr> presentation_urls) {
+ DVLOG(2) << "SetDefaultPresentationUrls";
if (!delegate_)
return;
- if (default_presentation_url_ == url)
+ std::vector<std::string> presentation_urls_for_delegate(
+ presentation_urls.size());
+ std::transform(presentation_urls.begin(), presentation_urls.end(),
+ presentation_urls_for_delegate.begin(),
+ [](const url::mojom::UrlPtr& url) { return url->url; });
+
+ if (default_presentation_urls_ == presentation_urls_for_delegate)
return;
- default_presentation_url_ = url;
- delegate_->SetDefaultPresentationUrl(
- render_process_id_, render_frame_id_, url,
+ default_presentation_urls_ = presentation_urls_for_delegate;
+ delegate_->SetDefaultPresentationUrls(
+ render_process_id_, render_frame_id_, presentation_urls_for_delegate,
base::Bind(&PresentationServiceImpl::OnDefaultPresentationStarted,
weak_factory_.GetWeakPtr()));
}
@@ -405,7 +422,7 @@ void PresentationServiceImpl::OnSendMessageCallback(bool sent) {
}
void PresentationServiceImpl::CloseConnection(
- const std::string& presentation_url,
+ url::mojom::UrlPtr presentation_url,
const std::string& presentation_id) {
DVLOG(2) << "CloseConnection " << presentation_id;
if (delegate_)
@@ -413,7 +430,7 @@ void PresentationServiceImpl::CloseConnection(
presentation_id);
}
-void PresentationServiceImpl::Terminate(const std::string& presentation_url,
+void PresentationServiceImpl::Terminate(url::mojom::UrlPtr presentation_url,
const std::string& presentation_id) {
DVLOG(2) << "Terminate " << presentation_id;
if (delegate_)
@@ -524,7 +541,7 @@ void PresentationServiceImpl::Reset() {
if (delegate_)
delegate_->Reset(render_process_id_, render_frame_id_);
- default_presentation_url_.clear();
+ default_presentation_urls_.clear();
screen_availability_listeners_.clear();
@@ -582,12 +599,16 @@ std::string PresentationServiceImpl::ScreenAvailabilityListenerImpl
void PresentationServiceImpl::ScreenAvailabilityListenerImpl
::OnScreenAvailabilityChanged(bool available) {
- service_->client_->OnScreenAvailabilityUpdated(availability_url_, available);
+ url::mojom::UrlPtr url = url::mojom::Url::New();
+ url->url = availability_url_;
+ service_->client_->OnScreenAvailabilityUpdated(std::move(url), available);
dcheng 2016/08/26 18:13:33 Since this is typemapped, I think you should be ab
}
void PresentationServiceImpl::ScreenAvailabilityListenerImpl
::OnScreenAvailabilityNotSupported() {
- service_->client_->OnScreenAvailabilityNotSupported(availability_url_);
+ url::mojom::UrlPtr url = url::mojom::Url::New();
+ url->url = availability_url_;
+ service_->client_->OnScreenAvailabilityNotSupported(std::move(url));
}
PresentationServiceImpl::NewSessionCallbackWrapper

Powered by Google App Engine
This is Rietveld 408576698