Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/client/feature/compositor/blimp_gpu_memory_buffer_manager.h> | |
| 6 #include "blimp/client/feature/compositor/blimp_compositor.h" | 5 #include "blimp/client/feature/compositor/blimp_compositor.h" |
| 7 | 6 |
| 8 #include "base/threading/thread_task_runner_handle.h" | 7 #include "base/threading/thread_task_runner_handle.h" |
| 8 #include "blimp/client/core/compositor/blimp_compositor_dependencies.h" | |
| 9 #include "blimp/client/core/compositor/blimp_task_graph_runner.h" | |
| 9 #include "blimp/client/core/compositor/blob_image_serialization_processor.h" | 10 #include "blimp/client/core/compositor/blob_image_serialization_processor.h" |
| 10 #include "blimp/common/compositor/blimp_task_graph_runner.h" | 11 #include "blimp/client/feature/compositor/mock_compositor_dependencies.h" |
| 11 #include "cc/layers/layer.h" | 12 #include "cc/layers/layer.h" |
| 12 #include "cc/proto/compositor_message.pb.h" | 13 #include "cc/proto/compositor_message.pb.h" |
| 13 #include "cc/surfaces/surface_manager.h" | 14 #include "cc/surfaces/surface_manager.h" |
| 14 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 16 | 17 |
| 17 using testing::_; | 18 using testing::_; |
| 18 | 19 |
| 19 namespace blimp { | 20 namespace blimp { |
| 20 namespace client { | 21 namespace client { |
| 21 | 22 |
| 22 class MockBlimpCompositorClient : public BlimpCompositorClient { | 23 class MockBlimpCompositorClient : public BlimpCompositorClient { |
| 23 public: | 24 public: |
| 24 MockBlimpCompositorClient() : compositor_thread_("Compositor") { | 25 MockBlimpCompositorClient() = default; |
| 25 compositor_thread_.Start(); | 26 ~MockBlimpCompositorClient() override = default; |
| 26 } | |
| 27 ~MockBlimpCompositorClient() override { compositor_thread_.Stop(); } | |
| 28 | |
| 29 cc::LayerTreeSettings* GetLayerTreeSettings() override { return &settings_; } | |
| 30 scoped_refptr<base::SingleThreadTaskRunner> GetCompositorTaskRunner() override | |
| 31 { return compositor_thread_.task_runner(); } | |
| 32 cc::TaskGraphRunner* GetTaskGraphRunner() override { | |
| 33 return &task_graph_runner_; } | |
| 34 gpu::GpuMemoryBufferManager* GetGpuMemoryBufferManager() override { | |
| 35 return &gpu_memory_buffer_manager_; | |
| 36 } | |
| 37 cc::ImageSerializationProcessor* GetImageSerializationProcessor() override { | |
| 38 return BlobImageSerializationProcessor::current(); | |
| 39 } | |
| 40 | 27 |
| 41 void SendWebGestureEvent( | 28 void SendWebGestureEvent( |
| 42 int render_widget_id, | 29 int render_widget_id, |
| 43 const blink::WebGestureEvent& gesture_event) override { | 30 const blink::WebGestureEvent& gesture_event) override { |
| 44 MockableSendWebGestureEvent(render_widget_id); | 31 MockableSendWebGestureEvent(render_widget_id); |
| 45 } | 32 } |
| 46 void SendCompositorMessage( | 33 void SendCompositorMessage( |
| 47 int render_widget_id, | 34 int render_widget_id, |
| 48 const cc::proto::CompositorMessage& message) override { | 35 const cc::proto::CompositorMessage& message) override { |
| 49 MockableSendCompositorMessage(render_widget_id); | 36 MockableSendCompositorMessage(render_widget_id); |
| 50 } | 37 } |
| 51 | 38 |
| 52 MOCK_METHOD1(MockableSendWebGestureEvent, void(int)); | 39 MOCK_METHOD1(MockableSendWebGestureEvent, void(int)); |
| 53 MOCK_METHOD1(MockableSendCompositorMessage, void(int)); | 40 MOCK_METHOD1(MockableSendCompositorMessage, void(int)); |
| 54 | 41 |
| 55 cc::LayerTreeSettings settings_; | |
| 56 base::Thread compositor_thread_; | |
| 57 BlimpTaskGraphRunner task_graph_runner_; | |
| 58 BlimpGpuMemoryBufferManager gpu_memory_buffer_manager_; | |
| 59 BlobImageSerializationProcessor serialization_processor_; | |
| 60 | |
| 61 private: | 42 private: |
| 62 DISALLOW_COPY_AND_ASSIGN(MockBlimpCompositorClient); | 43 DISALLOW_COPY_AND_ASSIGN(MockBlimpCompositorClient); |
| 63 }; | 44 }; |
| 64 | 45 |
| 65 class BlimpCompositorForTesting : public BlimpCompositor { | 46 class BlimpCompositorForTesting : public BlimpCompositor { |
| 66 public: | 47 public: |
| 67 BlimpCompositorForTesting(int render_widget_id, | 48 BlimpCompositorForTesting( |
| 68 cc::SurfaceManager* surface_manager, | 49 int render_widget_id, |
| 69 uint32_t surface_client_id, | 50 BlimpCompositorDependencies* compositor_dependencies, |
| 70 BlimpCompositorClient* client) | 51 BlimpCompositorClient* client) |
| 71 : BlimpCompositor(render_widget_id, | 52 : BlimpCompositor(render_widget_id, compositor_dependencies, client) {} |
| 72 surface_manager, | |
| 73 surface_client_id, | |
| 74 client) {} | |
| 75 | 53 |
| 76 void SendProto(const cc::proto::CompositorMessage& proto) { | 54 void SendProto(const cc::proto::CompositorMessage& proto) { |
| 77 SendCompositorProto(proto); | 55 SendCompositorProto(proto); |
| 78 } | 56 } |
| 79 | 57 |
| 80 void SendGestureEvent(const blink::WebGestureEvent& gesture_event) { | 58 void SendGestureEvent(const blink::WebGestureEvent& gesture_event) { |
| 81 SendWebGestureEvent(gesture_event); | 59 SendWebGestureEvent(gesture_event); |
| 82 } | 60 } |
| 83 | 61 |
| 84 cc::LayerTreeHost* host() const { return host_.get(); } | 62 cc::LayerTreeHost* host() const { return host_.get(); } |
| 85 }; | 63 }; |
| 86 | 64 |
| 87 class BlimpCompositorTest : public testing::Test { | 65 class BlimpCompositorTest : public testing::Test { |
| 88 public: | 66 public: |
| 89 BlimpCompositorTest() : render_widget_id_(1), loop_(new base::MessageLoop) {} | 67 BlimpCompositorTest() : render_widget_id_(1), loop_(new base::MessageLoop) {} |
| 90 | 68 |
| 91 void SetUp() override { | 69 void SetUp() override { |
| 92 surface_manager_ = base::MakeUnique<cc::SurfaceManager>(); | 70 compositor_dependencies_ = base::WrapUnique(new BlimpCompositorDependencies( |
|
Khushal
2016/08/25 05:02:54
MakeUnique. :(
David Trainor- moved to gerrit
2016/08/26 17:15:54
Sorry still hadn't done a personal final pass on t
| |
| 93 compositor_.reset(new BlimpCompositorForTesting( | 71 base::WrapUnique(new MockCompositorDependencies()))); |
| 94 render_widget_id_, surface_manager_.get(), surface_client_id_++, | 72 |
| 95 &compositor_client_)); | 73 compositor_ = base::MakeUnique<BlimpCompositorForTesting>( |
| 74 render_widget_id_, compositor_dependencies_.get(), &compositor_client_); | |
| 96 } | 75 } |
| 97 | 76 |
| 98 void TearDown() override { | 77 void TearDown() override { |
| 99 compositor_.reset(); | 78 compositor_.reset(); |
| 100 surface_manager_.reset(); | 79 compositor_dependencies_.reset(); |
| 101 } | 80 } |
| 102 | 81 |
| 103 ~BlimpCompositorTest() override {} | 82 ~BlimpCompositorTest() override {} |
| 104 | 83 |
| 105 void SendInitializeMessage() { | 84 void SendInitializeMessage() { |
| 106 std::unique_ptr<cc::proto::CompositorMessage> message; | 85 std::unique_ptr<cc::proto::CompositorMessage> message; |
| 107 message.reset(new cc::proto::CompositorMessage); | 86 message.reset(new cc::proto::CompositorMessage); |
| 108 cc::proto::CompositorMessageToImpl* to_impl = | 87 cc::proto::CompositorMessageToImpl* to_impl = |
| 109 message->mutable_to_impl(); | 88 message->mutable_to_impl(); |
| 110 to_impl->set_message_type( | 89 to_impl->set_message_type( |
| 111 cc::proto::CompositorMessageToImpl::INITIALIZE_IMPL); | 90 cc::proto::CompositorMessageToImpl::INITIALIZE_IMPL); |
| 112 cc::proto::InitializeImpl* initialize_message = | 91 cc::proto::InitializeImpl* initialize_message = |
| 113 to_impl->mutable_initialize_impl_message(); | 92 to_impl->mutable_initialize_impl_message(); |
| 114 cc::LayerTreeSettings settings; | 93 cc::LayerTreeSettings settings; |
| 115 settings.ToProtobuf(initialize_message->mutable_layer_tree_settings()); | 94 settings.ToProtobuf(initialize_message->mutable_layer_tree_settings()); |
| 116 compositor_->OnCompositorMessageReceived(std::move(message)); | 95 compositor_->OnCompositorMessageReceived(std::move(message)); |
| 117 } | 96 } |
| 118 | 97 |
| 119 void SendShutdownMessage() { | 98 void SendShutdownMessage() { |
| 120 std::unique_ptr<cc::proto::CompositorMessage> message; | 99 std::unique_ptr<cc::proto::CompositorMessage> message; |
| 121 message.reset(new cc::proto::CompositorMessage); | 100 message.reset(new cc::proto::CompositorMessage); |
| 122 cc::proto::CompositorMessageToImpl* to_impl = | 101 cc::proto::CompositorMessageToImpl* to_impl = |
| 123 message->mutable_to_impl(); | 102 message->mutable_to_impl(); |
| 124 to_impl->set_message_type(cc::proto::CompositorMessageToImpl::CLOSE_IMPL); | 103 to_impl->set_message_type(cc::proto::CompositorMessageToImpl::CLOSE_IMPL); |
| 125 compositor_->OnCompositorMessageReceived(std::move(message)); | 104 compositor_->OnCompositorMessageReceived(std::move(message)); |
| 126 } | 105 } |
| 127 | 106 |
| 128 int render_widget_id_; | 107 int render_widget_id_; |
| 129 std::unique_ptr<cc::SurfaceManager> surface_manager_; | |
| 130 uint32_t surface_client_id_ = 1; | |
| 131 std::unique_ptr<base::MessageLoop> loop_; | 108 std::unique_ptr<base::MessageLoop> loop_; |
| 132 MockBlimpCompositorClient compositor_client_; | 109 MockBlimpCompositorClient compositor_client_; |
| 110 std::unique_ptr<BlimpCompositorDependencies> compositor_dependencies_; | |
| 133 std::unique_ptr<BlimpCompositorForTesting> compositor_; | 111 std::unique_ptr<BlimpCompositorForTesting> compositor_; |
| 112 BlobImageSerializationProcessor blob_image_serialization_processor_; | |
| 134 }; | 113 }; |
| 135 | 114 |
| 136 TEST_F(BlimpCompositorTest, ToggleVisibilityWithHost) { | 115 TEST_F(BlimpCompositorTest, ToggleVisibilityWithHost) { |
| 137 // Make the compositor visible when we don't have a host. | 116 // Make the compositor visible when we don't have a host. |
| 138 compositor_->SetVisible(true); | 117 compositor_->SetVisible(true); |
| 139 SendInitializeMessage(); | 118 SendInitializeMessage(); |
| 140 | 119 |
| 141 // Check that the visibility is set correctly on the host. | 120 // Check that the visibility is set correctly on the host. |
| 142 EXPECT_NE(compositor_->host(), nullptr); | 121 EXPECT_NE(compositor_->host(), nullptr); |
| 143 EXPECT_TRUE(compositor_->host()->visible()); | 122 EXPECT_TRUE(compositor_->host()->visible()); |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 168 MockableSendCompositorMessage(render_widget_id_)).Times(1); | 147 MockableSendCompositorMessage(render_widget_id_)).Times(1); |
| 169 EXPECT_CALL(compositor_client_, | 148 EXPECT_CALL(compositor_client_, |
| 170 MockableSendWebGestureEvent(render_widget_id_)).Times(1); | 149 MockableSendWebGestureEvent(render_widget_id_)).Times(1); |
| 171 | 150 |
| 172 compositor_->SendProto(cc::proto::CompositorMessage()); | 151 compositor_->SendProto(cc::proto::CompositorMessage()); |
| 173 compositor_->SendGestureEvent(blink::WebGestureEvent()); | 152 compositor_->SendGestureEvent(blink::WebGestureEvent()); |
| 174 } | 153 } |
| 175 | 154 |
| 176 } // namespace client | 155 } // namespace client |
| 177 } // namespace blimp | 156 } // namespace blimp |
| OLD | NEW |