| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "ui/aura/window.h" | 5 #include "ui/aura/window.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 11 #include "ui/aura/desktop.h" | 11 #include "ui/aura/desktop.h" |
| 12 #include "ui/aura/desktop_observer.h" | 12 #include "ui/aura/desktop_observer.h" |
| 13 #include "ui/aura/event.h" | 13 #include "ui/aura/event.h" |
| 14 #include "ui/aura/focus_manager.h" | 14 #include "ui/aura/focus_manager.h" |
| 15 #include "ui/aura/hit_test.h" | 15 #include "ui/aura/hit_test.h" |
| 16 #include "ui/aura/root_window.h" | 16 #include "ui/aura/root_window.h" |
| 17 #include "ui/aura/test/aura_test_base.h" | 17 #include "ui/aura/test/aura_test_base.h" |
| 18 #include "ui/aura/test/event_generator.h" |
| 18 #include "ui/aura/test/test_desktop_delegate.h" | 19 #include "ui/aura/test/test_desktop_delegate.h" |
| 19 #include "ui/aura/test/test_window_delegate.h" | 20 #include "ui/aura/test/test_window_delegate.h" |
| 20 #include "ui/aura/window_delegate.h" | 21 #include "ui/aura/window_delegate.h" |
| 21 #include "ui/aura/window_observer.h" | 22 #include "ui/aura/window_observer.h" |
| 22 #include "ui/gfx/canvas_skia.h" | 23 #include "ui/gfx/canvas_skia.h" |
| 23 #include "ui/gfx/compositor/layer.h" | 24 #include "ui/gfx/compositor/layer.h" |
| 24 #include "ui/base/keycodes/keyboard_codes.h" | 25 #include "ui/base/keycodes/keyboard_codes.h" |
| 25 | 26 |
| 26 namespace aura { | 27 namespace aura { |
| 27 namespace test { | 28 namespace test { |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 ASSERT_EQ(2u, parent.children().size()); | 345 ASSERT_EQ(2u, parent.children().size()); |
| 345 EXPECT_EQ(&child1, parent.children()[1]); | 346 EXPECT_EQ(&child1, parent.children()[1]); |
| 346 EXPECT_EQ(&child2, parent.children()[0]); | 347 EXPECT_EQ(&child2, parent.children()[0]); |
| 347 ASSERT_EQ(2u, parent.layer()->children().size()); | 348 ASSERT_EQ(2u, parent.layer()->children().size()); |
| 348 EXPECT_EQ(child1.layer(), parent.layer()->children()[1]); | 349 EXPECT_EQ(child1.layer(), parent.layer()->children()[1]); |
| 349 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); | 350 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); |
| 350 } | 351 } |
| 351 | 352 |
| 352 // Various destruction assertions. | 353 // Various destruction assertions. |
| 353 TEST_F(WindowTest, CaptureTests) { | 354 TEST_F(WindowTest, CaptureTests) { |
| 354 Desktop* desktop = Desktop::GetInstance(); | |
| 355 CaptureWindowDelegateImpl delegate; | 355 CaptureWindowDelegateImpl delegate; |
| 356 scoped_ptr<Window> window(CreateTestWindowWithDelegate( | 356 scoped_ptr<Window> window(CreateTestWindowWithDelegate( |
| 357 &delegate, 0, gfx::Rect(0, 0, 20, 20), NULL)); | 357 &delegate, 0, gfx::Rect(0, 0, 20, 20), NULL)); |
| 358 EXPECT_FALSE(window->HasCapture()); | 358 EXPECT_FALSE(window->HasCapture()); |
| 359 | 359 |
| 360 // Do a capture. | 360 // Do a capture. |
| 361 window->SetCapture(); | 361 window->SetCapture(); |
| 362 EXPECT_TRUE(window->HasCapture()); | 362 EXPECT_TRUE(window->HasCapture()); |
| 363 EXPECT_EQ(0, delegate.capture_lost_count()); | 363 EXPECT_EQ(0, delegate.capture_lost_count()); |
| 364 EventGenerator generator(gfx::Point(50, 50)); |
| 365 generator.PressLeftButton(); |
| 366 EXPECT_EQ(1, delegate.mouse_event_count()); |
| 367 generator.ReleaseLeftButton(); |
| 364 | 368 |
| 365 desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(50, 50), | |
| 366 ui::EF_LEFT_BUTTON_DOWN)); | |
| 367 EXPECT_EQ(1, delegate.mouse_event_count()); | |
| 368 desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_RELEASED, gfx::Point(50, 50), | |
| 369 ui::EF_LEFT_BUTTON_DOWN)); | |
| 370 EXPECT_EQ(2, delegate.mouse_event_count()); | 369 EXPECT_EQ(2, delegate.mouse_event_count()); |
| 371 delegate.set_mouse_event_count(0); | 370 delegate.set_mouse_event_count(0); |
| 372 | 371 |
| 373 window->ReleaseCapture(); | 372 window->ReleaseCapture(); |
| 374 EXPECT_FALSE(window->HasCapture()); | 373 EXPECT_FALSE(window->HasCapture()); |
| 375 EXPECT_EQ(1, delegate.capture_lost_count()); | 374 EXPECT_EQ(1, delegate.capture_lost_count()); |
| 376 | 375 |
| 377 desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(50, 50), | 376 generator.PressLeftButton(); |
| 378 ui::EF_LEFT_BUTTON_DOWN)); | |
| 379 EXPECT_EQ(0, delegate.mouse_event_count()); | 377 EXPECT_EQ(0, delegate.mouse_event_count()); |
| 380 } | 378 } |
| 381 | 379 |
| 382 // Verifies capture is reset when a window is destroyed. | 380 // Verifies capture is reset when a window is destroyed. |
| 383 TEST_F(WindowTest, ReleaseCaptureOnDestroy) { | 381 TEST_F(WindowTest, ReleaseCaptureOnDestroy) { |
| 384 Desktop* desktop = Desktop::GetInstance(); | 382 Desktop* desktop = Desktop::GetInstance(); |
| 385 internal::RootWindow* root = | 383 internal::RootWindow* root = |
| 386 static_cast<internal::RootWindow*>(desktop->window()); | 384 static_cast<internal::RootWindow*>(desktop->window()); |
| 387 CaptureWindowDelegateImpl delegate; | 385 CaptureWindowDelegateImpl delegate; |
| 388 scoped_ptr<Window> window(CreateTestWindowWithDelegate( | 386 scoped_ptr<Window> window(CreateTestWindowWithDelegate( |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 | 461 |
| 464 class ActivateWindowDelegate : public TestWindowDelegate { | 462 class ActivateWindowDelegate : public TestWindowDelegate { |
| 465 public: | 463 public: |
| 466 ActivateWindowDelegate() | 464 ActivateWindowDelegate() |
| 467 : activate_(true), | 465 : activate_(true), |
| 468 activated_count_(0), | 466 activated_count_(0), |
| 469 lost_active_count_(0), | 467 lost_active_count_(0), |
| 470 should_activate_count_(0) { | 468 should_activate_count_(0) { |
| 471 } | 469 } |
| 472 | 470 |
| 471 ActivateWindowDelegate(bool activate) |
| 472 : activate_(activate), |
| 473 activated_count_(0), |
| 474 lost_active_count_(0), |
| 475 should_activate_count_(0) { |
| 476 } |
| 477 |
| 473 void set_activate(bool v) { activate_ = v; } | 478 void set_activate(bool v) { activate_ = v; } |
| 474 int activated_count() const { return activated_count_; } | 479 int activated_count() const { return activated_count_; } |
| 475 int lost_active_count() const { return lost_active_count_; } | 480 int lost_active_count() const { return lost_active_count_; } |
| 476 int should_activate_count() const { return should_activate_count_; } | 481 int should_activate_count() const { return should_activate_count_; } |
| 477 void Clear() { | 482 void Clear() { |
| 478 activated_count_ = lost_active_count_ = should_activate_count_ = 0; | 483 activated_count_ = lost_active_count_ = should_activate_count_ = 0; |
| 479 } | 484 } |
| 480 | 485 |
| 481 virtual bool ShouldActivate(MouseEvent* event) OVERRIDE { | 486 virtual bool ShouldActivate(MouseEvent* event) OVERRIDE { |
| 482 should_activate_count_++; | 487 should_activate_count_++; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 desktop->SetActiveWindow(w1.get(), NULL); | 522 desktop->SetActiveWindow(w1.get(), NULL); |
| 518 EXPECT_EQ(w1.get(), desktop->active_window()); | 523 EXPECT_EQ(w1.get(), desktop->active_window()); |
| 519 EXPECT_EQ(w1.get(), focus_manager->GetFocusedWindow()); | 524 EXPECT_EQ(w1.get(), focus_manager->GetFocusedWindow()); |
| 520 EXPECT_EQ(1, d1.activated_count()); | 525 EXPECT_EQ(1, d1.activated_count()); |
| 521 EXPECT_EQ(0, d1.lost_active_count()); | 526 EXPECT_EQ(0, d1.lost_active_count()); |
| 522 d1.Clear(); | 527 d1.Clear(); |
| 523 | 528 |
| 524 // Click on window2. | 529 // Click on window2. |
| 525 gfx::Point press_point = w2->bounds().CenterPoint(); | 530 gfx::Point press_point = w2->bounds().CenterPoint(); |
| 526 Window::ConvertPointToWindow(w2->parent(), desktop->window(), &press_point); | 531 Window::ConvertPointToWindow(w2->parent(), desktop->window(), &press_point); |
| 527 desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, press_point, 0)); | 532 EventGenerator generator(press_point); |
| 528 desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_RELEASED, press_point, 0)); | 533 generator.ClickLeftButton(); |
| 529 | 534 |
| 530 // Window2 should have become active. | 535 // Window2 should have become active. |
| 531 EXPECT_EQ(w2.get(), desktop->active_window()); | 536 EXPECT_EQ(w2.get(), desktop->active_window()); |
| 532 EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow()); | 537 EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow()); |
| 533 EXPECT_EQ(0, d1.activated_count()); | 538 EXPECT_EQ(0, d1.activated_count()); |
| 534 EXPECT_EQ(1, d1.lost_active_count()); | 539 EXPECT_EQ(1, d1.lost_active_count()); |
| 535 EXPECT_EQ(1, d2.activated_count()); | 540 EXPECT_EQ(1, d2.activated_count()); |
| 536 EXPECT_EQ(0, d2.lost_active_count()); | 541 EXPECT_EQ(0, d2.lost_active_count()); |
| 537 d1.Clear(); | 542 d1.Clear(); |
| 538 d2.Clear(); | 543 d2.Clear(); |
| 539 | 544 |
| 540 // Click back on window1, but set it up so w1 doesn't activate on click. | 545 // Click back on window1, but set it up so w1 doesn't activate on click. |
| 541 press_point = w1->bounds().CenterPoint(); | 546 press_point = w1->bounds().CenterPoint(); |
| 542 Window::ConvertPointToWindow(w1->parent(), desktop->window(), &press_point); | 547 Window::ConvertPointToWindow(w1->parent(), desktop->window(), &press_point); |
| 543 d1.set_activate(false); | 548 d1.set_activate(false); |
| 544 desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, press_point, 0)); | 549 generator.ClickLeftButton(); |
| 545 desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_RELEASED, press_point, 0)); | |
| 546 | 550 |
| 547 // Window2 should still be active and focused. | 551 // Window2 should still be active and focused. |
| 548 EXPECT_EQ(w2.get(), desktop->active_window()); | 552 EXPECT_EQ(w2.get(), desktop->active_window()); |
| 549 EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow()); | 553 EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow()); |
| 550 EXPECT_EQ(0, d1.activated_count()); | 554 EXPECT_EQ(0, d1.activated_count()); |
| 551 EXPECT_EQ(0, d1.lost_active_count()); | 555 EXPECT_EQ(0, d1.lost_active_count()); |
| 552 EXPECT_EQ(0, d2.activated_count()); | 556 EXPECT_EQ(0, d2.activated_count()); |
| 553 EXPECT_EQ(0, d2.lost_active_count()); | 557 EXPECT_EQ(0, d2.lost_active_count()); |
| 554 d1.Clear(); | 558 d1.Clear(); |
| 555 d2.Clear(); | 559 d2.Clear(); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 EXPECT_EQ(original_bounds, w->bounds()); | 719 EXPECT_EQ(original_bounds, w->bounds()); |
| 716 | 720 |
| 717 // Fullscreen | 721 // Fullscreen |
| 718 w->Fullscreen(); | 722 w->Fullscreen(); |
| 719 EXPECT_EQ(ui::SHOW_STATE_FULLSCREEN, w->show_state()); | 723 EXPECT_EQ(ui::SHOW_STATE_FULLSCREEN, w->show_state()); |
| 720 EXPECT_EQ(desktop_bounds, w->bounds()); | 724 EXPECT_EQ(desktop_bounds, w->bounds()); |
| 721 w->Restore(); | 725 w->Restore(); |
| 722 EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); | 726 EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); |
| 723 EXPECT_EQ(original_bounds, w->bounds()); | 727 EXPECT_EQ(original_bounds, w->bounds()); |
| 724 | 728 |
| 725 // Fullscreen twice | 729 // Calling Fullscreen() twice should have no additional effect. |
| 726 w->Fullscreen(); | 730 w->Fullscreen(); |
| 727 w->Fullscreen(); | 731 w->Fullscreen(); |
| 728 EXPECT_EQ(desktop_bounds, w->bounds()); | 732 EXPECT_EQ(desktop_bounds, w->bounds()); |
| 729 w->Restore(); | 733 w->Restore(); |
| 730 EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); | 734 EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); |
| 731 EXPECT_EQ(original_bounds, w->bounds()); | 735 EXPECT_EQ(original_bounds, w->bounds()); |
| 736 |
| 737 // Calling SetBounds() in fullscreen mode should only update the |
| 738 // restore bounds not change the bounds of the window. |
| 739 gfx::Rect new_bounds(50, 50, 50, 50); |
| 740 w->Fullscreen(); |
| 741 w->SetBounds(new_bounds); |
| 742 EXPECT_EQ(desktop_bounds, w->bounds()); |
| 743 w->Restore(); |
| 744 EXPECT_EQ(new_bounds, w->bounds()); |
| 732 } | 745 } |
| 733 | 746 |
| 734 TEST_F(WindowTest, Maximized) { | 747 TEST_F(WindowTest, Maximized) { |
| 735 gfx::Rect original_bounds = gfx::Rect(100, 100, 100, 100); | 748 gfx::Rect original_bounds = gfx::Rect(100, 100, 100, 100); |
| 736 gfx::Rect desktop_bounds(Desktop::GetInstance()->GetSize()); | 749 gfx::Rect desktop_bounds(Desktop::GetInstance()->GetSize()); |
| 737 scoped_ptr<Window> w(CreateTestWindowWithDelegate( | 750 scoped_ptr<Window> w(CreateTestWindowWithDelegate( |
| 738 NULL, 1, original_bounds, NULL)); | 751 NULL, 1, original_bounds, NULL)); |
| 739 EXPECT_EQ(original_bounds, w->bounds()); | 752 EXPECT_EQ(original_bounds, w->bounds()); |
| 740 | 753 |
| 741 // Maximized | 754 // Maximized |
| (...skipping 21 matching lines...) Expand all Loading... |
| 763 EXPECT_EQ(max_bounds, w->bounds()); | 776 EXPECT_EQ(max_bounds, w->bounds()); |
| 764 w->Fullscreen(); | 777 w->Fullscreen(); |
| 765 EXPECT_EQ(ui::SHOW_STATE_FULLSCREEN, w->show_state()); | 778 EXPECT_EQ(ui::SHOW_STATE_FULLSCREEN, w->show_state()); |
| 766 EXPECT_EQ(desktop_bounds, w->bounds()); | 779 EXPECT_EQ(desktop_bounds, w->bounds()); |
| 767 w->Maximize(); | 780 w->Maximize(); |
| 768 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, w->show_state()); | 781 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, w->show_state()); |
| 769 EXPECT_EQ(max_bounds, w->bounds()); | 782 EXPECT_EQ(max_bounds, w->bounds()); |
| 770 w->Restore(); | 783 w->Restore(); |
| 771 EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); | 784 EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); |
| 772 EXPECT_EQ(original_bounds, w->bounds()); | 785 EXPECT_EQ(original_bounds, w->bounds()); |
| 786 |
| 787 // Calling SetBounds() in maximized mode mode should only update the |
| 788 // restore bounds not change the bounds of the window. |
| 789 gfx::Rect new_bounds(50, 50, 50, 50); |
| 790 w->Maximize(); |
| 791 w->SetBounds(new_bounds); |
| 792 EXPECT_EQ(max_bounds, w->bounds()); |
| 793 w->Restore(); |
| 794 EXPECT_EQ(new_bounds, w->bounds()); |
| 773 } | 795 } |
| 774 | 796 |
| 775 // Various assertions for activating/deactivating. | 797 // Various assertions for activating/deactivating. |
| 776 TEST_F(WindowTest, Deactivate) { | 798 TEST_F(WindowTest, Deactivate) { |
| 777 TestWindowDelegate d1; | 799 TestWindowDelegate d1; |
| 778 TestWindowDelegate d2; | 800 TestWindowDelegate d2; |
| 779 scoped_ptr<Window> w1( | 801 scoped_ptr<Window> w1( |
| 780 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(), NULL)); | 802 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(), NULL)); |
| 781 scoped_ptr<Window> w2( | 803 scoped_ptr<Window> w2( |
| 782 CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(), NULL)); | 804 CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(), NULL)); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 812 Window* root = Desktop::GetInstance()->window(); | 834 Window* root = Desktop::GetInstance()->window(); |
| 813 EXPECT_FALSE(root->IsOrContainsFullscreenWindow()); | 835 EXPECT_FALSE(root->IsOrContainsFullscreenWindow()); |
| 814 | 836 |
| 815 w11->Fullscreen(); | 837 w11->Fullscreen(); |
| 816 EXPECT_TRUE(root->IsOrContainsFullscreenWindow()); | 838 EXPECT_TRUE(root->IsOrContainsFullscreenWindow()); |
| 817 | 839 |
| 818 w11->Hide(); | 840 w11->Hide(); |
| 819 EXPECT_FALSE(root->IsOrContainsFullscreenWindow()); | 841 EXPECT_FALSE(root->IsOrContainsFullscreenWindow()); |
| 820 } | 842 } |
| 821 | 843 |
| 844 class ToplevelWindowTest : public WindowTest { |
| 845 public: |
| 846 ToplevelWindowTest() {} |
| 847 virtual ~ToplevelWindowTest() {} |
| 848 |
| 849 virtual void SetUp() OVERRIDE { |
| 850 WindowTest::SetUp(); |
| 851 toplevel_container_.Init(); |
| 852 toplevel_container_.SetParent(aura::Desktop::GetInstance()->window()); |
| 853 toplevel_container_.SetBounds( |
| 854 aura::Desktop::GetInstance()->window()->bounds()); |
| 855 toplevel_container_.Show(); |
| 856 } |
| 857 |
| 858 virtual void TearDown() OVERRIDE { |
| 859 toplevel_container_.Hide(); |
| 860 toplevel_container_.SetParent(NULL); |
| 861 WindowTest::TearDown(); |
| 862 } |
| 863 |
| 864 Window* CreateTestToplevelWindow( |
| 865 WindowDelegate* delegate, const gfx::Rect& bounds) { |
| 866 return CreateTestWindowWithDelegate( |
| 867 delegate, 0 /* id */, bounds, &toplevel_container_); |
| 868 } |
| 869 |
| 870 ToplevelWindowContainer toplevel_container_; |
| 871 |
| 872 private: |
| 873 DISALLOW_COPY_AND_ASSIGN(ToplevelWindowTest); |
| 874 }; |
| 875 |
| 876 TEST_F(ToplevelWindowTest, TopMostActivate) { |
| 877 ActivateWindowDelegate activate; |
| 878 ActivateWindowDelegate non_activate(false); |
| 879 |
| 880 scoped_ptr<Window> w1(CreateTestToplevelWindow(&non_activate, gfx::Rect())); |
| 881 scoped_ptr<Window> w2(CreateTestToplevelWindow(&activate, gfx::Rect())); |
| 882 scoped_ptr<Window> w3(CreateTestToplevelWindow(&non_activate, gfx::Rect())); |
| 883 EXPECT_EQ(w2.get(), toplevel_container_.GetTopmostWindowToActivate(NULL)); |
| 884 } |
| 885 |
| 822 class WindowObserverTest : public WindowTest, | 886 class WindowObserverTest : public WindowTest, |
| 823 public WindowObserver { | 887 public WindowObserver { |
| 824 public: | 888 public: |
| 825 WindowObserverTest() : added_count_(0), removed_count_(0) {} | 889 WindowObserverTest() : added_count_(0), removed_count_(0) {} |
| 826 | 890 |
| 827 virtual ~WindowObserverTest() {} | 891 virtual ~WindowObserverTest() {} |
| 828 | 892 |
| 829 // Returns a description of the WindowObserver methods that have been invoked. | 893 // Returns a description of the WindowObserver methods that have been invoked. |
| 830 std::string WindowObserverCountStateAndClear() { | 894 std::string WindowObserverCountStateAndClear() { |
| 831 std::string result( | 895 std::string result( |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 | 984 |
| 921 w3->Activate(); | 985 w3->Activate(); |
| 922 EXPECT_EQ(w2.get(), active()); | 986 EXPECT_EQ(w2.get(), active()); |
| 923 | 987 |
| 924 w1->Activate(); | 988 w1->Activate(); |
| 925 EXPECT_EQ(w1.get(), active()); | 989 EXPECT_EQ(w1.get(), active()); |
| 926 } | 990 } |
| 927 | 991 |
| 928 } // namespace test | 992 } // namespace test |
| 929 } // namespace aura | 993 } // namespace aura |
| OLD | NEW |