summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhaibinlu <haibinlu@chromium.org>2015-06-25 12:14:53 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-25 19:15:31 +0000
commit7e639ff6407b6a7939a89426821145359dafe58a (patch)
tree29c354701ce8c98c6a156c44d1b098fc3f34bb45
parent8fef3842e2ce7721556b62e58ad875fd1ac02672 (diff)
downloadchromium_src-7e639ff6407b6a7939a89426821145359dafe58a.zip
chromium_src-7e639ff6407b6a7939a89426821145359dafe58a.tar.gz
chromium_src-7e639ff6407b6a7939a89426821145359dafe58a.tar.bz2
[MediaRouter] wireup send/receive messages.
BUG=501539 Review URL: https://codereview.chromium.org/1199933006 Cr-Commit-Position: refs/heads/master@{#336222}
-rw-r--r--chrome/browser/media/router/presentation_service_delegate_impl.cc29
-rw-r--r--content/browser/presentation/presentation_service_impl.cc4
-rw-r--r--content/browser/presentation/presentation_service_impl.h2
-rw-r--r--content/browser/presentation/presentation_service_impl_unittest.cc16
-rw-r--r--content/public/browser/presentation_service_delegate.h2
5 files changed, 37 insertions, 16 deletions
diff --git a/chrome/browser/media/router/presentation_service_delegate_impl.cc b/chrome/browser/media/router/presentation_service_delegate_impl.cc
index b46c3f1..46649ae 100644
--- a/chrome/browser/media/router/presentation_service_delegate_impl.cc
+++ b/chrome/browser/media/router/presentation_service_delegate_impl.cc
@@ -623,8 +623,16 @@ void PresentationServiceDelegateImpl::ListenForSessionMessages(
int render_process_id,
int render_frame_id,
const PresentationSessionMessageCallback& message_cb) {
- // BUG=464205
- NOTIMPLEMENTED();
+ const std::vector<MediaRoute::Id>& route_ids = frame_manager_->GetRouteIds(
+ RenderFrameHostId(render_process_id, render_frame_id));
+ if (route_ids.empty()) {
+ DVLOG(1) << "No media routes found";
+ message_cb.Run(
+ scoped_ptr<ScopedVector<content::PresentationSessionMessage>>());
+ return;
+ }
+
+ router_->ListenForRouteMessages(route_ids, message_cb);
}
void PresentationServiceDelegateImpl::SendMessage(
@@ -632,8 +640,21 @@ void PresentationServiceDelegateImpl::SendMessage(
int render_frame_id,
scoped_ptr<content::PresentationSessionMessage> message_request,
const SendMessageCallback& send_message_cb) {
- // BUG=464205
- NOTIMPLEMENTED();
+ if (message_request->is_binary()) {
+ NOTIMPLEMENTED();
+ send_message_cb.Run(false);
+ return;
+ }
+ const MediaRoute::Id& route_id = frame_manager_->GetRouteId(
+ RenderFrameHostId(render_process_id, render_frame_id),
+ message_request->presentation_id);
+ if (route_id.empty()) {
+ DVLOG(1) << "No active route for " << message_request->presentation_id;
+ send_message_cb.Run(false);
+ return;
+ }
+ router_->SendRouteMessage(route_id, *(message_request->message),
+ send_message_cb);
}
void PresentationServiceDelegateImpl::OnRouteCreated(const MediaRoute& route) {
diff --git a/content/browser/presentation/presentation_service_impl.cc b/content/browser/presentation/presentation_service_impl.cc
index f652789..f387097 100644
--- a/content/browser/presentation/presentation_service_impl.cc
+++ b/content/browser/presentation/presentation_service_impl.cc
@@ -405,11 +405,11 @@ void PresentationServiceImpl::SendSessionMessage(
weak_factory_.GetWeakPtr()));
}
-void PresentationServiceImpl::OnSendMessageCallback() {
+void PresentationServiceImpl::OnSendMessageCallback(bool sent) {
// It is possible that Reset() is invoked before receiving this callback.
// So, always check send_message_callback_ for non-null.
if (send_message_callback_) {
- send_message_callback_->Run(true);
+ send_message_callback_->Run(sent);
send_message_callback_.reset();
}
}
diff --git a/content/browser/presentation/presentation_service_impl.h b/content/browser/presentation/presentation_service_impl.h
index e32ce8d..66c0da4 100644
--- a/content/browser/presentation/presentation_service_impl.h
+++ b/content/browser/presentation/presentation_service_impl.h
@@ -246,7 +246,7 @@ class CONTENT_EXPORT PresentationServiceImpl
void OnJoinSessionError(
int request_session_id,
const PresentationError& error);
- void OnSendMessageCallback();
+ void OnSendMessageCallback(bool sent);
// Passed to embedder's implementation of PresentationServiceDelegate for
// later invocation when session messages arrive.
diff --git a/content/browser/presentation/presentation_service_impl_unittest.cc b/content/browser/presentation/presentation_service_impl_unittest.cc
index 076b31f..7a2bd91 100644
--- a/content/browser/presentation/presentation_service_impl_unittest.cc
+++ b/content/browser/presentation/presentation_service_impl_unittest.cc
@@ -661,7 +661,7 @@ TEST_F(PresentationServiceImplTest, SendStringMessage) {
base::Unretained(this)));
base::RunLoop run_loop;
- base::Closure send_message_cb;
+ base::Callback<void(bool)> send_message_cb;
PresentationSessionMessage* test_message = nullptr;
EXPECT_CALL(mock_delegate_, SendMessageRawPtr(
_, _, _, _))
@@ -680,7 +680,7 @@ TEST_F(PresentationServiceImplTest, SendStringMessage) {
EXPECT_EQ(message, *(test_message->message.get()));
EXPECT_FALSE(test_message->data);
delete test_message;
- send_message_cb.Run();
+ send_message_cb.Run(true);
SaveQuitClosureAndRunLoop();
}
@@ -704,7 +704,7 @@ TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
base::Unretained(this)));
base::RunLoop run_loop;
- base::Closure send_message_cb;
+ base::Callback<void(bool)> send_message_cb;
PresentationSessionMessage* test_message = nullptr;
EXPECT_CALL(mock_delegate_, SendMessageRawPtr(
_, _, _, _))
@@ -725,7 +725,7 @@ TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
kMaxPresentationSessionMessageSize);
EXPECT_EQ(0, memcmp(buffer, &(*test_message->data.get())[0], sizeof(buffer)));
delete test_message;
- send_message_cb.Run();
+ send_message_cb.Run(true);
SaveQuitClosureAndRunLoop();
}
@@ -752,7 +752,7 @@ TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) {
base::Unretained(this)));
base::RunLoop run_loop;
- base::Closure send_message_cb;
+ base::Callback<void(bool)> send_message_cb;
PresentationSessionMessage* test_message = nullptr;
EXPECT_CALL(mock_delegate_, SendMessageRawPtr(
_, _, _, _))
@@ -763,7 +763,7 @@ TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) {
run_loop.Run();
EXPECT_FALSE(test_message);
- send_message_cb.Run();
+ send_message_cb.Run(true);
SaveQuitClosureAndRunLoop();
}
@@ -785,7 +785,7 @@ TEST_F(PresentationServiceImplTest, SendBlobData) {
base::Unretained(this)));
base::RunLoop run_loop;
- base::Closure send_message_cb;
+ base::Callback<void(bool)> send_message_cb;
PresentationSessionMessage* test_message = nullptr;
EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _))
.WillOnce(DoAll(
@@ -805,7 +805,7 @@ TEST_F(PresentationServiceImplTest, SendBlobData) {
kMaxPresentationSessionMessageSize);
EXPECT_EQ(0, memcmp(buffer, &(*test_message->data.get())[0], sizeof(buffer)));
delete test_message;
- send_message_cb.Run();
+ send_message_cb.Run(true);
SaveQuitClosureAndRunLoop();
}
diff --git a/content/public/browser/presentation_service_delegate.h b/content/public/browser/presentation_service_delegate.h
index 0d5b35b..89da14d 100644
--- a/content/public/browser/presentation_service_delegate.h
+++ b/content/public/browser/presentation_service_delegate.h
@@ -45,7 +45,7 @@ class CONTENT_EXPORT PresentationServiceDelegate {
base::Callback<void(const PresentationError&)>;
using PresentationSessionMessageCallback = base::Callback<void(
scoped_ptr<ScopedVector<PresentationSessionMessage>>)>;
- using SendMessageCallback = base::Closure;
+ using SendMessageCallback = base::Callback<void(bool)>;
virtual ~PresentationServiceDelegate() {}