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 "chrome/browser/ui/tabs/tab_strip_model.h" | 5 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 // If the last tab in the group is closed, the preceding tab in the same | 750 // If the last tab in the group is closed, the preceding tab in the same |
751 // group should be selected. | 751 // group should be selected. |
752 EXPECT_EQ(3, tabstrip.GetIndexOfNextWebContentsOpenedBy(contents5, 4, false)); | 752 EXPECT_EQ(3, tabstrip.GetIndexOfNextWebContentsOpenedBy(contents5, 4, false)); |
753 | 753 |
754 tabstrip.CloseAllTabs(); | 754 tabstrip.CloseAllTabs(); |
755 EXPECT_TRUE(tabstrip.empty()); | 755 EXPECT_TRUE(tabstrip.empty()); |
756 } | 756 } |
757 | 757 |
758 static int GetInsertionIndex(TabStripModel* tabstrip) { | 758 static int GetInsertionIndex(TabStripModel* tabstrip) { |
759 return tabstrip->order_controller()->DetermineInsertionIndex( | 759 return tabstrip->order_controller()->DetermineInsertionIndex( |
760 content::PAGE_TRANSITION_LINK, false); | 760 ui::PAGE_TRANSITION_LINK, false); |
761 } | 761 } |
762 | 762 |
763 static void InsertWebContentses(TabStripModel* tabstrip, | 763 static void InsertWebContentses(TabStripModel* tabstrip, |
764 WebContents* contents1, | 764 WebContents* contents1, |
765 WebContents* contents2, | 765 WebContents* contents2, |
766 WebContents* contents3) { | 766 WebContents* contents3) { |
767 tabstrip->InsertWebContentsAt(GetInsertionIndex(tabstrip), | 767 tabstrip->InsertWebContentsAt(GetInsertionIndex(tabstrip), |
768 contents1, | 768 contents1, |
769 TabStripModel::ADD_INHERIT_GROUP); | 769 TabStripModel::ADD_INHERIT_GROUP); |
770 tabstrip->InsertWebContentsAt(GetInsertionIndex(tabstrip), | 770 tabstrip->InsertWebContentsAt(GetInsertionIndex(tabstrip), |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
831 | 831 |
832 // The opener API should work... | 832 // The opener API should work... |
833 EXPECT_EQ(3, tabstrip.GetIndexOfNextWebContentsOpenedBy(opener, 2, false)); | 833 EXPECT_EQ(3, tabstrip.GetIndexOfNextWebContentsOpenedBy(opener, 2, false)); |
834 EXPECT_EQ(2, tabstrip.GetIndexOfNextWebContentsOpenedBy(opener, 3, false)); | 834 EXPECT_EQ(2, tabstrip.GetIndexOfNextWebContentsOpenedBy(opener, 3, false)); |
835 EXPECT_EQ(3, tabstrip.GetIndexOfLastWebContentsOpenedBy(opener, 1)); | 835 EXPECT_EQ(3, tabstrip.GetIndexOfLastWebContentsOpenedBy(opener, 1)); |
836 | 836 |
837 // Now open a foreground tab from a link. It should be opened adjacent to the | 837 // Now open a foreground tab from a link. It should be opened adjacent to the |
838 // opener tab. | 838 // opener tab. |
839 WebContents* fg_link_contents = CreateWebContents(); | 839 WebContents* fg_link_contents = CreateWebContents(); |
840 int insert_index = tabstrip.order_controller()->DetermineInsertionIndex( | 840 int insert_index = tabstrip.order_controller()->DetermineInsertionIndex( |
841 content::PAGE_TRANSITION_LINK, true); | 841 ui::PAGE_TRANSITION_LINK, true); |
842 EXPECT_EQ(1, insert_index); | 842 EXPECT_EQ(1, insert_index); |
843 tabstrip.InsertWebContentsAt(insert_index, fg_link_contents, | 843 tabstrip.InsertWebContentsAt(insert_index, fg_link_contents, |
844 TabStripModel::ADD_ACTIVE | | 844 TabStripModel::ADD_ACTIVE | |
845 TabStripModel::ADD_INHERIT_GROUP); | 845 TabStripModel::ADD_INHERIT_GROUP); |
846 EXPECT_EQ(1, tabstrip.active_index()); | 846 EXPECT_EQ(1, tabstrip.active_index()); |
847 EXPECT_EQ(fg_link_contents, tabstrip.GetActiveWebContents()); | 847 EXPECT_EQ(fg_link_contents, tabstrip.GetActiveWebContents()); |
848 | 848 |
849 // Now close this contents. The selection should move to the opener contents. | 849 // Now close this contents. The selection should move to the opener contents. |
850 tabstrip.CloseSelectedTabs(); | 850 tabstrip.CloseSelectedTabs(); |
851 EXPECT_EQ(0, tabstrip.active_index()); | 851 EXPECT_EQ(0, tabstrip.active_index()); |
852 | 852 |
853 // Now open a new empty tab. It should open at the end of the strip. | 853 // Now open a new empty tab. It should open at the end of the strip. |
854 WebContents* fg_nonlink_contents = CreateWebContents(); | 854 WebContents* fg_nonlink_contents = CreateWebContents(); |
855 insert_index = tabstrip.order_controller()->DetermineInsertionIndex( | 855 insert_index = tabstrip.order_controller()->DetermineInsertionIndex( |
856 content::PAGE_TRANSITION_AUTO_BOOKMARK, true); | 856 ui::PAGE_TRANSITION_AUTO_BOOKMARK, true); |
857 EXPECT_EQ(tabstrip.count(), insert_index); | 857 EXPECT_EQ(tabstrip.count(), insert_index); |
858 // We break the opener relationship... | 858 // We break the opener relationship... |
859 tabstrip.InsertWebContentsAt(insert_index, | 859 tabstrip.InsertWebContentsAt(insert_index, |
860 fg_nonlink_contents, | 860 fg_nonlink_contents, |
861 TabStripModel::ADD_NONE); | 861 TabStripModel::ADD_NONE); |
862 // Now select it, so that user_gesture == true causes the opener relationship | 862 // Now select it, so that user_gesture == true causes the opener relationship |
863 // to be forgotten... | 863 // to be forgotten... |
864 tabstrip.ActivateTabAt(tabstrip.count() - 1, true); | 864 tabstrip.ActivateTabAt(tabstrip.count() - 1, true); |
865 EXPECT_EQ(tabstrip.count() - 1, tabstrip.active_index()); | 865 EXPECT_EQ(tabstrip.count() - 1, tabstrip.active_index()); |
866 EXPECT_EQ(fg_nonlink_contents, tabstrip.GetActiveWebContents()); | 866 EXPECT_EQ(fg_nonlink_contents, tabstrip.GetActiveWebContents()); |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1226 // using this "smart" function with a simulated middle click action on a series | 1226 // using this "smart" function with a simulated middle click action on a series |
1227 // of links on the home page. | 1227 // of links on the home page. |
1228 TEST_F(TabStripModelTest, AddWebContents_MiddleClickLinksAndClose) { | 1228 TEST_F(TabStripModelTest, AddWebContents_MiddleClickLinksAndClose) { |
1229 TabStripDummyDelegate delegate; | 1229 TabStripDummyDelegate delegate; |
1230 TabStripModel tabstrip(&delegate, profile()); | 1230 TabStripModel tabstrip(&delegate, profile()); |
1231 EXPECT_TRUE(tabstrip.empty()); | 1231 EXPECT_TRUE(tabstrip.empty()); |
1232 | 1232 |
1233 // Open the Home Page. | 1233 // Open the Home Page. |
1234 WebContents* homepage_contents = CreateWebContents(); | 1234 WebContents* homepage_contents = CreateWebContents(); |
1235 tabstrip.AddWebContents( | 1235 tabstrip.AddWebContents( |
1236 homepage_contents, -1, content::PAGE_TRANSITION_AUTO_BOOKMARK, | 1236 homepage_contents, -1, ui::PAGE_TRANSITION_AUTO_BOOKMARK, |
1237 TabStripModel::ADD_ACTIVE); | 1237 TabStripModel::ADD_ACTIVE); |
1238 | 1238 |
1239 // Open some other tab, by user typing. | 1239 // Open some other tab, by user typing. |
1240 WebContents* typed_page_contents = CreateWebContents(); | 1240 WebContents* typed_page_contents = CreateWebContents(); |
1241 tabstrip.AddWebContents( | 1241 tabstrip.AddWebContents( |
1242 typed_page_contents, -1, content::PAGE_TRANSITION_TYPED, | 1242 typed_page_contents, -1, ui::PAGE_TRANSITION_TYPED, |
1243 TabStripModel::ADD_ACTIVE); | 1243 TabStripModel::ADD_ACTIVE); |
1244 | 1244 |
1245 EXPECT_EQ(2, tabstrip.count()); | 1245 EXPECT_EQ(2, tabstrip.count()); |
1246 | 1246 |
1247 // Re-select the home page. | 1247 // Re-select the home page. |
1248 tabstrip.ActivateTabAt(0, true); | 1248 tabstrip.ActivateTabAt(0, true); |
1249 | 1249 |
1250 // Open a bunch of tabs by simulating middle clicking on links on the home | 1250 // Open a bunch of tabs by simulating middle clicking on links on the home |
1251 // page. | 1251 // page. |
1252 WebContents* middle_click_contents1 = CreateWebContents(); | 1252 WebContents* middle_click_contents1 = CreateWebContents(); |
1253 tabstrip.AddWebContents( | 1253 tabstrip.AddWebContents( |
1254 middle_click_contents1, -1, content::PAGE_TRANSITION_LINK, | 1254 middle_click_contents1, -1, ui::PAGE_TRANSITION_LINK, |
1255 TabStripModel::ADD_NONE); | 1255 TabStripModel::ADD_NONE); |
1256 WebContents* middle_click_contents2 = CreateWebContents(); | 1256 WebContents* middle_click_contents2 = CreateWebContents(); |
1257 tabstrip.AddWebContents( | 1257 tabstrip.AddWebContents( |
1258 middle_click_contents2, -1, content::PAGE_TRANSITION_LINK, | 1258 middle_click_contents2, -1, ui::PAGE_TRANSITION_LINK, |
1259 TabStripModel::ADD_NONE); | 1259 TabStripModel::ADD_NONE); |
1260 WebContents* middle_click_contents3 = CreateWebContents(); | 1260 WebContents* middle_click_contents3 = CreateWebContents(); |
1261 tabstrip.AddWebContents( | 1261 tabstrip.AddWebContents( |
1262 middle_click_contents3, -1, content::PAGE_TRANSITION_LINK, | 1262 middle_click_contents3, -1, ui::PAGE_TRANSITION_LINK, |
1263 TabStripModel::ADD_NONE); | 1263 TabStripModel::ADD_NONE); |
1264 | 1264 |
1265 EXPECT_EQ(5, tabstrip.count()); | 1265 EXPECT_EQ(5, tabstrip.count()); |
1266 | 1266 |
1267 EXPECT_EQ(homepage_contents, tabstrip.GetWebContentsAt(0)); | 1267 EXPECT_EQ(homepage_contents, tabstrip.GetWebContentsAt(0)); |
1268 EXPECT_EQ(middle_click_contents1, tabstrip.GetWebContentsAt(1)); | 1268 EXPECT_EQ(middle_click_contents1, tabstrip.GetWebContentsAt(1)); |
1269 EXPECT_EQ(middle_click_contents2, tabstrip.GetWebContentsAt(2)); | 1269 EXPECT_EQ(middle_click_contents2, tabstrip.GetWebContentsAt(2)); |
1270 EXPECT_EQ(middle_click_contents3, tabstrip.GetWebContentsAt(3)); | 1270 EXPECT_EQ(middle_click_contents3, tabstrip.GetWebContentsAt(3)); |
1271 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(4)); | 1271 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(4)); |
1272 | 1272 |
(...skipping 23 matching lines...) Expand all Loading... |
1296 // that opens a new tab is inserted correctly adjacent to the tab that spawned | 1296 // that opens a new tab is inserted correctly adjacent to the tab that spawned |
1297 // it. | 1297 // it. |
1298 TEST_F(TabStripModelTest, AddWebContents_LeftClickPopup) { | 1298 TEST_F(TabStripModelTest, AddWebContents_LeftClickPopup) { |
1299 TabStripDummyDelegate delegate; | 1299 TabStripDummyDelegate delegate; |
1300 TabStripModel tabstrip(&delegate, profile()); | 1300 TabStripModel tabstrip(&delegate, profile()); |
1301 EXPECT_TRUE(tabstrip.empty()); | 1301 EXPECT_TRUE(tabstrip.empty()); |
1302 | 1302 |
1303 // Open the Home Page. | 1303 // Open the Home Page. |
1304 WebContents* homepage_contents = CreateWebContents(); | 1304 WebContents* homepage_contents = CreateWebContents(); |
1305 tabstrip.AddWebContents( | 1305 tabstrip.AddWebContents( |
1306 homepage_contents, -1, content::PAGE_TRANSITION_AUTO_BOOKMARK, | 1306 homepage_contents, -1, ui::PAGE_TRANSITION_AUTO_BOOKMARK, |
1307 TabStripModel::ADD_ACTIVE); | 1307 TabStripModel::ADD_ACTIVE); |
1308 | 1308 |
1309 // Open some other tab, by user typing. | 1309 // Open some other tab, by user typing. |
1310 WebContents* typed_page_contents = CreateWebContents(); | 1310 WebContents* typed_page_contents = CreateWebContents(); |
1311 tabstrip.AddWebContents( | 1311 tabstrip.AddWebContents( |
1312 typed_page_contents, -1, content::PAGE_TRANSITION_TYPED, | 1312 typed_page_contents, -1, ui::PAGE_TRANSITION_TYPED, |
1313 TabStripModel::ADD_ACTIVE); | 1313 TabStripModel::ADD_ACTIVE); |
1314 | 1314 |
1315 EXPECT_EQ(2, tabstrip.count()); | 1315 EXPECT_EQ(2, tabstrip.count()); |
1316 | 1316 |
1317 // Re-select the home page. | 1317 // Re-select the home page. |
1318 tabstrip.ActivateTabAt(0, true); | 1318 tabstrip.ActivateTabAt(0, true); |
1319 | 1319 |
1320 // Open a tab by simulating a left click on a link that opens in a new tab. | 1320 // Open a tab by simulating a left click on a link that opens in a new tab. |
1321 WebContents* left_click_contents = CreateWebContents(); | 1321 WebContents* left_click_contents = CreateWebContents(); |
1322 tabstrip.AddWebContents(left_click_contents, -1, | 1322 tabstrip.AddWebContents(left_click_contents, -1, |
1323 content::PAGE_TRANSITION_LINK, | 1323 ui::PAGE_TRANSITION_LINK, |
1324 TabStripModel::ADD_ACTIVE); | 1324 TabStripModel::ADD_ACTIVE); |
1325 | 1325 |
1326 // Verify the state meets our expectations. | 1326 // Verify the state meets our expectations. |
1327 EXPECT_EQ(3, tabstrip.count()); | 1327 EXPECT_EQ(3, tabstrip.count()); |
1328 EXPECT_EQ(homepage_contents, tabstrip.GetWebContentsAt(0)); | 1328 EXPECT_EQ(homepage_contents, tabstrip.GetWebContentsAt(0)); |
1329 EXPECT_EQ(left_click_contents, tabstrip.GetWebContentsAt(1)); | 1329 EXPECT_EQ(left_click_contents, tabstrip.GetWebContentsAt(1)); |
1330 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(2)); | 1330 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(2)); |
1331 | 1331 |
1332 // The newly created tab should be selected. | 1332 // The newly created tab should be selected. |
1333 EXPECT_EQ(left_click_contents, tabstrip.GetActiveWebContents()); | 1333 EXPECT_EQ(left_click_contents, tabstrip.GetActiveWebContents()); |
(...skipping 13 matching lines...) Expand all Loading... |
1347 // generated urls, also blank tabs) open at the end of the tabstrip instead of | 1347 // generated urls, also blank tabs) open at the end of the tabstrip instead of |
1348 // in the middle. | 1348 // in the middle. |
1349 TEST_F(TabStripModelTest, AddWebContents_CreateNewBlankTab) { | 1349 TEST_F(TabStripModelTest, AddWebContents_CreateNewBlankTab) { |
1350 TabStripDummyDelegate delegate; | 1350 TabStripDummyDelegate delegate; |
1351 TabStripModel tabstrip(&delegate, profile()); | 1351 TabStripModel tabstrip(&delegate, profile()); |
1352 EXPECT_TRUE(tabstrip.empty()); | 1352 EXPECT_TRUE(tabstrip.empty()); |
1353 | 1353 |
1354 // Open the Home Page. | 1354 // Open the Home Page. |
1355 WebContents* homepage_contents = CreateWebContents(); | 1355 WebContents* homepage_contents = CreateWebContents(); |
1356 tabstrip.AddWebContents( | 1356 tabstrip.AddWebContents( |
1357 homepage_contents, -1, content::PAGE_TRANSITION_AUTO_BOOKMARK, | 1357 homepage_contents, -1, ui::PAGE_TRANSITION_AUTO_BOOKMARK, |
1358 TabStripModel::ADD_ACTIVE); | 1358 TabStripModel::ADD_ACTIVE); |
1359 | 1359 |
1360 // Open some other tab, by user typing. | 1360 // Open some other tab, by user typing. |
1361 WebContents* typed_page_contents = CreateWebContents(); | 1361 WebContents* typed_page_contents = CreateWebContents(); |
1362 tabstrip.AddWebContents( | 1362 tabstrip.AddWebContents( |
1363 typed_page_contents, -1, content::PAGE_TRANSITION_TYPED, | 1363 typed_page_contents, -1, ui::PAGE_TRANSITION_TYPED, |
1364 TabStripModel::ADD_ACTIVE); | 1364 TabStripModel::ADD_ACTIVE); |
1365 | 1365 |
1366 EXPECT_EQ(2, tabstrip.count()); | 1366 EXPECT_EQ(2, tabstrip.count()); |
1367 | 1367 |
1368 // Re-select the home page. | 1368 // Re-select the home page. |
1369 tabstrip.ActivateTabAt(0, true); | 1369 tabstrip.ActivateTabAt(0, true); |
1370 | 1370 |
1371 // Open a new blank tab in the foreground. | 1371 // Open a new blank tab in the foreground. |
1372 WebContents* new_blank_contents = CreateWebContents(); | 1372 WebContents* new_blank_contents = CreateWebContents(); |
1373 tabstrip.AddWebContents(new_blank_contents, -1, | 1373 tabstrip.AddWebContents(new_blank_contents, -1, |
1374 content::PAGE_TRANSITION_TYPED, | 1374 ui::PAGE_TRANSITION_TYPED, |
1375 TabStripModel::ADD_ACTIVE); | 1375 TabStripModel::ADD_ACTIVE); |
1376 | 1376 |
1377 // Verify the state of the tabstrip. | 1377 // Verify the state of the tabstrip. |
1378 EXPECT_EQ(3, tabstrip.count()); | 1378 EXPECT_EQ(3, tabstrip.count()); |
1379 EXPECT_EQ(homepage_contents, tabstrip.GetWebContentsAt(0)); | 1379 EXPECT_EQ(homepage_contents, tabstrip.GetWebContentsAt(0)); |
1380 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(1)); | 1380 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(1)); |
1381 EXPECT_EQ(new_blank_contents, tabstrip.GetWebContentsAt(2)); | 1381 EXPECT_EQ(new_blank_contents, tabstrip.GetWebContentsAt(2)); |
1382 | 1382 |
1383 // Now open a couple more blank tabs in the background. | 1383 // Now open a couple more blank tabs in the background. |
1384 WebContents* background_blank_contents1 = CreateWebContents(); | 1384 WebContents* background_blank_contents1 = CreateWebContents(); |
1385 tabstrip.AddWebContents( | 1385 tabstrip.AddWebContents( |
1386 background_blank_contents1, -1, content::PAGE_TRANSITION_TYPED, | 1386 background_blank_contents1, -1, ui::PAGE_TRANSITION_TYPED, |
1387 TabStripModel::ADD_NONE); | 1387 TabStripModel::ADD_NONE); |
1388 WebContents* background_blank_contents2 = CreateWebContents(); | 1388 WebContents* background_blank_contents2 = CreateWebContents(); |
1389 tabstrip.AddWebContents( | 1389 tabstrip.AddWebContents( |
1390 background_blank_contents2, -1, content::PAGE_TRANSITION_GENERATED, | 1390 background_blank_contents2, -1, ui::PAGE_TRANSITION_GENERATED, |
1391 TabStripModel::ADD_NONE); | 1391 TabStripModel::ADD_NONE); |
1392 EXPECT_EQ(5, tabstrip.count()); | 1392 EXPECT_EQ(5, tabstrip.count()); |
1393 EXPECT_EQ(homepage_contents, tabstrip.GetWebContentsAt(0)); | 1393 EXPECT_EQ(homepage_contents, tabstrip.GetWebContentsAt(0)); |
1394 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(1)); | 1394 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(1)); |
1395 EXPECT_EQ(new_blank_contents, tabstrip.GetWebContentsAt(2)); | 1395 EXPECT_EQ(new_blank_contents, tabstrip.GetWebContentsAt(2)); |
1396 EXPECT_EQ(background_blank_contents1, tabstrip.GetWebContentsAt(3)); | 1396 EXPECT_EQ(background_blank_contents1, tabstrip.GetWebContentsAt(3)); |
1397 EXPECT_EQ(background_blank_contents2, tabstrip.GetWebContentsAt(4)); | 1397 EXPECT_EQ(background_blank_contents2, tabstrip.GetWebContentsAt(4)); |
1398 | 1398 |
1399 tabstrip.CloseAllTabs(); | 1399 tabstrip.CloseAllTabs(); |
1400 EXPECT_TRUE(tabstrip.empty()); | 1400 EXPECT_TRUE(tabstrip.empty()); |
1401 } | 1401 } |
1402 | 1402 |
1403 // Tests whether opener state is correctly forgotten when the user switches | 1403 // Tests whether opener state is correctly forgotten when the user switches |
1404 // context. | 1404 // context. |
1405 TEST_F(TabStripModelTest, AddWebContents_ForgetOpeners) { | 1405 TEST_F(TabStripModelTest, AddWebContents_ForgetOpeners) { |
1406 TabStripDummyDelegate delegate; | 1406 TabStripDummyDelegate delegate; |
1407 TabStripModel tabstrip(&delegate, profile()); | 1407 TabStripModel tabstrip(&delegate, profile()); |
1408 EXPECT_TRUE(tabstrip.empty()); | 1408 EXPECT_TRUE(tabstrip.empty()); |
1409 | 1409 |
1410 // Open the Home Page | 1410 // Open the Home Page |
1411 WebContents* homepage_contents = CreateWebContents(); | 1411 WebContents* homepage_contents = CreateWebContents(); |
1412 tabstrip.AddWebContents( | 1412 tabstrip.AddWebContents( |
1413 homepage_contents, -1, content::PAGE_TRANSITION_AUTO_BOOKMARK, | 1413 homepage_contents, -1, ui::PAGE_TRANSITION_AUTO_BOOKMARK, |
1414 TabStripModel::ADD_ACTIVE); | 1414 TabStripModel::ADD_ACTIVE); |
1415 | 1415 |
1416 // Open some other tab, by user typing. | 1416 // Open some other tab, by user typing. |
1417 WebContents* typed_page_contents = CreateWebContents(); | 1417 WebContents* typed_page_contents = CreateWebContents(); |
1418 tabstrip.AddWebContents( | 1418 tabstrip.AddWebContents( |
1419 typed_page_contents, -1, content::PAGE_TRANSITION_TYPED, | 1419 typed_page_contents, -1, ui::PAGE_TRANSITION_TYPED, |
1420 TabStripModel::ADD_ACTIVE); | 1420 TabStripModel::ADD_ACTIVE); |
1421 | 1421 |
1422 EXPECT_EQ(2, tabstrip.count()); | 1422 EXPECT_EQ(2, tabstrip.count()); |
1423 | 1423 |
1424 // Re-select the home page. | 1424 // Re-select the home page. |
1425 tabstrip.ActivateTabAt(0, true); | 1425 tabstrip.ActivateTabAt(0, true); |
1426 | 1426 |
1427 // Open a bunch of tabs by simulating middle clicking on links on the home | 1427 // Open a bunch of tabs by simulating middle clicking on links on the home |
1428 // page. | 1428 // page. |
1429 WebContents* middle_click_contents1 = CreateWebContents(); | 1429 WebContents* middle_click_contents1 = CreateWebContents(); |
1430 tabstrip.AddWebContents( | 1430 tabstrip.AddWebContents( |
1431 middle_click_contents1, -1, content::PAGE_TRANSITION_LINK, | 1431 middle_click_contents1, -1, ui::PAGE_TRANSITION_LINK, |
1432 TabStripModel::ADD_NONE); | 1432 TabStripModel::ADD_NONE); |
1433 WebContents* middle_click_contents2 = CreateWebContents(); | 1433 WebContents* middle_click_contents2 = CreateWebContents(); |
1434 tabstrip.AddWebContents( | 1434 tabstrip.AddWebContents( |
1435 middle_click_contents2, -1, content::PAGE_TRANSITION_LINK, | 1435 middle_click_contents2, -1, ui::PAGE_TRANSITION_LINK, |
1436 TabStripModel::ADD_NONE); | 1436 TabStripModel::ADD_NONE); |
1437 WebContents* middle_click_contents3 = CreateWebContents(); | 1437 WebContents* middle_click_contents3 = CreateWebContents(); |
1438 tabstrip.AddWebContents( | 1438 tabstrip.AddWebContents( |
1439 middle_click_contents3, -1, content::PAGE_TRANSITION_LINK, | 1439 middle_click_contents3, -1, ui::PAGE_TRANSITION_LINK, |
1440 TabStripModel::ADD_NONE); | 1440 TabStripModel::ADD_NONE); |
1441 | 1441 |
1442 // Break out of the context by selecting a tab in a different context. | 1442 // Break out of the context by selecting a tab in a different context. |
1443 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(4)); | 1443 EXPECT_EQ(typed_page_contents, tabstrip.GetWebContentsAt(4)); |
1444 tabstrip.SelectLastTab(); | 1444 tabstrip.SelectLastTab(); |
1445 EXPECT_EQ(typed_page_contents, tabstrip.GetActiveWebContents()); | 1445 EXPECT_EQ(typed_page_contents, tabstrip.GetActiveWebContents()); |
1446 | 1446 |
1447 // Step back into the context by selecting a tab inside it. | 1447 // Step back into the context by selecting a tab inside it. |
1448 tabstrip.ActivateTabAt(2, true); | 1448 tabstrip.ActivateTabAt(2, true); |
1449 EXPECT_EQ(middle_click_contents2, tabstrip.GetActiveWebContents()); | 1449 EXPECT_EQ(middle_click_contents2, tabstrip.GetActiveWebContents()); |
(...skipping 18 matching lines...) Expand all Loading... |
1468 | 1468 |
1469 // Added for http://b/issue?id=958960 | 1469 // Added for http://b/issue?id=958960 |
1470 TEST_F(TabStripModelTest, AppendContentsReselectionTest) { | 1470 TEST_F(TabStripModelTest, AppendContentsReselectionTest) { |
1471 TabStripDummyDelegate delegate; | 1471 TabStripDummyDelegate delegate; |
1472 TabStripModel tabstrip(&delegate, profile()); | 1472 TabStripModel tabstrip(&delegate, profile()); |
1473 EXPECT_TRUE(tabstrip.empty()); | 1473 EXPECT_TRUE(tabstrip.empty()); |
1474 | 1474 |
1475 // Open the Home Page. | 1475 // Open the Home Page. |
1476 WebContents* homepage_contents = CreateWebContents(); | 1476 WebContents* homepage_contents = CreateWebContents(); |
1477 tabstrip.AddWebContents( | 1477 tabstrip.AddWebContents( |
1478 homepage_contents, -1, content::PAGE_TRANSITION_AUTO_BOOKMARK, | 1478 homepage_contents, -1, ui::PAGE_TRANSITION_AUTO_BOOKMARK, |
1479 TabStripModel::ADD_ACTIVE); | 1479 TabStripModel::ADD_ACTIVE); |
1480 | 1480 |
1481 // Open some other tab, by user typing. | 1481 // Open some other tab, by user typing. |
1482 WebContents* typed_page_contents = CreateWebContents(); | 1482 WebContents* typed_page_contents = CreateWebContents(); |
1483 tabstrip.AddWebContents( | 1483 tabstrip.AddWebContents( |
1484 typed_page_contents, -1, content::PAGE_TRANSITION_TYPED, | 1484 typed_page_contents, -1, ui::PAGE_TRANSITION_TYPED, |
1485 TabStripModel::ADD_NONE); | 1485 TabStripModel::ADD_NONE); |
1486 | 1486 |
1487 // The selected tab should still be the first. | 1487 // The selected tab should still be the first. |
1488 EXPECT_EQ(0, tabstrip.active_index()); | 1488 EXPECT_EQ(0, tabstrip.active_index()); |
1489 | 1489 |
1490 // Now simulate a link click that opens a new tab (by virtue of target=_blank) | 1490 // Now simulate a link click that opens a new tab (by virtue of target=_blank) |
1491 // and make sure the correct tab gets selected when the new tab is closed. | 1491 // and make sure the correct tab gets selected when the new tab is closed. |
1492 WebContents* target_blank = CreateWebContents(); | 1492 WebContents* target_blank = CreateWebContents(); |
1493 tabstrip.AppendWebContents(target_blank, true); | 1493 tabstrip.AppendWebContents(target_blank, true); |
1494 EXPECT_EQ(2, tabstrip.active_index()); | 1494 EXPECT_EQ(2, tabstrip.active_index()); |
1495 tabstrip.CloseWebContentsAt(2, TabStripModel::CLOSE_NONE); | 1495 tabstrip.CloseWebContentsAt(2, TabStripModel::CLOSE_NONE); |
1496 EXPECT_EQ(0, tabstrip.active_index()); | 1496 EXPECT_EQ(0, tabstrip.active_index()); |
1497 | 1497 |
1498 // Clean up after ourselves. | 1498 // Clean up after ourselves. |
1499 tabstrip.CloseAllTabs(); | 1499 tabstrip.CloseAllTabs(); |
1500 } | 1500 } |
1501 | 1501 |
1502 // Added for http://b/issue?id=1027661 | 1502 // Added for http://b/issue?id=1027661 |
1503 TEST_F(TabStripModelTest, ReselectionConsidersChildrenTest) { | 1503 TEST_F(TabStripModelTest, ReselectionConsidersChildrenTest) { |
1504 TabStripDummyDelegate delegate; | 1504 TabStripDummyDelegate delegate; |
1505 TabStripModel strip(&delegate, profile()); | 1505 TabStripModel strip(&delegate, profile()); |
1506 | 1506 |
1507 // Open page A | 1507 // Open page A |
1508 WebContents* page_a_contents = CreateWebContents(); | 1508 WebContents* page_a_contents = CreateWebContents(); |
1509 strip.AddWebContents( | 1509 strip.AddWebContents( |
1510 page_a_contents, -1, content::PAGE_TRANSITION_AUTO_BOOKMARK, | 1510 page_a_contents, -1, ui::PAGE_TRANSITION_AUTO_BOOKMARK, |
1511 TabStripModel::ADD_ACTIVE); | 1511 TabStripModel::ADD_ACTIVE); |
1512 | 1512 |
1513 // Simulate middle click to open page A.A and A.B | 1513 // Simulate middle click to open page A.A and A.B |
1514 WebContents* page_a_a_contents = CreateWebContents(); | 1514 WebContents* page_a_a_contents = CreateWebContents(); |
1515 strip.AddWebContents(page_a_a_contents, -1, content::PAGE_TRANSITION_LINK, | 1515 strip.AddWebContents(page_a_a_contents, -1, ui::PAGE_TRANSITION_LINK, |
1516 TabStripModel::ADD_NONE); | 1516 TabStripModel::ADD_NONE); |
1517 WebContents* page_a_b_contents = CreateWebContents(); | 1517 WebContents* page_a_b_contents = CreateWebContents(); |
1518 strip.AddWebContents(page_a_b_contents, -1, content::PAGE_TRANSITION_LINK, | 1518 strip.AddWebContents(page_a_b_contents, -1, ui::PAGE_TRANSITION_LINK, |
1519 TabStripModel::ADD_NONE); | 1519 TabStripModel::ADD_NONE); |
1520 | 1520 |
1521 // Select page A.A | 1521 // Select page A.A |
1522 strip.ActivateTabAt(1, true); | 1522 strip.ActivateTabAt(1, true); |
1523 EXPECT_EQ(page_a_a_contents, strip.GetActiveWebContents()); | 1523 EXPECT_EQ(page_a_a_contents, strip.GetActiveWebContents()); |
1524 | 1524 |
1525 // Simulate a middle click to open page A.A.A | 1525 // Simulate a middle click to open page A.A.A |
1526 WebContents* page_a_a_a_contents = CreateWebContents(); | 1526 WebContents* page_a_a_a_contents = CreateWebContents(); |
1527 strip.AddWebContents(page_a_a_a_contents, -1, content::PAGE_TRANSITION_LINK, | 1527 strip.AddWebContents(page_a_a_a_contents, -1, ui::PAGE_TRANSITION_LINK, |
1528 TabStripModel::ADD_NONE); | 1528 TabStripModel::ADD_NONE); |
1529 | 1529 |
1530 EXPECT_EQ(page_a_a_a_contents, strip.GetWebContentsAt(2)); | 1530 EXPECT_EQ(page_a_a_a_contents, strip.GetWebContentsAt(2)); |
1531 | 1531 |
1532 // Close page A.A | 1532 // Close page A.A |
1533 strip.CloseWebContentsAt(strip.active_index(), TabStripModel::CLOSE_NONE); | 1533 strip.CloseWebContentsAt(strip.active_index(), TabStripModel::CLOSE_NONE); |
1534 | 1534 |
1535 // Page A.A.A should be selected, NOT A.B | 1535 // Page A.A.A should be selected, NOT A.B |
1536 EXPECT_EQ(page_a_a_a_contents, strip.GetActiveWebContents()); | 1536 EXPECT_EQ(page_a_a_a_contents, strip.GetActiveWebContents()); |
1537 | 1537 |
(...skipping 13 matching lines...) Expand all Loading... |
1551 strip.CloseAllTabs(); | 1551 strip.CloseAllTabs(); |
1552 } | 1552 } |
1553 | 1553 |
1554 TEST_F(TabStripModelTest, AddWebContents_NewTabAtEndOfStripInheritsGroup) { | 1554 TEST_F(TabStripModelTest, AddWebContents_NewTabAtEndOfStripInheritsGroup) { |
1555 TabStripDummyDelegate delegate; | 1555 TabStripDummyDelegate delegate; |
1556 TabStripModel strip(&delegate, profile()); | 1556 TabStripModel strip(&delegate, profile()); |
1557 | 1557 |
1558 // Open page A | 1558 // Open page A |
1559 WebContents* page_a_contents = CreateWebContents(); | 1559 WebContents* page_a_contents = CreateWebContents(); |
1560 strip.AddWebContents(page_a_contents, -1, | 1560 strip.AddWebContents(page_a_contents, -1, |
1561 content::PAGE_TRANSITION_AUTO_TOPLEVEL, | 1561 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
1562 TabStripModel::ADD_ACTIVE); | 1562 TabStripModel::ADD_ACTIVE); |
1563 | 1563 |
1564 // Open pages B, C and D in the background from links on page A... | 1564 // Open pages B, C and D in the background from links on page A... |
1565 WebContents* page_b_contents = CreateWebContents(); | 1565 WebContents* page_b_contents = CreateWebContents(); |
1566 WebContents* page_c_contents = CreateWebContents(); | 1566 WebContents* page_c_contents = CreateWebContents(); |
1567 WebContents* page_d_contents = CreateWebContents(); | 1567 WebContents* page_d_contents = CreateWebContents(); |
1568 strip.AddWebContents(page_b_contents, -1, content::PAGE_TRANSITION_LINK, | 1568 strip.AddWebContents(page_b_contents, -1, ui::PAGE_TRANSITION_LINK, |
1569 TabStripModel::ADD_NONE); | 1569 TabStripModel::ADD_NONE); |
1570 strip.AddWebContents(page_c_contents, -1, content::PAGE_TRANSITION_LINK, | 1570 strip.AddWebContents(page_c_contents, -1, ui::PAGE_TRANSITION_LINK, |
1571 TabStripModel::ADD_NONE); | 1571 TabStripModel::ADD_NONE); |
1572 strip.AddWebContents(page_d_contents, -1, content::PAGE_TRANSITION_LINK, | 1572 strip.AddWebContents(page_d_contents, -1, ui::PAGE_TRANSITION_LINK, |
1573 TabStripModel::ADD_NONE); | 1573 TabStripModel::ADD_NONE); |
1574 | 1574 |
1575 // Switch to page B's tab. | 1575 // Switch to page B's tab. |
1576 strip.ActivateTabAt(1, true); | 1576 strip.ActivateTabAt(1, true); |
1577 | 1577 |
1578 // Open a New Tab at the end of the strip (simulate Ctrl+T) | 1578 // Open a New Tab at the end of the strip (simulate Ctrl+T) |
1579 WebContents* new_contents = CreateWebContents(); | 1579 WebContents* new_contents = CreateWebContents(); |
1580 strip.AddWebContents(new_contents, -1, content::PAGE_TRANSITION_TYPED, | 1580 strip.AddWebContents(new_contents, -1, ui::PAGE_TRANSITION_TYPED, |
1581 TabStripModel::ADD_ACTIVE); | 1581 TabStripModel::ADD_ACTIVE); |
1582 | 1582 |
1583 EXPECT_EQ(4, strip.GetIndexOfWebContents(new_contents)); | 1583 EXPECT_EQ(4, strip.GetIndexOfWebContents(new_contents)); |
1584 EXPECT_EQ(4, strip.active_index()); | 1584 EXPECT_EQ(4, strip.active_index()); |
1585 | 1585 |
1586 // Close the New Tab that was just opened. We should be returned to page B's | 1586 // Close the New Tab that was just opened. We should be returned to page B's |
1587 // Tab... | 1587 // Tab... |
1588 strip.CloseWebContentsAt(4, TabStripModel::CLOSE_NONE); | 1588 strip.CloseWebContentsAt(4, TabStripModel::CLOSE_NONE); |
1589 | 1589 |
1590 EXPECT_EQ(1, strip.active_index()); | 1590 EXPECT_EQ(1, strip.active_index()); |
1591 | 1591 |
1592 // Open a non-New Tab tab at the end of the strip, with a TYPED transition. | 1592 // Open a non-New Tab tab at the end of the strip, with a TYPED transition. |
1593 // This is like typing a URL in the address bar and pressing Alt+Enter. The | 1593 // This is like typing a URL in the address bar and pressing Alt+Enter. The |
1594 // behavior should be the same as above. | 1594 // behavior should be the same as above. |
1595 WebContents* page_e_contents = CreateWebContents(); | 1595 WebContents* page_e_contents = CreateWebContents(); |
1596 strip.AddWebContents(page_e_contents, -1, content::PAGE_TRANSITION_TYPED, | 1596 strip.AddWebContents(page_e_contents, -1, ui::PAGE_TRANSITION_TYPED, |
1597 TabStripModel::ADD_ACTIVE); | 1597 TabStripModel::ADD_ACTIVE); |
1598 | 1598 |
1599 EXPECT_EQ(4, strip.GetIndexOfWebContents(page_e_contents)); | 1599 EXPECT_EQ(4, strip.GetIndexOfWebContents(page_e_contents)); |
1600 EXPECT_EQ(4, strip.active_index()); | 1600 EXPECT_EQ(4, strip.active_index()); |
1601 | 1601 |
1602 // Close the Tab. Selection should shift back to page B's Tab. | 1602 // Close the Tab. Selection should shift back to page B's Tab. |
1603 strip.CloseWebContentsAt(4, TabStripModel::CLOSE_NONE); | 1603 strip.CloseWebContentsAt(4, TabStripModel::CLOSE_NONE); |
1604 | 1604 |
1605 EXPECT_EQ(1, strip.active_index()); | 1605 EXPECT_EQ(1, strip.active_index()); |
1606 | 1606 |
1607 // Open a non-New Tab tab at the end of the strip, with some other | 1607 // Open a non-New Tab tab at the end of the strip, with some other |
1608 // transition. This is like right clicking on a bookmark and choosing "Open | 1608 // transition. This is like right clicking on a bookmark and choosing "Open |
1609 // in New Tab". No opener relationship should be preserved between this Tab | 1609 // in New Tab". No opener relationship should be preserved between this Tab |
1610 // and the one that was active when the gesture was performed. | 1610 // and the one that was active when the gesture was performed. |
1611 WebContents* page_f_contents = CreateWebContents(); | 1611 WebContents* page_f_contents = CreateWebContents(); |
1612 strip.AddWebContents(page_f_contents, -1, | 1612 strip.AddWebContents(page_f_contents, -1, |
1613 content::PAGE_TRANSITION_AUTO_BOOKMARK, | 1613 ui::PAGE_TRANSITION_AUTO_BOOKMARK, |
1614 TabStripModel::ADD_ACTIVE); | 1614 TabStripModel::ADD_ACTIVE); |
1615 | 1615 |
1616 EXPECT_EQ(4, strip.GetIndexOfWebContents(page_f_contents)); | 1616 EXPECT_EQ(4, strip.GetIndexOfWebContents(page_f_contents)); |
1617 EXPECT_EQ(4, strip.active_index()); | 1617 EXPECT_EQ(4, strip.active_index()); |
1618 | 1618 |
1619 // Close the Tab. The next-adjacent should be selected. | 1619 // Close the Tab. The next-adjacent should be selected. |
1620 strip.CloseWebContentsAt(4, TabStripModel::CLOSE_NONE); | 1620 strip.CloseWebContentsAt(4, TabStripModel::CLOSE_NONE); |
1621 | 1621 |
1622 EXPECT_EQ(3, strip.active_index()); | 1622 EXPECT_EQ(3, strip.active_index()); |
1623 | 1623 |
1624 // Clean up. | 1624 // Clean up. |
1625 strip.CloseAllTabs(); | 1625 strip.CloseAllTabs(); |
1626 } | 1626 } |
1627 | 1627 |
1628 // A test of navigations in a tab that is part of a group of opened from some | 1628 // A test of navigations in a tab that is part of a group of opened from some |
1629 // parent tab. If the navigations are link clicks, the group relationship of | 1629 // parent tab. If the navigations are link clicks, the group relationship of |
1630 // the tab to its parent are preserved. If they are of any other type, they are | 1630 // the tab to its parent are preserved. If they are of any other type, they are |
1631 // not preserved. | 1631 // not preserved. |
1632 TEST_F(TabStripModelTest, NavigationForgetsOpeners) { | 1632 TEST_F(TabStripModelTest, NavigationForgetsOpeners) { |
1633 TabStripDummyDelegate delegate; | 1633 TabStripDummyDelegate delegate; |
1634 TabStripModel strip(&delegate, profile()); | 1634 TabStripModel strip(&delegate, profile()); |
1635 | 1635 |
1636 // Open page A | 1636 // Open page A |
1637 WebContents* page_a_contents = CreateWebContents(); | 1637 WebContents* page_a_contents = CreateWebContents(); |
1638 strip.AddWebContents(page_a_contents, -1, | 1638 strip.AddWebContents(page_a_contents, -1, |
1639 content::PAGE_TRANSITION_AUTO_TOPLEVEL, | 1639 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
1640 TabStripModel::ADD_ACTIVE); | 1640 TabStripModel::ADD_ACTIVE); |
1641 | 1641 |
1642 // Open pages B, C and D in the background from links on page A... | 1642 // Open pages B, C and D in the background from links on page A... |
1643 WebContents* page_b_contents = CreateWebContents(); | 1643 WebContents* page_b_contents = CreateWebContents(); |
1644 WebContents* page_c_contents = CreateWebContents(); | 1644 WebContents* page_c_contents = CreateWebContents(); |
1645 WebContents* page_d_contents = CreateWebContents(); | 1645 WebContents* page_d_contents = CreateWebContents(); |
1646 strip.AddWebContents(page_b_contents, -1, content::PAGE_TRANSITION_LINK, | 1646 strip.AddWebContents(page_b_contents, -1, ui::PAGE_TRANSITION_LINK, |
1647 TabStripModel::ADD_NONE); | 1647 TabStripModel::ADD_NONE); |
1648 strip.AddWebContents(page_c_contents, -1, content::PAGE_TRANSITION_LINK, | 1648 strip.AddWebContents(page_c_contents, -1, ui::PAGE_TRANSITION_LINK, |
1649 TabStripModel::ADD_NONE); | 1649 TabStripModel::ADD_NONE); |
1650 strip.AddWebContents(page_d_contents, -1, content::PAGE_TRANSITION_LINK, | 1650 strip.AddWebContents(page_d_contents, -1, ui::PAGE_TRANSITION_LINK, |
1651 TabStripModel::ADD_NONE); | 1651 TabStripModel::ADD_NONE); |
1652 | 1652 |
1653 // Open page E in a different opener group from page A. | 1653 // Open page E in a different opener group from page A. |
1654 WebContents* page_e_contents = CreateWebContents(); | 1654 WebContents* page_e_contents = CreateWebContents(); |
1655 strip.AddWebContents(page_e_contents, -1, | 1655 strip.AddWebContents(page_e_contents, -1, |
1656 content::PAGE_TRANSITION_AUTO_TOPLEVEL, | 1656 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
1657 TabStripModel::ADD_NONE); | 1657 TabStripModel::ADD_NONE); |
1658 | 1658 |
1659 // Tell the TabStripModel that we are navigating page D via a link click. | 1659 // Tell the TabStripModel that we are navigating page D via a link click. |
1660 strip.ActivateTabAt(3, true); | 1660 strip.ActivateTabAt(3, true); |
1661 strip.TabNavigating(page_d_contents, content::PAGE_TRANSITION_LINK); | 1661 strip.TabNavigating(page_d_contents, ui::PAGE_TRANSITION_LINK); |
1662 | 1662 |
1663 // Close page D, page C should be selected. (part of same group). | 1663 // Close page D, page C should be selected. (part of same group). |
1664 strip.CloseWebContentsAt(3, TabStripModel::CLOSE_NONE); | 1664 strip.CloseWebContentsAt(3, TabStripModel::CLOSE_NONE); |
1665 EXPECT_EQ(2, strip.active_index()); | 1665 EXPECT_EQ(2, strip.active_index()); |
1666 | 1666 |
1667 // Tell the TabStripModel that we are navigating in page C via a bookmark. | 1667 // Tell the TabStripModel that we are navigating in page C via a bookmark. |
1668 strip.TabNavigating(page_c_contents, content::PAGE_TRANSITION_AUTO_BOOKMARK); | 1668 strip.TabNavigating(page_c_contents, ui::PAGE_TRANSITION_AUTO_BOOKMARK); |
1669 | 1669 |
1670 // Close page C, page E should be selected. (C is no longer part of the | 1670 // Close page C, page E should be selected. (C is no longer part of the |
1671 // A-B-C-D group, selection moves to the right). | 1671 // A-B-C-D group, selection moves to the right). |
1672 strip.CloseWebContentsAt(2, TabStripModel::CLOSE_NONE); | 1672 strip.CloseWebContentsAt(2, TabStripModel::CLOSE_NONE); |
1673 EXPECT_EQ(page_e_contents, strip.GetWebContentsAt(strip.active_index())); | 1673 EXPECT_EQ(page_e_contents, strip.GetWebContentsAt(strip.active_index())); |
1674 | 1674 |
1675 strip.CloseAllTabs(); | 1675 strip.CloseAllTabs(); |
1676 } | 1676 } |
1677 | 1677 |
1678 // A test that the forgetting behavior tested in NavigationForgetsOpeners above | 1678 // A test that the forgetting behavior tested in NavigationForgetsOpeners above |
1679 // doesn't cause the opener relationship for a New Tab opened at the end of the | 1679 // doesn't cause the opener relationship for a New Tab opened at the end of the |
1680 // TabStrip to be reset (Test 1 below), unless another any other tab is | 1680 // TabStrip to be reset (Test 1 below), unless another any other tab is |
1681 // selected (Test 2 below). | 1681 // selected (Test 2 below). |
1682 TEST_F(TabStripModelTest, NavigationForgettingDoesntAffectNewTab) { | 1682 TEST_F(TabStripModelTest, NavigationForgettingDoesntAffectNewTab) { |
1683 TabStripDummyDelegate delegate; | 1683 TabStripDummyDelegate delegate; |
1684 TabStripModel strip(&delegate, profile()); | 1684 TabStripModel strip(&delegate, profile()); |
1685 | 1685 |
1686 // Open a tab and several tabs from it, then select one of the tabs that was | 1686 // Open a tab and several tabs from it, then select one of the tabs that was |
1687 // opened. | 1687 // opened. |
1688 WebContents* page_a_contents = CreateWebContents(); | 1688 WebContents* page_a_contents = CreateWebContents(); |
1689 strip.AddWebContents(page_a_contents, -1, | 1689 strip.AddWebContents(page_a_contents, -1, |
1690 content::PAGE_TRANSITION_AUTO_TOPLEVEL, | 1690 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
1691 TabStripModel::ADD_ACTIVE); | 1691 TabStripModel::ADD_ACTIVE); |
1692 | 1692 |
1693 WebContents* page_b_contents = CreateWebContents(); | 1693 WebContents* page_b_contents = CreateWebContents(); |
1694 WebContents* page_c_contents = CreateWebContents(); | 1694 WebContents* page_c_contents = CreateWebContents(); |
1695 WebContents* page_d_contents = CreateWebContents(); | 1695 WebContents* page_d_contents = CreateWebContents(); |
1696 strip.AddWebContents(page_b_contents, -1, content::PAGE_TRANSITION_LINK, | 1696 strip.AddWebContents(page_b_contents, -1, ui::PAGE_TRANSITION_LINK, |
1697 TabStripModel::ADD_NONE); | 1697 TabStripModel::ADD_NONE); |
1698 strip.AddWebContents(page_c_contents, -1, content::PAGE_TRANSITION_LINK, | 1698 strip.AddWebContents(page_c_contents, -1, ui::PAGE_TRANSITION_LINK, |
1699 TabStripModel::ADD_NONE); | 1699 TabStripModel::ADD_NONE); |
1700 strip.AddWebContents(page_d_contents, -1, content::PAGE_TRANSITION_LINK, | 1700 strip.AddWebContents(page_d_contents, -1, ui::PAGE_TRANSITION_LINK, |
1701 TabStripModel::ADD_NONE); | 1701 TabStripModel::ADD_NONE); |
1702 | 1702 |
1703 strip.ActivateTabAt(2, true); | 1703 strip.ActivateTabAt(2, true); |
1704 | 1704 |
1705 // TEST 1: If the user is in a group of tabs and opens a new tab at the end | 1705 // TEST 1: If the user is in a group of tabs and opens a new tab at the end |
1706 // of the strip, closing that new tab will select the tab that they were | 1706 // of the strip, closing that new tab will select the tab that they were |
1707 // last on. | 1707 // last on. |
1708 | 1708 |
1709 // Now simulate opening a new tab at the end of the TabStrip. | 1709 // Now simulate opening a new tab at the end of the TabStrip. |
1710 WebContents* new_contents1 = CreateWebContents(); | 1710 WebContents* new_contents1 = CreateWebContents(); |
1711 strip.AddWebContents(new_contents1, -1, content::PAGE_TRANSITION_TYPED, | 1711 strip.AddWebContents(new_contents1, -1, ui::PAGE_TRANSITION_TYPED, |
1712 TabStripModel::ADD_ACTIVE); | 1712 TabStripModel::ADD_ACTIVE); |
1713 | 1713 |
1714 // At this point, if we close this tab the last selected one should be | 1714 // At this point, if we close this tab the last selected one should be |
1715 // re-selected. | 1715 // re-selected. |
1716 strip.CloseWebContentsAt(strip.count() - 1, TabStripModel::CLOSE_NONE); | 1716 strip.CloseWebContentsAt(strip.count() - 1, TabStripModel::CLOSE_NONE); |
1717 EXPECT_EQ(page_c_contents, strip.GetWebContentsAt(strip.active_index())); | 1717 EXPECT_EQ(page_c_contents, strip.GetWebContentsAt(strip.active_index())); |
1718 | 1718 |
1719 // TEST 2: If the user is in a group of tabs and opens a new tab at the end | 1719 // TEST 2: If the user is in a group of tabs and opens a new tab at the end |
1720 // of the strip, selecting any other tab in the strip will cause that new | 1720 // of the strip, selecting any other tab in the strip will cause that new |
1721 // tab's opener relationship to be forgotten. | 1721 // tab's opener relationship to be forgotten. |
1722 | 1722 |
1723 // Open a new tab again. | 1723 // Open a new tab again. |
1724 WebContents* new_contents2 = CreateWebContents(); | 1724 WebContents* new_contents2 = CreateWebContents(); |
1725 strip.AddWebContents(new_contents2, -1, content::PAGE_TRANSITION_TYPED, | 1725 strip.AddWebContents(new_contents2, -1, ui::PAGE_TRANSITION_TYPED, |
1726 TabStripModel::ADD_ACTIVE); | 1726 TabStripModel::ADD_ACTIVE); |
1727 | 1727 |
1728 // Now select the first tab. | 1728 // Now select the first tab. |
1729 strip.ActivateTabAt(0, true); | 1729 strip.ActivateTabAt(0, true); |
1730 | 1730 |
1731 // Now select the last tab. | 1731 // Now select the last tab. |
1732 strip.ActivateTabAt(strip.count() - 1, true); | 1732 strip.ActivateTabAt(strip.count() - 1, true); |
1733 | 1733 |
1734 // Now close the last tab. The next adjacent should be selected. | 1734 // Now close the last tab. The next adjacent should be selected. |
1735 strip.CloseWebContentsAt(strip.count() - 1, TabStripModel::CLOSE_NONE); | 1735 strip.CloseWebContentsAt(strip.count() - 1, TabStripModel::CLOSE_NONE); |
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2106 | 2106 |
2107 // Makes sure the TabStripModel calls the right observer methods during a | 2107 // Makes sure the TabStripModel calls the right observer methods during a |
2108 // replace. | 2108 // replace. |
2109 TEST_F(TabStripModelTest, ReplaceSendsSelected) { | 2109 TEST_F(TabStripModelTest, ReplaceSendsSelected) { |
2110 typedef MockTabStripModelObserver::State State; | 2110 typedef MockTabStripModelObserver::State State; |
2111 | 2111 |
2112 TabStripDummyDelegate delegate; | 2112 TabStripDummyDelegate delegate; |
2113 TabStripModel strip(&delegate, profile()); | 2113 TabStripModel strip(&delegate, profile()); |
2114 | 2114 |
2115 WebContents* first_contents = CreateWebContents(); | 2115 WebContents* first_contents = CreateWebContents(); |
2116 strip.AddWebContents(first_contents, -1, content::PAGE_TRANSITION_TYPED, | 2116 strip.AddWebContents(first_contents, -1, ui::PAGE_TRANSITION_TYPED, |
2117 TabStripModel::ADD_ACTIVE); | 2117 TabStripModel::ADD_ACTIVE); |
2118 | 2118 |
2119 MockTabStripModelObserver tabstrip_observer(&strip); | 2119 MockTabStripModelObserver tabstrip_observer(&strip); |
2120 strip.AddObserver(&tabstrip_observer); | 2120 strip.AddObserver(&tabstrip_observer); |
2121 | 2121 |
2122 WebContents* new_contents = CreateWebContents(); | 2122 WebContents* new_contents = CreateWebContents(); |
2123 delete strip.ReplaceWebContentsAt(0, new_contents); | 2123 delete strip.ReplaceWebContentsAt(0, new_contents); |
2124 | 2124 |
2125 ASSERT_EQ(2, tabstrip_observer.GetStateCount()); | 2125 ASSERT_EQ(2, tabstrip_observer.GetStateCount()); |
2126 | 2126 |
2127 // First event should be for replaced. | 2127 // First event should be for replaced. |
2128 State state(new_contents, 0, MockTabStripModelObserver::REPLACED); | 2128 State state(new_contents, 0, MockTabStripModelObserver::REPLACED); |
2129 state.src_contents = first_contents; | 2129 state.src_contents = first_contents; |
2130 EXPECT_TRUE(tabstrip_observer.StateEquals(0, state)); | 2130 EXPECT_TRUE(tabstrip_observer.StateEquals(0, state)); |
2131 | 2131 |
2132 // And the second for selected. | 2132 // And the second for selected. |
2133 state = State(new_contents, 0, MockTabStripModelObserver::ACTIVATE); | 2133 state = State(new_contents, 0, MockTabStripModelObserver::ACTIVATE); |
2134 state.src_contents = first_contents; | 2134 state.src_contents = first_contents; |
2135 state.change_reason = TabStripModelObserver::CHANGE_REASON_REPLACED; | 2135 state.change_reason = TabStripModelObserver::CHANGE_REASON_REPLACED; |
2136 EXPECT_TRUE(tabstrip_observer.StateEquals(1, state)); | 2136 EXPECT_TRUE(tabstrip_observer.StateEquals(1, state)); |
2137 | 2137 |
2138 // Now add another tab and replace it, making sure we don't get a selected | 2138 // Now add another tab and replace it, making sure we don't get a selected |
2139 // event this time. | 2139 // event this time. |
2140 WebContents* third_contents = CreateWebContents(); | 2140 WebContents* third_contents = CreateWebContents(); |
2141 strip.AddWebContents(third_contents, 1, content::PAGE_TRANSITION_TYPED, | 2141 strip.AddWebContents(third_contents, 1, ui::PAGE_TRANSITION_TYPED, |
2142 TabStripModel::ADD_NONE); | 2142 TabStripModel::ADD_NONE); |
2143 | 2143 |
2144 tabstrip_observer.ClearStates(); | 2144 tabstrip_observer.ClearStates(); |
2145 | 2145 |
2146 // And replace it. | 2146 // And replace it. |
2147 new_contents = CreateWebContents(); | 2147 new_contents = CreateWebContents(); |
2148 delete strip.ReplaceWebContentsAt(1, new_contents); | 2148 delete strip.ReplaceWebContentsAt(1, new_contents); |
2149 | 2149 |
2150 ASSERT_EQ(1, tabstrip_observer.GetStateCount()); | 2150 ASSERT_EQ(1, tabstrip_observer.GetStateCount()); |
2151 | 2151 |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2324 } | 2324 } |
2325 | 2325 |
2326 // Tests that moving a tab forgets all groups referencing it. | 2326 // Tests that moving a tab forgets all groups referencing it. |
2327 TEST_F(TabStripModelTest, MoveSelectedTabsTo_ForgetGroups) { | 2327 TEST_F(TabStripModelTest, MoveSelectedTabsTo_ForgetGroups) { |
2328 TabStripDummyDelegate delegate; | 2328 TabStripDummyDelegate delegate; |
2329 TabStripModel strip(&delegate, profile()); | 2329 TabStripModel strip(&delegate, profile()); |
2330 | 2330 |
2331 // Open page A as a new tab and then A1 in the background from A. | 2331 // Open page A as a new tab and then A1 in the background from A. |
2332 WebContents* page_a_contents = CreateWebContents(); | 2332 WebContents* page_a_contents = CreateWebContents(); |
2333 strip.AddWebContents(page_a_contents, -1, | 2333 strip.AddWebContents(page_a_contents, -1, |
2334 content::PAGE_TRANSITION_AUTO_TOPLEVEL, | 2334 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
2335 TabStripModel::ADD_ACTIVE); | 2335 TabStripModel::ADD_ACTIVE); |
2336 WebContents* page_a1_contents = CreateWebContents(); | 2336 WebContents* page_a1_contents = CreateWebContents(); |
2337 strip.AddWebContents(page_a1_contents, -1, content::PAGE_TRANSITION_LINK, | 2337 strip.AddWebContents(page_a1_contents, -1, ui::PAGE_TRANSITION_LINK, |
2338 TabStripModel::ADD_NONE); | 2338 TabStripModel::ADD_NONE); |
2339 | 2339 |
2340 // Likewise, open pages B and B1. | 2340 // Likewise, open pages B and B1. |
2341 WebContents* page_b_contents = CreateWebContents(); | 2341 WebContents* page_b_contents = CreateWebContents(); |
2342 strip.AddWebContents(page_b_contents, -1, | 2342 strip.AddWebContents(page_b_contents, -1, |
2343 content::PAGE_TRANSITION_AUTO_TOPLEVEL, | 2343 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
2344 TabStripModel::ADD_ACTIVE); | 2344 TabStripModel::ADD_ACTIVE); |
2345 WebContents* page_b1_contents = CreateWebContents(); | 2345 WebContents* page_b1_contents = CreateWebContents(); |
2346 strip.AddWebContents(page_b1_contents, -1, content::PAGE_TRANSITION_LINK, | 2346 strip.AddWebContents(page_b1_contents, -1, ui::PAGE_TRANSITION_LINK, |
2347 TabStripModel::ADD_NONE); | 2347 TabStripModel::ADD_NONE); |
2348 | 2348 |
2349 EXPECT_EQ(page_a_contents, strip.GetWebContentsAt(0)); | 2349 EXPECT_EQ(page_a_contents, strip.GetWebContentsAt(0)); |
2350 EXPECT_EQ(page_a1_contents, strip.GetWebContentsAt(1)); | 2350 EXPECT_EQ(page_a1_contents, strip.GetWebContentsAt(1)); |
2351 EXPECT_EQ(page_b_contents, strip.GetWebContentsAt(2)); | 2351 EXPECT_EQ(page_b_contents, strip.GetWebContentsAt(2)); |
2352 EXPECT_EQ(page_b1_contents, strip.GetWebContentsAt(3)); | 2352 EXPECT_EQ(page_b1_contents, strip.GetWebContentsAt(3)); |
2353 | 2353 |
2354 // Move page B to the start of the tab strip. | 2354 // Move page B to the start of the tab strip. |
2355 strip.MoveSelectedTabsTo(0); | 2355 strip.MoveSelectedTabsTo(0); |
2356 | 2356 |
2357 // Open page B2 in the background from B. It should end up after B. | 2357 // Open page B2 in the background from B. It should end up after B. |
2358 WebContents* page_b2_contents = CreateWebContents(); | 2358 WebContents* page_b2_contents = CreateWebContents(); |
2359 strip.AddWebContents(page_b2_contents, -1, content::PAGE_TRANSITION_LINK, | 2359 strip.AddWebContents(page_b2_contents, -1, ui::PAGE_TRANSITION_LINK, |
2360 TabStripModel::ADD_NONE); | 2360 TabStripModel::ADD_NONE); |
2361 EXPECT_EQ(page_b_contents, strip.GetWebContentsAt(0)); | 2361 EXPECT_EQ(page_b_contents, strip.GetWebContentsAt(0)); |
2362 EXPECT_EQ(page_b2_contents, strip.GetWebContentsAt(1)); | 2362 EXPECT_EQ(page_b2_contents, strip.GetWebContentsAt(1)); |
2363 EXPECT_EQ(page_a_contents, strip.GetWebContentsAt(2)); | 2363 EXPECT_EQ(page_a_contents, strip.GetWebContentsAt(2)); |
2364 EXPECT_EQ(page_a1_contents, strip.GetWebContentsAt(3)); | 2364 EXPECT_EQ(page_a1_contents, strip.GetWebContentsAt(3)); |
2365 EXPECT_EQ(page_b1_contents, strip.GetWebContentsAt(4)); | 2365 EXPECT_EQ(page_b1_contents, strip.GetWebContentsAt(4)); |
2366 | 2366 |
2367 // Switch to A. | 2367 // Switch to A. |
2368 strip.ActivateTabAt(2, true); | 2368 strip.ActivateTabAt(2, true); |
2369 EXPECT_EQ(page_a_contents, strip.GetActiveWebContents()); | 2369 EXPECT_EQ(page_a_contents, strip.GetActiveWebContents()); |
2370 | 2370 |
2371 // Open page A2 in the background from A. It should end up after A1. | 2371 // Open page A2 in the background from A. It should end up after A1. |
2372 WebContents* page_a2_contents = CreateWebContents(); | 2372 WebContents* page_a2_contents = CreateWebContents(); |
2373 strip.AddWebContents(page_a2_contents, -1, content::PAGE_TRANSITION_LINK, | 2373 strip.AddWebContents(page_a2_contents, -1, ui::PAGE_TRANSITION_LINK, |
2374 TabStripModel::ADD_NONE); | 2374 TabStripModel::ADD_NONE); |
2375 EXPECT_EQ(page_b_contents, strip.GetWebContentsAt(0)); | 2375 EXPECT_EQ(page_b_contents, strip.GetWebContentsAt(0)); |
2376 EXPECT_EQ(page_b2_contents, strip.GetWebContentsAt(1)); | 2376 EXPECT_EQ(page_b2_contents, strip.GetWebContentsAt(1)); |
2377 EXPECT_EQ(page_a_contents, strip.GetWebContentsAt(2)); | 2377 EXPECT_EQ(page_a_contents, strip.GetWebContentsAt(2)); |
2378 EXPECT_EQ(page_a1_contents, strip.GetWebContentsAt(3)); | 2378 EXPECT_EQ(page_a1_contents, strip.GetWebContentsAt(3)); |
2379 EXPECT_EQ(page_a2_contents, strip.GetWebContentsAt(4)); | 2379 EXPECT_EQ(page_a2_contents, strip.GetWebContentsAt(4)); |
2380 EXPECT_EQ(page_b1_contents, strip.GetWebContentsAt(5)); | 2380 EXPECT_EQ(page_b1_contents, strip.GetWebContentsAt(5)); |
2381 | 2381 |
2382 strip.CloseAllTabs(); | 2382 strip.CloseAllTabs(); |
2383 } | 2383 } |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2584 WebContents* moved_contents = strip_src.DetachWebContentsAt(1); | 2584 WebContents* moved_contents = strip_src.DetachWebContentsAt(1); |
2585 EXPECT_EQ(contents2, moved_contents); | 2585 EXPECT_EQ(contents2, moved_contents); |
2586 | 2586 |
2587 // Attach the tab to the destination tab strip. | 2587 // Attach the tab to the destination tab strip. |
2588 strip_dst.AppendWebContents(moved_contents, true); | 2588 strip_dst.AppendWebContents(moved_contents, true); |
2589 EXPECT_TRUE(strip_dst.IsTabBlocked(0)); | 2589 EXPECT_TRUE(strip_dst.IsTabBlocked(0)); |
2590 | 2590 |
2591 strip_dst.CloseAllTabs(); | 2591 strip_dst.CloseAllTabs(); |
2592 strip_src.CloseAllTabs(); | 2592 strip_src.CloseAllTabs(); |
2593 } | 2593 } |
OLD | NEW |