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..46aafdf76f93c47f7a8c8ae947e7be0810855c95 100644 |
--- a/content/browser/presentation/presentation_service_impl.cc |
+++ b/content/browser/presentation/presentation_service_impl.cc |
@@ -49,15 +49,15 @@ blink::mojom::SessionMessagePtr ToMojoSessionMessage( |
DCHECK(input->data); |
output->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; |
if (pass_ownership) { |
- output->data.Swap(input->data.get()); |
+ output->data = std::vector<uint8_t>(std::move(*(input->data))); |
dcheng
2016/07/28 01:48:44
I think this can just be std::move(*(input->data))
mark a. foltz
2016/07/28 18:28:24
Done.
|
} else { |
- output->data = mojo::Array<uint8_t>::From(*input->data); |
+ output->data = std::vector<uint8_t>(*(input->data)); |
dcheng
2016/07/28 01:48:44
Ditto: I don't think we need to constructor the ve
mark a. foltz
2016/07/28 18:28:24
Done.
|
} |
} 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; |
} |
@@ -71,39 +71,42 @@ std::unique_ptr<PresentationSessionMessage> GetPresentationSessionMessage( |
std::unique_ptr<content::PresentationSessionMessage> output; |
switch (input->type) { |
case blink::mojom::PresentationMessageType::TEXT: { |
- DCHECK(!input->message.is_null()); |
- DCHECK(input->data.is_null()); |
+ // TODO(mfoltz): Should these be CHECKs? |
imcheng
2016/07/27 20:59:38
Probably not. We shouldn't make the browser crash
mark a. foltz
2016/07/28 18:28:24
Now converted to return nullptr on invalid input.
|
+ DCHECK(!input->data); |
+ DCHECK(input->message); |
// Return null PresentationSessionMessage if size exceeds. |
- if (input->message.size() > content::kMaxPresentationSessionMessageSize) |
+ if (input->message->size() > content::kMaxPresentationSessionMessageSize) |
dcheng
2016/07/28 01:48:44
We need to handle unset values here, this code is
mark a. foltz
2016/07/28 18:28:24
Done.
|
return output; |
output.reset( |
new PresentationSessionMessage(PresentationMessageType::TEXT)); |
- input->message.Swap(&output->message); |
+ input->message->swap(output->message); |
dcheng
2016/07/28 01:48:44
Nit: std::move() instead here for consistency (sam
mark a. foltz
2016/07/28 18:28:24
Done. No more swaps.
|
return output; |
} |
case blink::mojom::PresentationMessageType::ARRAY_BUFFER: { |
- DCHECK(!input->data.is_null()); |
- DCHECK(input->message.is_null()); |
- if (input->data.size() > content::kMaxPresentationSessionMessageSize) |
+ // TODO(mfoltz): Should these be CHECKs? |
+ DCHECK(input->data); |
+ DCHECK(!input->message); |
+ if (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()); |
+ input->data->swap(*(output->data)); |
return output; |
} |
case blink::mojom::PresentationMessageType::BLOB: { |
- DCHECK(!input->data.is_null()); |
- DCHECK(input->message.is_null()); |
- if (input->data.size() > content::kMaxPresentationSessionMessageSize) |
+ // TODO(mfoltz): Should these be CHECKs? |
+ DCHECK(input->data); |
+ DCHECK(!input->message); |
+ if (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()); |
+ input->data->swap(*(output->data)); |
return output; |
} |
} |
@@ -179,37 +182,35 @@ void PresentationServiceImpl::SetClient( |
} |
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 +219,7 @@ void PresentationServiceImpl::StopListeningForScreenAvailability( |
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 +248,8 @@ void PresentationServiceImpl::StartSession(const mojo::String& presentation_url, |
} |
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 +266,8 @@ void PresentationServiceImpl::JoinSession( |
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 +357,17 @@ bool PresentationServiceImpl::RunAndEraseJoinSessionMojoCallback( |
} |
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) |
+ if (default_presentation_url_ == url) |
return; |
- default_presentation_url_ = new_default_url; |
+ 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 +404,16 @@ void PresentationServiceImpl::OnSendMessageCallback(bool sent) { |
} |
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,9 +464,11 @@ void PresentationServiceImpl::OnSessionMessages( |
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> mojoMessages(messages.size()); |
+ std::transform(messages.begin(), messages.end(), mojoMessages.begin(), |
+ [pass_ownership](PresentationSessionMessage* message) { |
+ return ToMojoSessionMessage(message, pass_ownership); |
+ }); |
client_->OnSessionMessagesReceived( |
blink::mojom::PresentationSessionInfo::From(session), |