| 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 <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> |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 #include "chrome/browser/profiles/profile.h" | 30 #include "chrome/browser/profiles/profile.h" |
| 31 #include "chrome/browser/ui/browser.h" | 31 #include "chrome/browser/ui/browser.h" |
| 32 #include "chrome/browser/ui/browser_commands.h" | 32 #include "chrome/browser/ui/browser_commands.h" |
| 33 #include "chrome/browser/ui/browser_window.h" | 33 #include "chrome/browser/ui/browser_window.h" |
| 34 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 34 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 35 #include "chrome/browser/ui/views/frame/browser_view.h" | 35 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 36 #include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h" | 36 #include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h" |
| 37 #include "chrome/test/base/ui_test_utils.h" | 37 #include "chrome/test/base/ui_test_utils.h" |
| 38 #include "components/prefs/pref_service.h" | 38 #include "components/prefs/pref_service.h" |
| 39 #include "content/public/browser/browser_context.h" | 39 #include "content/public/browser/browser_context.h" |
| 40 #include "content/public/browser/notification_service.h" |
| 40 #include "content/public/browser/storage_partition.h" | 41 #include "content/public/browser/storage_partition.h" |
| 41 #include "content/public/common/page_zoom.h" | 42 #include "content/public/common/page_zoom.h" |
| 42 #include "content/public/common/url_constants.h" | 43 #include "content/public/common/url_constants.h" |
| 43 #include "extensions/browser/api_test_utils.h" | 44 #include "extensions/browser/api_test_utils.h" |
| 44 #include "extensions/browser/app_window/app_window.h" | 45 #include "extensions/browser/app_window/app_window.h" |
| 45 #include "extensions/browser/app_window/app_window_registry.h" | 46 #include "extensions/browser/app_window/app_window_registry.h" |
| 46 #include "extensions/browser/app_window/native_app_window.h" | 47 #include "extensions/browser/app_window/native_app_window.h" |
| 47 #include "extensions/common/manifest_constants.h" | 48 #include "extensions/common/manifest_constants.h" |
| 48 #include "extensions/common/test_util.h" | 49 #include "extensions/common/test_util.h" |
| 49 #include "extensions/test/extension_test_message_listener.h" | 50 #include "extensions/test/extension_test_message_listener.h" |
| (...skipping 1382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1432 } | 1433 } |
| 1433 | 1434 |
| 1434 // Get discarded tabs after activating a discarded tab. | 1435 // Get discarded tabs after activating a discarded tab. |
| 1435 { | 1436 { |
| 1436 std::unique_ptr<base::ListValue> result( | 1437 std::unique_ptr<base::ListValue> result( |
| 1437 RunQueryFunction("[{\"discarded\": true}]")); | 1438 RunQueryFunction("[{\"discarded\": true}]")); |
| 1438 EXPECT_EQ(1u, result->GetSize()); | 1439 EXPECT_EQ(1u, result->GetSize()); |
| 1439 } | 1440 } |
| 1440 } | 1441 } |
| 1441 | 1442 |
| 1443 // Tests chrome.tabs.discard(tabId). |
| 1444 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DiscardWithId) { |
| 1445 // Create an aditional tab. |
| 1446 content::OpenURLParams params(GURL(url::kAboutBlankURL), content::Referrer(), |
| 1447 NEW_BACKGROUND_TAB, ui::PAGE_TRANSITION_LINK, |
| 1448 false); |
| 1449 content::WebContents* web_contents = browser()->OpenURL(params); |
| 1450 |
| 1451 // Set up the function with an extension. |
| 1452 scoped_refptr<const Extension> extension = test_util::CreateEmptyExtension(); |
| 1453 scoped_refptr<TabsDiscardFunction> discard(new TabsDiscardFunction()); |
| 1454 discard->set_extension(extension.get()); |
| 1455 discard->set_has_callback(true); |
| 1456 |
| 1457 // Run function passing the tab id as argument. |
| 1458 int tab_id = ExtensionTabUtil::GetTabId(web_contents); |
| 1459 utils::RunFunction(discard.get(), base::StringPrintf("[%u]", tab_id), |
| 1460 browser(), utils::NONE); |
| 1461 |
| 1462 // Make sure the result was successfull. |
| 1463 const base::Value* result_success; |
| 1464 discard->GetResultList()->Get(1, &result_success); |
| 1465 bool success = false; |
| 1466 result_success->GetAsBoolean(&success); |
| 1467 EXPECT_TRUE(success); |
| 1468 |
| 1469 // Confirms that TabManager sees the the tab as discarded. |
| 1470 memory::TabManager* tab_manager = g_browser_process->GetTabManager(); |
| 1471 ASSERT_TRUE(tab_manager); |
| 1472 web_contents = browser()->tab_strip_model()->GetWebContentsAt(1); |
| 1473 EXPECT_TRUE(tab_manager->IsTabDiscarded(web_contents)); |
| 1474 |
| 1475 // Make sure the returned tab is the one discarded and |
| 1476 // its discarded state is correct. |
| 1477 const base::Value* result_tab; |
| 1478 discard->GetResultList()->Get(0, &result_tab); |
| 1479 std::unique_ptr<base::DictionaryValue> result_dict( |
| 1480 utils::ToDictionary(result_tab->DeepCopy())); |
| 1481 |
| 1482 tab_id = ExtensionTabUtil::GetTabId(web_contents); |
| 1483 EXPECT_EQ(tab_id, api_test_utils::GetInteger(result_dict.get(), "id")); |
| 1484 EXPECT_TRUE(api_test_utils::GetBoolean(result_dict.get(), "discarded")); |
| 1485 } |
| 1486 |
| 1487 // Tests chrome.tabs.discard(). |
| 1488 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DiscardWithoutId) { |
| 1489 // Create an aditional tab. |
| 1490 content::WindowedNotificationObserver load1( |
| 1491 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| 1492 content::NotificationService::AllSources()); |
| 1493 content::OpenURLParams params(GURL(url::kAboutBlankURL), content::Referrer(), |
| 1494 NEW_BACKGROUND_TAB, ui::PAGE_TRANSITION_LINK, |
| 1495 false); |
| 1496 content::WebContents* web_contents = browser()->OpenURL(params); |
| 1497 load1.Wait(); |
| 1498 |
| 1499 // Set up the function with an extension. |
| 1500 scoped_refptr<const Extension> extension = test_util::CreateEmptyExtension(); |
| 1501 scoped_refptr<TabsDiscardFunction> discard(new TabsDiscardFunction()); |
| 1502 discard->set_extension(extension.get()); |
| 1503 discard->set_has_callback(true); |
| 1504 |
| 1505 // Disable protection time to discard the tab without passing id. |
| 1506 memory::TabManager* tab_manager = g_browser_process->GetTabManager(); |
| 1507 ASSERT_TRUE(tab_manager); |
| 1508 tab_manager->set_minimum_protection_time_for_tests(0); |
| 1509 |
| 1510 // Run without passing an id. |
| 1511 utils::RunFunction(discard.get(), "[]", browser(), utils::NONE); |
| 1512 |
| 1513 // Make sure the result was successfull. |
| 1514 const base::Value* result_success; |
| 1515 discard->GetResultList()->Get(1, &result_success); |
| 1516 bool success = false; |
| 1517 result_success->GetAsBoolean(&success); |
| 1518 EXPECT_TRUE(success); |
| 1519 |
| 1520 // Confirms that TabManager sees the tab as discarded. |
| 1521 web_contents = browser()->tab_strip_model()->GetWebContentsAt(1); |
| 1522 EXPECT_TRUE(tab_manager->IsTabDiscarded(web_contents)); |
| 1523 |
| 1524 // Make sure the returned tab is the one discarded and |
| 1525 // its discarded state is correct. |
| 1526 const base::Value* result_tab; |
| 1527 discard->GetResultList()->Get(0, &result_tab); |
| 1528 std::unique_ptr<base::DictionaryValue> result_dict( |
| 1529 utils::ToDictionary(result_tab->DeepCopy())); |
| 1530 |
| 1531 EXPECT_EQ(ExtensionTabUtil::GetTabId(web_contents), |
| 1532 api_test_utils::GetInteger(result_dict.get(), "id")); |
| 1533 EXPECT_TRUE(api_test_utils::GetBoolean(result_dict.get(), "discarded")); |
| 1534 } |
| 1535 |
| 1442 // Tester class for the tabs.zoom* api functions. | 1536 // Tester class for the tabs.zoom* api functions. |
| 1443 class ExtensionTabsZoomTest : public ExtensionTabsTest { | 1537 class ExtensionTabsZoomTest : public ExtensionTabsTest { |
| 1444 public: | 1538 public: |
| 1445 void SetUpOnMainThread() override; | 1539 void SetUpOnMainThread() override; |
| 1446 | 1540 |
| 1447 // Runs chrome.tabs.setZoom(). | 1541 // Runs chrome.tabs.setZoom(). |
| 1448 bool RunSetZoom(int tab_id, double zoom_factor); | 1542 bool RunSetZoom(int tab_id, double zoom_factor); |
| 1449 | 1543 |
| 1450 // Runs chrome.tabs.getZoom(). | 1544 // Runs chrome.tabs.getZoom(). |
| 1451 testing::AssertionResult RunGetZoom(int tab_id, double* zoom_factor); | 1545 testing::AssertionResult RunGetZoom(int tab_id, double* zoom_factor); |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1865 EXPECT_TRUE( | 1959 EXPECT_TRUE( |
| 1866 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); | 1960 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); |
| 1867 | 1961 |
| 1868 // chrome.tabs.setZoomSettings(). | 1962 // chrome.tabs.setZoomSettings(). |
| 1869 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab"); | 1963 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab"); |
| 1870 EXPECT_TRUE( | 1964 EXPECT_TRUE( |
| 1871 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); | 1965 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); |
| 1872 } | 1966 } |
| 1873 | 1967 |
| 1874 } // namespace extensions | 1968 } // namespace extensions |
| OLD | NEW |