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 #input('Pause') | |
Nirnimesh
2012/04/16 21:10:29
remove
Ivan Korotkov
2012/04/17 09:54:10
Done.
| |
197 | |
183 def _AssertSingleTabOpen(self, url): | 198 def _AssertSingleTabOpen(self, url): |
184 """Asserts that a single tab with given url is open. | 199 """Asserts that a single tab with given url is open. |
185 | 200 |
186 Args: | 201 Args: |
187 url: URL of the single tab. | 202 url: URL of the single tab. |
188 """ | 203 """ |
189 info = self.GetBrowserInfo() | 204 info = self.GetBrowserInfo() |
190 self.assertEqual(1, len(info['windows'])) # one window | 205 self.assertEqual(1, len(info['windows'])) # one window |
191 self.assertEqual(1, len(info['windows'][0]['tabs'])) # one tab | 206 self.assertEqual(1, len(info['windows'][0]['tabs'])) # one tab |
192 self.assertEqual(url, info['windows'][0]['tabs'][0]['url']) | 207 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)) | 407 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) |
393 # Verify that open tabs are consistent with restored prefs. | 408 # Verify that open tabs are consistent with restored prefs. |
394 self._AssertSingleTabOpen(previous_url) | 409 self._AssertSingleTabOpen(previous_url) |
395 self.ApplyProtectorChange() | 410 self.ApplyProtectorChange() |
396 # Now the new preference values are active. | 411 # Now the new preference values are active. |
397 self.assertEqual(self._SESSION_STARTUP_URLS, | 412 self.assertEqual(self._SESSION_STARTUP_URLS, |
398 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) | 413 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) |
399 # No longer showing the change. | 414 # No longer showing the change. |
400 self.assertFalse(self.GetProtectorState()['showing_change']) | 415 self.assertFalse(self.GetProtectorState()['showing_change']) |
401 | 416 |
402 def testDetectSessionStartupChangeAndApply(self): | 417 def testDetectSessionStartupChangeAndDiscard(self): |
403 """Test for detecting and discarding a session startup pref change.""" | 418 """Test for detecting and discarding a session startup pref change.""" |
404 # Set startup prefs to restoring last open tabs. | 419 # Set startup prefs to restoring last open tabs. |
405 self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST) | 420 self.SetPrefs(pyauto.kRestoreOnStartup, self._SESSION_STARTUP_LAST) |
406 # Restart browser with startup prefs set to open google.com. | 421 # Restart browser with startup prefs set to open google.com. |
407 self.RestartBrowser( | 422 self.RestartBrowser( |
408 clear_profile=False, | 423 clear_profile=False, |
409 pre_launch_hook=lambda: self._ChangeSessionStartupPrefs( | 424 pre_launch_hook=lambda: self._ChangeSessionStartupPrefs( |
410 self._SESSION_STARTUP_URLS, | 425 self._SESSION_STARTUP_URLS, |
411 startup_urls=['http://www.google.com'])) | 426 startup_urls=['http://www.google.com'])) |
412 # The change must be detected by Protector. | 427 # The change must be detected by Protector. |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
521 self.DiscardProtectorChange() | 536 self.DiscardProtectorChange() |
522 # No longer showing the change. | 537 # No longer showing the change. |
523 self.assertFalse(self.GetProtectorState()['showing_change']) | 538 self.assertFalse(self.GetProtectorState()['showing_change']) |
524 # Pinned tabs are not opened after another restart. | 539 # Pinned tabs are not opened after another restart. |
525 self.RestartBrowser(clear_profile=False) | 540 self.RestartBrowser(clear_profile=False) |
526 self._AssertSingleTabOpen('chrome://newtab/') | 541 self._AssertSingleTabOpen('chrome://newtab/') |
527 # Not showing the change after a restart. | 542 # Not showing the change after a restart. |
528 self.assertFalse(self.GetProtectorState()['showing_change']) | 543 self.assertFalse(self.GetProtectorState()['showing_change']) |
529 | 544 |
530 | 545 |
546 class ProtectorHomepageTest(BaseProtectorTest): | |
547 """Test suite for homepage changes with Protector enabled.""" | |
548 | |
549 def testDetectHomepageChangeWhenButtonNotShown(self): | |
550 """Test that homepage change is detected and reverted when homepage button | |
551 is set to not be shown. | |
552 """ | |
553 previous_homepage = 'http://example.com/' | |
554 self.SetPrefs(pyauto.kHomePage, previous_homepage) | |
555 self.SetPrefs(pyauto.kHomePageIsNewTabPage, False) | |
556 self.SetPrefs(pyauto.kShowHomeButton, False) | |
557 self.RestartBrowser( | |
558 clear_profile=False, | |
559 pre_launch_hook=lambda: self._ChangeHomepage( | |
560 'http://example.info/', False, False)) | |
561 # Change has been automatically reverted, no bubble shown. | |
562 self.assertFalse(self.GetProtectorState()['showing_change']) | |
563 self.assertEquals(previous_homepage, | |
564 self.GetPrefsInfo().Prefs(pyauto.kHomePage)) | |
565 | |
566 def testDetectHomepageChangeAndApply(self): | |
567 """Test that homepage change is detected and can be applied.""" | |
568 previous_homepage = 'http://example.com/' | |
569 new_homepage = 'http://example.info/' | |
570 self.SetPrefs(pyauto.kHomePage, previous_homepage) | |
571 self.SetPrefs(pyauto.kHomePageIsNewTabPage, False) | |
572 self.SetPrefs(pyauto.kShowHomeButton, False) | |
573 self.RestartBrowser( | |
574 clear_profile=False, | |
575 pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True)) | |
576 # The change must be detected by Protector. | |
577 self.assertTrue(self.GetProtectorState()['showing_change']) | |
578 # Protector must restore old preference values. | |
579 self.assertEquals(previous_homepage, | |
580 self.GetPrefsInfo().Prefs(pyauto.kHomePage)) | |
581 self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) | |
582 self.ApplyProtectorChange() | |
583 # Now new values are active. | |
584 self.assertEquals(new_homepage, self.GetPrefsInfo().Prefs(pyauto.kHomePage)) | |
585 self.assertEquals(True, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) | |
586 # No longer showing the change | |
587 self.assertFalse(self.GetProtectorState()['showing_change']) | |
588 | |
589 def testDetectHomepageChangeAndDiscard(self): | |
590 """Test that homepage change is detected and can be discarded.""" | |
591 previous_homepage = 'http://example.com/' | |
592 new_homepage = 'http://example.info/' | |
593 self.SetPrefs(pyauto.kHomePage, previous_homepage) | |
594 self.SetPrefs(pyauto.kHomePageIsNewTabPage, False) | |
595 self.SetPrefs(pyauto.kShowHomeButton, False) | |
596 self.RestartBrowser( | |
597 clear_profile=False, | |
598 pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True)) | |
599 # The change must be detected by Protector. | |
600 self.assertTrue(self.GetProtectorState()['showing_change']) | |
601 # Protector must restore old preference values. | |
602 self.assertEquals(previous_homepage, | |
603 self.GetPrefsInfo().Prefs(pyauto.kHomePage)) | |
604 self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) | |
605 self.DiscardProtectorChange() | |
606 # Nothing changed | |
607 self.assertEquals(previous_homepage, | |
608 self.GetPrefsInfo().Prefs(pyauto.kHomePage)) | |
609 self.assertEquals(False, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) | |
610 # No longer showing the change | |
611 self.assertFalse(self.GetProtectorState()['showing_change']) | |
612 | |
613 | |
531 class ProtectorDisabledTest(BaseProtectorTest): | 614 class ProtectorDisabledTest(BaseProtectorTest): |
532 """Test suite for Protector in disabled state.""" | 615 """Test suite for Protector in disabled state.""" |
533 | 616 |
534 def ExtraChromeFlags(self): | 617 def ExtraChromeFlags(self): |
535 """Ensures Protector is disabled. | 618 """Ensures Protector is disabled. |
536 | 619 |
537 Returns: | 620 Returns: |
538 A list of extra flags to pass to Chrome when it is launched. | 621 A list of extra flags to pass to Chrome when it is launched. |
539 """ | 622 """ |
540 return super(ProtectorDisabledTest, self).ExtraChromeFlags() + [ | 623 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']) | 682 self.assertFalse(self.GetProtectorState()['showing_change']) |
600 # New preference values must be active. | 683 # New preference values must be active. |
601 self.assertEqual(self._SESSION_STARTUP_URLS, | 684 self.assertEqual(self._SESSION_STARTUP_URLS, |
602 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) | 685 self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup)) |
603 # Verify that open tabs are consistent with new prefs. | 686 # Verify that open tabs are consistent with new prefs. |
604 info = self.GetBrowserInfo() | 687 info = self.GetBrowserInfo() |
605 self.assertEqual(1, len(info['windows'])) # one window | 688 self.assertEqual(1, len(info['windows'])) # one window |
606 self.assertEqual(1, len(info['windows'][0]['tabs'])) # one tab | 689 self.assertEqual(1, len(info['windows'][0]['tabs'])) # one tab |
607 self.assertEqual(new_url, info['windows'][0]['tabs'][0]['url']) | 690 self.assertEqual(new_url, info['windows'][0]['tabs'][0]['url']) |
608 | 691 |
692 def testNoHomepageChangeReported(self): | |
693 """Test that homepage change is neither reported nor reverted.""" | |
694 new_homepage = 'http://example.info/' | |
695 self.SetPrefs(pyauto.kHomePage, 'http://example.com/') | |
696 self.SetPrefs(pyauto.kHomePageIsNewTabPage, False) | |
697 self.SetPrefs(pyauto.kShowHomeButton, False) | |
698 self.RestartBrowser( | |
699 clear_profile=False, | |
700 pre_launch_hook=lambda: self._ChangeHomepage(new_homepage, False, True)) | |
701 # Not showing the change. | |
702 self.assertFalse(self.GetProtectorState()['showing_change']) | |
703 # New values must be active. | |
704 self.assertEquals(new_homepage, self.GetPrefsInfo().Prefs(pyauto.kHomePage)) | |
705 self.assertEquals(True, self.GetPrefsInfo().Prefs(pyauto.kShowHomeButton)) | |
706 | |
609 | 707 |
610 if __name__ == '__main__': | 708 if __name__ == '__main__': |
611 pyauto_functional.Main() | 709 pyauto_functional.Main() |
OLD | NEW |