| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "blimp/engine/browser/engine_render_widget_message_processor.h" | 5 #include "blimp/engine/browser/engine_render_widget_message_processor.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/numerics/safe_conversions.h" | 9 #include "base/numerics/safe_conversions.h" |
| 10 #include "blimp/common/proto/blimp_message.pb.h" | 10 #include "blimp/common/proto/blimp_message.pb.h" |
| 11 #include "blimp/common/proto/compositor.pb.h" | 11 #include "blimp/common/proto/compositor.pb.h" |
| 12 #include "blimp/common/proto/render_widget.pb.h" | 12 #include "blimp/common/proto/render_widget.pb.h" |
| 13 #include "blimp/net/input_message_generator.h" | 13 #include "blimp/net/input_message_generator.h" |
| 14 #include "blimp/net/test_common.h" |
| 14 #include "net/base/net_errors.h" | 15 #include "net/base/net_errors.h" |
| 15 #include "testing/gmock/include/gmock/gmock.h" | 16 #include "testing/gmock/include/gmock/gmock.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 17 #include "third_party/WebKit/public/web/WebInputEvent.h" | 18 #include "third_party/WebKit/public/web/WebInputEvent.h" |
| 18 | 19 |
| 19 using testing::_; | 20 using testing::_; |
| 20 using testing::InvokeArgument; | 21 using testing::InvokeArgument; |
| 21 using testing::Ref; | 22 using testing::Ref; |
| 22 using testing::Return; | 23 using testing::Return; |
| 23 using testing::SaveArg; | 24 using testing::SaveArg; |
| 24 | 25 |
| 25 namespace blimp { | 26 namespace blimp { |
| 26 | 27 |
| 27 namespace { | 28 namespace { |
| 28 class MockBlimpMessageProcessor : public BlimpMessageProcessor { | |
| 29 public: | |
| 30 MockBlimpMessageProcessor() {} | |
| 31 | |
| 32 ~MockBlimpMessageProcessor() override {} | |
| 33 | |
| 34 // Adapts calls from ProcessMessage to MockableProcessMessage by | |
| 35 // unboxing the |message| scoped_ptr for GMock compatibility. | |
| 36 void ProcessMessage(scoped_ptr<BlimpMessage> message, | |
| 37 const net::CompletionCallback& callback) { | |
| 38 MockableProcessMessage(*message); | |
| 39 if (!callback.is_null()) | |
| 40 callback.Run(net::OK); | |
| 41 } | |
| 42 | |
| 43 MOCK_METHOD1(MockableProcessMessage, | |
| 44 void(const BlimpMessage& message)); | |
| 45 }; | |
| 46 | 29 |
| 47 class MockHostRenderWidgetMessageDelegate | 30 class MockHostRenderWidgetMessageDelegate |
| 48 : public EngineRenderWidgetMessageProcessor::RenderWidgetMessageDelegate { | 31 : public EngineRenderWidgetMessageProcessor::RenderWidgetMessageDelegate { |
| 49 public: | 32 public: |
| 50 // EngineRenderWidgetMessageProcessor implementation. | 33 // EngineRenderWidgetMessageProcessor implementation. |
| 51 void OnWebInputEvent(scoped_ptr<blink::WebInputEvent> event) override { | 34 void OnWebInputEvent(scoped_ptr<blink::WebInputEvent> event) override { |
| 52 MockableOnWebInputEvent(); | 35 MockableOnWebInputEvent(); |
| 53 } | 36 } |
| 54 | 37 |
| 55 void OnCompositorMessageReceived( | 38 void OnCompositorMessageReceived( |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 } | 143 } |
| 161 | 144 |
| 162 TEST_F(EngineRenderWidgetMessageProcessorTest, DropsStaleMessages) { | 145 TEST_F(EngineRenderWidgetMessageProcessorTest, DropsStaleMessages) { |
| 163 std::vector<uint8_t> payload = { 'f', 'u', 'n' }; | 146 std::vector<uint8_t> payload = { 'f', 'u', 'n' }; |
| 164 | 147 |
| 165 EXPECT_CALL(delegate1_, MockableOnCompositorMessageReceived( | 148 EXPECT_CALL(delegate1_, MockableOnCompositorMessageReceived( |
| 166 CompMsgEquals(payload))).Times(1); | 149 CompMsgEquals(payload))).Times(1); |
| 167 SendCompositorMessage(&processor_, 1, 1U, payload); | 150 SendCompositorMessage(&processor_, 1, 1U, payload); |
| 168 | 151 |
| 169 EXPECT_CALL(out_processor_, | 152 EXPECT_CALL(out_processor_, |
| 170 MockableProcessMessage(BlimpRWMsgEquals(1, 2U))).Times(1); | 153 MockableProcessMessage(BlimpRWMsgEquals(1, 2U), _)).Times(1); |
| 171 processor_.OnRenderWidgetInitialized(1); | 154 processor_.OnRenderWidgetInitialized(1); |
| 172 | 155 |
| 173 EXPECT_CALL(delegate1_, MockableOnCompositorMessageReceived( | 156 EXPECT_CALL(delegate1_, MockableOnCompositorMessageReceived( |
| 174 CompMsgEquals(payload))).Times(0); | 157 CompMsgEquals(payload))).Times(0); |
| 175 payload[0] = 'a'; | 158 payload[0] = 'a'; |
| 176 SendCompositorMessage(&processor_, 1, 1U, payload); | 159 SendCompositorMessage(&processor_, 1, 1U, payload); |
| 177 | 160 |
| 178 EXPECT_CALL(delegate1_, MockableOnWebInputEvent()).Times(0); | 161 EXPECT_CALL(delegate1_, MockableOnWebInputEvent()).Times(0); |
| 179 SendInputMessage(&processor_, 1, 1U); | 162 SendInputMessage(&processor_, 1, 1U); |
| 180 | 163 |
| 181 EXPECT_CALL(delegate1_, MockableOnCompositorMessageReceived( | 164 EXPECT_CALL(delegate1_, MockableOnCompositorMessageReceived( |
| 182 CompMsgEquals(payload))).Times(1); | 165 CompMsgEquals(payload))).Times(1); |
| 183 SendCompositorMessage(&processor_, 1, 2U, payload); | 166 SendCompositorMessage(&processor_, 1, 2U, payload); |
| 184 | 167 |
| 185 EXPECT_CALL(delegate1_, MockableOnWebInputEvent()).Times(1); | 168 EXPECT_CALL(delegate1_, MockableOnWebInputEvent()).Times(1); |
| 186 SendInputMessage(&processor_, 1, 2U); | 169 SendInputMessage(&processor_, 1, 2U); |
| 187 } | 170 } |
| 188 | 171 |
| 189 TEST_F(EngineRenderWidgetMessageProcessorTest, | 172 TEST_F(EngineRenderWidgetMessageProcessorTest, |
| 190 RepliesHaveCorrectRenderWidgetId) { | 173 RepliesHaveCorrectRenderWidgetId) { |
| 191 std::vector<uint8_t> payload = { 'a', 'b', 'c', 'd' }; | 174 std::vector<uint8_t> payload = { 'a', 'b', 'c', 'd' }; |
| 192 | 175 |
| 193 EXPECT_CALL(out_processor_, | 176 EXPECT_CALL(out_processor_, |
| 194 MockableProcessMessage(BlimpRWMsgEquals(1, 2U))).Times(1); | 177 MockableProcessMessage(BlimpRWMsgEquals(1, 2U), _)).Times(1); |
| 195 processor_.OnRenderWidgetInitialized(1); | 178 processor_.OnRenderWidgetInitialized(1); |
| 196 | 179 |
| 197 EXPECT_CALL(out_processor_, | 180 EXPECT_CALL(out_processor_, |
| 198 MockableProcessMessage(BlimpRWMsgEquals(2, 2U))).Times(1); | 181 MockableProcessMessage(BlimpRWMsgEquals(2, 2U), _)).Times(1); |
| 199 processor_.OnRenderWidgetInitialized(2); | 182 processor_.OnRenderWidgetInitialized(2); |
| 200 | 183 |
| 201 EXPECT_CALL(out_processor_, MockableProcessMessage( | 184 EXPECT_CALL(out_processor_, MockableProcessMessage( |
| 202 BlimpCompMsgEquals(1, 2U, payload))).Times(1); | 185 BlimpCompMsgEquals(1, 2U, payload), _)).Times(1); |
| 203 | 186 |
| 204 processor_.SendCompositorMessage(1, payload); | 187 processor_.SendCompositorMessage(1, payload); |
| 205 } | 188 } |
| 206 | 189 |
| 207 | 190 |
| 208 } // namespace blimp | 191 } // namespace blimp |
| OLD | NEW |