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

Unified Diff: chrome/browser/media/router/browser_presentation_connection_proxy_unittest.cc

Issue 2943033003: [PresentationSevice] Use PresentationConnection to send messages from (Closed)
Patch Set: LOG -> DLOG Created 3 years, 6 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: chrome/browser/media/router/browser_presentation_connection_proxy_unittest.cc
diff --git a/chrome/browser/media/router/browser_presentation_connection_proxy_unittest.cc b/chrome/browser/media/router/browser_presentation_connection_proxy_unittest.cc
index dccbf4efe659209e094b212201ea377f1540ee5e..5fb8b736b9219566ce9dbc1cb7db6ff9186385e8 100644
--- a/chrome/browser/media/router/browser_presentation_connection_proxy_unittest.cc
+++ b/chrome/browser/media/router/browser_presentation_connection_proxy_unittest.cc
@@ -7,35 +7,34 @@
#include "base/run_loop.h"
#include "base/test/mock_callback.h"
#include "chrome/browser/media/router/mock_media_router.h"
+#include "chrome/browser/media/router/test_helper.h"
#include "chrome/common/media_router/media_source.h"
#include "chrome/common/media_router/media_source_helper.h"
+#include "chrome/common/media_router/route_message.h"
#include "content/public/common/presentation_connection_message.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gmock/include/gmock/gmock.h"
using ::testing::_;
+using ::testing::Invoke;
namespace media_router {
-constexpr char kMediaRouteId[] = "MockRouteId";
+using OnMessageCallback = BrowserPresentationConnectionProxy::OnMessageCallback;
-class MockPresentationConnectionProxy
- : public NON_EXPORTED_BASE(blink::mojom::PresentationConnection) {
- public:
- // PresentationConnectionMessage is move-only.
- // TODO(crbug.com/729950): Use MOCK_METHOD directly once GMock gets the
- // move-only type support.
- void OnMessage(content::PresentationConnectionMessage message,
- OnMessageCallback cb) {
- OnMessageInternal(message, cb);
- }
- MOCK_METHOD2(OnMessageInternal,
- void(const content::PresentationConnectionMessage&,
- OnMessageCallback&));
- MOCK_METHOD1(DidChangeState,
- void(content::PresentationConnectionState state));
- MOCK_METHOD0(OnClose, void());
-};
+namespace {
+
+void ExpectMessageAndRunCallback(
+ const content::PresentationConnectionMessage& expected_message,
+ const content::PresentationConnectionMessage& message,
+ OnMessageCallback& callback) {
+ EXPECT_EQ(expected_message, message);
+ std::move(callback).Run(true);
+}
+
+} // namespace
+
+constexpr char kMediaRouteId[] = "MockRouteId";
class BrowserPresentationConnectionProxyTest : public ::testing::Test {
public:
@@ -45,9 +44,10 @@ class BrowserPresentationConnectionProxyTest : public ::testing::Test {
mock_controller_connection_proxy_ =
base::MakeUnique<MockPresentationConnectionProxy>();
blink::mojom::PresentationConnectionPtr controller_connection_ptr;
- mojo::Binding<blink::mojom::PresentationConnection> binding(
+ binding_.reset(new mojo::Binding<blink::mojom::PresentationConnection>(
mock_controller_connection_proxy_.get(),
- mojo::MakeRequest(&controller_connection_ptr));
+ mojo::MakeRequest(&controller_connection_ptr)));
+ EXPECT_CALL(mock_router_, RegisterRouteMessageObserver(_));
EXPECT_CALL(
*mock_controller_connection_proxy_,
DidChangeState(content::PRESENTATION_CONNECTION_STATE_CONNECTED));
@@ -64,10 +64,16 @@ class BrowserPresentationConnectionProxyTest : public ::testing::Test {
}
void TearDown() override {
+ EXPECT_CALL(mock_router_, UnregisterRouteMessageObserver(_));
browser_connection_proxy_.reset();
+ binding_.reset();
mock_controller_connection_proxy_.reset();
}
+ MockPresentationConnectionProxy* controller_connection_proxy() {
+ return mock_controller_connection_proxy_.get();
+ }
+
BrowserPresentationConnectionProxy* browser_connection_proxy() {
return browser_connection_proxy_.get();
}
@@ -77,6 +83,7 @@ class BrowserPresentationConnectionProxyTest : public ::testing::Test {
private:
std::unique_ptr<MockPresentationConnectionProxy>
mock_controller_connection_proxy_;
+ std::unique_ptr<mojo::Binding<blink::mojom::PresentationConnection>> binding_;
std::unique_ptr<BrowserPresentationConnectionProxy> browser_connection_proxy_;
MockMediaRouter mock_router_;
content::TestBrowserThreadBundle thread_bundle_;
@@ -103,7 +110,7 @@ TEST_F(BrowserPresentationConnectionProxyTest, TestOnMessageBinaryMessage) {
base::MockCallback<base::Callback<void(bool)>> mock_on_message_callback;
EXPECT_CALL(*mock_router(), SendRouteBinaryMessageInternal(_, _, _))
- .WillOnce(::testing::Invoke(
+ .WillOnce(Invoke(
[&expected_data](
const MediaRoute::Id& route_id, std::vector<uint8_t>* data,
const BrowserPresentationConnectionProxy::OnMessageCallback&
@@ -113,4 +120,33 @@ TEST_F(BrowserPresentationConnectionProxyTest, TestOnMessageBinaryMessage) {
mock_on_message_callback.Get());
}
+TEST_F(BrowserPresentationConnectionProxyTest, OnMessagesReceived) {
+ RouteMessage message_1;
+ message_1.type = RouteMessage::Type::TEXT;
+ message_1.text = std::string("foo");
+ RouteMessage message_2;
+ message_2.type = RouteMessage::Type::BINARY;
+ message_2.binary = std::vector<uint8_t>({1, 2, 3});
+ std::vector<RouteMessage> messages = {message_1, message_2};
+
+ content::PresentationConnectionMessage expected_message1("foo");
+ content::PresentationConnectionMessage expected_message2(
+ std::vector<uint8_t>({1, 2, 3}));
+ EXPECT_CALL(*controller_connection_proxy(), OnMessageInternal(_, _))
+ .WillOnce(
+ Invoke([&expected_message1](
+ const content::PresentationConnectionMessage& message,
+ OnMessageCallback& callback) {
+ ExpectMessageAndRunCallback(expected_message1, message, callback);
+ }))
+ .WillOnce(
+ Invoke([&expected_message2](
+ const content::PresentationConnectionMessage& message,
+ OnMessageCallback& callback) {
+ ExpectMessageAndRunCallback(expected_message2, message, callback);
+ }));
+ browser_connection_proxy()->OnMessagesReceived(messages);
+ base::RunLoop().RunUntilIdle();
+}
+
} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698