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

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: incorporate feedback 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
« no previous file with comments | « ui/views/widget/widget_interactive_uitest.cc ('k') | ui/views/window/custom_frame_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) 830 #if defined(false)
835 // Aura needs shell to maximize/fullscreen window. 831 // Aura needs shell to maximize/fullscreen window.
836 // NativeWidgetGtk doesn't implement GetRestoredBounds. 832 // NativeWidgetGtk doesn't implement GetRestoredBounds.
837 TEST_F(WidgetTest, GetRestoredBounds) { 833 TEST_F(WidgetTest, GetRestoredBounds) {
838 Widget* toplevel = CreateTopLevelPlatformWidget(); 834 Widget* toplevel = CreateTopLevelPlatformWidget();
839 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), 835 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(),
840 toplevel->GetRestoredBounds().ToString()); 836 toplevel->GetRestoredBounds().ToString());
841 toplevel->Show(); 837 toplevel->Show();
842 toplevel->Maximize(); 838 toplevel->Maximize();
843 RunPendingMessages(); 839 RunPendingMessages();
844 EXPECT_NE(toplevel->GetWindowBoundsInScreen().ToString(), 840 EXPECT_NE(toplevel->GetWindowBoundsInScreen().ToString(),
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
893 RunPendingMessages(); 889 RunPendingMessages();
894 890
895 // And it stays maximized after getting out of full screen. 891 // And it stays maximized after getting out of full screen.
896 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, GetWidgetShowState(toplevel)); 892 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, GetWidgetShowState(toplevel));
897 893
898 // Clean up. 894 // Clean up.
899 toplevel->Close(); 895 toplevel->Close();
900 RunPendingMessages(); 896 RunPendingMessages();
901 } 897 }
902 898
903 #if defined(USE_AURA)
904 // The key-event propagation from Widget happens differently on aura and 899 // 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 900 // non-aura systems because of the difference in IME. So this test works only on
906 // aura. 901 // aura.
907 TEST_F(WidgetTest, KeyboardInputEvent) { 902 TEST_F(WidgetTest, KeyboardInputEvent) {
908 Widget* toplevel = CreateTopLevelPlatformWidget(); 903 Widget* toplevel = CreateTopLevelPlatformWidget();
909 View* container = toplevel->client_view(); 904 View* container = toplevel->client_view();
910 905
911 Textfield* textfield = new Textfield(); 906 Textfield* textfield = new Textfield();
912 textfield->SetText(base::ASCIIToUTF16("some text")); 907 textfield->SetText(base::ASCIIToUTF16("some text"));
913 container->AddChildView(textfield); 908 container->AddChildView(textfield);
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 0, 20, 1377 0, 20,
1383 2); 1378 2);
1384 widget->OnScrollEvent(&scroll2); 1379 widget->OnScrollEvent(&scroll2);
1385 1380
1386 EXPECT_EQ(0, cursor_view->GetEventCount(ui::ET_SCROLL)); 1381 EXPECT_EQ(0, cursor_view->GetEventCount(ui::ET_SCROLL));
1387 EXPECT_EQ(0, cursor_view->GetEventCount(ui::ET_MOUSEWHEEL)); 1382 EXPECT_EQ(0, cursor_view->GetEventCount(ui::ET_MOUSEWHEEL));
1388 1383
1389 widget->CloseNow(); 1384 widget->CloseNow();
1390 } 1385 }
1391 1386
1392 #endif // defined(USE_AURA)
1393
1394 // Tests that if a scroll-begin gesture is not handled, then subsequent scroll 1387 // Tests that if a scroll-begin gesture is not handled, then subsequent scroll
1395 // events are not dispatched to any view. 1388 // events are not dispatched to any view.
1396 TEST_F(WidgetTest, GestureScrollEventDispatching) { 1389 TEST_F(WidgetTest, GestureScrollEventDispatching) {
1397 EventCountView* noscroll_view = new EventCountView; 1390 EventCountView* noscroll_view = new EventCountView;
1398 EventCountView* scroll_view = new ScrollableEventCountView; 1391 EventCountView* scroll_view = new ScrollableEventCountView;
1399 1392
1400 noscroll_view->SetBounds(0, 0, 50, 40); 1393 noscroll_view->SetBounds(0, 0, 50, 40);
1401 scroll_view->SetBounds(60, 0, 40, 40); 1394 scroll_view->SetBounds(60, 0, 40, 40);
1402 1395
1403 Widget* widget = CreateTopLevelPlatformWidget(); 1396 Widget* widget = CreateTopLevelPlatformWidget();
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1573 1566
1574 // Verifies WindowClosing() is invoked correctly on the delegate when a Widget 1567 // Verifies WindowClosing() is invoked correctly on the delegate when a Widget
1575 // is closed. 1568 // is closed.
1576 TEST_F(WidgetTest, SingleWindowClosing) { 1569 TEST_F(WidgetTest, SingleWindowClosing) {
1577 scoped_ptr<ClosingDelegate> delegate(new ClosingDelegate()); 1570 scoped_ptr<ClosingDelegate> delegate(new ClosingDelegate());
1578 Widget* widget = new Widget(); // Destroyed by CloseNow() below. 1571 Widget* widget = new Widget(); // Destroyed by CloseNow() below.
1579 Widget::InitParams init_params = 1572 Widget::InitParams init_params =
1580 CreateParams(Widget::InitParams::TYPE_WINDOW); 1573 CreateParams(Widget::InitParams::TYPE_WINDOW);
1581 init_params.bounds = gfx::Rect(0, 0, 200, 200); 1574 init_params.bounds = gfx::Rect(0, 0, 200, 200);
1582 init_params.delegate = delegate.get(); 1575 init_params.delegate = delegate.get();
1583 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1576 #if !defined(OS_CHROMEOS)
1584 init_params.native_widget = new DesktopNativeWidgetAura(widget); 1577 init_params.native_widget = new DesktopNativeWidgetAura(widget);
1585 #endif 1578 #endif
1586 widget->Init(init_params); 1579 widget->Init(init_params);
1587 EXPECT_EQ(0, delegate->count()); 1580 EXPECT_EQ(0, delegate->count());
1588 widget->CloseNow(); 1581 widget->CloseNow();
1589 EXPECT_EQ(1, delegate->count()); 1582 EXPECT_EQ(1, delegate->count());
1590 } 1583 }
1591 1584
1592 class WidgetWindowTitleTest : public WidgetTest { 1585 class WidgetWindowTitleTest : public WidgetTest {
1593 protected: 1586 protected:
1594 void RunTest(bool desktop_native_widget) { 1587 void RunTest(bool desktop_native_widget) {
1595 Widget* widget = new Widget(); // Destroyed by CloseNow() below. 1588 Widget* widget = new Widget(); // Destroyed by CloseNow() below.
1596 Widget::InitParams init_params = 1589 Widget::InitParams init_params =
1597 CreateParams(Widget::InitParams::TYPE_WINDOW); 1590 CreateParams(Widget::InitParams::TYPE_WINDOW);
1598 widget->Init(init_params); 1591 widget->Init(init_params);
1599 1592
1600 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1593 #if !defined(OS_CHROMEOS)
1601 if (desktop_native_widget) 1594 if (desktop_native_widget)
1602 init_params.native_widget = new DesktopNativeWidgetAura(widget); 1595 init_params.native_widget = new DesktopNativeWidgetAura(widget);
1603 #else 1596 #else
1604 DCHECK(!desktop_native_widget) 1597 DCHECK(!desktop_native_widget)
1605 << "DesktopNativeWidget does not exist on non-Aura or on ChromeOS."; 1598 << "DesktopNativeWidget does not exist on non-Aura or on ChromeOS.";
1606 #endif 1599 #endif
1607 1600
1608 internal::NativeWidgetPrivate* native_widget = 1601 internal::NativeWidgetPrivate* native_widget =
1609 widget->native_widget_private(); 1602 widget->native_widget_private();
1610 1603
(...skipping 20 matching lines...) Expand all
1631 } 1624 }
1632 }; 1625 };
1633 1626
1634 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_NativeWidget) { 1627 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_NativeWidget) {
1635 // Use the default NativeWidget. 1628 // Use the default NativeWidget.
1636 bool desktop_native_widget = false; 1629 bool desktop_native_widget = false;
1637 RunTest(desktop_native_widget); 1630 RunTest(desktop_native_widget);
1638 } 1631 }
1639 1632
1640 // DesktopNativeWidget does not exist on non-Aura or on ChromeOS. 1633 // DesktopNativeWidget does not exist on non-Aura or on ChromeOS.
1641 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1634 #if !defined(OS_CHROMEOS)
1642 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_DesktopNativeWidget) { 1635 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_DesktopNativeWidget) {
1643 // Override to use a DesktopNativeWidget. 1636 // Override to use a DesktopNativeWidget.
1644 bool desktop_native_widget = true; 1637 bool desktop_native_widget = true;
1645 RunTest(desktop_native_widget); 1638 RunTest(desktop_native_widget);
1646 } 1639 }
1647 #endif // USE_AURA && !OS_CHROMEOS 1640 #endif // !OS_CHROMEOS
1648 1641
1649 // Used by SetTopLevelCorrectly to track calls to OnBeforeWidgetInit(). 1642 // Used by SetTopLevelCorrectly to track calls to OnBeforeWidgetInit().
1650 class VerifyTopLevelDelegate : public TestViewsDelegate { 1643 class VerifyTopLevelDelegate : public TestViewsDelegate {
1651 public: 1644 public:
1652 VerifyTopLevelDelegate() 1645 VerifyTopLevelDelegate()
1653 : on_before_init_called_(false), 1646 : on_before_init_called_(false),
1654 is_top_level_(false) { 1647 is_top_level_(false) {
1655 } 1648 }
1656 1649
1657 bool on_before_init_called() const { return on_before_init_called_; } 1650 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. 1744 // true indicates this should be run again with a value of false.
1752 // First run uses DesktopNativeWidgetAura (if possible). Second run doesn't. 1745 // First run uses DesktopNativeWidgetAura (if possible). Second run doesn't.
1753 bool RunGetNativeThemeFromDestructor(const Widget::InitParams& in_params, 1746 bool RunGetNativeThemeFromDestructor(const Widget::InitParams& in_params,
1754 bool is_first_run) { 1747 bool is_first_run) {
1755 bool needs_second_run = false; 1748 bool needs_second_run = false;
1756 // Destroyed by CloseNow() below. 1749 // Destroyed by CloseNow() below.
1757 Widget* widget = new Widget; 1750 Widget* widget = new Widget;
1758 Widget::InitParams params(in_params); 1751 Widget::InitParams params(in_params);
1759 // Deletes itself when the Widget is destroyed. 1752 // Deletes itself when the Widget is destroyed.
1760 params.delegate = new GetNativeThemeFromDestructorView; 1753 params.delegate = new GetNativeThemeFromDestructorView;
1761 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1754 #if !defined(OS_CHROMEOS)
1762 if (is_first_run) { 1755 if (is_first_run) {
1763 params.native_widget = new DesktopNativeWidgetAura(widget); 1756 params.native_widget = new DesktopNativeWidgetAura(widget);
1764 needs_second_run = true; 1757 needs_second_run = true;
1765 } 1758 }
1766 #endif 1759 #endif
1767 widget->Init(params); 1760 widget->Init(params);
1768 widget->CloseNow(); 1761 widget->CloseNow();
1769 return needs_second_run; 1762 return needs_second_run;
1770 } 1763 }
1771 1764
(...skipping 28 matching lines...) Expand all
1800 DISALLOW_COPY_AND_ASSIGN(CloseDestroysWidget); 1793 DISALLOW_COPY_AND_ASSIGN(CloseDestroysWidget);
1801 }; 1794 };
1802 1795
1803 // Verifies Close() results in destroying. 1796 // Verifies Close() results in destroying.
1804 TEST_F(WidgetTest, CloseDestroys) { 1797 TEST_F(WidgetTest, CloseDestroys) {
1805 bool destroyed = false; 1798 bool destroyed = false;
1806 CloseDestroysWidget* widget = new CloseDestroysWidget(&destroyed); 1799 CloseDestroysWidget* widget = new CloseDestroysWidget(&destroyed);
1807 Widget::InitParams params = 1800 Widget::InitParams params =
1808 CreateParams(views::Widget::InitParams::TYPE_MENU); 1801 CreateParams(views::Widget::InitParams::TYPE_MENU);
1809 params.opacity = Widget::InitParams::OPAQUE_WINDOW; 1802 params.opacity = Widget::InitParams::OPAQUE_WINDOW;
1810 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1803 #if !defined(OS_CHROMEOS)
1811 params.native_widget = new DesktopNativeWidgetAura(widget); 1804 params.native_widget = new DesktopNativeWidgetAura(widget);
1812 #endif 1805 #endif
1813 widget->Init(params); 1806 widget->Init(params);
1814 widget->Show(); 1807 widget->Show();
1815 widget->Hide(); 1808 widget->Hide();
1816 widget->Close(); 1809 widget->Close();
1817 // Run the message loop as Close() asynchronously deletes. 1810 // Run the message loop as Close() asynchronously deletes.
1818 RunPendingMessages(); 1811 RunPendingMessages();
1819 EXPECT_TRUE(destroyed); 1812 EXPECT_TRUE(destroyed);
1820 // Close() should destroy the widget. If not we'll cleanup to avoid leaks. 1813 // 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 1951 // 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. 1952 // of the child are destroyed before the views of the parent.
1960 void RunDestroyChildWidgetsTest(bool top_level_has_desktop_native_widget_aura, 1953 void RunDestroyChildWidgetsTest(bool top_level_has_desktop_native_widget_aura,
1961 bool child_has_desktop_native_widget_aura) { 1954 bool child_has_desktop_native_widget_aura) {
1962 // When a View is destroyed its name is added here. 1955 // When a View is destroyed its name is added here.
1963 std::vector<std::string> destroyed; 1956 std::vector<std::string> destroyed;
1964 1957
1965 Widget* top_level = new Widget; 1958 Widget* top_level = new Widget;
1966 Widget::InitParams params = 1959 Widget::InitParams params =
1967 CreateParams(views::Widget::InitParams::TYPE_WINDOW); 1960 CreateParams(views::Widget::InitParams::TYPE_WINDOW);
1968 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1961 #if !defined(OS_CHROMEOS)
1969 if (top_level_has_desktop_native_widget_aura) 1962 if (top_level_has_desktop_native_widget_aura)
1970 params.native_widget = new DesktopNativeWidgetAura(top_level); 1963 params.native_widget = new DesktopNativeWidgetAura(top_level);
1971 #endif 1964 #endif
1972 top_level->Init(params); 1965 top_level->Init(params);
1973 top_level->GetRootView()->AddChildView( 1966 top_level->GetRootView()->AddChildView(
1974 new DestroyedTrackingView("parent", &destroyed)); 1967 new DestroyedTrackingView("parent", &destroyed));
1975 top_level->Show(); 1968 top_level->Show();
1976 1969
1977 Widget* child = new Widget; 1970 Widget* child = new Widget;
1978 Widget::InitParams child_params = 1971 Widget::InitParams child_params =
1979 CreateParams(views::Widget::InitParams::TYPE_POPUP); 1972 CreateParams(views::Widget::InitParams::TYPE_POPUP);
1980 child_params.parent = top_level->GetNativeView(); 1973 child_params.parent = top_level->GetNativeView();
1981 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1974 #if !defined(OS_CHROMEOS)
1982 if (child_has_desktop_native_widget_aura) 1975 if (child_has_desktop_native_widget_aura)
1983 child_params.native_widget = new DesktopNativeWidgetAura(child); 1976 child_params.native_widget = new DesktopNativeWidgetAura(child);
1984 #endif 1977 #endif
1985 child->Init(child_params); 1978 child->Init(child_params);
1986 child->GetRootView()->AddChildView( 1979 child->GetRootView()->AddChildView(
1987 new DestroyedTrackingView("child", &destroyed)); 1980 new DestroyedTrackingView("child", &destroyed));
1988 child->Show(); 1981 child->Show();
1989 1982
1990 // Should trigger destruction of the child too. 1983 // Should trigger destruction of the child too.
1991 top_level->native_widget_private()->CloseNow(); 1984 top_level->native_widget_private()->CloseNow();
1992 1985
1993 // Child should be destroyed first. 1986 // Child should be destroyed first.
1994 ASSERT_EQ(2u, destroyed.size()); 1987 ASSERT_EQ(2u, destroyed.size());
1995 EXPECT_EQ("child", destroyed[0]); 1988 EXPECT_EQ("child", destroyed[0]);
1996 EXPECT_EQ("parent", destroyed[1]); 1989 EXPECT_EQ("parent", destroyed[1]);
1997 } 1990 }
1998 1991
1999 private: 1992 private:
2000 DISALLOW_COPY_AND_ASSIGN(WidgetChildDestructionTest); 1993 DISALLOW_COPY_AND_ASSIGN(WidgetChildDestructionTest);
2001 }; 1994 };
2002 1995
2003 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 1996 #if !defined(OS_CHROMEOS)
2004 // See description of RunDestroyChildWidgetsTest(). Parent uses 1997 // See description of RunDestroyChildWidgetsTest(). Parent uses
2005 // DesktopNativeWidgetAura. 1998 // DesktopNativeWidgetAura.
2006 TEST_F(WidgetChildDestructionTest, 1999 TEST_F(WidgetChildDestructionTest,
2007 DestroyChildWidgetsInOrderWithDesktopNativeWidget) { 2000 DestroyChildWidgetsInOrderWithDesktopNativeWidget) {
2008 RunDestroyChildWidgetsTest(true, false); 2001 RunDestroyChildWidgetsTest(true, false);
2009 } 2002 }
2010 2003
2011 // See description of RunDestroyChildWidgetsTest(). Both parent and child use 2004 // See description of RunDestroyChildWidgetsTest(). Both parent and child use
2012 // DesktopNativeWidgetAura. 2005 // DesktopNativeWidgetAura.
2013 TEST_F(WidgetChildDestructionTest, 2006 TEST_F(WidgetChildDestructionTest,
2014 DestroyChildWidgetsInOrderWithDesktopNativeWidgetForBoth) { 2007 DestroyChildWidgetsInOrderWithDesktopNativeWidgetForBoth) {
2015 RunDestroyChildWidgetsTest(true, true); 2008 RunDestroyChildWidgetsTest(true, true);
2016 } 2009 }
2017 #endif 2010 #endif
2018 2011
2019 // See description of RunDestroyChildWidgetsTest(). 2012 // See description of RunDestroyChildWidgetsTest().
2020 TEST_F(WidgetChildDestructionTest, DestroyChildWidgetsInOrder) { 2013 TEST_F(WidgetChildDestructionTest, DestroyChildWidgetsInOrder) {
2021 RunDestroyChildWidgetsTest(false, false); 2014 RunDestroyChildWidgetsTest(false, false);
2022 } 2015 }
2023 2016
2024 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 2017 #if !defined(OS_CHROMEOS)
2025 // Provides functionality to create a window modal dialog. 2018 // Provides functionality to create a window modal dialog.
2026 class ModalDialogDelegate : public DialogDelegateView { 2019 class ModalDialogDelegate : public DialogDelegateView {
2027 public: 2020 public:
2028 ModalDialogDelegate() {} 2021 ModalDialogDelegate() {}
2029 virtual ~ModalDialogDelegate() {} 2022 virtual ~ModalDialogDelegate() {}
2030 2023
2031 // WidgetDelegate overrides. 2024 // WidgetDelegate overrides.
2032 virtual ui::ModalType GetModalType() const OVERRIDE { 2025 virtual ui::ModalType GetModalType() const OVERRIDE {
2033 return ui::MODAL_TYPE_WINDOW; 2026 return ui::MODAL_TYPE_WINDOW;
2034 } 2027 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
2107 ui::EF_NONE); 2100 ui::EF_NONE);
2108 details = top_level_widget.GetNativeView()->GetHost()->dispatcher()-> 2101 details = top_level_widget.GetNativeView()->GetHost()->dispatcher()->
2109 OnEventFromSource(&mouse_down_main); 2102 OnEventFromSource(&mouse_down_main);
2110 ASSERT_FALSE(details.dispatcher_destroyed); 2103 ASSERT_FALSE(details.dispatcher_destroyed);
2111 EXPECT_EQ(0, widget_view->GetEventCount(ui::ET_MOUSE_MOVED)); 2104 EXPECT_EQ(0, widget_view->GetEventCount(ui::ET_MOUSE_MOVED));
2112 2105
2113 modal_dialog_widget->CloseNow(); 2106 modal_dialog_widget->CloseNow();
2114 top_level_widget.CloseNow(); 2107 top_level_widget.CloseNow();
2115 } 2108 }
2116 2109
2117 #if defined(USE_AURA)
2118 // Verifies nativeview visbility matches that of Widget visibility when 2110 // Verifies nativeview visbility matches that of Widget visibility when
2119 // SetFullscreen is invoked. 2111 // SetFullscreen is invoked.
2120 TEST_F(WidgetTest, FullscreenStatePropagated) { 2112 TEST_F(WidgetTest, FullscreenStatePropagated) {
2121 Widget::InitParams init_params = 2113 Widget::InitParams init_params =
2122 CreateParams(Widget::InitParams::TYPE_WINDOW); 2114 CreateParams(Widget::InitParams::TYPE_WINDOW);
2123 init_params.show_state = ui::SHOW_STATE_NORMAL; 2115 init_params.show_state = ui::SHOW_STATE_NORMAL;
2124 init_params.bounds = gfx::Rect(0, 0, 500, 500); 2116 init_params.bounds = gfx::Rect(0, 0, 500, 500);
2125 init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 2117 init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
2126 2118
2127 { 2119 {
(...skipping 10 matching lines...) Expand all
2138 Widget top_level_widget; 2130 Widget top_level_widget;
2139 init_params.native_widget = new DesktopNativeWidgetAura(&top_level_widget); 2131 init_params.native_widget = new DesktopNativeWidgetAura(&top_level_widget);
2140 top_level_widget.Init(init_params); 2132 top_level_widget.Init(init_params);
2141 top_level_widget.SetFullscreen(true); 2133 top_level_widget.SetFullscreen(true);
2142 EXPECT_EQ(top_level_widget.IsVisible(), 2134 EXPECT_EQ(top_level_widget.IsVisible(),
2143 top_level_widget.GetNativeView()->IsVisible()); 2135 top_level_widget.GetNativeView()->IsVisible());
2144 top_level_widget.CloseNow(); 2136 top_level_widget.CloseNow();
2145 } 2137 }
2146 #endif 2138 #endif
2147 } 2139 }
2148 #endif
2149 2140
2150 #if defined(OS_WIN) 2141 #if defined(OS_WIN)
2151 2142
2152 // Provides functionality to test widget activation via an activation flag 2143 // Provides functionality to test widget activation via an activation flag
2153 // which can be set by an accessor. 2144 // which can be set by an accessor.
2154 class ModalWindowTestWidgetDelegate : public WidgetDelegate { 2145 class ModalWindowTestWidgetDelegate : public WidgetDelegate {
2155 public: 2146 public:
2156 ModalWindowTestWidgetDelegate() 2147 ModalWindowTestWidgetDelegate()
2157 : widget_(NULL), 2148 : widget_(NULL),
2158 can_activate_(true) {} 2149 can_activate_(true) {}
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
2272 TEST_F(WidgetTest, ShowAfterShowInactive) { 2263 TEST_F(WidgetTest, ShowAfterShowInactive) {
2273 Widget* widget = CreateTopLevelPlatformWidget(); 2264 Widget* widget = CreateTopLevelPlatformWidget();
2274 2265
2275 widget->ShowInactive(); 2266 widget->ShowInactive();
2276 widget->Show(); 2267 widget->Show();
2277 EXPECT_EQ(GetWidgetShowState(widget), ui::SHOW_STATE_NORMAL); 2268 EXPECT_EQ(GetWidgetShowState(widget), ui::SHOW_STATE_NORMAL);
2278 2269
2279 widget->CloseNow(); 2270 widget->CloseNow();
2280 } 2271 }
2281 2272
2282 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 2273 #if !defined(OS_CHROMEOS)
2283 TEST_F(WidgetTest, InactiveWidgetDoesNotGrabActivation) { 2274 TEST_F(WidgetTest, InactiveWidgetDoesNotGrabActivation) {
2284 Widget* widget = CreateTopLevelPlatformWidget(); 2275 Widget* widget = CreateTopLevelPlatformWidget();
2285 widget->Show(); 2276 widget->Show();
2286 EXPECT_EQ(GetWidgetShowState(widget), ui::SHOW_STATE_NORMAL); 2277 EXPECT_EQ(GetWidgetShowState(widget), ui::SHOW_STATE_NORMAL);
2287 2278
2288 Widget widget2; 2279 Widget widget2;
2289 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 2280 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
2290 params.can_activate = false; 2281 params.can_activate = false;
2291 params.native_widget = new DesktopNativeWidgetAura(&widget2); 2282 params.native_widget = new DesktopNativeWidgetAura(&widget2);
2292 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 2283 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); 2393 child_widget.Init(child_params);
2403 child_widget.AddObserver(&observer); 2394 child_widget.AddObserver(&observer);
2404 child_widget.Show(); 2395 child_widget.Show();
2405 2396
2406 parent_widget.CloseNow(); 2397 parent_widget.CloseNow();
2407 } 2398 }
2408 #endif 2399 #endif
2409 2400
2410 } // namespace test 2401 } // namespace test
2411 } // namespace views 2402 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/widget/widget_interactive_uitest.cc ('k') | ui/views/window/custom_frame_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698