| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <string> | 5 #include <string> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "components/view_manager/client_connection.h" | 9 #include "components/mus/client_connection.h" |
| 10 #include "components/view_manager/connection_manager.h" | 10 #include "components/mus/connection_manager.h" |
| 11 #include "components/view_manager/connection_manager_delegate.h" | 11 #include "components/mus/connection_manager_delegate.h" |
| 12 #include "components/view_manager/display_manager.h" | 12 #include "components/mus/display_manager.h" |
| 13 #include "components/view_manager/display_manager_factory.h" | 13 #include "components/mus/display_manager_factory.h" |
| 14 #include "components/view_manager/ids.h" | 14 #include "components/mus/ids.h" |
| 15 #include "components/view_manager/public/cpp/types.h" | 15 #include "components/mus/public/cpp/types.h" |
| 16 #include "components/view_manager/public/cpp/util.h" | 16 #include "components/mus/public/cpp/util.h" |
| 17 #include "components/view_manager/public/interfaces/view_tree.mojom.h" | 17 #include "components/mus/public/interfaces/view_tree.mojom.h" |
| 18 #include "components/view_manager/server_view.h" | 18 #include "components/mus/server_view.h" |
| 19 #include "components/view_manager/surfaces/surfaces_state.h" | 19 #include "components/mus/surfaces/surfaces_state.h" |
| 20 #include "components/view_manager/test_change_tracker.h" | 20 #include "components/mus/test_change_tracker.h" |
| 21 #include "components/view_manager/view_tree_host_connection.h" | 21 #include "components/mus/view_tree_host_connection.h" |
| 22 #include "components/view_manager/view_tree_impl.h" | 22 #include "components/mus/view_tree_impl.h" |
| 23 #include "mojo/application/public/interfaces/service_provider.mojom.h" | 23 #include "mojo/application/public/interfaces/service_provider.mojom.h" |
| 24 #include "mojo/converters/geometry/geometry_type_converters.h" | 24 #include "mojo/converters/geometry/geometry_type_converters.h" |
| 25 #include "testing/gtest/include/gtest/gtest.h" | 25 #include "testing/gtest/include/gtest/gtest.h" |
| 26 #include "ui/gfx/geometry/rect.h" | 26 #include "ui/gfx/geometry/rect.h" |
| 27 | 27 |
| 28 using mojo::Array; | 28 using mojo::Array; |
| 29 using mojo::ERROR_CODE_NONE; | 29 using mojo::ERROR_CODE_NONE; |
| 30 using mojo::InterfaceRequest; | 30 using mojo::InterfaceRequest; |
| 31 using mojo::ServiceProvider; | 31 using mojo::ServiceProvider; |
| 32 using mojo::ServiceProviderPtr; | 32 using mojo::ServiceProviderPtr; |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 | 171 |
| 172 TestClientConnection* last_connection_; | 172 TestClientConnection* last_connection_; |
| 173 | 173 |
| 174 DISALLOW_COPY_AND_ASSIGN(TestConnectionManagerDelegate); | 174 DISALLOW_COPY_AND_ASSIGN(TestConnectionManagerDelegate); |
| 175 }; | 175 }; |
| 176 | 176 |
| 177 // ----------------------------------------------------------------------------- | 177 // ----------------------------------------------------------------------------- |
| 178 | 178 |
| 179 class TestViewTreeHostConnection : public ViewTreeHostConnection { | 179 class TestViewTreeHostConnection : public ViewTreeHostConnection { |
| 180 public: | 180 public: |
| 181 TestViewTreeHostConnection(scoped_ptr<ViewTreeHostImpl> host_impl, | 181 TestViewTreeHostConnection(scoped_ptr<ViewTreeHostImpl> host_impl, |
| 182 ConnectionManager* manager) | 182 ConnectionManager* manager) |
| 183 : ViewTreeHostConnection(host_impl.Pass(), manager) {} | 183 : ViewTreeHostConnection(host_impl.Pass(), manager) {} |
| 184 ~TestViewTreeHostConnection() override {} | 184 ~TestViewTreeHostConnection() override {} |
| 185 | 185 |
| 186 private: | 186 private: |
| 187 // ViewTreeHostDelegate: | 187 // ViewTreeHostDelegate: |
| 188 void OnDisplayInitialized() override { | 188 void OnDisplayInitialized() override { |
| 189 connection_manager()->AddHost(this); | 189 connection_manager()->AddHost(this); |
| 190 set_view_tree(connection_manager()->EmbedAtView( | 190 set_view_tree(connection_manager()->EmbedAtView( |
| 191 kInvalidConnectionId, | 191 kInvalidConnectionId, view_tree_host()->root_view()->id(), |
| 192 view_tree_host()->root_view()->id(), | |
| 193 mojo::ViewTreeClientPtr())); | 192 mojo::ViewTreeClientPtr())); |
| 194 } | 193 } |
| 195 DISALLOW_COPY_AND_ASSIGN(TestViewTreeHostConnection); | 194 DISALLOW_COPY_AND_ASSIGN(TestViewTreeHostConnection); |
| 196 }; | 195 }; |
| 197 | 196 |
| 198 // ----------------------------------------------------------------------------- | 197 // ----------------------------------------------------------------------------- |
| 199 // Empty implementation of DisplayManager. | 198 // Empty implementation of DisplayManager. |
| 200 class TestDisplayManager : public DisplayManager { | 199 class TestDisplayManager : public DisplayManager { |
| 201 public: | 200 public: |
| 202 TestDisplayManager() {} | 201 TestDisplayManager() {} |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 TestViewTreeHostConnection* host_connection() { return host_connection_; } | 293 TestViewTreeHostConnection* host_connection() { return host_connection_; } |
| 295 DisplayManagerDelegate* display_manager_delegate() { | 294 DisplayManagerDelegate* display_manager_delegate() { |
| 296 return host_connection()->view_tree_host(); | 295 return host_connection()->view_tree_host(); |
| 297 } | 296 } |
| 298 | 297 |
| 299 protected: | 298 protected: |
| 300 // testing::Test: | 299 // testing::Test: |
| 301 void SetUp() override { | 300 void SetUp() override { |
| 302 DisplayManager::set_factory_for_testing(&display_manager_factory_); | 301 DisplayManager::set_factory_for_testing(&display_manager_factory_); |
| 303 // TODO(fsamuel): This is probably broken. We need a root. | 302 // TODO(fsamuel): This is probably broken. We need a root. |
| 304 connection_manager_.reset( | 303 connection_manager_.reset(new ConnectionManager( |
| 305 new ConnectionManager(&delegate_, | 304 &delegate_, scoped_refptr<surfaces::SurfacesState>())); |
| 306 scoped_refptr<surfaces::SurfacesState>())); | |
| 307 ViewTreeHostImpl* host = new ViewTreeHostImpl( | 305 ViewTreeHostImpl* host = new ViewTreeHostImpl( |
| 308 mojo::ViewTreeHostClientPtr(), | 306 mojo::ViewTreeHostClientPtr(), connection_manager_.get(), |
| 309 connection_manager_.get(), true /* is_headless */, nullptr, | 307 true /* is_headless */, nullptr, scoped_refptr<gles2::GpuState>(), |
| 310 scoped_refptr<gles2::GpuState>(), | |
| 311 scoped_refptr<surfaces::SurfacesState>()); | 308 scoped_refptr<surfaces::SurfacesState>()); |
| 312 // TODO(fsamuel): This is way too magical. We need to find a better way to | 309 // TODO(fsamuel): This is way too magical. We need to find a better way to |
| 313 // manage lifetime. | 310 // manage lifetime. |
| 314 host_connection_ = new TestViewTreeHostConnection( | 311 host_connection_ = new TestViewTreeHostConnection( |
| 315 make_scoped_ptr(host), connection_manager_.get()); | 312 make_scoped_ptr(host), connection_manager_.get()); |
| 316 host->Init(host_connection_); | 313 host->Init(host_connection_); |
| 317 wm_client_ = delegate_.last_client(); | 314 wm_client_ = delegate_.last_client(); |
| 318 } | 315 } |
| 319 | 316 |
| 320 private: | 317 private: |
| 321 // TestViewTreeClient that is used for the WM connection. | 318 // TestViewTreeClient that is used for the WM connection. |
| 322 TestViewTreeClient* wm_client_; | 319 TestViewTreeClient* wm_client_; |
| 323 TestDisplayManagerFactory display_manager_factory_; | 320 TestDisplayManagerFactory display_manager_factory_; |
| 324 TestConnectionManagerDelegate delegate_; | 321 TestConnectionManagerDelegate delegate_; |
| 325 TestViewTreeHostConnection* host_connection_; | 322 TestViewTreeHostConnection* host_connection_; |
| 326 scoped_ptr<ConnectionManager> connection_manager_; | 323 scoped_ptr<ConnectionManager> connection_manager_; |
| 327 base::MessageLoop message_loop_; | 324 base::MessageLoop message_loop_; |
| 328 | 325 |
| 329 DISALLOW_COPY_AND_ASSIGN(ViewTreeTest); | 326 DISALLOW_COPY_AND_ASSIGN(ViewTreeTest); |
| 330 }; | 327 }; |
| 331 | 328 |
| 332 // Verifies focus correctly changes on pointer events. | 329 // Verifies focus correctly changes on pointer events. |
| 333 TEST_F(ViewTreeTest, FocusOnPointer) { | 330 TEST_F(ViewTreeTest, FocusOnPointer) { |
| 334 const ViewId embed_view_id(wm_connection()->id(), 1); | 331 const ViewId embed_view_id(wm_connection()->id(), 1); |
| 335 EXPECT_EQ(ERROR_CODE_NONE, wm_connection()->CreateView(embed_view_id)); | 332 EXPECT_EQ(ERROR_CODE_NONE, wm_connection()->CreateView(embed_view_id)); |
| 336 EXPECT_TRUE(wm_connection()->SetViewVisibility(embed_view_id, true)); | 333 EXPECT_TRUE(wm_connection()->SetViewVisibility(embed_view_id, true)); |
| 337 EXPECT_TRUE( | 334 EXPECT_TRUE( |
| 338 wm_connection()->AddView(*(wm_connection()->root()), embed_view_id)); | 335 wm_connection()->AddView(*(wm_connection()->root()), embed_view_id)); |
| 339 host_connection()->view_tree_host()->root_view()-> | 336 host_connection()->view_tree_host()->root_view()->SetBounds( |
| 340 SetBounds(gfx::Rect(0, 0, 100, 100)); | 337 gfx::Rect(0, 0, 100, 100)); |
| 341 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 338 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 342 wm_connection()->Embed(embed_view_id, request.Pass()); | 339 wm_connection()->Embed(embed_view_id, request.Pass()); |
| 343 ViewTreeImpl* connection1 = | 340 ViewTreeImpl* connection1 = |
| 344 connection_manager()->GetConnectionWithRoot(embed_view_id); | 341 connection_manager()->GetConnectionWithRoot(embed_view_id); |
| 345 ASSERT_TRUE(connection1 != nullptr); | 342 ASSERT_TRUE(connection1 != nullptr); |
| 346 ASSERT_NE(connection1, wm_connection()); | 343 ASSERT_NE(connection1, wm_connection()); |
| 347 | 344 |
| 348 connection_manager() | 345 connection_manager() |
| 349 ->GetView(embed_view_id) | 346 ->GetView(embed_view_id) |
| 350 ->SetBounds(gfx::Rect(0, 0, 50, 50)); | 347 ->SetBounds(gfx::Rect(0, 0, 50, 50)); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 EXPECT_EQ("Focused id=2,1", | 439 EXPECT_EQ("Focused id=2,1", |
| 443 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); | 440 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); |
| 444 ASSERT_EQ(2u, embed_connection->tracker()->changes()->size()); | 441 ASSERT_EQ(2u, embed_connection->tracker()->changes()->size()); |
| 445 EXPECT_EQ("Focused id=2,1", | 442 EXPECT_EQ("Focused id=2,1", |
| 446 ChangesToDescription1(*embed_connection->tracker()->changes())[0]); | 443 ChangesToDescription1(*embed_connection->tracker()->changes())[0]); |
| 447 EXPECT_EQ("InputEvent view=2,1 event_action=4", | 444 EXPECT_EQ("InputEvent view=2,1 event_action=4", |
| 448 ChangesToDescription1(*embed_connection->tracker()->changes())[1]); | 445 ChangesToDescription1(*embed_connection->tracker()->changes())[1]); |
| 449 } | 446 } |
| 450 | 447 |
| 451 } // namespace view_manager | 448 } // namespace view_manager |
| OLD | NEW |