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

Side by Side Diff: ui/wm/core/focus_controller_unittest.cc

Issue 1868363002: Replace scoped_ptr with std::unique_ptr in //ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scopedptrcc
Patch Set: scopedptrui: rebase-make_scoped_ptr Created 4 years, 8 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
« no previous file with comments | « ui/wm/core/focus_controller.h ('k') | ui/wm/core/image_grid.h » ('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 "ui/wm/core/focus_controller.h" 5 #include "ui/wm/core/focus_controller.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h"
10 #include "ui/aura/client/aura_constants.h" 11 #include "ui/aura/client/aura_constants.h"
11 #include "ui/aura/client/default_capture_client.h" 12 #include "ui/aura/client/default_capture_client.h"
12 #include "ui/aura/client/focus_change_observer.h" 13 #include "ui/aura/client/focus_change_observer.h"
13 #include "ui/aura/test/aura_test_base.h" 14 #include "ui/aura/test/aura_test_base.h"
14 #include "ui/aura/test/test_window_delegate.h" 15 #include "ui/aura/test/test_window_delegate.h"
15 #include "ui/aura/test/test_windows.h" 16 #include "ui/aura/test/test_windows.h"
16 #include "ui/aura/window.h" 17 #include "ui/aura/window.h"
17 #include "ui/aura/window_event_dispatcher.h" 18 #include "ui/aura/window_event_dispatcher.h"
18 #include "ui/aura/window_tracker.h" 19 #include "ui/aura/window_tracker.h"
19 #include "ui/events/event.h" 20 #include "ui/events/event.h"
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 virtual void ActivationRulesOverride() = 0; 463 virtual void ActivationRulesOverride() = 0;
463 virtual void ShiftFocusOnActivation() {} 464 virtual void ShiftFocusOnActivation() {}
464 virtual void ShiftFocusOnActivationDueToHide() {} 465 virtual void ShiftFocusOnActivationDueToHide() {}
465 virtual void NoShiftActiveOnActivation() {} 466 virtual void NoShiftActiveOnActivation() {}
466 virtual void FocusChangeDuringDrag() {} 467 virtual void FocusChangeDuringDrag() {}
467 virtual void ChangeFocusWhenNothingFocusedAndCaptured() {} 468 virtual void ChangeFocusWhenNothingFocusedAndCaptured() {}
468 virtual void DontPassDeletedWindow() {} 469 virtual void DontPassDeletedWindow() {}
469 virtual void StackWindowAtTopOnActivation() {} 470 virtual void StackWindowAtTopOnActivation() {}
470 471
471 private: 472 private:
472 scoped_ptr<FocusController> focus_controller_; 473 std::unique_ptr<FocusController> focus_controller_;
473 TestFocusRules* test_focus_rules_; 474 TestFocusRules* test_focus_rules_;
474 scoped_ptr<wm::WMState> wm_state_; 475 std::unique_ptr<wm::WMState> wm_state_;
475 476
476 DISALLOW_COPY_AND_ASSIGN(FocusControllerTestBase); 477 DISALLOW_COPY_AND_ASSIGN(FocusControllerTestBase);
477 }; 478 };
478 479
479 // Test base for tests where focus is directly set to a target window. 480 // Test base for tests where focus is directly set to a target window.
480 class FocusControllerDirectTestBase : public FocusControllerTestBase { 481 class FocusControllerDirectTestBase : public FocusControllerTestBase {
481 protected: 482 protected:
482 FocusControllerDirectTestBase() {} 483 FocusControllerDirectTestBase() {}
483 484
484 // Different test types shift focus in different ways. 485 // Different test types shift focus in different ways.
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 EXPECT_EQ(2, GetFocusedWindowId()); 686 EXPECT_EQ(2, GetFocusedWindowId());
686 ActivateWindowById(1); 687 ActivateWindowById(1);
687 EXPECT_EQ(1, GetFocusedWindowId()); 688 EXPECT_EQ(1, GetFocusedWindowId());
688 689
689 ActivateWindowById(2); 690 ActivateWindowById(2);
690 691
691 aura::Window* target = root_window()->GetChildById(1); 692 aura::Window* target = root_window()->GetChildById(1);
692 aura::client::ActivationClient* client = 693 aura::client::ActivationClient* client =
693 aura::client::GetActivationClient(root_window()); 694 aura::client::GetActivationClient(root_window());
694 695
695 scoped_ptr<FocusShiftingActivationObserver> observer( 696 std::unique_ptr<FocusShiftingActivationObserver> observer(
696 new FocusShiftingActivationObserver(target)); 697 new FocusShiftingActivationObserver(target));
697 observer->set_shift_focus_to(target->GetChildById(11)); 698 observer->set_shift_focus_to(target->GetChildById(11));
698 client->AddObserver(observer.get()); 699 client->AddObserver(observer.get());
699 700
700 ActivateWindowById(1); 701 ActivateWindowById(1);
701 702
702 // w1's ActivationChangeObserver shifted focus to this child, pre-empting 703 // w1's ActivationChangeObserver shifted focus to this child, pre-empting
703 // FocusController's default setting. 704 // FocusController's default setting.
704 EXPECT_EQ(11, GetFocusedWindowId()); 705 EXPECT_EQ(11, GetFocusedWindowId());
705 706
(...skipping 20 matching lines...) Expand all
726 EXPECT_EQ(1, GetFocusedWindowId()); 727 EXPECT_EQ(1, GetFocusedWindowId());
727 728
728 // Removes window 3 as candidate for next activatable window. 729 // Removes window 3 as candidate for next activatable window.
729 root_window()->GetChildById(3)->Hide(); 730 root_window()->GetChildById(3)->Hide();
730 EXPECT_EQ(1, GetFocusedWindowId()); 731 EXPECT_EQ(1, GetFocusedWindowId());
731 732
732 aura::Window* target = root_window()->GetChildById(2); 733 aura::Window* target = root_window()->GetChildById(2);
733 aura::client::ActivationClient* client = 734 aura::client::ActivationClient* client =
734 aura::client::GetActivationClient(root_window()); 735 aura::client::GetActivationClient(root_window());
735 736
736 scoped_ptr<FocusShiftingActivationObserver> observer( 737 std::unique_ptr<FocusShiftingActivationObserver> observer(
737 new FocusShiftingActivationObserver(target)); 738 new FocusShiftingActivationObserver(target));
738 observer->set_shift_focus_to(target->GetChildById(21)); 739 observer->set_shift_focus_to(target->GetChildById(21));
739 client->AddObserver(observer.get()); 740 client->AddObserver(observer.get());
740 741
741 // Hide the active window. 742 // Hide the active window.
742 root_window()->GetChildById(1)->Hide(); 743 root_window()->GetChildById(1)->Hide();
743 744
744 EXPECT_EQ(21, GetFocusedWindowId()); 745 EXPECT_EQ(21, GetFocusedWindowId());
745 746
746 client->RemoveObserver(observer.get()); 747 client->RemoveObserver(observer.get());
747 } 748 }
748 void NoShiftActiveOnActivation() override { 749 void NoShiftActiveOnActivation() override {
749 // When a window is activated, we need to prevent any change to activation 750 // When a window is activated, we need to prevent any change to activation
750 // from being made in response to an activation change notification. 751 // from being made in response to an activation change notification.
751 } 752 }
752 753
753 void FocusChangeDuringDrag() override { 754 void FocusChangeDuringDrag() override {
754 scoped_ptr<aura::client::DefaultCaptureClient> capture_client( 755 std::unique_ptr<aura::client::DefaultCaptureClient> capture_client(
755 new aura::client::DefaultCaptureClient(root_window())); 756 new aura::client::DefaultCaptureClient(root_window()));
756 // Activating an inactive window during drag should activate the window. 757 // Activating an inactive window during drag should activate the window.
757 // This emulates the behavior of tab dragging which is merged into the 758 // This emulates the behavior of tab dragging which is merged into the
758 // window below. 759 // window below.
759 ActivateWindowById(1); 760 ActivateWindowById(1);
760 761
761 EXPECT_EQ(1, GetActiveWindowId()); 762 EXPECT_EQ(1, GetActiveWindowId());
762 EXPECT_EQ(1, GetFocusedWindowId()); 763 EXPECT_EQ(1, GetFocusedWindowId());
763 764
764 aura::Window* w2 = root_window()->GetChildById(2); 765 aura::Window* w2 = root_window()->GetChildById(2);
(...skipping 11 matching lines...) Expand all
776 aura::client::GetActivationClient(root_window())->ActivateWindow(w1); 777 aura::client::GetActivationClient(root_window())->ActivateWindow(w1);
777 EXPECT_EQ(1, GetActiveWindowId()); 778 EXPECT_EQ(1, GetActiveWindowId());
778 EXPECT_EQ(1, GetFocusedWindowId()); 779 EXPECT_EQ(1, GetFocusedWindowId());
779 780
780 generator.ReleaseLeftButton(); 781 generator.ReleaseLeftButton();
781 aura::client::GetCaptureClient(root_window())->ReleaseCapture(w1); 782 aura::client::GetCaptureClient(root_window())->ReleaseCapture(w1);
782 } 783 }
783 784
784 // Verifies focus change is honored while capture held. 785 // Verifies focus change is honored while capture held.
785 void ChangeFocusWhenNothingFocusedAndCaptured() override { 786 void ChangeFocusWhenNothingFocusedAndCaptured() override {
786 scoped_ptr<aura::client::DefaultCaptureClient> capture_client( 787 std::unique_ptr<aura::client::DefaultCaptureClient> capture_client(
787 new aura::client::DefaultCaptureClient(root_window())); 788 new aura::client::DefaultCaptureClient(root_window()));
788 aura::Window* w1 = root_window()->GetChildById(1); 789 aura::Window* w1 = root_window()->GetChildById(1);
789 aura::client::GetCaptureClient(root_window())->SetCapture(w1); 790 aura::client::GetCaptureClient(root_window())->SetCapture(w1);
790 791
791 EXPECT_EQ(-1, GetActiveWindowId()); 792 EXPECT_EQ(-1, GetActiveWindowId());
792 EXPECT_EQ(-1, GetFocusedWindowId()); 793 EXPECT_EQ(-1, GetFocusedWindowId());
793 794
794 FocusWindowById(1); 795 FocusWindowById(1);
795 796
796 EXPECT_EQ(1, GetActiveWindowId()); 797 EXPECT_EQ(1, GetActiveWindowId());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 836
836 EXPECT_EQ(to_delete, observer1.GetDeletedWindow()); 837 EXPECT_EQ(to_delete, observer1.GetDeletedWindow());
837 EXPECT_FALSE(observer2.was_notified_with_deleted_window()); 838 EXPECT_FALSE(observer2.was_notified_with_deleted_window());
838 } 839 }
839 } 840 }
840 841
841 // Test that the activation of the current active window will bring the window 842 // Test that the activation of the current active window will bring the window
842 // to the top of the window stack. 843 // to the top of the window stack.
843 void StackWindowAtTopOnActivation() override { 844 void StackWindowAtTopOnActivation() override {
844 // Create a window, show it and then activate it. 845 // Create a window, show it and then activate it.
845 scoped_ptr<aura::Window> window1 = 846 std::unique_ptr<aura::Window> window1 =
846 make_scoped_ptr(new aura::Window(nullptr)); 847 base::WrapUnique(new aura::Window(nullptr));
847 window1->SetType(ui::wm::WINDOW_TYPE_NORMAL); 848 window1->SetType(ui::wm::WINDOW_TYPE_NORMAL);
848 window1->Init(ui::LAYER_TEXTURED); 849 window1->Init(ui::LAYER_TEXTURED);
849 root_window()->AddChild(window1.get()); 850 root_window()->AddChild(window1.get());
850 window1->Show(); 851 window1->Show();
851 ActivateWindow(window1.get()); 852 ActivateWindow(window1.get());
852 EXPECT_EQ(window1.get(), root_window()->children().back()); 853 EXPECT_EQ(window1.get(), root_window()->children().back());
853 EXPECT_EQ(window1.get(), GetActiveWindow()); 854 EXPECT_EQ(window1.get(), GetActiveWindow());
854 855
855 // Create another window, show it but don't activate it. The window is not 856 // Create another window, show it but don't activate it. The window is not
856 // the active window but is placed on top of window stack. 857 // the active window but is placed on top of window stack.
857 scoped_ptr<aura::Window> window2 = 858 std::unique_ptr<aura::Window> window2 =
858 make_scoped_ptr(new aura::Window(nullptr)); 859 base::WrapUnique(new aura::Window(nullptr));
859 window2->SetType(ui::wm::WINDOW_TYPE_NORMAL); 860 window2->SetType(ui::wm::WINDOW_TYPE_NORMAL);
860 window2->Init(ui::LAYER_TEXTURED); 861 window2->Init(ui::LAYER_TEXTURED);
861 root_window()->AddChild(window2.get()); 862 root_window()->AddChild(window2.get());
862 window2->Show(); 863 window2->Show();
863 EXPECT_EQ(window2.get(), root_window()->children().back()); 864 EXPECT_EQ(window2.get(), root_window()->children().back());
864 EXPECT_EQ(window1.get(), GetActiveWindow()); 865 EXPECT_EQ(window1.get(), GetActiveWindow());
865 866
866 // Try to reactivate the active window. It should bring the active window 867 // Try to reactivate the active window. It should bring the active window
867 // to the top of the window stack. 868 // to the top of the window stack.
868 ActivateWindow(window1.get()); 869 ActivateWindow(window1.get());
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 aura::Window* disposition_window = GetDispositionWindow(window); 1201 aura::Window* disposition_window = GetDispositionWindow(window);
1201 disposition_window->parent()->RemoveChild(disposition_window); 1202 disposition_window->parent()->RemoveChild(disposition_window);
1202 window_owner_.reset(disposition_window); 1203 window_owner_.reset(disposition_window);
1203 } 1204 }
1204 void TearDown() override { 1205 void TearDown() override {
1205 window_owner_.reset(); 1206 window_owner_.reset();
1206 FocusControllerImplicitTestBase::TearDown(); 1207 FocusControllerImplicitTestBase::TearDown();
1207 } 1208 }
1208 1209
1209 private: 1210 private:
1210 scoped_ptr<aura::Window> window_owner_; 1211 std::unique_ptr<aura::Window> window_owner_;
1211 1212
1212 DISALLOW_COPY_AND_ASSIGN(FocusControllerRemovalTest); 1213 DISALLOW_COPY_AND_ASSIGN(FocusControllerRemovalTest);
1213 }; 1214 };
1214 1215
1215 // Focus and Activation changes in response to window parent removal. 1216 // Focus and Activation changes in response to window parent removal.
1216 class FocusControllerParentRemovalTest : public FocusControllerRemovalTest { 1217 class FocusControllerParentRemovalTest : public FocusControllerRemovalTest {
1217 public: 1218 public:
1218 FocusControllerParentRemovalTest() : FocusControllerRemovalTest(true) {} 1219 FocusControllerParentRemovalTest() : FocusControllerRemovalTest(true) {}
1219 1220
1220 private: 1221 private:
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 FOCUS_CONTROLLER_TEST(FocusControllerApiTest, StackWindowAtTopOnActivation); 1321 FOCUS_CONTROLLER_TEST(FocusControllerApiTest, StackWindowAtTopOnActivation);
1321 1322
1322 // See description above TransientChildWindowActivationTest() for details. 1323 // See description above TransientChildWindowActivationTest() for details.
1323 FOCUS_CONTROLLER_TEST(FocusControllerParentHideTest, 1324 FOCUS_CONTROLLER_TEST(FocusControllerParentHideTest,
1324 TransientChildWindowActivationTest); 1325 TransientChildWindowActivationTest);
1325 1326
1326 // If a mouse event was handled, it should not activate a window. 1327 // If a mouse event was handled, it should not activate a window.
1327 FOCUS_CONTROLLER_TEST(FocusControllerMouseEventTest, IgnoreHandledEvent); 1328 FOCUS_CONTROLLER_TEST(FocusControllerMouseEventTest, IgnoreHandledEvent);
1328 1329
1329 } // namespace wm 1330 } // namespace wm
OLDNEW
« no previous file with comments | « ui/wm/core/focus_controller.h ('k') | ui/wm/core/image_grid.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698