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

Side by Side Diff: chrome/browser/extensions/api/tabs/tabs_test.cc

Issue 2067033002: Discarded property on chrome.tabs.Tab and chrome.tabs.query() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: back to browser_test Created 4 years, 5 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
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 <limits.h> 5 #include <limits.h>
6 #include <stddef.h> 6 #include <stddef.h>
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
11 11
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/strings/pattern.h" 13 #include "base/strings/pattern.h"
14 #include "base/strings/string_split.h" 14 #include "base/strings/string_split.h"
15 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
16 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
17 #include "base/values.h" 17 #include "base/values.h"
18 #include "build/build_config.h" 18 #include "build/build_config.h"
19 #include "chrome/browser/apps/app_browsertest_util.h" 19 #include "chrome/browser/apps/app_browsertest_util.h"
20 #include "chrome/browser/browser_process.h"
20 #include "chrome/browser/devtools/devtools_window_testing.h" 21 #include "chrome/browser/devtools/devtools_window_testing.h"
21 #include "chrome/browser/extensions/api/tabs/tabs_api.h" 22 #include "chrome/browser/extensions/api/tabs/tabs_api.h"
22 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" 23 #include "chrome/browser/extensions/api/tabs/tabs_constants.h"
23 #include "chrome/browser/extensions/extension_apitest.h" 24 #include "chrome/browser/extensions/extension_apitest.h"
24 #include "chrome/browser/extensions/extension_function_test_utils.h" 25 #include "chrome/browser/extensions/extension_function_test_utils.h"
25 #include "chrome/browser/extensions/extension_tab_util.h" 26 #include "chrome/browser/extensions/extension_tab_util.h"
26 #include "chrome/browser/extensions/window_controller.h" 27 #include "chrome/browser/extensions/window_controller.h"
28 #include "chrome/browser/memory/tab_manager.h"
27 #include "chrome/browser/prefs/incognito_mode_prefs.h" 29 #include "chrome/browser/prefs/incognito_mode_prefs.h"
28 #include "chrome/browser/profiles/profile.h" 30 #include "chrome/browser/profiles/profile.h"
29 #include "chrome/browser/ui/browser.h" 31 #include "chrome/browser/ui/browser.h"
30 #include "chrome/browser/ui/browser_commands.h" 32 #include "chrome/browser/ui/browser_commands.h"
31 #include "chrome/browser/ui/browser_window.h" 33 #include "chrome/browser/ui/browser_window.h"
32 #include "chrome/browser/ui/tabs/tab_strip_model.h" 34 #include "chrome/browser/ui/tabs/tab_strip_model.h"
33 #include "chrome/browser/ui/views/frame/browser_view.h" 35 #include "chrome/browser/ui/views/frame/browser_view.h"
34 #include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h" 36 #include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
35 #include "chrome/test/base/ui_test_utils.h" 37 #include "chrome/test/base/ui_test_utils.h"
36 #include "components/prefs/pref_service.h" 38 #include "components/prefs/pref_service.h"
(...skipping 1268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1305 EXPECT_TRUE(base::MatchPattern( 1307 EXPECT_TRUE(base::MatchPattern(
1306 utils::RunFunctionAndReturnError( 1308 utils::RunFunctionAndReturnError(
1307 function.get(), base::StringPrintf("[%u, {\"code\": \"true\"}]", 1309 function.get(), base::StringPrintf("[%u, {\"code\": \"true\"}]",
1308 api::windows::WINDOW_ID_CURRENT), 1310 api::windows::WINDOW_ID_CURRENT),
1309 DevToolsWindowTesting::Get(devtools)->browser()), 1311 DevToolsWindowTesting::Get(devtools)->browser()),
1310 manifest_errors::kCannotAccessPageWithUrl)); 1312 manifest_errors::kCannotAccessPageWithUrl));
1311 1313
1312 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 1314 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
1313 } 1315 }
1314 1316
1317 // TODO(georgesak): change this browsertest to an unittest.
1318 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DiscardedProperty) {
1319 ASSERT_TRUE(g_browser_process && g_browser_process->GetTabManager());
1320 memory::TabManager* tab_manager = g_browser_process->GetTabManager();
1321
1322 // Create two aditional tabs.
1323 content::OpenURLParams params(GURL(url::kAboutBlankURL), content::Referrer(),
1324 NEW_BACKGROUND_TAB, ui::PAGE_TRANSITION_LINK,
1325 false);
1326 content::WebContents* web_contents_a = browser()->OpenURL(params);
1327 content::WebContents* web_contents_b = browser()->OpenURL(params);
1328
1329 // Get non-discarded tabs.
1330 {
1331 const char* kQueryInfo = "[{\"discarded\": false}]";
1332 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
1333 function->set_extension(test_util::CreateEmptyExtension().get());
1334 std::unique_ptr<base::ListValue> result(
1335 utils::ToList(utils::RunFunctionAndReturnSingleResult(
Devlin 2016/07/13 20:17:46 optional nit: These lines pretty much always look
Anderson Silva 2016/07/14 14:38:43 Done. That's very nice. I didn't know about lambda
1336 function.get(), kQueryInfo, browser())));
1337
1338 // The two created plus the default tab.
1339 EXPECT_EQ(3u, result->GetSize());
1340 }
1341
1342 // Get discarded tabs.
1343 {
1344 const char* kQueryInfo = "[{\"discarded\": true}]";
1345 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
1346 function->set_extension(test_util::CreateEmptyExtension().get());
1347 std::unique_ptr<base::ListValue> result(
1348 utils::ToList(utils::RunFunctionAndReturnSingleResult(
1349 function.get(), kQueryInfo, browser())));
1350
1351 EXPECT_EQ(0u, result->GetSize());
1352 }
1353
1354 TabStripModel* tab_strip_model = browser()->tab_strip_model();
1355
1356 // Creates Tab object to ensure the property is correct for the extension.
1357 std::unique_ptr<api::tabs::Tab> tab_object_a =
1358 ExtensionTabUtil::CreateTabObject(web_contents_a, tab_strip_model, 0);
1359 EXPECT_FALSE(tab_object_a->discarded);
1360
1361 // Discards one tab.
1362 EXPECT_TRUE(
1363 tab_manager->DiscardTabById(reinterpret_cast<int64_t>(web_contents_a)));
1364 web_contents_a = tab_strip_model->GetWebContentsAt(1);
1365
1366 // Make sure the property is changed accordingly after discarding the tab.
1367 tab_object_a =
1368 ExtensionTabUtil::CreateTabObject(web_contents_a, tab_strip_model, 0);
1369 EXPECT_TRUE(tab_object_a->discarded);
1370
1371 // Get non-discarded tabs after discarding one tab.
1372 {
1373 const char* kQueryInfo = "[{\"discarded\": false}]";
1374 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
1375 function->set_extension(test_util::CreateEmptyExtension().get());
1376 std::unique_ptr<base::ListValue> result(
1377 utils::ToList(utils::RunFunctionAndReturnSingleResult(
1378 function.get(), kQueryInfo, browser())));
1379
1380 EXPECT_EQ(2u, result->GetSize());
1381 }
1382
1383 // Get discarded tabs after discarding one tab.
1384 {
1385 const char* kQueryInfo = "[{\"discarded\": true}]";
1386 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
1387 function->set_extension(test_util::CreateEmptyExtension().get());
1388 std::unique_ptr<base::ListValue> result(
1389 utils::ToList(utils::RunFunctionAndReturnSingleResult(
1390 function.get(), kQueryInfo, browser())));
1391
1392 EXPECT_EQ(1u, result->GetSize());
1393
1394 // Make sure the returned tab is the correct one.
1395 int tab_id_a = ExtensionTabUtil::GetTabId(web_contents_a);
1396
1397 int id = -1;
1398 base::Value* tab = nullptr;
1399 EXPECT_TRUE(result->Get(0, &tab));
1400 utils::ToDictionary(tab)->GetInteger(keys::kIdKey, &id);
1401
1402 EXPECT_EQ(tab_id_a, id);
1403 }
1404
1405 // Discards another created tab.
1406 EXPECT_TRUE(
1407 tab_manager->DiscardTabById(reinterpret_cast<int64_t>(web_contents_b)));
1408
1409 // Get non-discarded tabs after discarding two created tabs.
1410 {
1411 const char* kQueryInfo = "[{\"discarded\": false}]";
1412 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
1413 function->set_extension(test_util::CreateEmptyExtension().get());
1414 std::unique_ptr<base::ListValue> result(
1415 utils::ToList(utils::RunFunctionAndReturnSingleResult(
1416 function.get(), kQueryInfo, browser())));
1417
1418 EXPECT_EQ(1u, result->GetSize());
1419
1420 // Make sure the returned tab is the correct one.
1421 int tab_id_c =
1422 ExtensionTabUtil::GetTabId(tab_strip_model->GetWebContentsAt(0));
1423
1424 int id = -1;
1425 base::Value* tab = nullptr;
1426 EXPECT_TRUE(result->Get(0, &tab));
1427 utils::ToDictionary(tab)->GetInteger(keys::kIdKey, &id);
1428
1429 EXPECT_EQ(tab_id_c, id);
1430 }
1431
1432 // Get discarded tabs after discarding two created tabs.
1433 {
1434 const char* kQueryInfo = "[{\"discarded\": true}]";
1435 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
1436 function->set_extension(test_util::CreateEmptyExtension().get());
1437 std::unique_ptr<base::ListValue> result(
1438 utils::ToList(utils::RunFunctionAndReturnSingleResult(
1439 function.get(), kQueryInfo, browser())));
1440
1441 EXPECT_EQ(2u, result->GetSize());
1442 }
1443
1444 // Activates the first created tab.
1445 tab_strip_model->ActivateTabAt(1, false);
1446
1447 // Get non-discarded tabs after activating a discarded tab.
1448 {
1449 const char* kQueryInfo = "[{\"discarded\": false}]";
1450 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
1451 function->set_extension(test_util::CreateEmptyExtension().get());
1452 std::unique_ptr<base::ListValue> result(
1453 utils::ToList(utils::RunFunctionAndReturnSingleResult(
1454 function.get(), kQueryInfo, browser())));
1455
1456 EXPECT_EQ(2u, result->GetSize());
1457 }
1458
1459 // Get discarded tabs after activating a discarded tab.
1460 {
1461 const char* kQueryInfo = "[{\"discarded\": true}]";
1462 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
1463 function->set_extension(test_util::CreateEmptyExtension().get());
1464 std::unique_ptr<base::ListValue> result(
1465 utils::ToList(utils::RunFunctionAndReturnSingleResult(
1466 function.get(), kQueryInfo, browser())));
1467
1468 EXPECT_EQ(1u, result->GetSize());
1469 }
1470 }
1471
1315 // Tester class for the tabs.zoom* api functions. 1472 // Tester class for the tabs.zoom* api functions.
1316 class ExtensionTabsZoomTest : public ExtensionTabsTest { 1473 class ExtensionTabsZoomTest : public ExtensionTabsTest {
1317 public: 1474 public:
1318 void SetUpOnMainThread() override; 1475 void SetUpOnMainThread() override;
1319 1476
1320 // Runs chrome.tabs.setZoom(). 1477 // Runs chrome.tabs.setZoom().
1321 bool RunSetZoom(int tab_id, double zoom_factor); 1478 bool RunSetZoom(int tab_id, double zoom_factor);
1322 1479
1323 // Runs chrome.tabs.getZoom(). 1480 // Runs chrome.tabs.getZoom().
1324 testing::AssertionResult RunGetZoom(int tab_id, double* zoom_factor); 1481 testing::AssertionResult RunGetZoom(int tab_id, double* zoom_factor);
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
1738 EXPECT_TRUE( 1895 EXPECT_TRUE(
1739 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); 1896 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl));
1740 1897
1741 // chrome.tabs.setZoomSettings(). 1898 // chrome.tabs.setZoomSettings().
1742 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab"); 1899 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab");
1743 EXPECT_TRUE( 1900 EXPECT_TRUE(
1744 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); 1901 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl));
1745 } 1902 }
1746 1903
1747 } // namespace extensions 1904 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/tabs/tabs_api.cc ('k') | chrome/browser/extensions/extension_tab_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698