| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import pyauto_functional # Must be imported first | 6 import pyauto_functional # Must be imported first |
| 7 import pyauto | 7 import pyauto |
| 8 import test_utils | 8 import test_utils |
| 9 | 9 |
| 10 import json | 10 import json |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 | 173 |
| 174 Args: | 174 Args: |
| 175 pinned_tabs: list(str) with a list of pinned tabs URLs. | 175 pinned_tabs: list(str) with a list of pinned tabs URLs. |
| 176 """ | 176 """ |
| 177 prefs = self._LoadPreferences() | 177 prefs = self._LoadPreferences() |
| 178 prefs['pinned_tabs'] = [] | 178 prefs['pinned_tabs'] = [] |
| 179 for tab in pinned_tabs: | 179 for tab in pinned_tabs: |
| 180 prefs['pinned_tabs'].append({'url': tab}) | 180 prefs['pinned_tabs'].append({'url': tab}) |
| 181 self._WritePreferences(prefs) | 181 self._WritePreferences(prefs) |
| 182 | 182 |
| 183 def _ChangeHomepage(self, homepage, homepage_is_ntp, show_homepage_button): |
| 184 """Changes homepage settings. |
| 185 |
| 186 Args: |
| 187 homepage: new homepage URL (str), |
| 188 homepage_is_ntp: whether homepage is NTP. |
| 189 show_homepage_button: whether homepage button is visible. |
| 190 """ |
| 191 prefs = self._LoadPreferences() |
| 192 prefs['homepage'] = homepage |
| 193 prefs['homepage_is_newtabpage'] = homepage_is_ntp |
| 194 prefs['browser']['show_home_button'] = show_homepage_button |
| 195 self._WritePreferences(prefs) |
| 196 |
| 183 def _AssertSingleTabOpen(self, url): | 197 def _AssertSingleTabOpen(self, url): |
| 184 """Asserts that a single tab with given url is open. | 198 """Asserts that a single tab with given url is open. |
| 185 | 199 |
| 186 Args: | 200 Args: |
| 187 url: URL of the single tab. | 201 url: URL of the single tab. |
| 188 """ | 202 """ |
| 189 info = self.GetBrowserInfo() | 203 info = self.GetBrowserInfo() |
| 190 self.assertEqual(1, len(info['windows'])) # one window | 204 self.assertEqual(1, len(info['windows'])) # one window |
| 191 self.assertEqual(1, len(info['windows'][0]['tabs'])) # one tab | 205 self.assertEqual(1, len(info['windows'][0]['tabs'])) # one tab |
| 192 self.assertEqual(url, info['windows'][0]['tabs'][0]['url']) | 206 self.assertEqual(url, info['windows'][0]['tabs'][0]['url']) |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) | 406 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) |
| 393 # Verify that open tabs are consistent with restored prefs. | 407 # Verify that open tabs are consistent with restored prefs. |
| 394 self._AssertSingleTabOpen(previous_url) | 408 self._AssertSingleTabOpen(previous_url) |
| 395 self.ApplyProtectorChange() | 409 self.ApplyProtectorChange() |
| 396 # Now the new preference values are active. | 410 # Now the new preference values are active. |
| 397 self.assertEqual(self._SESSION_STARTUP_URLS, | 411 self.assertEqual(self._SESSION_STARTUP_URLS, |
| 398 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) | 412 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) |
| 399 # No longer showing the change. | 413 # No longer showing the change. |
| 400 self.assertFalse(self.GetProtectorState()['showing_change']) | 414 self.assertFalse(self.GetProtectorState()['showing_change']) |
| 401 | 415 |
| 402 def testDetectSessionStartupChangeAndApply(self): | 416 def testDetectSessionStartupChangeAndDiscard(self): |
| 403 """Test for detecting and discarding a session startup pref change.""" | 417 """Test for detecting and discarding a session startup pref change.""" |
| 404 # Set startup prefs to restoring last open tabs. | 418 # Set startup prefs to restoring last open tabs. |
| 405 self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST) | 419 self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST) |
| 406 # Restart browser with startup prefs set to open google.com. | 420 # Restart browser with startup prefs set to open google.com. |
| 407 self.RestartBrowser( | 421 self.RestartBrowser( |
| 408 clear_profile=False, | 422 clear_profile=False, |
| 409 pre_launch_hook=lambda: self._ChangeSessionStartupPrefs( | 423 pre_launch_hook=lambda: self._ChangeSessionStartupPrefs( |
| 410 self._SESSION_STARTUP_URLS, | 424 self._SESSION_STARTUP_URLS, |
| 411 startup_urls=['http://www.google.com'])) | 425 startup_urls=['http://www.google.com'])) |
| 412 # The change must be detected by Protector. | 426 # The change must be detected by Protector. |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 self.DiscardProtectorChange() | 535 self.DiscardProtectorChange() |
| 522 # No longer showing the change. | 536 # No longer showing the change. |
| 523 self.assertFalse(self.GetProtectorState()['showing_change']) | 537 self.assertFalse(self.GetProtectorState()['showing_change']) |
| 524 # Pinned tabs are not opened after another restart. | 538 # Pinned tabs are not opened after another restart. |
| 525 self.RestartBrowser(clear_profile=False) | 539 self.RestartBrowser(clear_profile=False) |
| 526 self._AssertSingleTabOpen('chrome://newtab/') | 540 self._AssertSingleTabOpen('chrome://newtab/') |
| 527 # Not showing the change after a restart. | 541 # Not showing the change after a restart. |
| 528 self.assertFalse(self.GetProtectorState()['showing_change']) | 542 self.assertFalse(self.GetProtectorState()['showing_change']) |
| 529 | 543 |
| 530 | 544 |
| 545 class ProtectorHomepageTest(BaseProtectorTest): |
| 546 """Test suite for homepage changes with Protector enabled.""" |
| 547 |
| 548 def testDetectHomepageChangeWhenButtonNotShown(self): |
| 549 """Test that homepage change is detected and reverted when homepage button |
| 550 is set to not be shown. |
| 551 """ |
| 552 previous_homepage = 'http://example.com/' |
| 553 self.SetPrefs(pyauto.kHomePage, previous_homepage) |
| 554 self.SetPrefs(pyauto.kHomePageIsNewTabPage, False) |
| 555 self.SetPrefs(pyauto.kShowHomeButton, False) |
| 556 self.RestartBrowser( |
| 557 clear_profile=False, |
| 558 pre_launch_hook=lambda: self._ChangeHomepage( |
| 559 'http://example.info/', False, False)) |
| 560 # Change has been automatically reverted, no bubble shown. |
| 561 self.assertFalse(self.GetProtectorState()['showing_change']) |
| 562 self.assertEquals(previous_homepage, |
| 563 self.GetPrefsInfo().Prefs(pyauto.kHomePage)) |
| 564 |
| 565 def testDetectHomepageChangeAndApply(self): |
| 566 """Test that homepage change is detected and can be applied.""" |
| 567 previous_homepage = 'http://example.com/' |
| 568 new_homepage = 'http://example.info/' |
| 569 self.SetPrefs(pyauto.kHomePage, previous_homepage) |
| 570 self.SetPrefs(pyauto.kHomePageIsNewTabPage, False) |
| 571 self.SetPrefs(pyauto.kShowHomeButton, False) |
| 572 self.RestartBrowser( |
| 573 clear_profile=False, |
| 574 pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True)) |
| 575 # The change must be detected by Protector. |
| 576 self.assertTrue(self.GetProtectorState()['showing_change']) |
| 577 # Protector must restore old preference values. |
| 578 self.assertEquals(previous_homepage, |
| 579 self.GetPrefsInfo().Prefs(pyauto.kHomePage)) |
| 580 self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) |
| 581 self.ApplyProtectorChange() |
| 582 # Now new values are active. |
| 583 self.assertEquals(new_homepage, self.GetPrefsInfo().Prefs(pyauto.kHomePage)) |
| 584 self.assertEquals(True, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) |
| 585 # No longer showing the change |
| 586 self.assertFalse(self.GetProtectorState()['showing_change']) |
| 587 |
| 588 def testDetectHomepageChangeAndDiscard(self): |
| 589 """Test that homepage change is detected and can be discarded.""" |
| 590 previous_homepage = 'http://example.com/' |
| 591 new_homepage = 'http://example.info/' |
| 592 self.SetPrefs(pyauto.kHomePage, previous_homepage) |
| 593 self.SetPrefs(pyauto.kHomePageIsNewTabPage, False) |
| 594 self.SetPrefs(pyauto.kShowHomeButton, False) |
| 595 self.RestartBrowser( |
| 596 clear_profile=False, |
| 597 pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True)) |
| 598 # The change must be detected by Protector. |
| 599 self.assertTrue(self.GetProtectorState()['showing_change']) |
| 600 # Protector must restore old preference values. |
| 601 self.assertEquals(previous_homepage, |
| 602 self.GetPrefsInfo().Prefs(pyauto.kHomePage)) |
| 603 self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) |
| 604 self.DiscardProtectorChange() |
| 605 # Nothing changed |
| 606 self.assertEquals(previous_homepage, |
| 607 self.GetPrefsInfo().Prefs(pyauto.kHomePage)) |
| 608 self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) |
| 609 # No longer showing the change |
| 610 self.assertFalse(self.GetProtectorState()['showing_change']) |
| 611 |
| 612 |
| 531 class ProtectorDisabledTest(BaseProtectorTest): | 613 class ProtectorDisabledTest(BaseProtectorTest): |
| 532 """Test suite for Protector in disabled state.""" | 614 """Test suite for Protector in disabled state.""" |
| 533 | 615 |
| 534 def ExtraChromeFlags(self): | 616 def ExtraChromeFlags(self): |
| 535 """Ensures Protector is disabled. | 617 """Ensures Protector is disabled. |
| 536 | 618 |
| 537 Returns: | 619 Returns: |
| 538 A list of extra flags to pass to Chrome when it is launched. | 620 A list of extra flags to pass to Chrome when it is launched. |
| 539 """ | 621 """ |
| 540 return super(ProtectorDisabledTest, self).ExtraChromeFlags() + [ | 622 return super(ProtectorDisabledTest, self).ExtraChromeFlags() + [ |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 self.assertFalse(self.GetProtectorState()['showing_change']) | 681 self.assertFalse(self.GetProtectorState()['showing_change']) |
| 600 # New preference values must be active. | 682 # New preference values must be active. |
| 601 self.assertEqual(self._SESSION_STARTUP_URLS, | 683 self.assertEqual(self._SESSION_STARTUP_URLS, |
| 602 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) | 684 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) |
| 603 # Verify that open tabs are consistent with new prefs. | 685 # Verify that open tabs are consistent with new prefs. |
| 604 info = self.GetBrowserInfo() | 686 info = self.GetBrowserInfo() |
| 605 self.assertEqual(1, len(info['windows'])) # one window | 687 self.assertEqual(1, len(info['windows'])) # one window |
| 606 self.assertEqual(1, len(info['windows'][0]['tabs'])) # one tab | 688 self.assertEqual(1, len(info['windows'][0]['tabs'])) # one tab |
| 607 self.assertEqual(new_url, info['windows'][0]['tabs'][0]['url']) | 689 self.assertEqual(new_url, info['windows'][0]['tabs'][0]['url']) |
| 608 | 690 |
| 691 def testNoHomepageChangeReported(self): |
| 692 """Test that homepage change is neither reported nor reverted.""" |
| 693 new_homepage = 'http://example.info/' |
| 694 self.SetPrefs(pyauto.kHomePage, 'http://example.com/') |
| 695 self.SetPrefs(pyauto.kHomePageIsNewTabPage, False) |
| 696 self.SetPrefs(pyauto.kShowHomeButton, False) |
| 697 self.RestartBrowser( |
| 698 clear_profile=False, |
| 699 pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True)) |
| 700 # Not showing the change. |
| 701 self.assertFalse(self.GetProtectorState()['showing_change']) |
| 702 # New values must be active. |
| 703 self.assertEquals(new_homepage, self.GetPrefsInfo().Prefs(pyauto.kHomePage)) |
| 704 self.assertEquals(True, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) |
| 705 |
| 609 | 706 |
| 610 if __name__ == '__main__': | 707 if __name__ == '__main__': |
| 611 pyauto_functional.Main() | 708 pyauto_functional.Main() |
| OLD | NEW |