Commit 8f125bdd authored by tapted's avatar tapted Committed by Commit bot

Reland of [Presentation API] Convert presentation.mojom to new wrapper types....

Reland of [Presentation API] Convert presentation.mojom to new wrapper types. (patchset #1 id:1 of https://codereview.chromium.org/2196143002/ )

Reason for revert:
Didn't work. NaCl still crashing. Sadness :(

Original issue's description:
> Revert of [Presentation API] Convert presentation.mojom to new wrapper types. (patchset #5 id:80001 of https://codereview.chromium.org/2181163003/ )
>
> Reason for revert:
> Suspect (not the first) for widespread NaCl test failures since
> https://build.chromium.org/p/chromium.win/builders/Win7%20Tests%20%281%29/builds/55504
>
> Errors like
>
> [4224:3200:0729/162247:ERROR:nacl_process_host.cc(337)] NaCl process exited with status -1073741674 (0xc0000096)
> ...
>   Actual: "Plugin crashed. 'NaCl module crashed'"
>
> Wasn't r408782 or r408787. Running out of candidates..
>
> Original issue's description:
> > [Presentation API] Convert presentation.mojom to new wrapper types.
> >
> > This converts presentation.mojom to use the new (std::) Mojo wrapper types:
> > mojo::String => std::string
> > mojo::Array => std::vector
> >
> > No behavior changes should ensue.
> >
> > Optional values are represented as base::Optional<Foo> with the new wrapper
> > types requiring some additional changes.
> >
> > This work will simplify further changes for crbug.com/627655.
> >
> > BUG=627655
> >
> > Committed: https://crrev.com/59e7b40948030815a49af887b922b370ba048b8b
> > Cr-Commit-Position: refs/heads/master@{#408781}
>
> TBR=dcheng@chromium.org,imcheng@chromium.org,mfoltz@chromium.org
> NOTRY=true
> BUG=627655
>
> Committed: https://crrev.com/43c746be32b2bfce5c3fd654894e4b7f7bf6387f
> Cr-Commit-Position: refs/heads/master@{#408905}

TBR=dcheng@chromium.org,imcheng@chromium.org,mfoltz@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=627655

Review-Url: https://codereview.chromium.org/2197053002
Cr-Commit-Position: refs/heads/master@{#408910}
parent 1c7841e8
...@@ -49,15 +49,15 @@ blink::mojom::SessionMessagePtr ToMojoSessionMessage( ...@@ -49,15 +49,15 @@ blink::mojom::SessionMessagePtr ToMojoSessionMessage(
DCHECK(input->data); DCHECK(input->data);
output->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; output->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER;
if (pass_ownership) { if (pass_ownership) {
output->data.Swap(input->data.get()); output->data = std::move(*(input->data));
} else { } else {
output->data = mojo::Array<uint8_t>::From(*input->data); output->data = *(input->data);
} }
} else { } else {
// string message // string message
output->type = blink::mojom::PresentationMessageType::TEXT; output->type = blink::mojom::PresentationMessageType::TEXT;
if (pass_ownership) { if (pass_ownership) {
output->message.Swap(&input->message); output->message = std::move(input->message);
} else { } else {
output->message = input->message; output->message = input->message;
} }
...@@ -67,43 +67,47 @@ blink::mojom::SessionMessagePtr ToMojoSessionMessage( ...@@ -67,43 +67,47 @@ blink::mojom::SessionMessagePtr ToMojoSessionMessage(
std::unique_ptr<PresentationSessionMessage> GetPresentationSessionMessage( std::unique_ptr<PresentationSessionMessage> GetPresentationSessionMessage(
blink::mojom::SessionMessagePtr input) { blink::mojom::SessionMessagePtr input) {
DCHECK(!input.is_null());
std::unique_ptr<content::PresentationSessionMessage> output; std::unique_ptr<content::PresentationSessionMessage> output;
if (input.is_null())
return output;
switch (input->type) { switch (input->type) {
case blink::mojom::PresentationMessageType::TEXT: { case blink::mojom::PresentationMessageType::TEXT: {
DCHECK(!input->message.is_null()); // Return nullptr PresentationSessionMessage if invalid (unset |message|,
DCHECK(input->data.is_null()); // set |data|, or size too large).
// Return null PresentationSessionMessage if size exceeds. if (input->data || !input->message ||
if (input->message.size() > content::kMaxPresentationSessionMessageSize) input->message->size() > content::kMaxPresentationSessionMessageSize)
return output; return output;
output.reset( output.reset(
new PresentationSessionMessage(PresentationMessageType::TEXT)); new PresentationSessionMessage(PresentationMessageType::TEXT));
input->message.Swap(&output->message); output->message = std::move(input->message.value());
return output; return output;
} }
case blink::mojom::PresentationMessageType::ARRAY_BUFFER: { case blink::mojom::PresentationMessageType::ARRAY_BUFFER: {
DCHECK(!input->data.is_null()); // Return nullptr PresentationSessionMessage if invalid (unset |data|, set
DCHECK(input->message.is_null()); // |message|, or size too large).
if (input->data.size() > content::kMaxPresentationSessionMessageSize) if (!input->data || input->message ||
input->data->size() > content::kMaxPresentationSessionMessageSize)
return output; return output;
output.reset(new PresentationSessionMessage( output.reset(new PresentationSessionMessage(
PresentationMessageType::ARRAY_BUFFER)); PresentationMessageType::ARRAY_BUFFER));
output->data.reset(new std::vector<uint8_t>); output->data.reset(
input->data.Swap(output->data.get()); new std::vector<uint8_t>(std::move(input->data.value())));
return output; return output;
} }
case blink::mojom::PresentationMessageType::BLOB: { case blink::mojom::PresentationMessageType::BLOB: {
DCHECK(!input->data.is_null()); // Return nullptr PresentationSessionMessage if invalid (unset |data|, set
DCHECK(input->message.is_null()); // |message|, or size too large).
if (input->data.size() > content::kMaxPresentationSessionMessageSize) if (!input->data || input->message ||
input->data->size() > content::kMaxPresentationSessionMessageSize)
return output; return output;
output.reset( output.reset(
new PresentationSessionMessage(PresentationMessageType::BLOB)); new PresentationSessionMessage(PresentationMessageType::BLOB));
output->data.reset(new std::vector<uint8_t>); output->data.reset(
input->data.Swap(output->data.get()); new std::vector<uint8_t>(std::move(input->data.value())));
return output; return output;
} }
} }
...@@ -179,37 +183,35 @@ void PresentationServiceImpl::SetClient( ...@@ -179,37 +183,35 @@ void PresentationServiceImpl::SetClient(
} }
void PresentationServiceImpl::ListenForScreenAvailability( void PresentationServiceImpl::ListenForScreenAvailability(
const mojo::String& url) { const std::string& url) {
DVLOG(2) << "ListenForScreenAvailability " << url; DVLOG(2) << "ListenForScreenAvailability " << url;
if (!delegate_) { if (!delegate_) {
client_->OnScreenAvailabilityUpdated(url, false); client_->OnScreenAvailabilityUpdated(url, false);
return; return;
} }
const std::string& availability_url = url.get(); if (screen_availability_listeners_.count(url))
if (screen_availability_listeners_.count(availability_url))
return; return;
std::unique_ptr<ScreenAvailabilityListenerImpl> listener( std::unique_ptr<ScreenAvailabilityListenerImpl> listener(
new ScreenAvailabilityListenerImpl(availability_url, this)); new ScreenAvailabilityListenerImpl(url, this));
if (delegate_->AddScreenAvailabilityListener( if (delegate_->AddScreenAvailabilityListener(
render_process_id_, render_process_id_,
render_frame_id_, render_frame_id_,
listener.get())) { listener.get())) {
screen_availability_listeners_[availability_url] = std::move(listener); screen_availability_listeners_[url] = std::move(listener);
} else { } else {
DVLOG(1) << "AddScreenAvailabilityListener failed. Ignoring request."; DVLOG(1) << "AddScreenAvailabilityListener failed. Ignoring request.";
} }
} }
void PresentationServiceImpl::StopListeningForScreenAvailability( void PresentationServiceImpl::StopListeningForScreenAvailability(
const mojo::String& url) { const std::string& url) {
DVLOG(2) << "StopListeningForScreenAvailability " << url; DVLOG(2) << "StopListeningForScreenAvailability " << url;
if (!delegate_) if (!delegate_)
return; return;
const std::string& availability_url = url.get(); auto listener_it = screen_availability_listeners_.find(url);
auto listener_it = screen_availability_listeners_.find(availability_url);
if (listener_it == screen_availability_listeners_.end()) if (listener_it == screen_availability_listeners_.end())
return; return;
...@@ -218,7 +220,7 @@ void PresentationServiceImpl::StopListeningForScreenAvailability( ...@@ -218,7 +220,7 @@ void PresentationServiceImpl::StopListeningForScreenAvailability(
screen_availability_listeners_.erase(listener_it); 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) { const NewSessionCallback& callback) {
DVLOG(2) << "StartSession"; DVLOG(2) << "StartSession";
if (!delegate_) { if (!delegate_) {
...@@ -247,8 +249,8 @@ void PresentationServiceImpl::StartSession(const mojo::String& presentation_url, ...@@ -247,8 +249,8 @@ void PresentationServiceImpl::StartSession(const mojo::String& presentation_url,
} }
void PresentationServiceImpl::JoinSession( void PresentationServiceImpl::JoinSession(
const mojo::String& presentation_url, const std::string& presentation_url,
const mojo::String& presentation_id, const base::Optional<std::string>& presentation_id,
const NewSessionCallback& callback) { const NewSessionCallback& callback) {
DVLOG(2) << "JoinSession"; DVLOG(2) << "JoinSession";
if (!delegate_) { if (!delegate_) {
...@@ -265,10 +267,8 @@ void PresentationServiceImpl::JoinSession( ...@@ -265,10 +267,8 @@ void PresentationServiceImpl::JoinSession(
return; return;
} }
delegate_->JoinSession( delegate_->JoinSession(
render_process_id_, render_process_id_, render_frame_id_, presentation_url,
render_frame_id_, presentation_id.value_or(std::string()),
presentation_url,
presentation_id,
base::Bind(&PresentationServiceImpl::OnJoinSessionSucceeded, base::Bind(&PresentationServiceImpl::OnJoinSessionSucceeded,
weak_factory_.GetWeakPtr(), request_session_id), weak_factory_.GetWeakPtr(), request_session_id),
base::Bind(&PresentationServiceImpl::OnJoinSessionError, base::Bind(&PresentationServiceImpl::OnJoinSessionError,
...@@ -358,18 +358,17 @@ bool PresentationServiceImpl::RunAndEraseJoinSessionMojoCallback( ...@@ -358,18 +358,17 @@ bool PresentationServiceImpl::RunAndEraseJoinSessionMojoCallback(
} }
void PresentationServiceImpl::SetDefaultPresentationURL( void PresentationServiceImpl::SetDefaultPresentationURL(
const mojo::String& url) { const std::string& url) {
DVLOG(2) << "SetDefaultPresentationURL"; DVLOG(2) << "SetDefaultPresentationURL";
if (!delegate_) if (!delegate_)
return; return;
const std::string& new_default_url = url.get(); if (default_presentation_url_ == url)
if (default_presentation_url_ == new_default_url)
return; return;
default_presentation_url_ = new_default_url; default_presentation_url_ = url;
delegate_->SetDefaultPresentationUrl( delegate_->SetDefaultPresentationUrl(
render_process_id_, render_frame_id_, new_default_url, render_process_id_, render_frame_id_, url,
base::Bind(&PresentationServiceImpl::OnDefaultPresentationStarted, base::Bind(&PresentationServiceImpl::OnDefaultPresentationStarted,
weak_factory_.GetWeakPtr())); weak_factory_.GetWeakPtr()));
} }
...@@ -406,16 +405,16 @@ void PresentationServiceImpl::OnSendMessageCallback(bool sent) { ...@@ -406,16 +405,16 @@ void PresentationServiceImpl::OnSendMessageCallback(bool sent) {
} }
void PresentationServiceImpl::CloseConnection( void PresentationServiceImpl::CloseConnection(
const mojo::String& presentation_url, const std::string& presentation_url,
const mojo::String& presentation_id) { const std::string& presentation_id) {
DVLOG(2) << "CloseConnection " << presentation_id; DVLOG(2) << "CloseConnection " << presentation_id;
if (delegate_) if (delegate_)
delegate_->CloseConnection(render_process_id_, render_frame_id_, delegate_->CloseConnection(render_process_id_, render_frame_id_,
presentation_id); presentation_id);
} }
void PresentationServiceImpl::Terminate(const mojo::String& presentation_url, void PresentationServiceImpl::Terminate(const std::string& presentation_url,
const mojo::String& presentation_id) { const std::string& presentation_id) {
DVLOG(2) << "Terminate " << presentation_id; DVLOG(2) << "Terminate " << presentation_id;
if (delegate_) if (delegate_)
delegate_->Terminate(render_process_id_, render_frame_id_, presentation_id); delegate_->Terminate(render_process_id_, render_frame_id_, presentation_id);
...@@ -466,13 +465,15 @@ void PresentationServiceImpl::OnSessionMessages( ...@@ -466,13 +465,15 @@ void PresentationServiceImpl::OnSessionMessages(
DCHECK(client_); DCHECK(client_);
DVLOG(2) << "OnSessionMessages"; DVLOG(2) << "OnSessionMessages";
mojo::Array<blink::mojom::SessionMessagePtr> mojoMessages(messages.size()); std::vector<blink::mojom::SessionMessagePtr> mojo_messages(messages.size());
for (size_t i = 0; i < messages.size(); ++i) std::transform(messages.begin(), messages.end(), mojo_messages.begin(),
mojoMessages[i] = ToMojoSessionMessage(messages[i], pass_ownership); [pass_ownership](PresentationSessionMessage* message) {
return ToMojoSessionMessage(message, pass_ownership);
});
client_->OnSessionMessagesReceived( client_->OnSessionMessagesReceived(
blink::mojom::PresentationSessionInfo::From(session), blink::mojom::PresentationSessionInfo::From(session),
std::move(mojoMessages)); std::move(mojo_messages));
} }
void PresentationServiceImpl::DidNavigateAnyFrame( void PresentationServiceImpl::DidNavigateAnyFrame(
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "base/memory/linked_ptr.h" #include "base/memory/linked_ptr.h"
#include "base/memory/scoped_vector.h" #include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/optional.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/public/browser/navigation_details.h" #include "content/public/browser/navigation_details.h"
#include "content/public/browser/presentation_screen_availability_listener.h" #include "content/public/browser/presentation_screen_availability_listener.h"
...@@ -149,24 +150,22 @@ class CONTENT_EXPORT PresentationServiceImpl ...@@ -149,24 +150,22 @@ class CONTENT_EXPORT PresentationServiceImpl
PresentationServiceDelegate* delegate); PresentationServiceDelegate* delegate);
// PresentationService implementation. // PresentationService implementation.
void SetDefaultPresentationURL(const mojo::String& url) override; void SetDefaultPresentationURL(const std::string& url) override;
void SetClient(blink::mojom::PresentationServiceClientPtr client) override; void SetClient(blink::mojom::PresentationServiceClientPtr client) override;
void ListenForScreenAvailability(const mojo::String& url) override; void ListenForScreenAvailability(const std::string& url) override;
void StopListeningForScreenAvailability(const mojo::String& url) override; void StopListeningForScreenAvailability(const std::string& url) override;
void StartSession( void StartSession(const std::string& presentation_url,
const mojo::String& presentation_url,
const NewSessionCallback& callback) override; const NewSessionCallback& callback) override;
void JoinSession( void JoinSession(const std::string& presentation_url,
const mojo::String& presentation_url, const base::Optional<std::string>& presentation_id,
const mojo::String& presentation_id,
const NewSessionCallback& callback) override; const NewSessionCallback& callback) override;
void SendSessionMessage(blink::mojom::PresentationSessionInfoPtr session_info, void SendSessionMessage(blink::mojom::PresentationSessionInfoPtr session_info,
blink::mojom::SessionMessagePtr session_message, blink::mojom::SessionMessagePtr session_message,
const SendSessionMessageCallback& callback) override; const SendSessionMessageCallback& callback) override;
void CloseConnection(const mojo::String& presentation_url, void CloseConnection(const std::string& presentation_url,
const mojo::String& presentation_id) override; const std::string& presentation_id) override;
void Terminate(const mojo::String& presentation_url, void Terminate(const std::string& presentation_url,
const mojo::String& presentation_id) override; const std::string& presentation_id) override;
void ListenForSessionMessages( void ListenForSessionMessages(
blink::mojom::PresentationSessionInfoPtr session) override; blink::mojom::PresentationSessionInfoPtr session) override;
......
...@@ -46,14 +46,6 @@ MATCHER_P(Equals, expected, "") { ...@@ -46,14 +46,6 @@ MATCHER_P(Equals, expected, "") {
const char *const kPresentationId = "presentationId"; const char *const kPresentationId = "presentationId";
const char *const kPresentationUrl = "http://foo.com/index.html"; const char *const kPresentationUrl = "http://foo.com/index.html";
bool ArePresentationSessionMessagesEqual(
const blink::mojom::SessionMessage* expected,
const blink::mojom::SessionMessage* actual) {
return expected->type == actual->type &&
expected->message == actual->message &&
expected->data.Equals(actual->data);
}
void DoNothing(blink::mojom::PresentationSessionInfoPtr info, void DoNothing(blink::mojom::PresentationSessionInfoPtr info,
blink::mojom::PresentationErrorPtr error) {} blink::mojom::PresentationErrorPtr error) {}
...@@ -152,7 +144,7 @@ class MockPresentationServiceClient ...@@ -152,7 +144,7 @@ class MockPresentationServiceClient
: public blink::mojom::PresentationServiceClient { : public blink::mojom::PresentationServiceClient {
public: public:
MOCK_METHOD2(OnScreenAvailabilityUpdated, MOCK_METHOD2(OnScreenAvailabilityUpdated,
void(const mojo::String& url, bool available)); void(const std::string& url, bool available));
void OnConnectionStateChanged( void OnConnectionStateChanged(
blink::mojom::PresentationSessionInfoPtr connection, blink::mojom::PresentationSessionInfoPtr connection,
blink::mojom::PresentationConnectionState new_state) override { blink::mojom::PresentationConnectionState new_state) override {
...@@ -165,19 +157,19 @@ class MockPresentationServiceClient ...@@ -165,19 +157,19 @@ class MockPresentationServiceClient
void OnConnectionClosed( void OnConnectionClosed(
blink::mojom::PresentationSessionInfoPtr connection, blink::mojom::PresentationSessionInfoPtr connection,
blink::mojom::PresentationConnectionCloseReason reason, blink::mojom::PresentationConnectionCloseReason reason,
const mojo::String& message) override { const std::string& message) override {
OnConnectionClosed(*connection, reason, message); OnConnectionClosed(*connection, reason, message);
} }
MOCK_METHOD3(OnConnectionClosed, MOCK_METHOD3(OnConnectionClosed,
void(const blink::mojom::PresentationSessionInfo& connection, void(const blink::mojom::PresentationSessionInfo& connection,
blink::mojom::PresentationConnectionCloseReason reason, blink::mojom::PresentationConnectionCloseReason reason,
const mojo::String& message)); const std::string& message));
MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const mojo::String& url)); MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const std::string& url));
void OnSessionMessagesReceived( void OnSessionMessagesReceived(
blink::mojom::PresentationSessionInfoPtr session_info, blink::mojom::PresentationSessionInfoPtr session_info,
mojo::Array<blink::mojom::SessionMessagePtr> messages) override { std::vector<blink::mojom::SessionMessagePtr> messages) override {
messages_received_ = std::move(messages); messages_received_ = std::move(messages);
MessagesReceived(); MessagesReceived();
} }
...@@ -190,7 +182,7 @@ class MockPresentationServiceClient ...@@ -190,7 +182,7 @@ class MockPresentationServiceClient
MOCK_METHOD1(OnDefaultSessionStarted, MOCK_METHOD1(OnDefaultSessionStarted,
void(const blink::mojom::PresentationSessionInfo& session_info)); void(const blink::mojom::PresentationSessionInfo& session_info));
mojo::Array<blink::mojom::SessionMessagePtr> messages_received_; std::vector<blink::mojom::SessionMessagePtr> messages_received_;
}; };
class PresentationServiceImplTest : public RenderViewHostImplTestHarness { class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
...@@ -224,8 +216,8 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness { ...@@ -224,8 +216,8 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
RenderViewHostImplTestHarness::TearDown(); RenderViewHostImplTestHarness::TearDown();
} }
void ListenForScreenAvailabilityAndWait( void ListenForScreenAvailabilityAndWait(const std::string& url,
const mojo::String& url, bool delegate_success) { bool delegate_success) {
base::RunLoop run_loop; base::RunLoop run_loop;
// This will call to |service_impl_| via mojo. Process the message // This will call to |service_impl_| via mojo. Process the message
// using RunLoop. // using RunLoop.
...@@ -261,8 +253,7 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness { ...@@ -261,8 +253,7 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
ASSERT_TRUE(listener_it->second); ASSERT_TRUE(listener_it->second);
base::RunLoop run_loop; base::RunLoop run_loop;
EXPECT_CALL(mock_client_, EXPECT_CALL(mock_client_, OnScreenAvailabilityUpdated(url, available))
OnScreenAvailabilityUpdated(mojo::String(url), available))
.WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
listener_it->second->OnScreenAvailabilityChanged(available); listener_it->second->OnScreenAvailabilityChanged(available);
run_loop.Run(); run_loop.Run();
...@@ -299,13 +290,11 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness { ...@@ -299,13 +290,11 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
} }
void ExpectSessionMessages( void ExpectSessionMessages(
const mojo::Array<blink::mojom::SessionMessagePtr>& expected_msgs, const std::vector<blink::mojom::SessionMessagePtr>& expected_msgs,
const mojo::Array<blink::mojom::SessionMessagePtr>& actual_msgs) { const std::vector<blink::mojom::SessionMessagePtr>& actual_msgs) {
EXPECT_EQ(expected_msgs.size(), actual_msgs.size()); EXPECT_EQ(expected_msgs.size(), actual_msgs.size());
for (size_t i = 0; i < actual_msgs.size(); ++i) { for (size_t i = 0; i < actual_msgs.size(); ++i)
EXPECT_TRUE(ArePresentationSessionMessagesEqual(expected_msgs[i].get(), EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i]));
actual_msgs[i].get()));
}
} }
void ExpectSendSessionMessageCallback(bool success) { void ExpectSendSessionMessageCallback(bool success) {
...@@ -318,14 +307,14 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness { ...@@ -318,14 +307,14 @@ class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
void RunListenForSessionMessages(const std::string& text_msg, void RunListenForSessionMessages(const std::string& text_msg,
const std::vector<uint8_t>& binary_data, const std::vector<uint8_t>& binary_data,
bool pass_ownership) { bool pass_ownership) {
mojo::Array<blink::mojom::SessionMessagePtr> expected_msgs(2); std::vector<blink::mojom::SessionMessagePtr> expected_msgs(2);
expected_msgs[0] = blink::mojom::SessionMessage::New(); expected_msgs[0] = blink::mojom::SessionMessage::New();
expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT; expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT;
expected_msgs[0]->message = text_msg; expected_msgs[0]->message = text_msg;
expected_msgs[1] = blink::mojom::SessionMessage::New(); expected_msgs[1] = blink::mojom::SessionMessage::New();
expected_msgs[1]->type = expected_msgs[1]->type =
blink::mojom::PresentationMessageType::ARRAY_BUFFER; blink::mojom::PresentationMessageType::ARRAY_BUFFER;
expected_msgs[1]->data = mojo::Array<uint8_t>::From(binary_data); expected_msgs[1]->data = binary_data;
blink::mojom::PresentationSessionInfoPtr session( blink::mojom::PresentationSessionInfoPtr session(
blink::mojom::PresentationSessionInfo::New()); blink::mojom::PresentationSessionInfo::New());
...@@ -516,11 +505,11 @@ TEST_F(PresentationServiceImplTest, ListenForConnectionClose) { ...@@ -516,11 +505,11 @@ TEST_F(PresentationServiceImplTest, ListenForConnectionClose) {
closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY;
closed_info.message = "Foo"; closed_info.message = "Foo";
EXPECT_CALL(mock_client_, EXPECT_CALL(
mock_client_,
OnConnectionClosed( OnConnectionClosed(
Equals(presentation_connection), Equals(presentation_connection),
blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, "Foo"))
mojo::String("Foo")))
.WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
state_changed_cb.Run(closed_info); state_changed_cb.Run(closed_info);
run_loop.Run(); run_loop.Run();
...@@ -580,10 +569,8 @@ TEST_F(PresentationServiceImplTest, StartSessionError) { ...@@ -580,10 +569,8 @@ TEST_F(PresentationServiceImplTest, StartSessionError) {
TEST_F(PresentationServiceImplTest, JoinSessionSuccess) { TEST_F(PresentationServiceImplTest, JoinSessionSuccess) {
service_ptr_->JoinSession( service_ptr_->JoinSession(
kPresentationUrl, kPresentationUrl, base::Optional<std::string>(kPresentationId),
kPresentationId, base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess,
base::Bind(
&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess,
base::Unretained(this))); base::Unretained(this)));
base::RunLoop run_loop; base::RunLoop run_loop;
base::Callback<void(const PresentationSessionInfo&)> success_cb; base::Callback<void(const PresentationSessionInfo&)> success_cb;
...@@ -602,10 +589,8 @@ TEST_F(PresentationServiceImplTest, JoinSessionSuccess) { ...@@ -602,10 +589,8 @@ TEST_F(PresentationServiceImplTest, JoinSessionSuccess) {
TEST_F(PresentationServiceImplTest, JoinSessionError) { TEST_F(PresentationServiceImplTest, JoinSessionError) {
service_ptr_->JoinSession( service_ptr_->JoinSession(
kPresentationUrl, kPresentationUrl, base::Optional<std::string>(kPresentationId),
kPresentationId, base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
base::Bind(
&PresentationServiceImplTest::ExpectNewSessionCallbackError,
base::Unretained(this))); base::Unretained(this)));
base::RunLoop run_loop; base::RunLoop run_loop;
base::Callback<void(const PresentationError&)> error_cb; base::Callback<void(const PresentationError&)> error_cb;
...@@ -719,7 +704,7 @@ TEST_F(PresentationServiceImplTest, SendArrayBuffer) { ...@@ -719,7 +704,7 @@ TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
blink::mojom::SessionMessagePtr message_request( blink::mojom::SessionMessagePtr message_request(
blink::mojom::SessionMessage::New()); blink::mojom::SessionMessage::New());
message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER;
message_request->data = mojo::Array<uint8_t>::From(data); message_request->data = data;
service_ptr_->SendSessionMessage( service_ptr_->SendSessionMessage(
std::move(session), std::move(message_request), std::move(session), std::move(message_request),
base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
...@@ -763,7 +748,7 @@ TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { ...@@ -763,7 +748,7 @@ TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) {
blink::mojom::SessionMessagePtr message_request( blink::mojom::SessionMessagePtr message_request(
blink::mojom::SessionMessage::New()); blink::mojom::SessionMessage::New());
message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER;
message_request->data = mojo::Array<uint8_t>::From(data); message_request->data = data;
service_ptr_->SendSessionMessage( service_ptr_->SendSessionMessage(
std::move(session), std::move(message_request), std::move(session), std::move(message_request),
base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
...@@ -794,7 +779,7 @@ TEST_F(PresentationServiceImplTest, SendBlobData) { ...@@ -794,7 +779,7 @@ TEST_F(PresentationServiceImplTest, SendBlobData) {
blink::mojom::SessionMessagePtr message_request( blink::mojom::SessionMessagePtr message_request(
blink::mojom::SessionMessage::New()); blink::mojom::SessionMessage::New());
message_request->type = blink::mojom::PresentationMessageType::BLOB; message_request->type = blink::mojom::PresentationMessageType::BLOB;
message_request->data = mojo::Array<uint8_t>::From(data); message_request->data = data;
service_ptr_->SendSessionMessage( service_ptr_->SendSessionMessage(
std::move(session), std::move(message_request), std::move(session), std::move(message_request),
base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
......
...@@ -313,10 +313,9 @@ void PresentationDispatcher::OnDestruct() { ...@@ -313,10 +313,9 @@ void PresentationDispatcher::OnDestruct() {
delete this; delete this;
} }
void PresentationDispatcher::OnScreenAvailabilityUpdated( void PresentationDispatcher::OnScreenAvailabilityUpdated(const std::string& url,
const mojo::String& url, bool available) { bool available) {
const std::string& availability_url = url.get(); auto status_it = availability_status_.find(url);
auto status_it = availability_status_.find(availability_url);
if (status_it == availability_status_.end()) if (status_it == availability_status_.end())
return; return;
AvailabilityStatus* status = status_it->second.get(); AvailabilityStatus* status = status_it->second.get();
...@@ -338,9 +337,8 @@ void PresentationDispatcher::OnScreenAvailabilityUpdated( ...@@ -338,9 +337,8 @@ void PresentationDispatcher::OnScreenAvailabilityUpdated(
} }
void PresentationDispatcher::OnScreenAvailabilityNotSupported( void PresentationDispatcher::OnScreenAvailabilityNotSupported(
const mojo::String& url) { const std::string& url) {
const std::string& availability_url = url.get(); auto status_it = availability_status_.find(url);
auto status_it = availability_status_.find(availability_url);
if (status_it == availability_status_.end()) if (status_it == availability_status_.end())
return; return;
AvailabilityStatus* status = status_it->second.get(); AvailabilityStatus* status = status_it->second.get();
...@@ -407,7 +405,7 @@ void PresentationDispatcher::OnConnectionStateChanged( ...@@ -407,7 +405,7 @@ void PresentationDispatcher::OnConnectionStateChanged(
void PresentationDispatcher::OnConnectionClosed( void PresentationDispatcher::OnConnectionClosed(
blink::mojom::PresentationSessionInfoPtr connection, blink::mojom::PresentationSessionInfoPtr connection,
blink::mojom::PresentationConnectionCloseReason reason, blink::mojom::PresentationConnectionCloseReason reason,
const mojo::String& message) { const std::string& message) {
if (!controller_) if (!controller_)
return; return;
...@@ -420,7 +418,7 @@ void PresentationDispatcher::OnConnectionClosed( ...@@ -420,7 +418,7 @@ void PresentationDispatcher::OnConnectionClosed(
void PresentationDispatcher::OnSessionMessagesReceived( void PresentationDispatcher::OnSessionMessagesReceived(
blink::mojom::PresentationSessionInfoPtr session_info, blink::mojom::PresentationSessionInfoPtr session_info,
mojo::Array<blink::mojom::SessionMessagePtr> messages) { std::vector<blink::mojom::SessionMessagePtr> messages) {
if (!controller_) if (!controller_)
return; return;
...@@ -431,16 +429,18 @@ void PresentationDispatcher::OnSessionMessagesReceived( ...@@ -431,16 +429,18 @@ void PresentationDispatcher::OnSessionMessagesReceived(
new PresentationConnectionClient(session_info->url, session_info->id)); new PresentationConnectionClient(session_info->url, session_info->id));
switch (messages[i]->type) { switch (messages[i]->type) {
case blink::mojom::PresentationMessageType::TEXT: { case blink::mojom::PresentationMessageType::TEXT: {
// TODO(mfoltz): Do we need to DCHECK(messages[i]->message)?
controller_->didReceiveSessionTextMessage( controller_->didReceiveSessionTextMessage(
session_client.release(), session_client.release(),
blink::WebString::fromUTF8(messages[i]->message)); blink::WebString::fromUTF8(messages[i]->message.value()));
break; break;
} }
case blink::mojom::PresentationMessageType::ARRAY_BUFFER: case blink::mojom::PresentationMessageType::ARRAY_BUFFER:
case blink::mojom::PresentationMessageType::BLOB: { case blink::mojom::PresentationMessageType::BLOB: {
// TODO(mfoltz): Do we need to DCHECK(messages[i]->data)?
controller_->didReceiveSessionBinaryMessage( controller_->didReceiveSessionBinaryMessage(
session_client.release(), &(messages[i]->data.front()), session_client.release(), &(messages[i]->data->front()),
messages[i]->data.size()); messages[i]->data->size());
break; break;
} }
default: { default: {
...@@ -519,8 +519,7 @@ PresentationDispatcher::CreateSendBinaryMessageRequest( ...@@ -519,8 +519,7 @@ PresentationDispatcher::CreateSendBinaryMessageRequest(
blink::mojom::SessionMessagePtr session_message = blink::mojom::SessionMessagePtr session_message =
blink::mojom::SessionMessage::New(); blink::mojom::SessionMessage::New();
session_message->type = type; session_message->type = type;
std::vector<uint8_t> tmp_data_vector(data, data + length); session_message->data = std::vector<uint8_t>(data, data + length);
session_message->data.Swap(&tmp_data_vector);
return new SendMessageRequest(std::move(session_info), return new SendMessageRequest(std::move(session_info),
std::move(session_message)); std::move(session_message));
} }
......
...@@ -97,8 +97,8 @@ class CONTENT_EXPORT PresentationDispatcher ...@@ -97,8 +97,8 @@ class CONTENT_EXPORT PresentationDispatcher
void OnDestruct() override; void OnDestruct() override;
// blink::mojom::PresentationServiceClient // blink::mojom::PresentationServiceClient
void OnScreenAvailabilityNotSupported(const mojo::String& url) override; void OnScreenAvailabilityNotSupported(const std::string& url) override;
void OnScreenAvailabilityUpdated(const mojo::String& url, void OnScreenAvailabilityUpdated(const std::string& url,
bool available) override; bool available) override;
void OnConnectionStateChanged( void OnConnectionStateChanged(
blink::mojom::PresentationSessionInfoPtr connection, blink::mojom::PresentationSessionInfoPtr connection,
...@@ -106,10 +106,10 @@ class CONTENT_EXPORT PresentationDispatcher ...@@ -106,10 +106,10 @@ class CONTENT_EXPORT PresentationDispatcher
void OnConnectionClosed( void OnConnectionClosed(
blink::mojom::PresentationSessionInfoPtr connection, blink::mojom::PresentationSessionInfoPtr connection,
blink::mojom::PresentationConnectionCloseReason reason, blink::mojom::PresentationConnectionCloseReason reason,
const mojo::String& message) override; const std::string& message) override;
void OnSessionMessagesReceived( void OnSessionMessagesReceived(
blink::mojom::PresentationSessionInfoPtr session_info, blink::mojom::PresentationSessionInfoPtr session_info,
mojo::Array<blink::mojom::SessionMessagePtr> messages) override; std::vector<blink::mojom::SessionMessagePtr> messages) override;
void OnDefaultSessionStarted( void OnDefaultSessionStarted(
blink::mojom::PresentationSessionInfoPtr session_info) override; blink::mojom::PresentationSessionInfoPtr session_info) override;
......
...@@ -171,13 +171,13 @@ mojom("mojo_bindings") { ...@@ -171,13 +171,13 @@ mojom("mojo_bindings") {
"platform/modules/offscreencanvas/offscreen_canvas_surface.mojom", "platform/modules/offscreencanvas/offscreen_canvas_surface.mojom",
"platform/modules/permissions/permission.mojom", "platform/modules/permissions/permission.mojom",
"platform/modules/permissions/permission_status.mojom", "platform/modules/permissions/permission_status.mojom",
"platform/modules/presentation/presentation.mojom",
"platform/modules/serviceworker/service_worker_event_status.mojom", "platform/modules/serviceworker/service_worker_event_status.mojom",
"platform/modules/wake_lock/wake_lock_service.mojom", "platform/modules/wake_lock/wake_lock_service.mojom",
"platform/modules/webshare/webshare.mojom", "platform/modules/webshare/webshare.mojom",
] ]
public_deps = [ public_deps = [
":android_mojo_bindings", ":android_mojo_bindings",
":new_wrapper_types_mojo_bindings",
"//cc/ipc:interfaces_surfaceid_only", "//cc/ipc:interfaces_surfaceid_only",
"//device/bluetooth/public/interfaces:bluetooth_mojom_bluetooth_uuid", "//device/bluetooth/public/interfaces:bluetooth_mojom_bluetooth_uuid",
"//url/mojo:url_mojom_origin", "//url/mojo:url_mojom_origin",
...@@ -186,6 +186,13 @@ mojom("mojo_bindings") { ...@@ -186,6 +186,13 @@ mojom("mojo_bindings") {
use_new_wrapper_types = false use_new_wrapper_types = false
} }
# GYP version: WebKit/public/blink.gyp:new_wrapper_types_mojo_bindings
mojom("new_wrapper_types_mojo_bindings") {
sources = [
"platform/modules/presentation/presentation.mojom",
]
}
# GYP version: WebKit/public/blink.gyp:android_mojo_bindings_java # GYP version: WebKit/public/blink.gyp:android_mojo_bindings_java
mojom("android_mojo_bindings") { mojom("android_mojo_bindings") {
sources = [ sources = [
......
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
'platform/modules/offscreencanvas/offscreen_canvas_surface.mojom', 'platform/modules/offscreencanvas/offscreen_canvas_surface.mojom',
'platform/modules/permissions/permission.mojom', 'platform/modules/permissions/permission.mojom',
'platform/modules/permissions/permission_status.mojom', 'platform/modules/permissions/permission_status.mojom',
'platform/modules/presentation/presentation.mojom',
'platform/modules/serviceworker/service_worker_event_status.mojom', 'platform/modules/serviceworker/service_worker_event_status.mojom',
'platform/modules/wake_lock/wake_lock_service.mojom', 'platform/modules/wake_lock/wake_lock_service.mojom',
'platform/modules/webshare/webshare.mojom', 'platform/modules/webshare/webshare.mojom',
...@@ -54,6 +53,10 @@ ...@@ -54,6 +53,10 @@
'blink_android_mojo_sources': [ 'blink_android_mojo_sources': [
'platform/modules/payments/payment_request.mojom', 'platform/modules/payments/payment_request.mojom',
], ],
# Duplicated in GN: //third_party/WebKit/public:new_wrapper_types_mojo_bindings
'blink_new_wrapper_types_mojo_sources': [
'platform/modules/presentation/presentation.mojom',
],
'blink_typemap_sources': [ 'blink_typemap_sources': [
'<(DEPTH)/cc/ipc/surface_id.typemap', '<(DEPTH)/cc/ipc/surface_id.typemap',
'<(DEPTH)/cc/ipc/surface_sequence.typemap', '<(DEPTH)/cc/ipc/surface_sequence.typemap',
...@@ -136,6 +139,29 @@ ...@@ -136,6 +139,29 @@
'../../../mojo/mojom_bindings_generator_explicit.gypi', '../../../mojo/mojom_bindings_generator_explicit.gypi',
], ],
}, },
{
# GN version: //third_party/WebKit/public:new_wrapper_types_mojo_bindings_blink
# (generated by //third_party/WebKit/public:new_wrapper_types_mojo_bindings)
'target_name': 'new_wrapper_types_mojo_bindings_blink_mojom',
'type': 'none',
'variables': {
'mojom_files': [
'<@(blink_new_wrapper_types_mojo_sources)',
],
'mojom_typemaps': [
'../Source/platform/mojo/SecurityOrigin.typemap',
'<@(blink_typemap_sources)',
],
'for_blink': 'true',
},
'dependencies' : [
'<(DEPTH)/cc/ipc/cc_ipc.gyp:interfaces_blink',
'<(DEPTH)/url/url.gyp:url_mojom_for_blink',
],
'includes': [
'../../../mojo/mojom_bindings_generator_explicit.gypi',
],
},
{ {
# GN version: //third_party/WebKit/public:mojo_bindings # GN version: //third_party/WebKit/public:mojo_bindings
'target_name': 'mojo_bindings_mojom', 'target_name': 'mojo_bindings_mojom',
...@@ -160,6 +186,27 @@ ...@@ -160,6 +186,27 @@
'../../../mojo/mojom_bindings_generator_explicit.gypi', '../../../mojo/mojom_bindings_generator_explicit.gypi',
], ],
}, },
{
# GN version: //third_party/WebKit/public:new_wrapper_types_mojo_bindings
'target_name': 'new_wrapper_types_mojo_bindings_mojom',
'type': 'none',
'variables': {
'mojom_files': [
'<@(blink_new_wrapper_types_mojo_sources)',
],
'mojom_typemaps': [
'<(DEPTH)/url/mojo/origin.typemap',
'<@(blink_typemap_sources)',
],
},
'dependencies' : [
'<(DEPTH)/cc/ipc/cc_ipc.gyp:interfaces',
'<(DEPTH)/url/url.gyp:url_mojom',
],
'includes': [
'../../../mojo/mojom_bindings_generator_explicit.gypi',
],
},
{ {
# GN version: //third_party/WebKit/public:mojo_bindings # GN version: //third_party/WebKit/public:mojo_bindings
'target_name': 'mojo_bindings', 'target_name': 'mojo_bindings',
...@@ -169,6 +216,8 @@ ...@@ -169,6 +216,8 @@
'dependencies': [ 'dependencies': [
'mojo_bindings_blink_mojom', 'mojo_bindings_blink_mojom',
'mojo_bindings_mojom', 'mojo_bindings_mojom',
'new_wrapper_types_mojo_bindings_blink_mojom',
'new_wrapper_types_mojo_bindings_mojom',
'../../../mojo/mojo_public.gyp:mojo_cpp_bindings', '../../../mojo/mojo_public.gyp:mojo_cpp_bindings',
'../../../device/bluetooth/bluetooth.gyp:bluetooth_mojom', '../../../device/bluetooth/bluetooth.gyp:bluetooth_mojom',
'<(DEPTH)/cc/ipc/cc_ipc.gyp:interfaces', '<(DEPTH)/cc/ipc/cc_ipc.gyp:interfaces',
......
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