OLD | NEW |
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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "chrome/app/chrome_command_ids.h" | 8 #include "chrome/app/chrome_command_ids.h" |
9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
10 #include "chrome/browser/devtools/devtools_window.h" | 10 #include "chrome/browser/devtools/devtools_window.h" |
(...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
947 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, ActivatePanelOrTabbedWindow) { | 947 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, ActivatePanelOrTabbedWindow) { |
948 if (!WmSupportWindowActivation()) { | 948 if (!WmSupportWindowActivation()) { |
949 LOG(WARNING) << "Skipping test due to WM problems."; | 949 LOG(WARNING) << "Skipping test due to WM problems."; |
950 return; | 950 return; |
951 } | 951 } |
952 | 952 |
953 Panel* panel1 = CreatePanel("Panel1"); | 953 Panel* panel1 = CreatePanel("Panel1"); |
954 Panel* panel2 = CreatePanel("Panel2"); | 954 Panel* panel2 = CreatePanel("Panel2"); |
955 | 955 |
956 // Activate main tabbed window. | 956 // Activate main tabbed window. |
957 browser()->window()->Activate(); | 957 browser()->window()->Activate(false /* user_gesture */); |
958 WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); | 958 WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); |
959 | 959 |
960 // Activate a panel. | 960 // Activate a panel. |
961 panel2->Activate(); | 961 panel2->Activate(false /* user_gesture */); |
962 WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE); | 962 WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE); |
963 | 963 |
964 // Activate the main tabbed window back. | 964 // Activate the main tabbed window back. |
965 browser()->window()->Activate(); | 965 browser()->window()->Activate(false /* user_gesture */); |
966 WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); | 966 WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); |
967 | 967 |
968 // Activate another panel. | 968 // Activate another panel. |
969 panel1->Activate(); | 969 panel1->Activate(false /* user_gesture */); |
970 WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); | 970 WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); |
971 WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); | 971 WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); |
972 | 972 |
973 // Switch focus between panels. | 973 // Switch focus between panels. |
974 panel2->Activate(); | 974 panel2->Activate(false /* user_gesture */); |
975 WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE); | 975 WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE); |
976 WaitForPanelActiveState(panel1, SHOW_AS_INACTIVE); | 976 WaitForPanelActiveState(panel1, SHOW_AS_INACTIVE); |
977 | 977 |
978 PanelManager::GetInstance()->CloseAll(); | 978 PanelManager::GetInstance()->CloseAll(); |
979 } | 979 } |
980 | 980 |
981 // TODO(jianli): To be enabled for other platforms. | 981 // TODO(jianli): To be enabled for other platforms. |
982 #if defined(OS_WIN) || defined(OS_LINUX) | 982 #if defined(OS_WIN) || defined(OS_LINUX) |
983 #define MAYBE_ActivateDeactivateBasic ActivateDeactivateBasic | 983 #define MAYBE_ActivateDeactivateBasic ActivateDeactivateBasic |
984 #else | 984 #else |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 | 1029 |
1030 std::vector<bool> expected_active_states; | 1030 std::vector<bool> expected_active_states; |
1031 std::vector<bool> last_active_states; | 1031 std::vector<bool> last_active_states; |
1032 | 1032 |
1033 // The last created panel, P3, should be active. | 1033 // The last created panel, P3, should be active. |
1034 expected_active_states = ProduceExpectedActiveStates(3); | 1034 expected_active_states = ProduceExpectedActiveStates(3); |
1035 EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); | 1035 EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); |
1036 EXPECT_FALSE(tabbed_window->IsActive()); | 1036 EXPECT_FALSE(tabbed_window->IsActive()); |
1037 | 1037 |
1038 // Activating P1 should cause P3 to lose focus. | 1038 // Activating P1 should cause P3 to lose focus. |
1039 panels[1]->Activate(); | 1039 panels[1]->Activate(false /* user_gesture */); |
1040 last_active_states = expected_active_states; | 1040 last_active_states = expected_active_states; |
1041 expected_active_states = ProduceExpectedActiveStates(1); | 1041 expected_active_states = ProduceExpectedActiveStates(1); |
1042 WaitForPanelActiveStates(last_active_states, expected_active_states); | 1042 WaitForPanelActiveStates(last_active_states, expected_active_states); |
1043 EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); | 1043 EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); |
1044 | 1044 |
1045 // Minimizing inactive panel P2 should not affect other panels' active states. | 1045 // Minimizing inactive panel P2 should not affect other panels' active states. |
1046 panels[2]->SetExpansionState(Panel::MINIMIZED); | 1046 panels[2]->SetExpansionState(Panel::MINIMIZED); |
1047 EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); | 1047 EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); |
1048 EXPECT_FALSE(tabbed_window->IsActive()); | 1048 EXPECT_FALSE(tabbed_window->IsActive()); |
1049 } | 1049 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1105 MoveMouse(hover_point); | 1105 MoveMouse(hover_point); |
1106 EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); | 1106 EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
1107 EXPECT_EQ(Panel::MINIMIZED, panel2->expansion_state()); | 1107 EXPECT_EQ(Panel::MINIMIZED, panel2->expansion_state()); |
1108 | 1108 |
1109 // Test that we cannot bring down the panel that is drawing the attention. | 1109 // Test that we cannot bring down the panel that is drawing the attention. |
1110 hover_point.set_y(hover_point.y() - 200); | 1110 hover_point.set_y(hover_point.y() - 200); |
1111 MoveMouse(hover_point); | 1111 MoveMouse(hover_point); |
1112 EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); | 1112 EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
1113 | 1113 |
1114 // Test that the attention is cleared when activated. | 1114 // Test that the attention is cleared when activated. |
1115 panel1->Activate(); | 1115 panel1->Activate(false /* user_gesture */); |
1116 WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); | 1116 WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); |
1117 EXPECT_FALSE(panel1->IsDrawingAttention()); | 1117 EXPECT_FALSE(panel1->IsDrawingAttention()); |
1118 EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); | 1118 EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); |
1119 EXPECT_FALSE(native_panel1_testing->VerifyDrawingAttention()); | 1119 EXPECT_FALSE(native_panel1_testing->VerifyDrawingAttention()); |
1120 | 1120 |
1121 PanelManager::GetInstance()->CloseAll(); | 1121 PanelManager::GetInstance()->CloseAll(); |
1122 } | 1122 } |
1123 | 1123 |
1124 // Verify that minimized state of a panel is correct after draw attention | 1124 // Verify that minimized state of a panel is correct after draw attention |
1125 // is stopped when there are other minimized panels. | 1125 // is stopped when there are other minimized panels. |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1210 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionResetOnActivate) { | 1210 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionResetOnActivate) { |
1211 Panel* panel = CreateInactivePanel("P1"); | 1211 Panel* panel = CreateInactivePanel("P1"); |
1212 scoped_ptr<NativePanelTesting> native_panel_testing( | 1212 scoped_ptr<NativePanelTesting> native_panel_testing( |
1213 CreateNativePanelTesting(panel)); | 1213 CreateNativePanelTesting(panel)); |
1214 | 1214 |
1215 panel->FlashFrame(true); | 1215 panel->FlashFrame(true); |
1216 EXPECT_TRUE(panel->IsDrawingAttention()); | 1216 EXPECT_TRUE(panel->IsDrawingAttention()); |
1217 EXPECT_TRUE(native_panel_testing->VerifyDrawingAttention()); | 1217 EXPECT_TRUE(native_panel_testing->VerifyDrawingAttention()); |
1218 | 1218 |
1219 // Test that the attention is cleared when panel gets focus. | 1219 // Test that the attention is cleared when panel gets focus. |
1220 panel->Activate(); | 1220 panel->Activate(false /* user_gesture */); |
1221 WaitForPanelActiveState(panel, SHOW_AS_ACTIVE); | 1221 WaitForPanelActiveState(panel, SHOW_AS_ACTIVE); |
1222 EXPECT_FALSE(panel->IsDrawingAttention()); | 1222 EXPECT_FALSE(panel->IsDrawingAttention()); |
1223 EXPECT_FALSE(native_panel_testing->VerifyDrawingAttention()); | 1223 EXPECT_FALSE(native_panel_testing->VerifyDrawingAttention()); |
1224 | 1224 |
1225 panel->Close(); | 1225 panel->Close(); |
1226 } | 1226 } |
1227 | 1227 |
1228 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, | 1228 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
1229 DrawAttentionMinimizedNotResetOnActivate) { | 1229 DrawAttentionMinimizedNotResetOnActivate) { |
1230 Panel* panel = CreateInactivePanel("P1"); | 1230 Panel* panel = CreateInactivePanel("P1"); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1308 | 1308 |
1309 PanelActiveStateObserver signal(panel, false); | 1309 PanelActiveStateObserver signal(panel, false); |
1310 panel->Minimize(); | 1310 panel->Minimize(); |
1311 signal.Wait(); | 1311 signal.Wait(); |
1312 panel->Close(); | 1312 panel->Close(); |
1313 } | 1313 } |
1314 | 1314 |
1315 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreateInactiveSwitchToActive) { | 1315 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreateInactiveSwitchToActive) { |
1316 Panel* panel = CreateInactivePanel("1"); | 1316 Panel* panel = CreateInactivePanel("1"); |
1317 | 1317 |
1318 panel->Activate(); | 1318 panel->Activate(false /* user_gesture */); |
1319 WaitForPanelActiveState(panel, SHOW_AS_ACTIVE); | 1319 WaitForPanelActiveState(panel, SHOW_AS_ACTIVE); |
1320 | 1320 |
1321 panel->Close(); | 1321 panel->Close(); |
1322 } | 1322 } |
1323 | 1323 |
1324 // TODO(dimich): try/enable on other platforms. See bug 103253 for details on | 1324 // TODO(dimich): try/enable on other platforms. See bug 103253 for details on |
1325 // why this is disabled on windows. | 1325 // why this is disabled on windows. |
1326 #if defined(OS_MACOSX) | 1326 #if defined(OS_MACOSX) |
1327 #define MAYBE_MinimizeTwoPanelsWithoutTabbedWindow \ | 1327 #define MAYBE_MinimizeTwoPanelsWithoutTabbedWindow \ |
1328 MinimizeTwoPanelsWithoutTabbedWindow | 1328 MinimizeTwoPanelsWithoutTabbedWindow |
(...skipping 12 matching lines...) Expand all Loading... |
1341 | 1341 |
1342 // Close main tabbed window. | 1342 // Close main tabbed window. |
1343 content::WindowedNotificationObserver signal( | 1343 content::WindowedNotificationObserver signal( |
1344 chrome::NOTIFICATION_BROWSER_CLOSED, | 1344 chrome::NOTIFICATION_BROWSER_CLOSED, |
1345 content::Source<Browser>(browser())); | 1345 content::Source<Browser>(browser())); |
1346 chrome::CloseWindow(browser()); | 1346 chrome::CloseWindow(browser()); |
1347 signal.Wait(); | 1347 signal.Wait(); |
1348 | 1348 |
1349 EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); | 1349 EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); |
1350 EXPECT_EQ(Panel::EXPANDED, panel2->expansion_state()); | 1350 EXPECT_EQ(Panel::EXPANDED, panel2->expansion_state()); |
1351 panel1->Activate(); | 1351 panel1->Activate(false /* user_gesture */); |
1352 WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); | 1352 WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); |
1353 | 1353 |
1354 panel1->SetExpansionState(Panel::MINIMIZED); | 1354 panel1->SetExpansionState(Panel::MINIMIZED); |
1355 base::MessageLoop::current()->RunUntilIdle(); | 1355 base::MessageLoop::current()->RunUntilIdle(); |
1356 WaitForPanelActiveState(panel1, SHOW_AS_INACTIVE); | 1356 WaitForPanelActiveState(panel1, SHOW_AS_INACTIVE); |
1357 EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); | 1357 EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
1358 | 1358 |
1359 panel2->SetExpansionState(Panel::MINIMIZED); | 1359 panel2->SetExpansionState(Panel::MINIMIZED); |
1360 base::MessageLoop::current()->RunUntilIdle(); | 1360 base::MessageLoop::current()->RunUntilIdle(); |
1361 WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); | 1361 WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1772 #else | 1772 #else |
1773 #define MAYBE_FocusChangeEventOnMinimize FocusChangeEventOnMinimize | 1773 #define MAYBE_FocusChangeEventOnMinimize FocusChangeEventOnMinimize |
1774 #endif | 1774 #endif |
1775 IN_PROC_BROWSER_TEST_F(PanelExtensionApiTest, | 1775 IN_PROC_BROWSER_TEST_F(PanelExtensionApiTest, |
1776 MAYBE_FocusChangeEventOnMinimize) { | 1776 MAYBE_FocusChangeEventOnMinimize) { |
1777 // This is needed so the subsequently created panels can be activated. | 1777 // This is needed so the subsequently created panels can be activated. |
1778 // On a Mac, it transforms background-only test process into foreground one. | 1778 // On a Mac, it transforms background-only test process into foreground one. |
1779 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 1779 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
1780 ASSERT_TRUE(RunExtensionTest("panels/focus_change_on_minimize")) << message_; | 1780 ASSERT_TRUE(RunExtensionTest("panels/focus_change_on_minimize")) << message_; |
1781 } | 1781 } |
OLD | NEW |