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 |