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

Side by Side Diff: blimp/client/render_widget_message_processor_unittest.cc

Issue 1450423002: Add glue between the client and engine for Blimp (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blimp_ipc2
Patch Set: Fixed net callback, fixed output surface creation assumption Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "blimp/client/render_widget_message_processor.h"
6
7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "blimp/common/proto/blimp_message.pb.h"
10 #include "blimp/common/proto/compositor.pb.h"
11 #include "blimp/common/proto/render_widget.pb.h"
12 #include "cc/proto/compositor_message.pb.h"
13 #include "net/base/net_errors.h"
14 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16
17 using testing::_;
18 using testing::InvokeArgument;
19 using testing::Ref;
20 using testing::Return;
21 using testing::SaveArg;
22
23 namespace blimp {
24
25 namespace {
26 class MockBlimpMessageProcessor : public BlimpMessageProcessor {
27 public:
28 MockBlimpMessageProcessor() {}
29
30 ~MockBlimpMessageProcessor() override {}
31
32 // Adapts calls from ProcessMessage to MockableProcessMessage by
33 // unboxing the |message| scoped_ptr for GMock compatibility.
34 void ProcessMessage(scoped_ptr<BlimpMessage> message,
35 const net::CompletionCallback& callback) {
36 MockableProcessMessage(*message);
37 if (!callback.is_null())
38 callback.Run(net::OK);
39 }
40
41 MOCK_METHOD1(MockableProcessMessage,
42 void(const BlimpMessage& message));
43 };
44
45 class MockRenderWidgetMessageDelegate
46 : public RenderWidgetMessageProcessor::RenderWidgetMessageDelegate {
47 public:
48 // RenderWidgetMessageDelegate implementation.
49 void OnRenderWidgetInitialized() override {
50 MockableOnRenderWidgetInitialized();
51 }
52 void OnCompositorMessageReceived(
53 scoped_ptr<cc::proto::CompositorMessage> message) override {
54 MockableOnCompositorMessageReceived(*message);
55 }
56
57 MOCK_METHOD0(MockableOnRenderWidgetInitialized, void());
58 MOCK_METHOD1(MockableOnCompositorMessageReceived,
59 void(const cc::proto::CompositorMessage& message));
60 };
61
62 MATCHER_P2(CompositorMessageEquals, tab_id, rw_id, "") {
63 return arg.compositor().render_widget_id() == rw_id &&
64 arg.target_tab_id() == tab_id;
65 }
66
67 void SendRenderWidgetMessage(BlimpMessageProcessor* processor,
68 int tab_id,
69 uint32_t rw_id) {
70 scoped_ptr<BlimpMessage> message(new BlimpMessage);
71 message->set_type(BlimpMessage::RENDER_WIDGET);
72 message->set_target_tab_id(tab_id);
73
74 RenderWidgetMessage* details = message->mutable_render_widget();
75 details->set_type(RenderWidgetMessage::INITIALIZE);
76 details->set_render_widget_id(rw_id);
77 processor->ProcessMessage(message.Pass(),
78 net::CompletionCallback());
79 }
80
81 void SendCompositorMessage(BlimpMessageProcessor* processor,
82 int tab_id,
83 uint32_t rw_id) {
84 scoped_ptr<BlimpMessage> message(new BlimpMessage);
85 message->set_type(BlimpMessage::COMPOSITOR);
86 message->set_target_tab_id(tab_id);
87
88 CompositorMessage* details = message->mutable_compositor();
89 details->set_render_widget_id(rw_id);
90 processor->ProcessMessage(message.Pass(),
91 net::CompletionCallback());
92 }
93
94 } // namespace
95
96 class RenderWidgetMessageProcessorTest : public testing::Test {
97 public:
98 RenderWidgetMessageProcessorTest()
99 : processor_(&out_processor_) {}
100
101 void SetUp() override {
102 processor_.SetDelegate(1, &delegate1_);
103 processor_.SetDelegate(2, &delegate2_);
104 }
105
106 protected:
107 MockBlimpMessageProcessor out_processor_;
108 MockRenderWidgetMessageDelegate delegate1_;
109 MockRenderWidgetMessageDelegate delegate2_;
110
111 RenderWidgetMessageProcessor processor_;
112 };
113
114 TEST_F(RenderWidgetMessageProcessorTest, DelegateCallsOK) {
115 EXPECT_CALL(delegate1_, MockableOnRenderWidgetInitialized()).Times(1);
116 SendRenderWidgetMessage(&processor_, 1, 1U);
117
118 EXPECT_CALL(delegate1_, MockableOnCompositorMessageReceived(_)).Times(1);
119 SendCompositorMessage(&processor_, 1, 1U);
120
121 EXPECT_CALL(delegate2_, MockableOnRenderWidgetInitialized()).Times(1);
122 SendRenderWidgetMessage(&processor_, 2, 2U);
123
124 EXPECT_CALL(delegate2_, MockableOnCompositorMessageReceived(_)).Times(1);
125 SendCompositorMessage(&processor_, 2, 2U);
126 }
127
128 TEST_F(RenderWidgetMessageProcessorTest, RepliesHaveCorrectRenderWidgetId) {
129 SendRenderWidgetMessage(&processor_, 1, 2U);
130 SendRenderWidgetMessage(&processor_, 2, 1U);
131
132 EXPECT_CALL(out_processor_,
133 MockableProcessMessage(CompositorMessageEquals(1, 2U))).Times(1);
134 processor_.SendCompositorMessage(1, cc::proto::CompositorMessage());
135
136 SendRenderWidgetMessage(&processor_, 1, 3U);
137
138 EXPECT_CALL(out_processor_,
139 MockableProcessMessage(CompositorMessageEquals(1, 3U))).Times(1);
140 processor_.SendCompositorMessage(1, cc::proto::CompositorMessage());
141
142 EXPECT_CALL(out_processor_,
143 MockableProcessMessage(CompositorMessageEquals(2, 1U))).Times(1);
144 processor_.SendCompositorMessage(2, cc::proto::CompositorMessage());
145 }
146
147 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698