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

Side by Side Diff: mojo/services/view_manager/view_manager_unittest.cc

Issue 667223002: Mojo: More virtual/override style fixes in mojo/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/at_exit.h" 8 #include "base/at_exit.h"
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 explicit ViewManagerProxy(TestChangeTracker* tracker) 58 explicit ViewManagerProxy(TestChangeTracker* tracker)
59 : tracker_(tracker), 59 : tracker_(tracker),
60 main_loop_(nullptr), 60 main_loop_(nullptr),
61 view_manager_(nullptr), 61 view_manager_(nullptr),
62 window_manager_client_(nullptr), 62 window_manager_client_(nullptr),
63 quit_count_(0), 63 quit_count_(0),
64 router_(nullptr) { 64 router_(nullptr) {
65 SetInstance(this); 65 SetInstance(this);
66 } 66 }
67 67
68 virtual ~ViewManagerProxy() { 68 ~ViewManagerProxy() override {}
69 }
70 69
71 // Returns true if in an initial state. If this returns false it means the 70 // Returns true if in an initial state. If this returns false it means the
72 // last test didn't clean up properly, or most likely didn't invoke 71 // last test didn't clean up properly, or most likely didn't invoke
73 // WaitForInstance() when it needed to. 72 // WaitForInstance() when it needed to.
74 static bool IsInInitialState() { return instance_ == NULL; } 73 static bool IsInInitialState() { return instance_ == NULL; }
75 74
76 // Runs a message loop until the single instance has been created. 75 // Runs a message loop until the single instance has been created.
77 static ViewManagerProxy* WaitForInstance() { 76 static ViewManagerProxy* WaitForInstance() {
78 if (!instance_) 77 if (!instance_)
79 RunMainLoop(); 78 RunMainLoop();
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 main_run_loop_->Quit(); 280 main_run_loop_->Quit();
282 } 281 }
283 282
284 void GotViewTree(std::vector<TestView>* views, Array<ViewDataPtr> results) { 283 void GotViewTree(std::vector<TestView>* views, Array<ViewDataPtr> results) {
285 ViewDatasToTestViews(results, views); 284 ViewDatasToTestViews(results, views);
286 DCHECK(main_run_loop_); 285 DCHECK(main_run_loop_);
287 main_run_loop_->Quit(); 286 main_run_loop_->Quit();
288 } 287 }
289 288
290 // TestChangeTracker::Delegate: 289 // TestChangeTracker::Delegate:
291 virtual void OnChangeAdded() override { 290 void OnChangeAdded() override {
292 if (quit_count_ > 0 && --quit_count_ == 0) 291 if (quit_count_ > 0 && --quit_count_ == 0)
293 QuitCountReached(); 292 QuitCountReached();
294 } 293 }
295 294
296 static ViewManagerProxy* instance_; 295 static ViewManagerProxy* instance_;
297 static base::RunLoop* main_run_loop_; 296 static base::RunLoop* main_run_loop_;
298 static bool in_embed_; 297 static bool in_embed_;
299 298
300 TestChangeTracker* tracker_; 299 TestChangeTracker* tracker_;
301 300
(...skipping 27 matching lines...) Expand all
329 public: 328 public:
330 TestViewManagerClientConnection() : proxy_(&tracker_) { 329 TestViewManagerClientConnection() : proxy_(&tracker_) {
331 tracker_.set_delegate(&proxy_); 330 tracker_.set_delegate(&proxy_);
332 } 331 }
333 332
334 TestChangeTracker* tracker() { return &tracker_; } 333 TestChangeTracker* tracker() { return &tracker_; }
335 334
336 ViewManagerProxy* proxy() { return &proxy_; } 335 ViewManagerProxy* proxy() { return &proxy_; }
337 336
338 // InterfaceImpl: 337 // InterfaceImpl:
339 virtual void OnConnectionEstablished() override { 338 void OnConnectionEstablished() override {
340 proxy_.set_router(internal_state()->router()); 339 proxy_.set_router(internal_state()->router());
341 proxy_.set_view_manager(client()); 340 proxy_.set_view_manager(client());
342 } 341 }
343 342
344 // ViewManagerClient: 343 // ViewManagerClient:
345 virtual void OnEmbed( 344 void OnEmbed(ConnectionSpecificId connection_id,
346 ConnectionSpecificId connection_id, 345 const String& creator_url,
347 const String& creator_url, 346 ViewDataPtr root,
348 ViewDataPtr root, 347 InterfaceRequest<ServiceProvider> services) override {
349 InterfaceRequest<ServiceProvider> services) override {
350 tracker_.OnEmbed(connection_id, creator_url, root.Pass()); 348 tracker_.OnEmbed(connection_id, creator_url, root.Pass());
351 } 349 }
352 virtual void OnViewBoundsChanged(Id view_id, 350 void OnViewBoundsChanged(Id view_id,
353 RectPtr old_bounds, 351 RectPtr old_bounds,
354 RectPtr new_bounds) override { 352 RectPtr new_bounds) override {
355 tracker_.OnViewBoundsChanged(view_id, old_bounds.Pass(), new_bounds.Pass()); 353 tracker_.OnViewBoundsChanged(view_id, old_bounds.Pass(), new_bounds.Pass());
356 } 354 }
357 virtual void OnViewHierarchyChanged(Id view, 355 void OnViewHierarchyChanged(Id view,
358 Id new_parent, 356 Id new_parent,
359 Id old_parent, 357 Id old_parent,
360 Array<ViewDataPtr> views) override { 358 Array<ViewDataPtr> views) override {
361 tracker_.OnViewHierarchyChanged(view, new_parent, old_parent, views.Pass()); 359 tracker_.OnViewHierarchyChanged(view, new_parent, old_parent, views.Pass());
362 } 360 }
363 virtual void OnViewReordered(Id view_id, 361 void OnViewReordered(Id view_id,
364 Id relative_view_id, 362 Id relative_view_id,
365 OrderDirection direction) override { 363 OrderDirection direction) override {
366 tracker_.OnViewReordered(view_id, relative_view_id, direction); 364 tracker_.OnViewReordered(view_id, relative_view_id, direction);
367 } 365 }
368 virtual void OnViewDeleted(Id view) override { tracker_.OnViewDeleted(view); } 366 void OnViewDeleted(Id view) override { tracker_.OnViewDeleted(view); }
369 virtual void OnViewVisibilityChanged(uint32_t view, bool visible) override { 367 void OnViewVisibilityChanged(uint32_t view, bool visible) override {
370 tracker_.OnViewVisibilityChanged(view, visible); 368 tracker_.OnViewVisibilityChanged(view, visible);
371 } 369 }
372 virtual void OnViewDrawnStateChanged(uint32_t view, bool drawn) override { 370 void OnViewDrawnStateChanged(uint32_t view, bool drawn) override {
373 tracker_.OnViewDrawnStateChanged(view, drawn); 371 tracker_.OnViewDrawnStateChanged(view, drawn);
374 } 372 }
375 virtual void OnViewInputEvent(Id view_id, 373 void OnViewInputEvent(Id view_id,
376 EventPtr event, 374 EventPtr event,
377 const Callback<void()>& callback) override { 375 const Callback<void()>& callback) override {
378 tracker_.OnViewInputEvent(view_id, event.Pass()); 376 tracker_.OnViewInputEvent(view_id, event.Pass());
379 } 377 }
380 378
381 private: 379 private:
382 TestChangeTracker tracker_; 380 TestChangeTracker tracker_;
383 ViewManagerProxy proxy_; 381 ViewManagerProxy proxy_;
384 382
385 DISALLOW_COPY_AND_ASSIGN(TestViewManagerClientConnection); 383 DISALLOW_COPY_AND_ASSIGN(TestViewManagerClientConnection);
386 }; 384 };
387 385
388 class WindowManagerServiceImpl : public InterfaceImpl<WindowManagerService> { 386 class WindowManagerServiceImpl : public InterfaceImpl<WindowManagerService> {
389 public: 387 public:
390 explicit WindowManagerServiceImpl(TestViewManagerClientConnection* connection) 388 explicit WindowManagerServiceImpl(TestViewManagerClientConnection* connection)
391 : connection_(connection) {} 389 : connection_(connection) {}
392 virtual ~WindowManagerServiceImpl() {} 390 ~WindowManagerServiceImpl() override {}
393 391
394 // InterfaceImpl: 392 // InterfaceImpl:
395 virtual void OnConnectionEstablished() override { 393 void OnConnectionEstablished() override {
396 connection_->proxy()->set_window_manager_client(client()); 394 connection_->proxy()->set_window_manager_client(client());
397 } 395 }
398 396
399 // WindowManagerService: 397 // WindowManagerService:
400 virtual void Embed( 398 void Embed(const String& url,
401 const String& url, 399 InterfaceRequest<ServiceProvider> service_provider) override {
402 InterfaceRequest<ServiceProvider> service_provider) override {
403 connection_->tracker()->DelegateEmbed(url); 400 connection_->tracker()->DelegateEmbed(url);
404 } 401 }
405 virtual void OnViewInputEvent(mojo::EventPtr event) override {} 402 void OnViewInputEvent(mojo::EventPtr event) override {}
406 403
407 private: 404 private:
408 TestViewManagerClientConnection* connection_; 405 TestViewManagerClientConnection* connection_;
409 406
410 DISALLOW_COPY_AND_ASSIGN(WindowManagerServiceImpl); 407 DISALLOW_COPY_AND_ASSIGN(WindowManagerServiceImpl);
411 }; 408 };
412 409
413 // Used with ViewManagerService::Embed(). Creates a 410 // Used with ViewManagerService::Embed(). Creates a
414 // TestViewManagerClientConnection, which creates and owns the ViewManagerProxy. 411 // TestViewManagerClientConnection, which creates and owns the ViewManagerProxy.
415 class EmbedApplicationLoader : public ApplicationLoader, 412 class EmbedApplicationLoader : public ApplicationLoader,
416 ApplicationDelegate, 413 ApplicationDelegate,
417 public InterfaceFactory<ViewManagerClient>, 414 public InterfaceFactory<ViewManagerClient>,
418 public InterfaceFactory<WindowManagerService> { 415 public InterfaceFactory<WindowManagerService> {
419 public: 416 public:
420 EmbedApplicationLoader() : last_view_manager_client_(nullptr) {} 417 EmbedApplicationLoader() : last_view_manager_client_(nullptr) {}
421 virtual ~EmbedApplicationLoader() {} 418 ~EmbedApplicationLoader() override {}
422 419
423 // ApplicationLoader implementation: 420 // ApplicationLoader implementation:
424 virtual void Load(ApplicationManager* manager, 421 void Load(ApplicationManager* manager,
425 const GURL& url, 422 const GURL& url,
426 scoped_refptr<LoadCallbacks> callbacks) override { 423 scoped_refptr<LoadCallbacks> callbacks) override {
427 ScopedMessagePipeHandle shell_handle = callbacks->RegisterApplication(); 424 ScopedMessagePipeHandle shell_handle = callbacks->RegisterApplication();
428 if (!shell_handle.is_valid()) 425 if (!shell_handle.is_valid())
429 return; 426 return;
430 scoped_ptr<ApplicationImpl> app(new ApplicationImpl(this, 427 scoped_ptr<ApplicationImpl> app(new ApplicationImpl(this,
431 shell_handle.Pass())); 428 shell_handle.Pass()));
432 apps_.push_back(app.release()); 429 apps_.push_back(app.release());
433 } 430 }
434 virtual void OnApplicationError(ApplicationManager* manager, 431 void OnApplicationError(ApplicationManager* manager,
435 const GURL& url) override {} 432 const GURL& url) override {}
436 433
437 // ApplicationDelegate implementation: 434 // ApplicationDelegate implementation:
438 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) 435 bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
439 override {
440 connection->AddService<ViewManagerClient>(this); 436 connection->AddService<ViewManagerClient>(this);
441 connection->AddService<WindowManagerService>(this); 437 connection->AddService<WindowManagerService>(this);
442 return true; 438 return true;
443 } 439 }
444 440
445 // InterfaceFactory<ViewManagerClient> implementation: 441 // InterfaceFactory<ViewManagerClient> implementation:
446 virtual void Create(ApplicationConnection* connection, 442 void Create(ApplicationConnection* connection,
447 InterfaceRequest<ViewManagerClient> request) override { 443 InterfaceRequest<ViewManagerClient> request) override {
448 last_view_manager_client_ = new TestViewManagerClientConnection; 444 last_view_manager_client_ = new TestViewManagerClientConnection;
449 BindToRequest(last_view_manager_client_, &request); 445 BindToRequest(last_view_manager_client_, &request);
450 } 446 }
451 virtual void Create(ApplicationConnection* connection, 447 void Create(ApplicationConnection* connection,
452 InterfaceRequest<WindowManagerService> request) override { 448 InterfaceRequest<WindowManagerService> request) override {
453 BindToRequest(new WindowManagerServiceImpl(last_view_manager_client_), 449 BindToRequest(new WindowManagerServiceImpl(last_view_manager_client_),
454 &request); 450 &request);
455 } 451 }
456 452
457 private: 453 private:
458 // Used so that TestViewManagerClientConnection and 454 // Used so that TestViewManagerClientConnection and
459 // WindowManagerServiceImpl can share the same TestChangeTracker. 455 // WindowManagerServiceImpl can share the same TestChangeTracker.
460 TestViewManagerClientConnection* last_view_manager_client_; 456 TestViewManagerClientConnection* last_view_manager_client_;
461 ScopedVector<ApplicationImpl> apps_; 457 ScopedVector<ApplicationImpl> apps_;
462 458
(...skipping 1013 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 1472
1477 // TODO(sky): add coverage of test that destroys connections and ensures other 1473 // TODO(sky): add coverage of test that destroys connections and ensures other
1478 // connections get deletion notification. 1474 // connections get deletion notification.
1479 1475
1480 // TODO(sky): need to better track changes to initial connection. For example, 1476 // TODO(sky): need to better track changes to initial connection. For example,
1481 // that SetBounsdViews/AddView and the like don't result in messages to the 1477 // that SetBounsdViews/AddView and the like don't result in messages to the
1482 // originating connection. 1478 // originating connection.
1483 1479
1484 } // namespace service 1480 } // namespace service
1485 } // namespace mojo 1481 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/view_manager/view_manager_service_impl.h ('k') | mojo/services/view_manager/window_manager_access_policy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698