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

Side by Side Diff: mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc

Issue 311373005: Nesting (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "mojo/services/public/cpp/view_manager/view_manager.h" 5 #include "mojo/services/public/cpp/view_manager/view_manager.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "mojo/public/cpp/application/application.h" 10 #include "mojo/public/cpp/application/application.h"
11 #include "mojo/service_manager/service_manager.h" 11 #include "mojo/service_manager/service_manager.h"
12 #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h" 12 #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h"
13 #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h" 13 #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h"
14 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" 14 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h"
15 #include "mojo/services/public/cpp/view_manager/util.h" 15 #include "mojo/services/public/cpp/view_manager/util.h"
16 #include "mojo/services/public/cpp/view_manager/view.h" 16 #include "mojo/services/public/cpp/view_manager/view.h"
17 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
17 #include "mojo/services/public/cpp/view_manager/view_observer.h" 18 #include "mojo/services/public/cpp/view_manager/view_observer.h"
18 #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h" 19 #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h"
19 #include "mojo/shell/shell_test_helper.h" 20 #include "mojo/shell/shell_test_helper.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 22
22 namespace mojo { 23 namespace mojo {
23 namespace view_manager { 24 namespace view_manager {
24 namespace { 25 namespace {
25 26
26 const char kWindowManagerURL[] = "mojo:window_manager"; 27 const char kWindowManagerURL[] = "mojo:window_manager";
(...skipping 16 matching lines...) Expand all
43 QuitRunLoop(); 44 QuitRunLoop();
44 } 45 }
45 46
46 void WaitForAllChangesToBeAcked(ViewManager* manager) { 47 void WaitForAllChangesToBeAcked(ViewManager* manager) {
47 ViewManagerPrivate(manager).synchronizer()->set_changes_acked_callback( 48 ViewManagerPrivate(manager).synchronizer()->set_changes_acked_callback(
48 base::Bind(&QuitRunLoopOnChangesAcked)); 49 base::Bind(&QuitRunLoopOnChangesAcked));
49 DoRunLoop(); 50 DoRunLoop();
50 ViewManagerPrivate(manager).synchronizer()->ClearChangesAckedCallback(); 51 ViewManagerPrivate(manager).synchronizer()->ClearChangesAckedCallback();
51 } 52 }
52 53
53 class ConnectServiceLoader : public ServiceLoader { 54 class ConnectServiceLoader : public ServiceLoader,
55 public ViewManagerDelegate {
54 public: 56 public:
55 explicit ConnectServiceLoader(const ViewManager::RootCallback& callback) 57 typedef base::Callback<void(ViewManager*, ViewTreeNode*)> LoadedCallback;
56 : callback_(callback) {} 58
59 explicit ConnectServiceLoader(const LoadedCallback& callback)
60 : callback_(callback) {
61 }
57 virtual ~ConnectServiceLoader() {} 62 virtual ~ConnectServiceLoader() {}
58 63
59 private: 64 private:
60 // Overridden from ServiceLoader: 65 // Overridden from ServiceLoader:
61 virtual void LoadService(ServiceManager* manager, 66 virtual void LoadService(ServiceManager* manager,
62 const GURL& url, 67 const GURL& url,
63 ScopedMessagePipeHandle shell_handle) OVERRIDE { 68 ScopedMessagePipeHandle shell_handle) OVERRIDE {
64 scoped_ptr<Application> app(new Application(shell_handle.Pass())); 69 scoped_ptr<Application> app(new Application(shell_handle.Pass()));
65 // TODO(beng): test removed callback. 70 ViewManager::Create(app.get(), this);
66 ViewManager::Create(app.get(), callback_, ViewManager::RootCallback());
67 apps_.push_back(app.release()); 71 apps_.push_back(app.release());
68 } 72 }
69 virtual void OnServiceError(ServiceManager* manager, 73 virtual void OnServiceError(ServiceManager* manager,
70 const GURL& url) OVERRIDE { 74 const GURL& url) OVERRIDE {
71 } 75 }
72 76
77 // Overridden from ViewManagerDelegate:
78 virtual void OnRootAdded(ViewManager* view_manager,
79 ViewTreeNode* root) OVERRIDE {
80 callback_.Run(view_manager, root);
81 }
82
73 ScopedVector<Application> apps_; 83 ScopedVector<Application> apps_;
74 ViewManager::RootCallback callback_; 84 LoadedCallback callback_;
75 85
76 DISALLOW_COPY_AND_ASSIGN(ConnectServiceLoader); 86 DISALLOW_COPY_AND_ASSIGN(ConnectServiceLoader);
77 }; 87 };
78 88
79 class ActiveViewChangedObserver : public ViewTreeNodeObserver { 89 class ActiveViewChangedObserver : public ViewTreeNodeObserver {
80 public: 90 public:
81 explicit ActiveViewChangedObserver(ViewTreeNode* node) 91 explicit ActiveViewChangedObserver(ViewTreeNode* node)
82 : node_(node) {} 92 : node_(node) {}
83 virtual ~ActiveViewChangedObserver() {} 93 virtual ~ActiveViewChangedObserver() {}
84 94
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 return view_manager; 331 return view_manager;
322 } 332 }
323 333
324 void UnloadApplication(const GURL& url) { 334 void UnloadApplication(const GURL& url) {
325 test_helper_.SetLoaderForURL(scoped_ptr<ServiceLoader>(), url); 335 test_helper_.SetLoaderForURL(scoped_ptr<ServiceLoader>(), url);
326 } 336 }
327 337
328 private: 338 private:
329 // Overridden from testing::Test: 339 // Overridden from testing::Test:
330 virtual void SetUp() OVERRIDE { 340 virtual void SetUp() OVERRIDE {
331 ViewManager::RootCallback ready_callback = 341 ConnectServiceLoader::LoadedCallback ready_callback =
332 base::Bind(&ViewManagerTest::OnViewManagerLoaded, 342 base::Bind(&ViewManagerTest::OnViewManagerLoaded,
333 base::Unretained(this)); 343 base::Unretained(this));
334 test_helper_.Init(); 344 test_helper_.Init();
335 test_helper_.SetLoaderForURL( 345 test_helper_.SetLoaderForURL(
336 scoped_ptr<ServiceLoader>(new ConnectServiceLoader(ready_callback)), 346 scoped_ptr<ServiceLoader>(new ConnectServiceLoader(ready_callback)),
337 GURL(kWindowManagerURL)); 347 GURL(kWindowManagerURL));
338 test_helper_.SetLoaderForURL( 348 test_helper_.SetLoaderForURL(
339 scoped_ptr<ServiceLoader>(new ConnectServiceLoader(ready_callback)), 349 scoped_ptr<ServiceLoader>(new ConnectServiceLoader(ready_callback)),
340 GURL(kEmbeddedApp1URL)); 350 GURL(kEmbeddedApp1URL));
341 351
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 window_manager()->roots().front()->AddChild(node1); 702 window_manager()->roots().front()->AddChild(node1);
693 ViewTreeNode* node2 = ViewTreeNode::Create(window_manager()); 703 ViewTreeNode* node2 = ViewTreeNode::Create(window_manager());
694 window_manager()->roots().front()->AddChild(node2); 704 window_manager()->roots().front()->AddChild(node2);
695 ViewManager* embedded1 = Embed(window_manager(), node1); 705 ViewManager* embedded1 = Embed(window_manager(), node1);
696 ViewManager* embedded2 = Embed(window_manager(), node2); 706 ViewManager* embedded2 = Embed(window_manager(), node2);
697 EXPECT_EQ(embedded1, embedded2); 707 EXPECT_EQ(embedded1, embedded2);
698 } 708 }
699 709
700 } // namespace view_manager 710 } // namespace view_manager
701 } // namespace mojo 711 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698