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

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: Created 4 years, 6 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 590 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 for (size_t i = 0; i < result_tabs->GetSize(); ++i) { 629 for (size_t i = 0; i < result_tabs->GetSize(); ++i) {
628 base::DictionaryValue* result_tab = nullptr; 630 base::DictionaryValue* result_tab = nullptr;
629 EXPECT_TRUE(result_tabs->GetDictionary(i, &result_tab)); 631 EXPECT_TRUE(result_tabs->GetDictionary(i, &result_tab));
630 result_ids.insert(GetTabWindowId(result_tab)); 632 result_ids.insert(GetTabWindowId(result_tab));
631 } 633 }
632 EXPECT_EQ(window_ids, result_ids); 634 EXPECT_EQ(window_ids, result_ids);
633 635
634 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 636 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
635 } 637 }
636 638
639 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, QueryDiscardedProperty) {
640 ASSERT_TRUE(g_browser_process && g_browser_process->GetTabManager());
Devlin 2016/06/21 20:31:51 Do these have to be browser tests? Can we not put
Anderson Silva 2016/06/27 18:21:53 We create these as browser tests because we need T
Devlin 2016/06/28 20:14:30 TestingBrowserProcess creates g_browser_process fo
641 memory::TabManager* tab_manager = g_browser_process->GetTabManager();
642
643 // Create two new tabs.
644 content::OpenURLParams params(GURL(url::kAboutBlankURL), content::Referrer(),
645 NEW_BACKGROUND_TAB, ui::PAGE_TRANSITION_LINK,
646 false);
647 content::WebContents* web_contents_a = browser()->OpenURL(params);
648 content::WebContents* web_contents_b = browser()->OpenURL(params);
649
650 // Get non-discarded tabs.
651 {
652 const char* kQueryInfo = "[{\"discarded\": false}]";
653 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
654 function->set_extension(test_util::CreateEmptyExtension().get());
655 std::unique_ptr<base::ListValue> result(
656 utils::ToList(utils::RunFunctionAndReturnSingleResult(
657 function.get(), kQueryInfo, browser())));
658
659 // We should have the initial plus two new non-discarded tabs.
660 EXPECT_EQ(3u, result.get()->GetSize());
661 }
662
663 // Get discarded tabs.
664 {
665 const char* kQueryInfo = "[{\"discarded\": true}]";
666 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
667 function->set_extension(test_util::CreateEmptyExtension().get());
668 std::unique_ptr<base::ListValue> result(
669 utils::ToList(utils::RunFunctionAndReturnSingleResult(
670 function.get(), kQueryInfo, browser())));
671
672 // We should have zero discarded tabs.
673 EXPECT_EQ(0u, result.get()->GetSize());
674 }
675
676 // Discards one tab.
677 EXPECT_TRUE(
678 tab_manager->DiscardTabById(reinterpret_cast<int64_t>(web_contents_a)));
679
680 // Get non-discarded tabs after discarding one tab.
681 {
682 const char* kQueryInfo = "[{\"discarded\": false}]";
683 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
684 function->set_extension(test_util::CreateEmptyExtension().get());
685 std::unique_ptr<base::ListValue> result(
686 utils::ToList(utils::RunFunctionAndReturnSingleResult(
687 function.get(), kQueryInfo, browser())));
688
689 // Now we should have two non-discarded tabs after discarding one.
690 EXPECT_EQ(2u, result.get()->GetSize());
691 }
692
693 // Get discarded tabs after discarding one tab.
694 {
695 const char* kQueryInfo = "[{\"discarded\": true}]";
696 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
697 function->set_extension(test_util::CreateEmptyExtension().get());
698 std::unique_ptr<base::ListValue> result(
699 utils::ToList(utils::RunFunctionAndReturnSingleResult(
700 function.get(), kQueryInfo, browser())));
701
702 // Only one tab was discarded.
703 EXPECT_EQ(1u, result.get()->GetSize());
704 }
705
706 // Discards the other created tab.
707 EXPECT_TRUE(
708 tab_manager->DiscardTabById(reinterpret_cast<int64_t>(web_contents_b)));
709
710 // Get non-discarded tabs after discarding all created tabs.
711 {
712 const char* kQueryInfo = "[{\"discarded\": false}]";
713 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
714 function->set_extension(test_util::CreateEmptyExtension().get());
715 std::unique_ptr<base::ListValue> result(
716 utils::ToList(utils::RunFunctionAndReturnSingleResult(
717 function.get(), kQueryInfo, browser())));
718
719 // Now only the initial tab wasn't discarded.
720 EXPECT_EQ(1u, result.get()->GetSize());
721 }
722
723 // Get discarded tabs after discarding all created tabs.
724 {
725 const char* kQueryInfo = "[{\"discarded\": true}]";
726 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
727 function->set_extension(test_util::CreateEmptyExtension().get());
728 std::unique_ptr<base::ListValue> result(
729 utils::ToList(utils::RunFunctionAndReturnSingleResult(
730 function.get(), kQueryInfo, browser())));
731
732 // Both created tabs were discarded.
733 EXPECT_EQ(2u, result.get()->GetSize());
734 }
Georges Khalil 2016/06/21 15:31:20 I think we're missing one more transition: Add rel
Anderson Silva 2016/06/27 18:21:53 Done.
735 }
736
637 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DontCreateTabInClosingPopupWindow) { 737 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DontCreateTabInClosingPopupWindow) {
638 // Test creates new popup window, closes it right away and then tries to open 738 // Test creates new popup window, closes it right away and then tries to open
639 // a new tab in it. Tab should not be opened in the popup window, but in a 739 // a new tab in it. Tab should not be opened in the popup window, but in a
640 // tabbed browser window. 740 // tabbed browser window.
641 Browser* popup_browser = new Browser( 741 Browser* popup_browser = new Browser(
642 Browser::CreateParams(Browser::TYPE_POPUP, browser()->profile())); 742 Browser::CreateParams(Browser::TYPE_POPUP, browser()->profile()));
643 int window_id = ExtensionTabUtil::GetWindowId(popup_browser); 743 int window_id = ExtensionTabUtil::GetWindowId(popup_browser);
644 chrome::CloseWindow(popup_browser); 744 chrome::CloseWindow(popup_browser);
645 745
646 scoped_refptr<TabsCreateFunction> create_tab_function( 746 scoped_refptr<TabsCreateFunction> create_tab_function(
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after
1738 EXPECT_TRUE( 1838 EXPECT_TRUE(
1739 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); 1839 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl));
1740 1840
1741 // chrome.tabs.setZoomSettings(). 1841 // chrome.tabs.setZoomSettings().
1742 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab"); 1842 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab");
1743 EXPECT_TRUE( 1843 EXPECT_TRUE(
1744 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); 1844 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl));
1745 } 1845 }
1746 1846
1747 } // namespace extensions 1847 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698