tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_sidebar_button_removal.py (2942B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 from marionette_harness import MarionetteTestCase
      6 
      7 customization_pref = "browser.uiCustomization.state"
      8 
      9 
     10 class TestSidebarButtonRemoval(MarionetteTestCase):
     11    def setUp(self):
     12        super().setUp()
     13        self.marionette.set_context("chrome")
     14 
     15    def tearDown(self):
     16        try:
     17            # Make sure subsequent tests get a clean profile
     18            self.marionette.restart(in_app=False, clean=True)
     19        finally:
     20            super().tearDown()
     21 
     22    def get_sidebar_cui_area(self):
     23        area = self.marionette.execute_script(
     24            """
     25            const window = BrowserWindowTracker.getTopWindow();
     26            return window.CustomizableUI.getPlacementOfWidget("sidebar-button")?.area;
     27            """
     28        )
     29        return area
     30 
     31    def test_sidebar_enable_at_restart(self):
     32        self.marionette.enforce_gecko_prefs({"sidebar.revamp": False})
     33        self.assertEqual(
     34            self.get_sidebar_cui_area(),
     35            None,
     36            "The sidebar-button is not placed in a toolbar",
     37        )
     38        # enable revamp at the next startup
     39        self.marionette.enforce_gecko_prefs({"sidebar.revamp": True})
     40        self.assertEqual(
     41            self.get_sidebar_cui_area(),
     42            "nav-bar",
     43            "The sidebar-button gets placed in the nav-bar by default when starting up with revamp=true",
     44        )
     45 
     46    def test_sidebar_enable_at_runtime_remove_button(self):
     47        self.marionette.enforce_gecko_prefs({"sidebar.revamp": False})
     48        self.assertEqual(
     49            self.get_sidebar_cui_area(),
     50            None,
     51            "The sidebar-button is not placed in a toolbar",
     52        )
     53        self.marionette.set_pref("sidebar.revamp", True)
     54        self.assertEqual(
     55            self.get_sidebar_cui_area(),
     56            "nav-bar",
     57            "The sidebar-button is in the nav-bar",
     58        )
     59 
     60        # Remove the button
     61        self.marionette.execute_script(
     62            """
     63            const window = BrowserWindowTracker.getTopWindow();
     64            return window.CustomizableUI.removeWidgetFromArea("sidebar-button");
     65            """
     66        )
     67        self.assertEqual(
     68            self.get_sidebar_cui_area(),
     69            None,
     70            "The sidebar-button is not placed in a toolbar",
     71        )
     72        self.assertEqual(
     73            self.marionette.get_pref(
     74                "browser.toolbarbuttons.introduced.sidebar-button"
     75            ),
     76            True,
     77            "The 'introduced' pref is set",
     78        )
     79 
     80        self.marionette.restart(in_app=True, clean=False)
     81        self.marionette.set_context("chrome")
     82 
     83        self.assertEqual(
     84            self.get_sidebar_cui_area(),
     85            None,
     86            "The sidebar-button is not restored to the nav-bar",
     87        )