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

Side by Side Diff: services/window_manager/window_manager_api_unittest.cc

Issue 788453002: Put code in //services/window_manager in namespace window_manager (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/memory/scoped_vector.h" 7 #include "base/memory/scoped_vector.h"
8 #include "mojo/application_manager/application_manager.h" 8 #include "mojo/application_manager/application_manager.h"
9 #include "mojo/public/cpp/application/application_delegate.h" 9 #include "mojo/public/cpp/application/application_delegate.h"
10 #include "mojo/public/cpp/application/application_impl.h" 10 #include "mojo/public/cpp/application/application_impl.h"
11 #include "mojo/public/cpp/application/service_provider_impl.h" 11 #include "mojo/public/cpp/application/service_provider_impl.h"
12 #include "mojo/public/interfaces/application/service_provider.mojom.h" 12 #include "mojo/public/interfaces/application/service_provider.mojom.h"
13 #include "mojo/services/public/cpp/view_manager/types.h" 13 #include "mojo/services/public/cpp/view_manager/types.h"
14 #include "mojo/services/public/cpp/view_manager/view.h" 14 #include "mojo/services/public/cpp/view_manager/view.h"
15 #include "mojo/services/public/cpp/view_manager/view_manager.h" 15 #include "mojo/services/public/cpp/view_manager/view_manager.h"
16 #include "mojo/services/public/cpp/view_manager/view_manager_client_factory.h" 16 #include "mojo/services/public/cpp/view_manager/view_manager_client_factory.h"
17 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" 17 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
18 #include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h" 18 #include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h"
19 #include "mojo/services/public/interfaces/window_manager/window_manager.mojom.h" 19 #include "mojo/services/public/interfaces/window_manager/window_manager.mojom.h"
20 #include "shell/shell_test_helper.h" 20 #include "shell/shell_test_helper.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 22
23 namespace mojo { 23 using mojo::ApplicationImpl;
24 using mojo::Id;
25 using mojo::View;
26
27 namespace window_manager {
24 namespace { 28 namespace {
25 29
26 const char kTestServiceURL[] = "mojo:test_url"; 30 const char kTestServiceURL[] = "mojo:test_url";
27 31
28 void EmptyResultCallback(bool result) {} 32 void EmptyResultCallback(bool result) {}
29 33
30 class TestWindowManagerClient : public WindowManagerClient { 34 class TestWindowManagerClient : public mojo::WindowManagerClient {
31 public: 35 public:
32 typedef base::Callback<void(Id, Id)> 36 typedef base::Callback<void(Id, Id)>
33 TwoNodeCallback; 37 TwoNodeCallback;
34 38
35 explicit TestWindowManagerClient(base::RunLoop* run_loop) 39 explicit TestWindowManagerClient(base::RunLoop* run_loop)
36 : run_loop_(run_loop) {} 40 : run_loop_(run_loop) {}
37 ~TestWindowManagerClient() override {} 41 ~TestWindowManagerClient() override {}
38 42
39 void set_focus_changed_callback(const TwoNodeCallback& callback) { 43 void set_focus_changed_callback(const TwoNodeCallback& callback) {
40 focus_changed_callback_ = callback; 44 focus_changed_callback_ = callback;
41 } 45 }
42 void set_active_window_changed_callback(const TwoNodeCallback& callback) { 46 void set_active_window_changed_callback(const TwoNodeCallback& callback) {
43 active_window_changed_callback_ = callback; 47 active_window_changed_callback_ = callback;
44 } 48 }
45 49
46 private: 50 private:
47 // Overridden from WindowManagerClient: 51 // Overridden from mojo::WindowManagerClient:
48 void OnCaptureChanged(Id old_capture_node_id, 52 void OnCaptureChanged(Id old_capture_node_id,
49 Id new_capture_node_id) override {} 53 Id new_capture_node_id) override {}
50 void OnFocusChanged(Id old_focused_node_id, Id new_focused_node_id) override { 54 void OnFocusChanged(Id old_focused_node_id, Id new_focused_node_id) override {
51 if (!focus_changed_callback_.is_null()) 55 if (!focus_changed_callback_.is_null())
52 focus_changed_callback_.Run(old_focused_node_id, new_focused_node_id); 56 focus_changed_callback_.Run(old_focused_node_id, new_focused_node_id);
53 } 57 }
54 void OnActiveWindowChanged(Id old_active_window, 58 void OnActiveWindowChanged(Id old_active_window,
55 Id new_active_window) override { 59 Id new_active_window) override {
56 if (!active_window_changed_callback_.is_null()) 60 if (!active_window_changed_callback_.is_null())
57 active_window_changed_callback_.Run(old_active_window, new_active_window); 61 active_window_changed_callback_.Run(old_active_window, new_active_window);
58 } 62 }
59 63
60 base::RunLoop* run_loop_; 64 base::RunLoop* run_loop_;
61 TwoNodeCallback focus_changed_callback_; 65 TwoNodeCallback focus_changed_callback_;
62 TwoNodeCallback active_window_changed_callback_; 66 TwoNodeCallback active_window_changed_callback_;
63 67
64 DISALLOW_COPY_AND_ASSIGN(TestWindowManagerClient); 68 DISALLOW_COPY_AND_ASSIGN(TestWindowManagerClient);
65 }; 69 };
66 70
67 class TestApplicationLoader : public ApplicationLoader, 71 class TestApplicationLoader : public mojo::ApplicationLoader,
68 public ApplicationDelegate, 72 public mojo::ApplicationDelegate,
69 public ViewManagerDelegate { 73 public mojo::ViewManagerDelegate {
70 public: 74 public:
71 typedef base::Callback<void(View*)> RootAddedCallback; 75 typedef base::Callback<void(View*)> RootAddedCallback;
72 76
73 explicit TestApplicationLoader(const RootAddedCallback& root_added_callback) 77 explicit TestApplicationLoader(const RootAddedCallback& root_added_callback)
74 : root_added_callback_(root_added_callback) {} 78 : root_added_callback_(root_added_callback) {}
75 ~TestApplicationLoader() override {} 79 ~TestApplicationLoader() override {}
76 80
77 private: 81 private:
78 // Overridden from ApplicationLoader: 82 // Overridden from mojo::ApplicationLoader:
79 void Load(ApplicationManager* application_manager, 83 void Load(mojo::ApplicationManager* application_manager,
80 const GURL& url, 84 const GURL& url,
81 ScopedMessagePipeHandle shell_handle, 85 mojo::ScopedMessagePipeHandle shell_handle,
82 LoadCallback callback) override { 86 LoadCallback callback) override {
83 ASSERT_TRUE(shell_handle.is_valid()); 87 ASSERT_TRUE(shell_handle.is_valid());
84 scoped_ptr<ApplicationImpl> app( 88 scoped_ptr<ApplicationImpl> app(
85 new ApplicationImpl(this, shell_handle.Pass())); 89 new ApplicationImpl(this, shell_handle.Pass()));
86 apps_.push_back(app.release()); 90 apps_.push_back(app.release());
87 } 91 }
88 void OnApplicationError(ApplicationManager* application_manager, 92 void OnApplicationError(mojo::ApplicationManager* application_manager,
89 const GURL& url) override {} 93 const GURL& url) override {}
90 94
91 // Overridden from ApplicationDelegate: 95 // Overridden from mojo::ApplicationDelegate:
92 void Initialize(ApplicationImpl* app) override { 96 void Initialize(ApplicationImpl* app) override {
93 view_manager_client_factory_.reset( 97 view_manager_client_factory_.reset(
94 new ViewManagerClientFactory(app->shell(), this)); 98 new mojo::ViewManagerClientFactory(app->shell(), this));
95 } 99 }
96 100
97 bool ConfigureIncomingConnection(ApplicationConnection* connection) override { 101 bool ConfigureIncomingConnection(
102 mojo::ApplicationConnection* connection) override {
98 connection->AddService(view_manager_client_factory_.get()); 103 connection->AddService(view_manager_client_factory_.get());
99 return true; 104 return true;
100 } 105 }
101 106
102 // Overridden from ViewManagerDelegate: 107 // Overridden from mojo::ViewManagerDelegate:
103 void OnEmbed(ViewManager* view_manager, 108 void OnEmbed(mojo::ViewManager* view_manager,
104 View* root, 109 View* root,
105 ServiceProviderImpl* exported_services, 110 mojo::ServiceProviderImpl* exported_services,
106 scoped_ptr<ServiceProvider> imported_services) override { 111 scoped_ptr<mojo::ServiceProvider> imported_services) override {
107 root_added_callback_.Run(root); 112 root_added_callback_.Run(root);
108 } 113 }
109 void OnViewManagerDisconnected(ViewManager* view_manager) override {} 114 void OnViewManagerDisconnected(mojo::ViewManager* view_manager) override {}
110 115
111 RootAddedCallback root_added_callback_; 116 RootAddedCallback root_added_callback_;
112 117
113 ScopedVector<ApplicationImpl> apps_; 118 ScopedVector<ApplicationImpl> apps_;
114 scoped_ptr<ViewManagerClientFactory> view_manager_client_factory_; 119 scoped_ptr<mojo::ViewManagerClientFactory> view_manager_client_factory_;
115 120
116 DISALLOW_COPY_AND_ASSIGN(TestApplicationLoader); 121 DISALLOW_COPY_AND_ASSIGN(TestApplicationLoader);
117 }; 122 };
118 123
119 } // namespace 124 } // namespace
120 125
121 class WindowManagerApiTest : public testing::Test { 126 class WindowManagerApiTest : public testing::Test {
122 public: 127 public:
123 WindowManagerApiTest() {} 128 WindowManagerApiTest() {}
124 ~WindowManagerApiTest() override {} 129 ~WindowManagerApiTest() override {}
(...skipping 29 matching lines...) Expand all
154 run_loop.Run(); 159 run_loop.Run();
155 return old_and_new; 160 return old_and_new;
156 } 161 }
157 162
158 Id OpenWindow() { 163 Id OpenWindow() {
159 return OpenWindowWithURL(kTestServiceURL); 164 return OpenWindowWithURL(kTestServiceURL);
160 } 165 }
161 166
162 Id OpenWindowWithURL(const std::string& url) { 167 Id OpenWindowWithURL(const std::string& url) {
163 base::RunLoop run_loop; 168 base::RunLoop run_loop;
164 ServiceProviderPtr sp; 169 mojo::ServiceProviderPtr sp;
165 BindToProxy(new ServiceProviderImpl, &sp); 170 BindToProxy(new mojo::ServiceProviderImpl, &sp);
166 window_manager_->Embed( 171 window_manager_->Embed(
167 url, MakeRequest<ServiceProvider>(sp.PassMessagePipe())); 172 url, mojo::MakeRequest<mojo::ServiceProvider>(sp.PassMessagePipe()));
168 run_loop.Run(); 173 run_loop.Run();
169 return WaitForEmbed(); 174 return WaitForEmbed();
170 } 175 }
171 176
172 TestWindowManagerClient* window_manager_client() { 177 TestWindowManagerClient* window_manager_client() {
173 return window_manager_client_.get(); 178 return window_manager_client_.get();
174 } 179 }
175 180
176 WindowManagerPtr window_manager_; 181 mojo::WindowManagerPtr window_manager_;
177 182
178 private: 183 private:
179 // Overridden from testing::Test: 184 // Overridden from testing::Test:
180 void SetUp() override { 185 void SetUp() override {
181 test_helper_.reset(new shell::ShellTestHelper); 186 test_helper_.reset(new mojo::shell::ShellTestHelper);
182 test_helper_->Init(); 187 test_helper_->Init();
183 test_helper_->AddCustomMapping(GURL("mojo:window_manager"), 188 test_helper_->AddCustomMapping(GURL("mojo:window_manager"),
184 GURL("mojo:core_window_manager")); 189 GURL("mojo:core_window_manager"));
185 test_helper_->SetLoaderForURL( 190 test_helper_->SetLoaderForURL(
186 scoped_ptr<ApplicationLoader>(new TestApplicationLoader(base::Bind( 191 scoped_ptr<mojo::ApplicationLoader>(
187 &WindowManagerApiTest::OnRootAdded, base::Unretained(this)))), 192 new TestApplicationLoader(base::Bind(
193 &WindowManagerApiTest::OnRootAdded, base::Unretained(this)))),
188 GURL(kTestServiceURL)); 194 GURL(kTestServiceURL));
189 ConnectToWindowManager2(); 195 ConnectToWindowManager2();
190 } 196 }
191 void TearDown() override {} 197 void TearDown() override {}
192 198
193 void ConnectToWindowManager2() { 199 void ConnectToWindowManager2() {
194 test_helper_->application_manager()->ConnectToService( 200 test_helper_->application_manager()->ConnectToService(
195 GURL("mojo:window_manager"), &window_manager_); 201 GURL("mojo:window_manager"), &window_manager_);
196 base::RunLoop connect_loop; 202 base::RunLoop connect_loop;
197 window_manager_client_.reset(new TestWindowManagerClient(&connect_loop)); 203 window_manager_client_.reset(new TestWindowManagerClient(&connect_loop));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 void OnActiveWindowChanged(TwoIds* old_and_new, 235 void OnActiveWindowChanged(TwoIds* old_and_new,
230 base::RunLoop* run_loop, 236 base::RunLoop* run_loop,
231 Id old_focused_node_id, 237 Id old_focused_node_id,
232 Id new_focused_node_id) { 238 Id new_focused_node_id) {
233 DCHECK(old_and_new); 239 DCHECK(old_and_new);
234 old_and_new->first = old_focused_node_id; 240 old_and_new->first = old_focused_node_id;
235 old_and_new->second = new_focused_node_id; 241 old_and_new->second = new_focused_node_id;
236 run_loop->Quit(); 242 run_loop->Quit();
237 } 243 }
238 244
239 scoped_ptr<shell::ShellTestHelper> test_helper_; 245 scoped_ptr<mojo::shell::ShellTestHelper> test_helper_;
240 scoped_ptr<TestWindowManagerClient> window_manager_client_; 246 scoped_ptr<TestWindowManagerClient> window_manager_client_;
241 TestApplicationLoader::RootAddedCallback root_added_callback_; 247 TestApplicationLoader::RootAddedCallback root_added_callback_;
242 248
243 DISALLOW_COPY_AND_ASSIGN(WindowManagerApiTest); 249 DISALLOW_COPY_AND_ASSIGN(WindowManagerApiTest);
244 }; 250 };
245 251
246 // TODO(sky): resolve this. Temporarily disabled as ApplicationManager ends up 252 // TODO(sky): resolve this. Temporarily disabled as ApplicationManager ends up
247 // loading windowmanager twice because of the mapping of window_manager to 253 // loading windowmanager twice because of the mapping of window_manager to
248 // core_window_manager. 254 // core_window_manager.
249 TEST_F(WindowManagerApiTest, DISABLED_FocusAndActivateWindow) { 255 TEST_F(WindowManagerApiTest, DISABLED_FocusAndActivateWindow) {
250 Id first_window = OpenWindow(); 256 Id first_window = OpenWindow();
251 window_manager_->FocusWindow(first_window, base::Bind(&EmptyResultCallback)); 257 window_manager_->FocusWindow(first_window, base::Bind(&EmptyResultCallback));
252 TwoIds ids = WaitForFocusChange(); 258 TwoIds ids = WaitForFocusChange();
253 EXPECT_TRUE(ids.first == 0); 259 EXPECT_TRUE(ids.first == 0);
254 EXPECT_EQ(ids.second, first_window); 260 EXPECT_EQ(ids.second, first_window);
255 261
256 Id second_window = OpenWindow(); 262 Id second_window = OpenWindow();
257 window_manager_->ActivateWindow(second_window, 263 window_manager_->ActivateWindow(second_window,
258 base::Bind(&EmptyResultCallback)); 264 base::Bind(&EmptyResultCallback));
259 ids = WaitForActiveWindowChange(); 265 ids = WaitForActiveWindowChange();
260 EXPECT_EQ(ids.first, first_window); 266 EXPECT_EQ(ids.first, first_window);
261 EXPECT_EQ(ids.second, second_window); 267 EXPECT_EQ(ids.second, second_window);
262 } 268 }
263 269
264 } // namespace mojo 270 } // namespace window_manager
OLDNEW
« no previous file with comments | « services/window_manager/view_targeter_unittest.cc ('k') | services/window_manager/window_manager_app.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698