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

Unified Diff: chrome/browser/extensions/api/tabs/tabs_test.cc

Issue 2153943002: Implementing TabManager extensions API Discard Function. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: testcases 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/tabs/tabs_test.cc
diff --git a/chrome/browser/extensions/api/tabs/tabs_test.cc b/chrome/browser/extensions/api/tabs/tabs_test.cc
index 1bc1eac1ae248a56c861da8de03788acb98ff51c..bbfda4f79bdff9101e44c55b03320f5757fec231 100644
--- a/chrome/browser/extensions/api/tabs/tabs_test.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_test.cc
@@ -37,6 +37,7 @@
#include "chrome/test/base/ui_test_utils.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/browser_context.h"
+#include "content/public/browser/notification_service.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/common/page_zoom.h"
#include "content/public/common/url_constants.h"
@@ -1439,6 +1440,99 @@ IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DiscardedProperty) {
}
}
+// Tests chrome.tabs.discard(tabId).
+IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DiscardWithId) {
+ // Create an aditional tab.
+ content::OpenURLParams params(GURL(url::kAboutBlankURL), content::Referrer(),
+ NEW_BACKGROUND_TAB, ui::PAGE_TRANSITION_LINK,
+ false);
+ content::WebContents* web_contents = browser()->OpenURL(params);
+
+ // Set up the function with an extension.
+ scoped_refptr<const Extension> extension = test_util::CreateEmptyExtension();
+ scoped_refptr<TabsDiscardFunction> discard(new TabsDiscardFunction());
+ discard->set_extension(extension.get());
+ discard->set_has_callback(true);
+
+ // Run function passing the tab id as argument.
+ int tab_id = ExtensionTabUtil::GetTabId(web_contents);
+ utils::RunFunction(discard.get(), base::StringPrintf("[%u]", tab_id),
+ browser(), utils::NONE);
+
+ // Make sure the result was successfull.
+ const base::Value* result_success;
+ discard->GetResultList()->Get(1, &result_success);
+ bool success = false;
+ result_success->GetAsBoolean(&success);
+ EXPECT_TRUE(success);
+
+ // Confirms that TabManager sees the the tab as discarded.
+ memory::TabManager* tab_manager = g_browser_process->GetTabManager();
+ ASSERT_TRUE(tab_manager);
+ web_contents = browser()->tab_strip_model()->GetWebContentsAt(1);
+ EXPECT_TRUE(tab_manager->IsTabDiscarded(web_contents));
+
+ // Make sure the returned tab is the one discarded and
+ // its discarded state is correct.
+ const base::Value* result_tab;
+ discard->GetResultList()->Get(0, &result_tab);
+ std::unique_ptr<base::DictionaryValue> result_dict(
+ utils::ToDictionary(result_tab->DeepCopy()));
+
+ tab_id = ExtensionTabUtil::GetTabId(web_contents);
+ EXPECT_EQ(tab_id, api_test_utils::GetInteger(result_dict.get(), "id"));
+ EXPECT_TRUE(api_test_utils::GetBoolean(result_dict.get(), "discarded"));
+}
+
+// Tests chrome.tabs.discard().
+IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DiscardWithoutId) {
+ // Create an aditional tab.
+ content::WindowedNotificationObserver load1(
+ content::NOTIFICATION_NAV_ENTRY_COMMITTED,
+ content::NotificationService::AllSources());
+ content::OpenURLParams params(GURL(url::kAboutBlankURL), content::Referrer(),
+ NEW_BACKGROUND_TAB, ui::PAGE_TRANSITION_LINK,
+ false);
+ content::WebContents* web_contents = browser()->OpenURL(params);
+ load1.Wait();
+
+ // Set up the function with an extension.
+ scoped_refptr<const Extension> extension = test_util::CreateEmptyExtension();
+ scoped_refptr<TabsDiscardFunction> discard(new TabsDiscardFunction());
+ discard->set_extension(extension.get());
+ discard->set_has_callback(true);
+
+ // Disable protection time to discard the tab without passing id.
+ memory::TabManager* tab_manager = g_browser_process->GetTabManager();
+ ASSERT_TRUE(tab_manager);
+ tab_manager->set_minimum_protection_time_for_tests(0);
+
+ // Run without passing an id.
+ utils::RunFunction(discard.get(), "[]", browser(), utils::NONE);
+
+ // Make sure the result was successfull.
+ const base::Value* result_success;
+ discard->GetResultList()->Get(1, &result_success);
+ bool success = false;
+ result_success->GetAsBoolean(&success);
+ EXPECT_TRUE(success);
+
+ // Confirms that TabManager sees the tab as discarded.
+ web_contents = browser()->tab_strip_model()->GetWebContentsAt(1);
+ EXPECT_TRUE(tab_manager->IsTabDiscarded(web_contents));
+
+ // Make sure the returned tab is the one discarded and
+ // its discarded state is correct.
+ const base::Value* result_tab;
+ discard->GetResultList()->Get(0, &result_tab);
+ std::unique_ptr<base::DictionaryValue> result_dict(
+ utils::ToDictionary(result_tab->DeepCopy()));
+
+ EXPECT_EQ(ExtensionTabUtil::GetTabId(web_contents),
+ api_test_utils::GetInteger(result_dict.get(), "id"));
+ EXPECT_TRUE(api_test_utils::GetBoolean(result_dict.get(), "discarded"));
+}
+
// Tester class for the tabs.zoom* api functions.
class ExtensionTabsZoomTest : public ExtensionTabsTest {
public:

Powered by Google App Engine
This is Rietveld 408576698