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

Side by Side Diff: services/ui/ws/window_manager_client_unittest.cc

Issue 2391853002: Makes mus not bring window to front on activation changes (Closed)
Patch Set: feedback Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « services/ui/ws/display.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 WindowTreeClient* embedded1 = Embed(child1).client; 854 WindowTreeClient* embedded1 = Embed(child1).client;
855 ASSERT_NE(nullptr, embedded1); 855 ASSERT_NE(nullptr, embedded1);
856 WindowTreeClient* embedded2 = Embed(child2).client; 856 WindowTreeClient* embedded2 = Embed(child2).client;
857 ASSERT_NE(nullptr, embedded2); 857 ASSERT_NE(nullptr, embedded2);
858 858
859 Window* child11 = NewVisibleWindow(GetFirstRoot(embedded1), embedded1); 859 Window* child11 = NewVisibleWindow(GetFirstRoot(embedded1), embedded1);
860 Window* child21 = NewVisibleWindow(GetFirstRoot(embedded2), embedded2); 860 Window* child21 = NewVisibleWindow(GetFirstRoot(embedded2), embedded2);
861 861
862 WaitForTreeSizeToMatch(parent, 6); 862 WaitForTreeSizeToMatch(parent, 6);
863 863
864 // |child2| and |child3| are stacked about |child1|. 864 EXPECT_EQ(0, ValidIndexOf(parent->children(), child1));
865 EXPECT_GT(ValidIndexOf(parent->children(), child2), 865 // NOTE: |child3| is after |child1| as |child3| is a transient child of
866 ValidIndexOf(parent->children(), child1)); 866 // |child1|.
867 EXPECT_GT(ValidIndexOf(parent->children(), child3), 867 EXPECT_EQ(1, ValidIndexOf(parent->children(), child3));
868 ValidIndexOf(parent->children(), child1)); 868 EXPECT_EQ(2, ValidIndexOf(parent->children(), child2));
869 869
870 // Set focus on |child11|. This should activate |child1|, and raise it over 870 // Set focus on |child11|, order of windows should not change.
871 // |child2|. But |child3| should still be above |child1| because of
872 // transiency.
873 child11->SetFocus(); 871 child11->SetFocus();
874 ASSERT_TRUE(WaitForWindowToHaveFocus(child11)); 872 ASSERT_TRUE(WaitForWindowToHaveFocus(child11));
875 ASSERT_TRUE(WaitForWindowToHaveFocus( 873 ASSERT_TRUE(WaitForWindowToHaveFocus(
876 GetChildWindowByServerId(window_manager(), server_id(child11)))); 874 GetChildWindowByServerId(window_manager(), server_id(child11))));
877 EXPECT_EQ(server_id(child11), 875 EXPECT_EQ(server_id(child11),
878 server_id(window_manager()->GetFocusedWindow())); 876 server_id(window_manager()->GetFocusedWindow()));
879 EXPECT_EQ(server_id(child11), server_id(embedded1->GetFocusedWindow())); 877 EXPECT_EQ(server_id(child11), server_id(embedded1->GetFocusedWindow()));
880 EXPECT_EQ(nullptr, embedded2->GetFocusedWindow()); 878 EXPECT_EQ(nullptr, embedded2->GetFocusedWindow());
881 EXPECT_GT(ValidIndexOf(parent->children(), child1), 879 EXPECT_EQ(0, ValidIndexOf(parent->children(), child1));
882 ValidIndexOf(parent->children(), child2)); 880 EXPECT_EQ(1, ValidIndexOf(parent->children(), child3));
883 EXPECT_GT(ValidIndexOf(parent->children(), child3), 881 EXPECT_EQ(2, ValidIndexOf(parent->children(), child2));
884 ValidIndexOf(parent->children(), child1));
885 882
886 // Set focus on |child21|. This should activate |child2|, and raise it over 883 // Set focus on |child21|. This should activate |child2|. Again, order should
887 // |child1|. 884 // not change.
888 child21->SetFocus(); 885 child21->SetFocus();
889 ASSERT_TRUE(WaitForWindowToHaveFocus(child21)); 886 ASSERT_TRUE(WaitForWindowToHaveFocus(child21));
890 ASSERT_TRUE(WaitForWindowToHaveFocus( 887 ASSERT_TRUE(WaitForWindowToHaveFocus(
891 GetChildWindowByServerId(window_manager(), server_id(child21)))); 888 GetChildWindowByServerId(window_manager(), server_id(child21))));
892 EXPECT_EQ(server_id(child21), 889 EXPECT_EQ(server_id(child21),
893 server_id(window_manager()->GetFocusedWindow())); 890 server_id(window_manager()->GetFocusedWindow()));
894 EXPECT_EQ(server_id(child21), server_id(embedded2->GetFocusedWindow())); 891 EXPECT_EQ(server_id(child21), server_id(embedded2->GetFocusedWindow()));
895 EXPECT_TRUE(WaitForNoWindowToHaveFocus(embedded1)); 892 EXPECT_TRUE(WaitForNoWindowToHaveFocus(embedded1));
896 EXPECT_EQ(nullptr, embedded1->GetFocusedWindow()); 893 EXPECT_EQ(nullptr, embedded1->GetFocusedWindow());
897 EXPECT_GT(ValidIndexOf(parent->children(), child2), 894 EXPECT_EQ(0, ValidIndexOf(parent->children(), child1));
898 ValidIndexOf(parent->children(), child1)); 895 EXPECT_EQ(1, ValidIndexOf(parent->children(), child3));
899 EXPECT_GT(ValidIndexOf(parent->children(), child3), 896 EXPECT_EQ(2, ValidIndexOf(parent->children(), child2));
900 ValidIndexOf(parent->children(), child1));
901 } 897 }
902 898
903 TEST_F(WindowServerTest, ActivationNext) { 899 TEST_F(WindowServerTest, ActivationNext) {
904 Window* parent = GetFirstWMRoot(); 900 Window* parent = GetFirstWMRoot();
905 Window* child1 = NewVisibleWindow(parent, window_manager()); 901 Window* child1 = NewVisibleWindow(parent, window_manager());
906 Window* child2 = NewVisibleWindow(parent, window_manager()); 902 Window* child2 = NewVisibleWindow(parent, window_manager());
907 Window* child3 = NewVisibleWindow(parent, window_manager()); 903 Window* child3 = NewVisibleWindow(parent, window_manager());
908 904
909 WindowTreeClient* embedded1 = Embed(child1).client; 905 WindowTreeClient* embedded1 = Embed(child1).client;
910 ASSERT_NE(nullptr, embedded1); 906 ASSERT_NE(nullptr, embedded1);
911 WindowTreeClient* embedded2 = Embed(child2).client; 907 WindowTreeClient* embedded2 = Embed(child2).client;
912 ASSERT_NE(nullptr, embedded2); 908 ASSERT_NE(nullptr, embedded2);
913 WindowTreeClient* embedded3 = Embed(child3).client; 909 WindowTreeClient* embedded3 = Embed(child3).client;
914 ASSERT_NE(nullptr, embedded3); 910 ASSERT_NE(nullptr, embedded3);
915 911
916 Window* child11 = NewVisibleWindow(GetFirstRoot(embedded1), embedded1); 912 Window* child11 = NewVisibleWindow(GetFirstRoot(embedded1), embedded1);
917 Window* child21 = NewVisibleWindow(GetFirstRoot(embedded2), embedded2); 913 Window* child21 = NewVisibleWindow(GetFirstRoot(embedded2), embedded2);
918 Window* child31 = NewVisibleWindow(GetFirstRoot(embedded3), embedded3); 914 Window* child31 = NewVisibleWindow(GetFirstRoot(embedded3), embedded3);
919 WaitForTreeSizeToMatch(parent, 7); 915 WaitForTreeSizeToMatch(parent, 7);
920 916
921 Window* expecteds[] = { child3, child2, child1, child3, nullptr };
922 Window* focused[] = { child31, child21, child11, child31, nullptr }; 917 Window* focused[] = { child31, child21, child11, child31, nullptr };
923 for (size_t index = 0; expecteds[index]; ++index) { 918 for (size_t index = 0; focused[index]; ++index) {
924 window_manager_client()->ActivateNextWindow(); 919 window_manager_client()->ActivateNextWindow();
925 WaitForWindowToHaveFocus(focused[index]); 920 WaitForWindowToHaveFocus(focused[index]);
926 EXPECT_TRUE(focused[index]->HasFocus()); 921 EXPECT_TRUE(focused[index]->HasFocus());
927 EXPECT_EQ(parent->children().back(), expecteds[index]);
928 } 922 }
929 } 923 }
930 924
931 namespace { 925 namespace {
932 926
933 class DestroyedChangedObserver : public WindowObserver { 927 class DestroyedChangedObserver : public WindowObserver {
934 public: 928 public:
935 DestroyedChangedObserver(Window* window, bool* got_destroy) 929 DestroyedChangedObserver(Window* window, bool* got_destroy)
936 : window_(window), got_destroy_(got_destroy) { 930 : window_(window), got_destroy_(got_destroy) {
937 window_->AddObserver(this); 931 window_->AddObserver(this);
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 ASSERT_TRUE(window_in_wm); 1124 ASSERT_TRUE(window_in_wm);
1131 1125
1132 // Change the bounds in the wm, and make sure the child sees it. 1126 // Change the bounds in the wm, and make sure the child sees it.
1133 window_in_wm->SetBounds(gfx::Rect(1, 11, 12, 101)); 1127 window_in_wm->SetBounds(gfx::Rect(1, 11, 12, 101));
1134 ASSERT_TRUE(WaitForBoundsToChange(window_in_second_client)); 1128 ASSERT_TRUE(WaitForBoundsToChange(window_in_second_client));
1135 EXPECT_EQ(gfx::Rect(1, 11, 12, 101), window_in_second_client->bounds()); 1129 EXPECT_EQ(gfx::Rect(1, 11, 12, 101), window_in_second_client->bounds());
1136 } 1130 }
1137 1131
1138 } // namespace ws 1132 } // namespace ws
1139 } // namespace ui 1133 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/ws/display.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698