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

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

Issue 2197053002: Reland of [Presentation API] Convert presentation.mojom to new wrapper types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 17ec835b5f3017cb2bf09d6e292e9a2c3798a26b..c9b30d472f9ce084f396aef9d25c2ece26ebb84e 100644
--- a/content/browser/presentation/presentation_service_impl.cc
+++ b/content/browser/presentation/presentation_service_impl.cc
@@ -49,15 +49,15 @@
DCHECK(input->data);
output->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER;
if (pass_ownership) {
- output->data.Swap(input->data.get());
+ output->data = std::move(*(input->data));
} else {
- output->data = mojo::Array<uint8_t>::From(*input->data);
+ output->data = *(input->data);
}
} else {
// string message
output->type = blink::mojom::PresentationMessageType::TEXT;
if (pass_ownership) {
- output->message.Swap(&input->message);
+ output->message = std::move(input->message);
} else {
output->message = input->message;
}
@@ -67,43 +67,47 @@
std::unique_ptr<PresentationSessionMessage> GetPresentationSessionMessage(
blink::mojom::SessionMessagePtr input) {
- DCHECK(!input.is_null());
std::unique_ptr<content::PresentationSessionMessage> output;
+ if (input.is_null())
+ return output;
+
switch (input->type) {
case blink::mojom::PresentationMessageType::TEXT: {
- DCHECK(!input->message.is_null());
- DCHECK(input->data.is_null());
- // Return null PresentationSessionMessage if size exceeds.
- if (input->message.size() > content::kMaxPresentationSessionMessageSize)
+ // Return nullptr PresentationSessionMessage if invalid (unset |message|,
+ // set |data|, or size too large).
+ if (input->data || !input->message ||
+ input->message->size() > content::kMaxPresentationSessionMessageSize)
return output;
output.reset(
new PresentationSessionMessage(PresentationMessageType::TEXT));
- input->message.Swap(&output->message);
+ output->message = std::move(input->message.value());
return output;
}
case blink::mojom::PresentationMessageType::ARRAY_BUFFER: {
- DCHECK(!input->data.is_null());
- DCHECK(input->message.is_null());
- if (input->data.size() > content::kMaxPresentationSessionMessageSize)
+ // Return nullptr PresentationSessionMessage if invalid (unset |data|, set
+ // |message|, or size too large).
+ if (!input->data || input->message ||
+ input->data->size() > content::kMaxPresentationSessionMessageSize)
return output;
output.reset(new PresentationSessionMessage(
PresentationMessageType::ARRAY_BUFFER));
- output->data.reset(new std::vector<uint8_t>);
- input->data.Swap(output->data.get());
+ output->data.reset(
+ new std::vector<uint8_t>(std::move(input->data.value())));
return output;
}
case blink::mojom::PresentationMessageType::BLOB: {
- DCHECK(!input->data.is_null());
- DCHECK(input->message.is_null());
- if (input->data.size() > content::kMaxPresentationSessionMessageSize)
+ // Return nullptr PresentationSessionMessage if invalid (unset |data|, set
+ // |message|, or size too large).
+ if (!input->data || input->message ||
+ input->data->size() > content::kMaxPresentationSessionMessageSize)
return output;
output.reset(
new PresentationSessionMessage(PresentationMessageType::BLOB));
- output->data.reset(new std::vector<uint8_t>);
- input->data.Swap(output->data.get());
+ output->data.reset(
+ new std::vector<uint8_t>(std::move(input->data.value())));
return output;
}
}
@@ -179,37 +183,35 @@
}
void PresentationServiceImpl::ListenForScreenAvailability(
- const mojo::String& url) {
+ const std::string& url) {
DVLOG(2) << "ListenForScreenAvailability " << url;
if (!delegate_) {
client_->OnScreenAvailabilityUpdated(url, false);
return;
}
- const std::string& availability_url = url.get();
- if (screen_availability_listeners_.count(availability_url))
+ if (screen_availability_listeners_.count(url))
return;
std::unique_ptr<ScreenAvailabilityListenerImpl> listener(
- new ScreenAvailabilityListenerImpl(availability_url, this));
+ new ScreenAvailabilityListenerImpl(url, this));
if (delegate_->AddScreenAvailabilityListener(
render_process_id_,
render_frame_id_,
listener.get())) {
- screen_availability_listeners_[availability_url] = std::move(listener);
+ screen_availability_listeners_[url] = std::move(listener);
} else {
DVLOG(1) << "AddScreenAvailabilityListener failed. Ignoring request.";
}
}
void PresentationServiceImpl::StopListeningForScreenAvailability(
- const mojo::String& url) {
+ const std::string& url) {
DVLOG(2) << "StopListeningForScreenAvailability " << url;
if (!delegate_)
return;
- const std::string& availability_url = url.get();
- auto listener_it = screen_availability_listeners_.find(availability_url);
+ auto listener_it = screen_availability_listeners_.find(url);
if (listener_it == screen_availability_listeners_.end())
return;
@@ -218,7 +220,7 @@
screen_availability_listeners_.erase(listener_it);
}
-void PresentationServiceImpl::StartSession(const mojo::String& presentation_url,
+void PresentationServiceImpl::StartSession(const std::string& presentation_url,
const NewSessionCallback& callback) {
DVLOG(2) << "StartSession";
if (!delegate_) {
@@ -247,8 +249,8 @@
}
void PresentationServiceImpl::JoinSession(
- const mojo::String& presentation_url,
- const mojo::String& presentation_id,
+ const std::string& presentation_url,
+ const base::Optional<std::string>& presentation_id,
const NewSessionCallback& callback) {
DVLOG(2) << "JoinSession";
if (!delegate_) {
@@ -265,10 +267,8 @@
return;
}
delegate_->JoinSession(
- render_process_id_,
- render_frame_id_,
- presentation_url,
- presentation_id,
+ render_process_id_, render_frame_id_, presentation_url,
+ presentation_id.value_or(std::string()),
base::Bind(&PresentationServiceImpl::OnJoinSessionSucceeded,
weak_factory_.GetWeakPtr(), request_session_id),
base::Bind(&PresentationServiceImpl::OnJoinSessionError,
@@ -358,18 +358,17 @@
}
void PresentationServiceImpl::SetDefaultPresentationURL(
- const mojo::String& url) {
+ const std::string& url) {
DVLOG(2) << "SetDefaultPresentationURL";
if (!delegate_)
return;
- const std::string& new_default_url = url.get();
- if (default_presentation_url_ == new_default_url)
- return;
-
- default_presentation_url_ = new_default_url;
+ if (default_presentation_url_ == url)
+ return;
+
+ default_presentation_url_ = url;
delegate_->SetDefaultPresentationUrl(
- render_process_id_, render_frame_id_, new_default_url,
+ render_process_id_, render_frame_id_, url,
base::Bind(&PresentationServiceImpl::OnDefaultPresentationStarted,
weak_factory_.GetWeakPtr()));
}
@@ -406,16 +405,16 @@
}
void PresentationServiceImpl::CloseConnection(
- const mojo::String& presentation_url,
- const mojo::String& presentation_id) {
+ const std::string& presentation_url,
+ const std::string& presentation_id) {
DVLOG(2) << "CloseConnection " << presentation_id;
if (delegate_)
delegate_->CloseConnection(render_process_id_, render_frame_id_,
presentation_id);
}
-void PresentationServiceImpl::Terminate(const mojo::String& presentation_url,
- const mojo::String& presentation_id) {
+void PresentationServiceImpl::Terminate(const std::string& presentation_url,
+ const std::string& presentation_id) {
DVLOG(2) << "Terminate " << presentation_id;
if (delegate_)
delegate_->Terminate(render_process_id_, render_frame_id_, presentation_id);
@@ -466,13 +465,15 @@
DCHECK(client_);
DVLOG(2) << "OnSessionMessages";
- mojo::Array<blink::mojom::SessionMessagePtr> mojoMessages(messages.size());
- for (size_t i = 0; i < messages.size(); ++i)
- mojoMessages[i] = ToMojoSessionMessage(messages[i], pass_ownership);
+ std::vector<blink::mojom::SessionMessagePtr> mojo_messages(messages.size());
+ std::transform(messages.begin(), messages.end(), mojo_messages.begin(),
+ [pass_ownership](PresentationSessionMessage* message) {
+ return ToMojoSessionMessage(message, pass_ownership);
+ });
client_->OnSessionMessagesReceived(
blink::mojom::PresentationSessionInfo::From(session),
- std::move(mojoMessages));
+ std::move(mojo_messages));
}
void PresentationServiceImpl::DidNavigateAnyFrame(

Powered by Google App Engine
This is Rietveld 408576698