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

Unified Diff: content/renderer/presentation/presentation_dispatcher_unittest.cc

Issue 2471573005: [Presentation API] (5th) (1-UA) integrate controller and receiver side for 1-UA messaging (Closed)
Patch Set: merge and refactor Created 3 years, 11 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/renderer/presentation/presentation_dispatcher_unittest.cc
diff --git a/content/renderer/presentation/presentation_dispatcher_unittest.cc b/content/renderer/presentation/presentation_dispatcher_unittest.cc
index 8ef966d774bc90bbb97a7c9eabfd6bf80f52cc4e..b37a95206ec6ea3016880939e221949fda15cf17 100644
--- a/content/renderer/presentation/presentation_dispatcher_unittest.cc
+++ b/content/renderer/presentation/presentation_dispatcher_unittest.cc
@@ -7,6 +7,7 @@
#include "base/run_loop.h"
#include "content/public/test/test_browser_thread_bundle.h"
+#include "content/renderer/presentation/presentation_connection_proxy.h"
#include "content/renderer/presentation/presentation_dispatcher.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "third_party/WebKit/public/platform/modules/presentation/WebPresentationAvailabilityObserver.h"
@@ -112,13 +113,41 @@ class MockPresentationService : public PresentationService {
blink::mojom::PresentationConnectionPtr controller_conn_ptr,
blink::mojom::PresentationConnectionRequest receiver_conn_request)
override {
- SetPresentationConnection(session.get(), controller_conn_ptr.get());
+ SetPresentationConnectionInternal(session.get(), controller_conn_ptr.get());
}
- MOCK_METHOD2(SetPresentationConnection,
+ MOCK_METHOD2(SetPresentationConnectionInternal,
void(PresentationSessionInfo* session_info,
PresentationConnection* connection));
};
+class TestPresentationConnection : public blink::WebPresentationConnection {
+ public:
+ void setProxy(
+ std::unique_ptr<blink::WebPresentationConnectionProxy> proxy) override {
+ proxy_ = std::move(proxy);
+ }
+ MOCK_METHOD1(didReceiveTextMessage, void(const WebString& message));
+ MOCK_METHOD2(didReceiveBinaryMessage,
+ void(const uint8_t* data, size_t length));
+ MOCK_METHOD1(didChangeState, void(blink::WebPresentationConnectionState));
+
+ std::unique_ptr<blink::WebPresentationConnectionProxy> proxy_;
+};
+
+class TestPresentationConnectionProxy : public PresentationConnectionProxy {
+ public:
+ TestPresentationConnectionProxy(blink::WebPresentationConnection* connection)
+ : PresentationConnectionProxy(connection) {}
+
+ void SendConnectionMessage(blink::mojom::ConnectionMessagePtr session_message,
+ const OnMessageCallback& callback) const override {
+ SendConnectionMessageInternal(session_message.get(), callback);
+ }
+ MOCK_CONST_METHOD2(SendConnectionMessageInternal,
+ void(blink::mojom::ConnectionMessage*,
+ const OnMessageCallback&));
+};
+
class TestWebPresentationConnectionCallback
: public WebPresentationConnectionCallbacks {
public:
@@ -134,12 +163,15 @@ class TestWebPresentationConnectionCallback
EXPECT_EQ(info.id, id_);
}
- blink::WebPresentationConnection* getConnection() override { return nullptr; }
+ blink::WebPresentationConnection* getConnection() override {
+ return &connection_;
+ }
private:
const WebURL url_;
const WebString id_;
bool callback_called_;
+ TestPresentationConnection connection_;
};
class TestWebPresentationConnectionErrorCallback
@@ -232,6 +264,8 @@ class PresentationDispatcherTest : public ::testing::Test {
TEST_F(PresentationDispatcherTest, TestStartSession) {
mark a. foltz 2017/01/23 22:29:34 Are there expectations covering that the proxies a
zhaobin 2017/01/24 19:28:46 Done.
base::RunLoop run_loop;
+ EXPECT_CALL(presentation_service_, ListenForConnectionMessagesInternal(_));
+ EXPECT_CALL(presentation_service_, SetPresentationConnectionInternal(_, _));
EXPECT_CALL(presentation_service_, StartSession(gurls_, _))
.WillOnce(Invoke([this](
const std::vector<GURL>& presentation_urls,
@@ -293,6 +327,8 @@ TEST_F(PresentationDispatcherTest, TestJoinSessionError) {
TEST_F(PresentationDispatcherTest, TestJoinSession) {
base::RunLoop run_loop;
+ EXPECT_CALL(presentation_service_, ListenForConnectionMessagesInternal(_));
+ EXPECT_CALL(presentation_service_, SetPresentationConnectionInternal(_, _));
EXPECT_CALL(presentation_service_, JoinSession(gurls_, _, _))
.WillOnce(Invoke([this](
const std::vector<GURL>& presentation_urls,
@@ -314,52 +350,48 @@ TEST_F(PresentationDispatcherTest, TestJoinSession) {
TEST_F(PresentationDispatcherTest, TestSendString) {
WebString message = WebString::fromUTF8("test message");
+ TestPresentationConnection connection;
+ TestPresentationConnectionProxy connection_proxy(&connection);
+
base::RunLoop run_loop;
- EXPECT_CALL(presentation_service_, SendConnectionMessageInternal(_, _, _))
- .WillOnce(Invoke([this, &message](
- PresentationSessionInfo* session_info,
- ConnectionMessage* message_request,
- const PresentationService::SendConnectionMessageCallback& callback) {
- EXPECT_EQ(gurl1_, session_info->url);
- EXPECT_EQ(presentation_id_.utf8(), session_info->id);
- EXPECT_TRUE(message_request->message.has_value());
- EXPECT_EQ(message.utf8(), message_request->message.value());
- callback.Run(true);
+ EXPECT_CALL(connection_proxy, SendConnectionMessageInternal(_, _))
+ .WillOnce(Invoke([this, &message](ConnectionMessage* session_message,
+ const OnMessageCallback& callback) {
+ EXPECT_EQ(blink::mojom::PresentationMessageType::TEXT,
+ session_message->type);
+ EXPECT_EQ(message.utf8(), session_message->message.value());
}));
- dispatcher_.sendString(url1_, presentation_id_, message, nullptr);
+ dispatcher_.sendString(url1_, presentation_id_, message, &connection_proxy);
run_loop.RunUntilIdle();
}
TEST_F(PresentationDispatcherTest, TestSendArrayBuffer) {
+ TestPresentationConnection connection;
+ TestPresentationConnectionProxy connection_proxy(&connection);
+
base::RunLoop run_loop;
- EXPECT_CALL(presentation_service_, SendConnectionMessageInternal(_, _, _))
- .WillOnce(Invoke([this](
- PresentationSessionInfo* session_info,
- ConnectionMessage* message_request,
- const PresentationService::SendConnectionMessageCallback& callback) {
- EXPECT_EQ(gurl1_, session_info->url);
- EXPECT_EQ(presentation_id_.utf8(), session_info->id);
+ EXPECT_CALL(connection_proxy, SendConnectionMessageInternal(_, _))
+ .WillOnce(Invoke([this](ConnectionMessage* message_request,
+ const OnMessageCallback& callback) {
std::vector<uint8_t> data(
array_buffer_data(),
array_buffer_data() + array_buffer_.byteLength());
EXPECT_TRUE(message_request->data.has_value());
EXPECT_EQ(data, message_request->data.value());
- callback.Run(true);
}));
dispatcher_.sendArrayBuffer(url1_, presentation_id_, array_buffer_data(),
- array_buffer_.byteLength(), nullptr);
+ array_buffer_.byteLength(), &connection_proxy);
run_loop.RunUntilIdle();
}
TEST_F(PresentationDispatcherTest, TestSendBlobData) {
mark a. foltz 2017/01/23 22:29:34 Does there need to be a test case added for OnRece
zhaobin 2017/01/24 19:28:46 Done.
+ TestPresentationConnection connection;
+ TestPresentationConnectionProxy connection_proxy(&connection);
+
base::RunLoop run_loop;
- EXPECT_CALL(presentation_service_, SendConnectionMessageInternal(_, _, _))
- .WillOnce(Invoke([this](
- PresentationSessionInfo* session_info,
- ConnectionMessage* message_request,
- const PresentationService::SendConnectionMessageCallback& callback) {
- EXPECT_EQ(gurl1_, session_info->url);
- EXPECT_EQ(presentation_id_.utf8(), session_info->id);
+ EXPECT_CALL(connection_proxy, SendConnectionMessageInternal(_, _))
+ .WillOnce(Invoke([this](ConnectionMessage* message_request,
+ const OnMessageCallback& callback) {
std::vector<uint8_t> data(
array_buffer_data(),
array_buffer_data() + array_buffer_.byteLength());
@@ -368,7 +400,7 @@ TEST_F(PresentationDispatcherTest, TestSendBlobData) {
callback.Run(true);
}));
dispatcher_.sendBlobData(url1_, presentation_id_, array_buffer_data(),
- array_buffer_.byteLength(), nullptr);
+ array_buffer_.byteLength(), &connection_proxy);
run_loop.RunUntilIdle();
}
@@ -394,6 +426,8 @@ TEST_F(PresentationDispatcherTest, TestListenForScreenAvailability) {
dispatcher_.getAvailability(
url1_, base::MakeUnique<WebPresentationAvailabilityCallbacks>());
dispatcher_.OnScreenAvailabilityUpdated(url1_, true);
+ EXPECT_CALL(presentation_service_,
+ StopListeningForScreenAvailability(gurl1_));
run_loop1.RunUntilIdle();
base::RunLoop run_loop2;

Powered by Google App Engine
This is Rietveld 408576698