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

Side by Side Diff: ui/views/widget/widget_unittest.cc

Issue 191723003: Nukes USE_AURA ifdefs from views (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup Created 6 years, 9 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 // A bag of state to monitor destructions. 301 // A bag of state to monitor destructions.
302 struct OwnershipTestState { 302 struct OwnershipTestState {
303 OwnershipTestState() : widget_deleted(false), native_widget_deleted(false) {} 303 OwnershipTestState() : widget_deleted(false), native_widget_deleted(false) {}
304 304
305 bool widget_deleted; 305 bool widget_deleted;
306 bool native_widget_deleted; 306 bool native_widget_deleted;
307 }; 307 };
308 308
309 // A platform NativeWidget subclass that updates a bag of state when it is 309 // A platform NativeWidget subclass that updates a bag of state when it is
310 // destroyed. 310 // destroyed.
311 class OwnershipTestNativeWidget : public NativeWidgetPlatform { 311 class OwnershipTestNativeWidget : public NativeWidgetAura {
312 public: 312 public:
313 OwnershipTestNativeWidget(internal::NativeWidgetDelegate* delegate, 313 OwnershipTestNativeWidget(internal::NativeWidgetDelegate* delegate,
314 OwnershipTestState* state) 314 OwnershipTestState* state)
315 : NativeWidgetPlatform(delegate), 315 : NativeWidgetAura(delegate),
316 state_(state) { 316 state_(state) {
317 } 317 }
318 virtual ~OwnershipTestNativeWidget() { 318 virtual ~OwnershipTestNativeWidget() {
319 state_->native_widget_deleted = true; 319 state_->native_widget_deleted = true;
320 } 320 }
321 321
322 private: 322 private:
323 OwnershipTestState* state_; 323 OwnershipTestState* state_;
324 324
325 DISALLOW_COPY_AND_ASSIGN(OwnershipTestNativeWidget); 325 DISALLOW_COPY_AND_ASSIGN(OwnershipTestNativeWidget);
326 }; 326 };
327 327
328 // A views NativeWidget subclass that updates a bag of state when it is 328 // A views NativeWidget subclass that updates a bag of state when it is
329 // destroyed. 329 // destroyed.
330 class OwnershipTestNativeWidgetPlatform : public NativeWidgetPlatformForTest { 330 class OwnershipTestNativeWidgetAura : public NativeWidgetCapture {
331 public: 331 public:
332 OwnershipTestNativeWidgetPlatform(internal::NativeWidgetDelegate* delegate, 332 OwnershipTestNativeWidgetAura(internal::NativeWidgetDelegate* delegate,
333 OwnershipTestState* state) 333 OwnershipTestState* state)
334 : NativeWidgetPlatformForTest(delegate), 334 : NativeWidgetCapture(delegate),
335 state_(state) { 335 state_(state) {
336 } 336 }
337 virtual ~OwnershipTestNativeWidgetPlatform() { 337 virtual ~OwnershipTestNativeWidgetAura() {
338 state_->native_widget_deleted = true; 338 state_->native_widget_deleted = true;
339 } 339 }
340 340
341 private: 341 private:
342 OwnershipTestState* state_; 342 OwnershipTestState* state_;
343 343
344 DISALLOW_COPY_AND_ASSIGN(OwnershipTestNativeWidgetPlatform); 344 DISALLOW_COPY_AND_ASSIGN(OwnershipTestNativeWidgetAura);
345 }; 345 };
346 346
347 // A Widget subclass that updates a bag of state when it is destroyed. 347 // A Widget subclass that updates a bag of state when it is destroyed.
348 class OwnershipTestWidget : public Widget { 348 class OwnershipTestWidget : public Widget {
349 public: 349 public:
350 explicit OwnershipTestWidget(OwnershipTestState* state) : state_(state) {} 350 explicit OwnershipTestWidget(OwnershipTestState* state) : state_(state) {}
351 virtual ~OwnershipTestWidget() { 351 virtual ~OwnershipTestWidget() {
352 state_->widget_deleted = true; 352 state_->widget_deleted = true;
353 } 353 }
354 354
355 private: 355 private:
356 OwnershipTestState* state_; 356 OwnershipTestState* state_;
357 357
358 DISALLOW_COPY_AND_ASSIGN(OwnershipTestWidget); 358 DISALLOW_COPY_AND_ASSIGN(OwnershipTestWidget);
359 }; 359 };
360 360
361 // Widget owns its NativeWidget, part 1: NativeWidget is a platform-native 361 // Widget owns its NativeWidget, part 1: NativeWidget is a platform-native
362 // widget. 362 // widget.
363 TEST_F(WidgetOwnershipTest, Ownership_WidgetOwnsPlatformNativeWidget) { 363 TEST_F(WidgetOwnershipTest, Ownership_WidgetOwnsPlatformNativeWidget) {
364 OwnershipTestState state; 364 OwnershipTestState state;
365 365
366 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state)); 366 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state));
367 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 367 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
368 params.native_widget = 368 params.native_widget =
369 new OwnershipTestNativeWidgetPlatform(widget.get(), &state); 369 new OwnershipTestNativeWidgetAura(widget.get(), &state);
370 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 370 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
371 widget->Init(params); 371 widget->Init(params);
372 372
373 // Now delete the Widget, which should delete the NativeWidget. 373 // Now delete the Widget, which should delete the NativeWidget.
374 widget.reset(); 374 widget.reset();
375 375
376 EXPECT_TRUE(state.widget_deleted); 376 EXPECT_TRUE(state.widget_deleted);
377 EXPECT_TRUE(state.native_widget_deleted); 377 EXPECT_TRUE(state.native_widget_deleted);
378 378
379 // TODO(beng): write test for this ownership scenario and the NativeWidget 379 // TODO(beng): write test for this ownership scenario and the NativeWidget
380 // being deleted out from under the Widget. 380 // being deleted out from under the Widget.
381 } 381 }
382 382
383 // Widget owns its NativeWidget, part 2: NativeWidget is a NativeWidget. 383 // Widget owns its NativeWidget, part 2: NativeWidget is a NativeWidget.
384 TEST_F(WidgetOwnershipTest, Ownership_WidgetOwnsViewsNativeWidget) { 384 TEST_F(WidgetOwnershipTest, Ownership_WidgetOwnsViewsNativeWidget) {
385 OwnershipTestState state; 385 OwnershipTestState state;
386 386
387 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state)); 387 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state));
388 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 388 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
389 params.native_widget = 389 params.native_widget =
390 new OwnershipTestNativeWidgetPlatform(widget.get(), &state); 390 new OwnershipTestNativeWidgetAura(widget.get(), &state);
391 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 391 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
392 widget->Init(params); 392 widget->Init(params);
393 393
394 // Now delete the Widget, which should delete the NativeWidget. 394 // Now delete the Widget, which should delete the NativeWidget.
395 widget.reset(); 395 widget.reset();
396 396
397 EXPECT_TRUE(state.widget_deleted); 397 EXPECT_TRUE(state.widget_deleted);
398 EXPECT_TRUE(state.native_widget_deleted); 398 EXPECT_TRUE(state.native_widget_deleted);
399 399
400 // TODO(beng): write test for this ownership scenario and the NativeWidget 400 // TODO(beng): write test for this ownership scenario and the NativeWidget
401 // being deleted out from under the Widget. 401 // being deleted out from under the Widget.
402 } 402 }
403 403
404 // Widget owns its NativeWidget, part 3: NativeWidget is a NativeWidget, 404 // Widget owns its NativeWidget, part 3: NativeWidget is a NativeWidget,
405 // destroy the parent view. 405 // destroy the parent view.
406 TEST_F(WidgetOwnershipTest, 406 TEST_F(WidgetOwnershipTest,
407 Ownership_WidgetOwnsViewsNativeWidget_DestroyParentView) { 407 Ownership_WidgetOwnsViewsNativeWidget_DestroyParentView) {
408 OwnershipTestState state; 408 OwnershipTestState state;
409 409
410 Widget* toplevel = CreateTopLevelPlatformWidget(); 410 Widget* toplevel = CreateTopLevelPlatformWidget();
411 411
412 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state)); 412 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state));
413 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 413 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
414 params.native_widget = 414 params.native_widget =
415 new OwnershipTestNativeWidgetPlatform(widget.get(), &state); 415 new OwnershipTestNativeWidgetAura(widget.get(), &state);
416 params.parent = toplevel->GetNativeView(); 416 params.parent = toplevel->GetNativeView();
417 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 417 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
418 widget->Init(params); 418 widget->Init(params);
419 419
420 // Now close the toplevel, which deletes the view hierarchy. 420 // Now close the toplevel, which deletes the view hierarchy.
421 toplevel->CloseNow(); 421 toplevel->CloseNow();
422 422
423 RunPendingMessages(); 423 RunPendingMessages();
424 424
425 // This shouldn't delete the widget because it shouldn't be deleted 425 // This shouldn't delete the widget because it shouldn't be deleted
426 // from the native side. 426 // from the native side.
427 EXPECT_FALSE(state.widget_deleted); 427 EXPECT_FALSE(state.widget_deleted);
428 EXPECT_FALSE(state.native_widget_deleted); 428 EXPECT_FALSE(state.native_widget_deleted);
429 429
430 // Now delete it explicitly. 430 // Now delete it explicitly.
431 widget.reset(); 431 widget.reset();
432 432
433 EXPECT_TRUE(state.widget_deleted); 433 EXPECT_TRUE(state.widget_deleted);
434 EXPECT_TRUE(state.native_widget_deleted); 434 EXPECT_TRUE(state.native_widget_deleted);
435 } 435 }
436 436
437 // NativeWidget owns its Widget, part 1: NativeWidget is a platform-native 437 // NativeWidget owns its Widget, part 1: NativeWidget is a platform-native
438 // widget. 438 // widget.
439 TEST_F(WidgetOwnershipTest, Ownership_PlatformNativeWidgetOwnsWidget) { 439 TEST_F(WidgetOwnershipTest, Ownership_PlatformNativeWidgetOwnsWidget) {
440 OwnershipTestState state; 440 OwnershipTestState state;
441 441
442 Widget* widget = new OwnershipTestWidget(&state); 442 Widget* widget = new OwnershipTestWidget(&state);
443 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 443 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
444 params.native_widget = 444 params.native_widget =
445 new OwnershipTestNativeWidgetPlatform(widget, &state); 445 new OwnershipTestNativeWidgetAura(widget, &state);
446 widget->Init(params); 446 widget->Init(params);
447 447
448 // Now destroy the native widget. 448 // Now destroy the native widget.
449 widget->CloseNow(); 449 widget->CloseNow();
450 450
451 EXPECT_TRUE(state.widget_deleted); 451 EXPECT_TRUE(state.widget_deleted);
452 EXPECT_TRUE(state.native_widget_deleted); 452 EXPECT_TRUE(state.native_widget_deleted);
453 } 453 }
454 454
455 // NativeWidget owns its Widget, part 2: NativeWidget is a NativeWidget. 455 // NativeWidget owns its Widget, part 2: NativeWidget is a NativeWidget.
456 TEST_F(WidgetOwnershipTest, Ownership_ViewsNativeWidgetOwnsWidget) { 456 TEST_F(WidgetOwnershipTest, Ownership_ViewsNativeWidgetOwnsWidget) {
457 OwnershipTestState state; 457 OwnershipTestState state;
458 458
459 Widget* toplevel = CreateTopLevelPlatformWidget(); 459 Widget* toplevel = CreateTopLevelPlatformWidget();
460 460
461 Widget* widget = new OwnershipTestWidget(&state); 461 Widget* widget = new OwnershipTestWidget(&state);
462 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 462 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
463 params.native_widget = 463 params.native_widget =
464 new OwnershipTestNativeWidgetPlatform(widget, &state); 464 new OwnershipTestNativeWidgetAura(widget, &state);
465 params.parent = toplevel->GetNativeView(); 465 params.parent = toplevel->GetNativeView();
466 widget->Init(params); 466 widget->Init(params);
467 467
468 // Now destroy the native widget. This is achieved by closing the toplevel. 468 // Now destroy the native widget. This is achieved by closing the toplevel.
469 toplevel->CloseNow(); 469 toplevel->CloseNow();
470 470
471 // The NativeWidget won't be deleted until after a return to the message loop 471 // The NativeWidget won't be deleted until after a return to the message loop
472 // so we have to run pending messages before testing the destruction status. 472 // so we have to run pending messages before testing the destruction status.
473 RunPendingMessages(); 473 RunPendingMessages();
474 474
475 EXPECT_TRUE(state.widget_deleted); 475 EXPECT_TRUE(state.widget_deleted);
476 EXPECT_TRUE(state.native_widget_deleted); 476 EXPECT_TRUE(state.native_widget_deleted);
477 } 477 }
478 478
479 // NativeWidget owns its Widget, part 3: NativeWidget is a platform-native 479 // NativeWidget owns its Widget, part 3: NativeWidget is a platform-native
480 // widget, destroyed out from under it by the OS. 480 // widget, destroyed out from under it by the OS.
481 TEST_F(WidgetOwnershipTest, 481 TEST_F(WidgetOwnershipTest,
482 Ownership_PlatformNativeWidgetOwnsWidget_NativeDestroy) { 482 Ownership_PlatformNativeWidgetOwnsWidget_NativeDestroy) {
483 OwnershipTestState state; 483 OwnershipTestState state;
484 484
485 Widget* widget = new OwnershipTestWidget(&state); 485 Widget* widget = new OwnershipTestWidget(&state);
486 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 486 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
487 params.native_widget = 487 params.native_widget =
488 new OwnershipTestNativeWidgetPlatform(widget, &state); 488 new OwnershipTestNativeWidgetAura(widget, &state);
489 widget->Init(params); 489 widget->Init(params);
490 490
491 // Now simulate a destroy of the platform native widget from the OS: 491 // Now simulate a destroy of the platform native widget from the OS:
492 #if defined(USE_AURA)
493 delete widget->GetNativeView(); 492 delete widget->GetNativeView();
494 #elif defined(OS_WIN)
495 DestroyWindow(widget->GetNativeView());
496 #endif
497 493
498 EXPECT_TRUE(state.widget_deleted); 494 EXPECT_TRUE(state.widget_deleted);
499 EXPECT_TRUE(state.native_widget_deleted); 495 EXPECT_TRUE(state.native_widget_deleted);
500 } 496 }
501 497
502 // NativeWidget owns its Widget, part 4: NativeWidget is a NativeWidget, 498 // NativeWidget owns its Widget, part 4: NativeWidget is a NativeWidget,
503 // destroyed by the view hierarchy that contains it. 499 // destroyed by the view hierarchy that contains it.
504 TEST_F(WidgetOwnershipTest, 500 TEST_F(WidgetOwnershipTest,
505 Ownership_ViewsNativeWidgetOwnsWidget_NativeDestroy) { 501 Ownership_ViewsNativeWidgetOwnsWidget_NativeDestroy) {
506 OwnershipTestState state; 502 OwnershipTestState state;
507 503
508 Widget* toplevel = CreateTopLevelPlatformWidget(); 504 Widget* toplevel = CreateTopLevelPlatformWidget();
509 505
510 Widget* widget = new OwnershipTestWidget(&state); 506 Widget* widget = new OwnershipTestWidget(&state);
511 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 507 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
512 params.native_widget = 508 params.native_widget =
513 new OwnershipTestNativeWidgetPlatform(widget, &state); 509 new OwnershipTestNativeWidgetAura(widget, &state);
514 params.parent = toplevel->GetNativeView(); 510 params.parent = toplevel->GetNativeView();
515 widget->Init(params); 511 widget->Init(params);
516 512
517 // Destroy the widget (achieved by closing the toplevel). 513 // Destroy the widget (achieved by closing the toplevel).
518 toplevel->CloseNow(); 514 toplevel->CloseNow();
519 515
520 // The NativeWidget won't be deleted until after a return to the message loop 516 // The NativeWidget won't be deleted until after a return to the message loop
521 // so we have to run pending messages before testing the destruction status. 517 // so we have to run pending messages before testing the destruction status.
522 RunPendingMessages(); 518 RunPendingMessages();
523 519
524 EXPECT_TRUE(state.widget_deleted); 520 EXPECT_TRUE(state.widget_deleted);
525 EXPECT_TRUE(state.native_widget_deleted); 521 EXPECT_TRUE(state.native_widget_deleted);
526 } 522 }
527 523
528 // NativeWidget owns its Widget, part 5: NativeWidget is a NativeWidget, 524 // NativeWidget owns its Widget, part 5: NativeWidget is a NativeWidget,
529 // we close it directly. 525 // we close it directly.
530 TEST_F(WidgetOwnershipTest, 526 TEST_F(WidgetOwnershipTest,
531 Ownership_ViewsNativeWidgetOwnsWidget_Close) { 527 Ownership_ViewsNativeWidgetOwnsWidget_Close) {
532 OwnershipTestState state; 528 OwnershipTestState state;
533 529
534 Widget* toplevel = CreateTopLevelPlatformWidget(); 530 Widget* toplevel = CreateTopLevelPlatformWidget();
535 531
536 Widget* widget = new OwnershipTestWidget(&state); 532 Widget* widget = new OwnershipTestWidget(&state);
537 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 533 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
538 params.native_widget = 534 params.native_widget =
539 new OwnershipTestNativeWidgetPlatform(widget, &state); 535 new OwnershipTestNativeWidgetAura(widget, &state);
540 params.parent = toplevel->GetNativeView(); 536 params.parent = toplevel->GetNativeView();
541 widget->Init(params); 537 widget->Init(params);
542 538
543 // Destroy the widget. 539 // Destroy the widget.
544 widget->Close(); 540 widget->Close();
545 toplevel->CloseNow(); 541 toplevel->CloseNow();
546 542
547 // The NativeWidget won't be deleted until after a return to the message loop 543 // The NativeWidget won't be deleted until after a return to the message loop
548 // so we have to run pending messages before testing the destruction status. 544 // so we have to run pending messages before testing the destruction status.
549 RunPendingMessages(); 545 RunPendingMessages();
550 546
551 EXPECT_TRUE(state.widget_deleted); 547 EXPECT_TRUE(state.widget_deleted);
552 EXPECT_TRUE(state.native_widget_deleted); 548 EXPECT_TRUE(state.native_widget_deleted);
553 } 549 }
554 550
555 // Widget owns its NativeWidget and has a WidgetDelegateView as its contents. 551 // Widget owns its NativeWidget and has a WidgetDelegateView as its contents.
556 TEST_F(WidgetOwnershipTest, 552 TEST_F(WidgetOwnershipTest,
557 Ownership_WidgetOwnsNativeWidgetWithWithWidgetDelegateView) { 553 Ownership_WidgetOwnsNativeWidgetWithWithWidgetDelegateView) {
558 OwnershipTestState state; 554 OwnershipTestState state;
559 555
560 WidgetDelegateView* delegate_view = new WidgetDelegateView; 556 WidgetDelegateView* delegate_view = new WidgetDelegateView;
561 557
562 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state)); 558 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state));
563 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 559 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
564 params.native_widget = 560 params.native_widget =
565 new OwnershipTestNativeWidgetPlatform(widget.get(), &state); 561 new OwnershipTestNativeWidgetAura(widget.get(), &state);
566 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 562 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
567 params.delegate = delegate_view; 563 params.delegate = delegate_view;
568 widget->Init(params); 564 widget->Init(params);
569 widget->SetContentsView(delegate_view); 565 widget->SetContentsView(delegate_view);
570 566
571 // Now delete the Widget. There should be no crash or use-after-free. 567 // Now delete the Widget. There should be no crash or use-after-free.
572 widget.reset(); 568 widget.reset();
573 569
574 EXPECT_TRUE(state.widget_deleted); 570 EXPECT_TRUE(state.widget_deleted);
575 EXPECT_TRUE(state.native_widget_deleted); 571 EXPECT_TRUE(state.native_widget_deleted);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 { 636 {
641 Widget widget; 637 Widget widget;
642 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 638 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
643 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 639 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
644 widget.Init(params); 640 widget.Init(params);
645 widget.Show(); 641 widget.Show();
646 642
647 widget.native_widget_private()->CloseNow(); 643 widget.native_widget_private()->CloseNow();
648 InvokeWidgetMethods(&widget); 644 InvokeWidgetMethods(&widget);
649 } 645 }
650 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 646 #if !defined(OS_CHROMEOS)
651 { 647 {
652 Widget widget; 648 Widget widget;
653 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 649 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
654 params.native_widget = new DesktopNativeWidgetAura(&widget); 650 params.native_widget = new DesktopNativeWidgetAura(&widget);
655 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 651 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
656 widget.Init(params); 652 widget.Init(params);
657 widget.Show(); 653 widget.Show();
658 654
659 widget.native_widget_private()->CloseNow(); 655 widget.native_widget_private()->CloseNow();
660 InvokeWidgetMethods(&widget); 656 InvokeWidgetMethods(&widget);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 child2->OnNativeWidgetMove(); 820 child2->OnNativeWidgetMove();
825 EXPECT_EQ(child2, widget_bounds_changed()); 821 EXPECT_EQ(child2, widget_bounds_changed());
826 822
827 child1->OnNativeWidgetSizeChanged(gfx::Size()); 823 child1->OnNativeWidgetSizeChanged(gfx::Size());
828 EXPECT_EQ(child1, widget_bounds_changed()); 824 EXPECT_EQ(child1, widget_bounds_changed());
829 825
830 child2->OnNativeWidgetSizeChanged(gfx::Size()); 826 child2->OnNativeWidgetSizeChanged(gfx::Size());
831 EXPECT_EQ(child2, widget_bounds_changed()); 827 EXPECT_EQ(child2, widget_bounds_changed());
832 } 828 }
833 829
834 #if !defined(USE_AURA) && defined(OS_WIN)
835 // Aura needs shell to maximize/fullscreen window.
836 // NativeWidgetGtk doesn't implement GetRestoredBounds.
837 TEST_F(WidgetTest, GetRestoredBounds) {
msw 2014/03/08 01:04:50 nit: ditto about updating this test.
sky 2014/03/08 01:30:28 Done.
838 Widget* toplevel = CreateTopLevelPlatformWidget();
839 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(),
840 toplevel->GetRestoredBounds().ToString());
841 toplevel->Show();
842 toplevel->Maximize();
843 RunPendingMessages();
844 EXPECT_NE(toplevel->GetWindowBoundsInScreen().ToString(),
845 toplevel->GetRestoredBounds().ToString());
846 EXPECT_GT(toplevel->GetRestoredBounds().width(), 0);
847 EXPECT_GT(toplevel->GetRestoredBounds().height(), 0);
848
849 toplevel->Restore();
850 RunPendingMessages();
851 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(),
852 toplevel->GetRestoredBounds().ToString());
853
854 toplevel->SetFullscreen(true);
855 RunPendingMessages();
856 EXPECT_NE(toplevel->GetWindowBoundsInScreen().ToString(),
857 toplevel->GetRestoredBounds().ToString());
858 EXPECT_GT(toplevel->GetRestoredBounds().width(), 0);
859 EXPECT_GT(toplevel->GetRestoredBounds().height(), 0);
860 }
861 #endif
862
863 // Test that window state is not changed after getting out of full screen. 830 // Test that window state is not changed after getting out of full screen.
864 TEST_F(WidgetTest, ExitFullscreenRestoreState) { 831 TEST_F(WidgetTest, ExitFullscreenRestoreState) {
865 Widget* toplevel = CreateTopLevelPlatformWidget(); 832 Widget* toplevel = CreateTopLevelPlatformWidget();
866 833
867 toplevel->Show(); 834 toplevel->Show();
868 RunPendingMessages(); 835 RunPendingMessages();
869 836
870 // This should be a normal state window. 837 // This should be a normal state window.
871 EXPECT_EQ(ui::SHOW_STATE_NORMAL, GetWidgetShowState(toplevel)); 838 EXPECT_EQ(ui::SHOW_STATE_NORMAL, GetWidgetShowState(toplevel));
872 839
(...skipping 20 matching lines...) Expand all
893 RunPendingMessages(); 860 RunPendingMessages();
894 861
895 // And it stays maximized after getting out of full screen. 862 // And it stays maximized after getting out of full screen.
896 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, GetWidgetShowState(toplevel)); 863 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, GetWidgetShowState(toplevel));
897 864
898 // Clean up. 865 // Clean up.
899 toplevel->Close(); 866 toplevel->Close();
900 RunPendingMessages(); 867 RunPendingMessages();
901 } 868 }
902 869
903 #if defined(USE_AURA)
904 // The key-event propagation from Widget happens differently on aura and 870 // The key-event propagation from Widget happens differently on aura and
905 // non-aura systems because of the difference in IME. So this test works only on 871 // non-aura systems because of the difference in IME. So this test works only on
906 // aura. 872 // aura.
907 TEST_F(WidgetTest, KeyboardInputEvent) { 873 TEST_F(WidgetTest, KeyboardInputEvent) {
908 Widget* toplevel = CreateTopLevelPlatformWidget(); 874 Widget* toplevel = CreateTopLevelPlatformWidget();
909 View* container = toplevel->client_view(); 875 View* container = toplevel->client_view();
910 876
911 Textfield* textfield = new Textfield(); 877 Textfield* textfield = new Textfield();
912 textfield->SetText(base::ASCIIToUTF16("some text")); 878 textfield->SetText(base::ASCIIToUTF16("some text"));
913 container->AddChildView(textfield); 879 container->AddChildView(textfield);
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 0, 20, 1348 0, 20,
1383 2); 1349 2);
1384 widget->OnScrollEvent(&scroll2); 1350 widget->OnScrollEvent(&scroll2);
1385 1351
1386 EXPECT_EQ(0, cursor_view->GetEventCount(ui::ET_SCROLL)); 1352 EXPECT_EQ(0, cursor_view->GetEventCount(ui::ET_SCROLL));
1387 EXPECT_EQ(0, cursor_view->GetEventCount(ui::ET_MOUSEWHEEL)); 1353 EXPECT_EQ(0, cursor_view->GetEventCount(ui::ET_MOUSEWHEEL));
1388 1354
1389 widget->CloseNow(); 1355 widget->CloseNow();
1390 } 1356 }
1391 1357
1392 #endif // defined(USE_AURA)
1393
1394 // Tests that if a scroll-begin gesture is not handled, then subsequent scroll 1358 // Tests that if a scroll-begin gesture is not handled, then subsequent scroll
1395 // events are not dispatched to any view. 1359 // events are not dispatched to any view.
1396 TEST_F(WidgetTest, GestureScrollEventDispatching) { 1360 TEST_F(WidgetTest, GestureScrollEventDispatching) {
1397 EventCountView* noscroll_view = new EventCountView; 1361 EventCountView* noscroll_view = new EventCountView;
1398 EventCountView* scroll_view = new ScrollableEventCountView; 1362 EventCountView* scroll_view = new ScrollableEventCountView;
1399 1363
1400 noscroll_view->SetBounds(0, 0, 50, 40); 1364 noscroll_view->SetBounds(0, 0, 50, 40);
1401 scroll_view->SetBounds(60, 0, 40, 40); 1365 scroll_view->SetBounds(60, 0, 40, 40);
1402 1366
1403 Widget* widget = CreateTopLevelPlatformWidget(); 1367 Widget* widget = CreateTopLevelPlatformWidget();
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1573 1537
1574 // Verifies WindowClosing() is invoked correctly on the delegate when a Widget 1538 // Verifies WindowClosing() is invoked correctly on the delegate when a Widget
1575 // is closed. 1539 // is closed.
1576 TEST_F(WidgetTest, SingleWindowClosing) { 1540 TEST_F(WidgetTest, SingleWindowClosing) {
1577 scoped_ptr<ClosingDelegate> delegate(new ClosingDelegate()); 1541 scoped_ptr<ClosingDelegate> delegate(new ClosingDelegate());
1578 Widget* widget = new Widget(); // Destroyed by CloseNow() below. 1542 Widget* widget = new Widget(); // Destroyed by CloseNow() below.
1579 Widget::InitParams init_params = 1543 Widget::InitParams init_params =
1580 CreateParams(Widget::InitParams::TYPE_WINDOW); 1544 CreateParams(Widget::InitParams::TYPE_WINDOW);
1581 init_params.bounds = gfx::Rect(0, 0, 200, 200); 1545 init_params.bounds = gfx::Rect(0, 0, 200, 200);
1582 init_params.delegate = delegate.get(); 1546 init_params.delegate = delegate.get();
1583 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1547 #if !defined(OS_CHROMEOS)
1584 init_params.native_widget = new DesktopNativeWidgetAura(widget); 1548 init_params.native_widget = new DesktopNativeWidgetAura(widget);
1585 #endif 1549 #endif
1586 widget->Init(init_params); 1550 widget->Init(init_params);
1587 EXPECT_EQ(0, delegate->count()); 1551 EXPECT_EQ(0, delegate->count());
1588 widget->CloseNow(); 1552 widget->CloseNow();
1589 EXPECT_EQ(1, delegate->count()); 1553 EXPECT_EQ(1, delegate->count());
1590 } 1554 }
1591 1555
1592 class WidgetWindowTitleTest : public WidgetTest { 1556 class WidgetWindowTitleTest : public WidgetTest {
1593 protected: 1557 protected:
1594 void RunTest(bool desktop_native_widget) { 1558 void RunTest(bool desktop_native_widget) {
1595 Widget* widget = new Widget(); // Destroyed by CloseNow() below. 1559 Widget* widget = new Widget(); // Destroyed by CloseNow() below.
1596 Widget::InitParams init_params = 1560 Widget::InitParams init_params =
1597 CreateParams(Widget::InitParams::TYPE_WINDOW); 1561 CreateParams(Widget::InitParams::TYPE_WINDOW);
1598 widget->Init(init_params); 1562 widget->Init(init_params);
1599 1563
1600 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1564 #if !defined(OS_CHROMEOS)
1601 if (desktop_native_widget) 1565 if (desktop_native_widget)
1602 init_params.native_widget = new DesktopNativeWidgetAura(widget); 1566 init_params.native_widget = new DesktopNativeWidgetAura(widget);
1603 #else 1567 #else
1604 DCHECK(!desktop_native_widget) 1568 DCHECK(!desktop_native_widget)
1605 << "DesktopNativeWidget does not exist on non-Aura or on ChromeOS."; 1569 << "DesktopNativeWidget does not exist on non-Aura or on ChromeOS.";
1606 #endif 1570 #endif
1607 1571
1608 internal::NativeWidgetPrivate* native_widget = 1572 internal::NativeWidgetPrivate* native_widget =
1609 widget->native_widget_private(); 1573 widget->native_widget_private();
1610 1574
(...skipping 20 matching lines...) Expand all
1631 } 1595 }
1632 }; 1596 };
1633 1597
1634 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_NativeWidget) { 1598 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_NativeWidget) {
1635 // Use the default NativeWidget. 1599 // Use the default NativeWidget.
1636 bool desktop_native_widget = false; 1600 bool desktop_native_widget = false;
1637 RunTest(desktop_native_widget); 1601 RunTest(desktop_native_widget);
1638 } 1602 }
1639 1603
1640 // DesktopNativeWidget does not exist on non-Aura or on ChromeOS. 1604 // DesktopNativeWidget does not exist on non-Aura or on ChromeOS.
1641 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1605 #if !defined(OS_CHROMEOS)
1642 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_DesktopNativeWidget) { 1606 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_DesktopNativeWidget) {
1643 // Override to use a DesktopNativeWidget. 1607 // Override to use a DesktopNativeWidget.
1644 bool desktop_native_widget = true; 1608 bool desktop_native_widget = true;
1645 RunTest(desktop_native_widget); 1609 RunTest(desktop_native_widget);
1646 } 1610 }
1647 #endif // USE_AURA && !OS_CHROMEOS 1611 #endif // !OS_CHROMEOS
1648 1612
1649 // Used by SetTopLevelCorrectly to track calls to OnBeforeWidgetInit(). 1613 // Used by SetTopLevelCorrectly to track calls to OnBeforeWidgetInit().
1650 class VerifyTopLevelDelegate : public TestViewsDelegate { 1614 class VerifyTopLevelDelegate : public TestViewsDelegate {
1651 public: 1615 public:
1652 VerifyTopLevelDelegate() 1616 VerifyTopLevelDelegate()
1653 : on_before_init_called_(false), 1617 : on_before_init_called_(false),
1654 is_top_level_(false) { 1618 is_top_level_(false) {
1655 } 1619 }
1656 1620
1657 bool on_before_init_called() const { return on_before_init_called_; } 1621 bool on_before_init_called() const { return on_before_init_called_; }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1751 // true indicates this should be run again with a value of false. 1715 // true indicates this should be run again with a value of false.
1752 // First run uses DesktopNativeWidgetAura (if possible). Second run doesn't. 1716 // First run uses DesktopNativeWidgetAura (if possible). Second run doesn't.
1753 bool RunGetNativeThemeFromDestructor(const Widget::InitParams& in_params, 1717 bool RunGetNativeThemeFromDestructor(const Widget::InitParams& in_params,
1754 bool is_first_run) { 1718 bool is_first_run) {
1755 bool needs_second_run = false; 1719 bool needs_second_run = false;
1756 // Destroyed by CloseNow() below. 1720 // Destroyed by CloseNow() below.
1757 Widget* widget = new Widget; 1721 Widget* widget = new Widget;
1758 Widget::InitParams params(in_params); 1722 Widget::InitParams params(in_params);
1759 // Deletes itself when the Widget is destroyed. 1723 // Deletes itself when the Widget is destroyed.
1760 params.delegate = new GetNativeThemeFromDestructorView; 1724 params.delegate = new GetNativeThemeFromDestructorView;
1761 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1725 #if !defined(OS_CHROMEOS)
1762 if (is_first_run) { 1726 if (is_first_run) {
1763 params.native_widget = new DesktopNativeWidgetAura(widget); 1727 params.native_widget = new DesktopNativeWidgetAura(widget);
1764 needs_second_run = true; 1728 needs_second_run = true;
1765 } 1729 }
1766 #endif 1730 #endif
1767 widget->Init(params); 1731 widget->Init(params);
1768 widget->CloseNow(); 1732 widget->CloseNow();
1769 return needs_second_run; 1733 return needs_second_run;
1770 } 1734 }
1771 1735
(...skipping 28 matching lines...) Expand all
1800 DISALLOW_COPY_AND_ASSIGN(CloseDestroysWidget); 1764 DISALLOW_COPY_AND_ASSIGN(CloseDestroysWidget);
1801 }; 1765 };
1802 1766
1803 // Verifies Close() results in destroying. 1767 // Verifies Close() results in destroying.
1804 TEST_F(WidgetTest, CloseDestroys) { 1768 TEST_F(WidgetTest, CloseDestroys) {
1805 bool destroyed = false; 1769 bool destroyed = false;
1806 CloseDestroysWidget* widget = new CloseDestroysWidget(&destroyed); 1770 CloseDestroysWidget* widget = new CloseDestroysWidget(&destroyed);
1807 Widget::InitParams params = 1771 Widget::InitParams params =
1808 CreateParams(views::Widget::InitParams::TYPE_MENU); 1772 CreateParams(views::Widget::InitParams::TYPE_MENU);
1809 params.opacity = Widget::InitParams::OPAQUE_WINDOW; 1773 params.opacity = Widget::InitParams::OPAQUE_WINDOW;
1810 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1774 #if !defined(OS_CHROMEOS)
1811 params.native_widget = new DesktopNativeWidgetAura(widget); 1775 params.native_widget = new DesktopNativeWidgetAura(widget);
1812 #endif 1776 #endif
1813 widget->Init(params); 1777 widget->Init(params);
1814 widget->Show(); 1778 widget->Show();
1815 widget->Hide(); 1779 widget->Hide();
1816 widget->Close(); 1780 widget->Close();
1817 // Run the message loop as Close() asynchronously deletes. 1781 // Run the message loop as Close() asynchronously deletes.
1818 RunPendingMessages(); 1782 RunPendingMessages();
1819 EXPECT_TRUE(destroyed); 1783 EXPECT_TRUE(destroyed);
1820 // Close() should destroy the widget. If not we'll cleanup to avoid leaks. 1784 // Close() should destroy the widget. If not we'll cleanup to avoid leaks.
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1958 // Creates a top level and a child, destroys the child and verifies the views 1922 // Creates a top level and a child, destroys the child and verifies the views
1959 // of the child are destroyed before the views of the parent. 1923 // of the child are destroyed before the views of the parent.
1960 void RunDestroyChildWidgetsTest(bool top_level_has_desktop_native_widget_aura, 1924 void RunDestroyChildWidgetsTest(bool top_level_has_desktop_native_widget_aura,
1961 bool child_has_desktop_native_widget_aura) { 1925 bool child_has_desktop_native_widget_aura) {
1962 // When a View is destroyed its name is added here. 1926 // When a View is destroyed its name is added here.
1963 std::vector<std::string> destroyed; 1927 std::vector<std::string> destroyed;
1964 1928
1965 Widget* top_level = new Widget; 1929 Widget* top_level = new Widget;
1966 Widget::InitParams params = 1930 Widget::InitParams params =
1967 CreateParams(views::Widget::InitParams::TYPE_WINDOW); 1931 CreateParams(views::Widget::InitParams::TYPE_WINDOW);
1968 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1932 #if !defined(OS_CHROMEOS)
1969 if (top_level_has_desktop_native_widget_aura) 1933 if (top_level_has_desktop_native_widget_aura)
1970 params.native_widget = new DesktopNativeWidgetAura(top_level); 1934 params.native_widget = new DesktopNativeWidgetAura(top_level);
1971 #endif 1935 #endif
1972 top_level->Init(params); 1936 top_level->Init(params);
1973 top_level->GetRootView()->AddChildView( 1937 top_level->GetRootView()->AddChildView(
1974 new DestroyedTrackingView("parent", &destroyed)); 1938 new DestroyedTrackingView("parent", &destroyed));
1975 top_level->Show(); 1939 top_level->Show();
1976 1940
1977 Widget* child = new Widget; 1941 Widget* child = new Widget;
1978 Widget::InitParams child_params = 1942 Widget::InitParams child_params =
1979 CreateParams(views::Widget::InitParams::TYPE_POPUP); 1943 CreateParams(views::Widget::InitParams::TYPE_POPUP);
1980 child_params.parent = top_level->GetNativeView(); 1944 child_params.parent = top_level->GetNativeView();
1981 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1945 #if !defined(OS_CHROMEOS)
1982 if (child_has_desktop_native_widget_aura) 1946 if (child_has_desktop_native_widget_aura)
1983 child_params.native_widget = new DesktopNativeWidgetAura(child); 1947 child_params.native_widget = new DesktopNativeWidgetAura(child);
1984 #endif 1948 #endif
1985 child->Init(child_params); 1949 child->Init(child_params);
1986 child->GetRootView()->AddChildView( 1950 child->GetRootView()->AddChildView(
1987 new DestroyedTrackingView("child", &destroyed)); 1951 new DestroyedTrackingView("child", &destroyed));
1988 child->Show(); 1952 child->Show();
1989 1953
1990 // Should trigger destruction of the child too. 1954 // Should trigger destruction of the child too.
1991 top_level->native_widget_private()->CloseNow(); 1955 top_level->native_widget_private()->CloseNow();
1992 1956
1993 // Child should be destroyed first. 1957 // Child should be destroyed first.
1994 ASSERT_EQ(2u, destroyed.size()); 1958 ASSERT_EQ(2u, destroyed.size());
1995 EXPECT_EQ("child", destroyed[0]); 1959 EXPECT_EQ("child", destroyed[0]);
1996 EXPECT_EQ("parent", destroyed[1]); 1960 EXPECT_EQ("parent", destroyed[1]);
1997 } 1961 }
1998 1962
1999 private: 1963 private:
2000 DISALLOW_COPY_AND_ASSIGN(WidgetChildDestructionTest); 1964 DISALLOW_COPY_AND_ASSIGN(WidgetChildDestructionTest);
2001 }; 1965 };
2002 1966
2003 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1967 #if !defined(OS_CHROMEOS)
2004 // See description of RunDestroyChildWidgetsTest(). Parent uses 1968 // See description of RunDestroyChildWidgetsTest(). Parent uses
2005 // DesktopNativeWidgetAura. 1969 // DesktopNativeWidgetAura.
2006 TEST_F(WidgetChildDestructionTest, 1970 TEST_F(WidgetChildDestructionTest,
2007 DestroyChildWidgetsInOrderWithDesktopNativeWidget) { 1971 DestroyChildWidgetsInOrderWithDesktopNativeWidget) {
2008 RunDestroyChildWidgetsTest(true, false); 1972 RunDestroyChildWidgetsTest(true, false);
2009 } 1973 }
2010 1974
2011 // See description of RunDestroyChildWidgetsTest(). Both parent and child use 1975 // See description of RunDestroyChildWidgetsTest(). Both parent and child use
2012 // DesktopNativeWidgetAura. 1976 // DesktopNativeWidgetAura.
2013 TEST_F(WidgetChildDestructionTest, 1977 TEST_F(WidgetChildDestructionTest,
2014 DestroyChildWidgetsInOrderWithDesktopNativeWidgetForBoth) { 1978 DestroyChildWidgetsInOrderWithDesktopNativeWidgetForBoth) {
2015 RunDestroyChildWidgetsTest(true, true); 1979 RunDestroyChildWidgetsTest(true, true);
2016 } 1980 }
2017 #endif 1981 #endif
2018 1982
2019 // See description of RunDestroyChildWidgetsTest(). 1983 // See description of RunDestroyChildWidgetsTest().
2020 TEST_F(WidgetChildDestructionTest, DestroyChildWidgetsInOrder) { 1984 TEST_F(WidgetChildDestructionTest, DestroyChildWidgetsInOrder) {
2021 RunDestroyChildWidgetsTest(false, false); 1985 RunDestroyChildWidgetsTest(false, false);
2022 } 1986 }
2023 1987
2024 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1988 #if !defined(OS_CHROMEOS)
2025 // Provides functionality to create a window modal dialog. 1989 // Provides functionality to create a window modal dialog.
2026 class ModalDialogDelegate : public DialogDelegateView { 1990 class ModalDialogDelegate : public DialogDelegateView {
2027 public: 1991 public:
2028 ModalDialogDelegate() {} 1992 ModalDialogDelegate() {}
2029 virtual ~ModalDialogDelegate() {} 1993 virtual ~ModalDialogDelegate() {}
2030 1994
2031 // WidgetDelegate overrides. 1995 // WidgetDelegate overrides.
2032 virtual ui::ModalType GetModalType() const OVERRIDE { 1996 virtual ui::ModalType GetModalType() const OVERRIDE {
2033 return ui::MODAL_TYPE_WINDOW; 1997 return ui::MODAL_TYPE_WINDOW;
2034 } 1998 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
2107 ui::EF_NONE); 2071 ui::EF_NONE);
2108 details = top_level_widget.GetNativeView()->GetHost()->dispatcher()-> 2072 details = top_level_widget.GetNativeView()->GetHost()->dispatcher()->
2109 OnEventFromSource(&mouse_down_main); 2073 OnEventFromSource(&mouse_down_main);
2110 ASSERT_FALSE(details.dispatcher_destroyed); 2074 ASSERT_FALSE(details.dispatcher_destroyed);
2111 EXPECT_EQ(0, widget_view->GetEventCount(ui::ET_MOUSE_MOVED)); 2075 EXPECT_EQ(0, widget_view->GetEventCount(ui::ET_MOUSE_MOVED));
2112 2076
2113 modal_dialog_widget->CloseNow(); 2077 modal_dialog_widget->CloseNow();
2114 top_level_widget.CloseNow(); 2078 top_level_widget.CloseNow();
2115 } 2079 }
2116 2080
2117 #if defined(USE_AURA)
2118 // Verifies nativeview visbility matches that of Widget visibility when 2081 // Verifies nativeview visbility matches that of Widget visibility when
2119 // SetFullscreen is invoked. 2082 // SetFullscreen is invoked.
2120 TEST_F(WidgetTest, FullscreenStatePropagated) { 2083 TEST_F(WidgetTest, FullscreenStatePropagated) {
2121 Widget::InitParams init_params = 2084 Widget::InitParams init_params =
2122 CreateParams(Widget::InitParams::TYPE_WINDOW); 2085 CreateParams(Widget::InitParams::TYPE_WINDOW);
2123 init_params.show_state = ui::SHOW_STATE_NORMAL; 2086 init_params.show_state = ui::SHOW_STATE_NORMAL;
2124 init_params.bounds = gfx::Rect(0, 0, 500, 500); 2087 init_params.bounds = gfx::Rect(0, 0, 500, 500);
2125 init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 2088 init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
2126 2089
2127 { 2090 {
(...skipping 10 matching lines...) Expand all
2138 Widget top_level_widget; 2101 Widget top_level_widget;
2139 init_params.native_widget = new DesktopNativeWidgetAura(&top_level_widget); 2102 init_params.native_widget = new DesktopNativeWidgetAura(&top_level_widget);
2140 top_level_widget.Init(init_params); 2103 top_level_widget.Init(init_params);
2141 top_level_widget.SetFullscreen(true); 2104 top_level_widget.SetFullscreen(true);
2142 EXPECT_EQ(top_level_widget.IsVisible(), 2105 EXPECT_EQ(top_level_widget.IsVisible(),
2143 top_level_widget.GetNativeView()->IsVisible()); 2106 top_level_widget.GetNativeView()->IsVisible());
2144 top_level_widget.CloseNow(); 2107 top_level_widget.CloseNow();
2145 } 2108 }
2146 #endif 2109 #endif
2147 } 2110 }
2148 #endif
2149 2111
2150 #if defined(OS_WIN) 2112 #if defined(OS_WIN)
2151 2113
2152 // Provides functionality to test widget activation via an activation flag 2114 // Provides functionality to test widget activation via an activation flag
2153 // which can be set by an accessor. 2115 // which can be set by an accessor.
2154 class ModalWindowTestWidgetDelegate : public WidgetDelegate { 2116 class ModalWindowTestWidgetDelegate : public WidgetDelegate {
2155 public: 2117 public:
2156 ModalWindowTestWidgetDelegate() 2118 ModalWindowTestWidgetDelegate()
2157 : widget_(NULL), 2119 : widget_(NULL),
2158 can_activate_(true) {} 2120 can_activate_(true) {}
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
2272 TEST_F(WidgetTest, ShowAfterShowInactive) { 2234 TEST_F(WidgetTest, ShowAfterShowInactive) {
2273 Widget* widget = CreateTopLevelPlatformWidget(); 2235 Widget* widget = CreateTopLevelPlatformWidget();
2274 2236
2275 widget->ShowInactive(); 2237 widget->ShowInactive();
2276 widget->Show(); 2238 widget->Show();
2277 EXPECT_EQ(GetWidgetShowState(widget), ui::SHOW_STATE_NORMAL); 2239 EXPECT_EQ(GetWidgetShowState(widget), ui::SHOW_STATE_NORMAL);
2278 2240
2279 widget->CloseNow(); 2241 widget->CloseNow();
2280 } 2242 }
2281 2243
2282 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 2244 #if !defined(OS_CHROMEOS)
2283 TEST_F(WidgetTest, InactiveWidgetDoesNotGrabActivation) { 2245 TEST_F(WidgetTest, InactiveWidgetDoesNotGrabActivation) {
2284 Widget* widget = CreateTopLevelPlatformWidget(); 2246 Widget* widget = CreateTopLevelPlatformWidget();
2285 widget->Show(); 2247 widget->Show();
2286 EXPECT_EQ(GetWidgetShowState(widget), ui::SHOW_STATE_NORMAL); 2248 EXPECT_EQ(GetWidgetShowState(widget), ui::SHOW_STATE_NORMAL);
2287 2249
2288 Widget widget2; 2250 Widget widget2;
2289 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 2251 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
2290 params.can_activate = false; 2252 params.can_activate = false;
2291 params.native_widget = new DesktopNativeWidgetAura(&widget2); 2253 params.native_widget = new DesktopNativeWidgetAura(&widget2);
2292 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 2254 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
2402 child_widget.Init(child_params); 2364 child_widget.Init(child_params);
2403 child_widget.AddObserver(&observer); 2365 child_widget.AddObserver(&observer);
2404 child_widget.Show(); 2366 child_widget.Show();
2405 2367
2406 parent_widget.CloseNow(); 2368 parent_widget.CloseNow();
2407 } 2369 }
2408 #endif 2370 #endif
2409 2371
2410 } // namespace test 2372 } // namespace test
2411 } // namespace views 2373 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698