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

Side by Side Diff: chrome/test/pyautolib/pyauto.py

Issue 6159001: Modifying some downloads hooks to act per-window (so that incognito windows c... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « chrome/test/functional/downloads.py ('k') | chrome/test/pyautolib/pyautolib.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """PyAuto: Python Interface to Chromium's Automation Proxy. 7 """PyAuto: Python Interface to Chromium's Automation Proxy.
8 8
9 PyAuto uses swig to expose Automation Proxy interfaces to Python. 9 PyAuto uses swig to expose Automation Proxy interfaces to Python.
10 For complete documentation on the functionality available, 10 For complete documentation on the functionality available,
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 return ret_dict 381 return ret_dict
382 382
383 def GetBookmarkModel(self): 383 def GetBookmarkModel(self):
384 """Return the bookmark model as a BookmarkModel object. 384 """Return the bookmark model as a BookmarkModel object.
385 385
386 This is a snapshot of the bookmark model; it is not a proxy and 386 This is a snapshot of the bookmark model; it is not a proxy and
387 does not get updated as the bookmark model changes. 387 does not get updated as the bookmark model changes.
388 """ 388 """
389 return bookmark_model.BookmarkModel(self._GetBookmarksAsJSON()) 389 return bookmark_model.BookmarkModel(self._GetBookmarksAsJSON())
390 390
391 def GetDownloadsInfo(self): 391 def GetDownloadsInfo(self, windex=0):
392 """Return info about downloads. 392 """Return info about downloads.
393 393
394 This includes all the downloads recognized by the history system. 394 This includes all the downloads recognized by the history system.
395 395
396 Returns: 396 Returns:
397 an instance of downloads_info.DownloadInfo 397 an instance of downloads_info.DownloadInfo
398 """ 398 """
399 return download_info.DownloadInfo( 399 return download_info.DownloadInfo(
400 self._SendJSONRequest(0, json.dumps({'command': 'GetDownloadsInfo'}))) 400 self._SendJSONRequest(
401 windex, json.dumps({'command': 'GetDownloadsInfo'})))
401 402
402 def GetOmniboxInfo(self, windex=0): 403 def GetOmniboxInfo(self, windex=0):
403 """Return info about Omnibox. 404 """Return info about Omnibox.
404 405
405 This represents a snapshot of the omnibox. If you expect changes 406 This represents a snapshot of the omnibox. If you expect changes
406 you need to call this method again to get a fresh snapshot. 407 you need to call this method again to get a fresh snapshot.
407 Note that this DOES NOT shift focus to the omnibox; you've to ensure that 408 Note that this DOES NOT shift focus to the omnibox; you've to ensure that
408 the omnibox is in focus or else you won't get any interesting info. 409 the omnibox is in focus or else you won't get any interesting info.
409 410
410 It's OK to call this even when the omnibox popup is not showing. In this 411 It's OK to call this even when the omnibox popup is not showing. In this
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 right key. It's useful to dump the preferences first to determine 651 right key. It's useful to dump the preferences first to determine
651 what type is expected for a particular preference path. 652 what type is expected for a particular preference path.
652 """ 653 """
653 cmd_dict = { 654 cmd_dict = {
654 'command': 'SetPrefs', 655 'command': 'SetPrefs',
655 'path': path, 656 'path': path,
656 'value': value, 657 'value': value,
657 } 658 }
658 self._GetResultFromJSONRequest(cmd_dict) 659 self._GetResultFromJSONRequest(cmd_dict)
659 660
660 def WaitForAllDownloadsToComplete(self): 661 def WaitForAllDownloadsToComplete(self, windex=0):
661 """Wait for all downloads to complete. 662 """Wait for all downloads to complete.
662 663
663 Note: This method does not work for dangerous downloads. Use 664 Note: This method does not work for dangerous downloads. Use
664 WaitForGivenDownloadsToComplete (below) instead. 665 WaitForGivenDownloadsToComplete (below) instead.
665 """ 666 """
666 self._GetResultFromJSONRequest({'command': 'WaitForAllDownloadsToComplete'}) 667 cmd_dict = {'command': 'WaitForAllDownloadsToComplete'}
668 self._GetResultFromJSONRequest(cmd_dict, windex=windex)
667 669
668 def WaitForDownloadToComplete(self, download_path, timeout=-1): 670 def WaitForDownloadToComplete(self, download_path, timeout=-1):
669 """Wait for the given downloads to complete. 671 """Wait for the given downloads to complete.
670 672
671 This method works for dangerous downloads as well as regular downloads. 673 This method works for dangerous downloads as well as regular downloads.
672 674
673 Args: 675 Args:
674 download_path: The path to the final download. This is only necessary for 676 download_path: The path to the final download. This is only necessary for
675 the workaround described in the comments below and should 677 the workaround described in the comments below and should
676 be removed when downloads are re-implemented. 678 be removed when downloads are re-implemented.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 u'url': u'file://url/to/file.txt' 723 u'url': u'file://url/to/file.txt'
722 } 724 }
723 """ 725 """
724 cmd_dict = { # Prepare command for the json interface 726 cmd_dict = { # Prepare command for the json interface
725 'command': 'PerformActionOnDownload', 727 'command': 'PerformActionOnDownload',
726 'id': id, 728 'id': id,
727 'action': action 729 'action': action
728 } 730 }
729 return self._GetResultFromJSONRequest(cmd_dict, windex=window_index) 731 return self._GetResultFromJSONRequest(cmd_dict, windex=window_index)
730 732
731 def DownloadAndWaitForStart(self, file_url): 733 def DownloadAndWaitForStart(self, file_url, windex=0):
732 """Trigger download for the given url and wait for downloads to start. 734 """Trigger download for the given url and wait for downloads to start.
733 735
734 It waits for download by looking at the download info from Chrome, so 736 It waits for download by looking at the download info from Chrome, so
735 anything which isn't registered by the history service won't be noticed. 737 anything which isn't registered by the history service won't be noticed.
736 This is not thread-safe, but it's fine to call this method to start 738 This is not thread-safe, but it's fine to call this method to start
737 downloading multiple files in parallel. That is after starting a 739 downloading multiple files in parallel. That is after starting a
738 download, it's fine to start another one even if the first one hasn't 740 download, it's fine to start another one even if the first one hasn't
739 completed. 741 completed.
740 """ 742 """
741 num_downloads = len(self.GetDownloadsInfo().Downloads()) 743 try:
742 self.NavigateToURL(file_url) # Trigger download. 744 num_downloads = len(self.GetDownloadsInfo(windex).Downloads())
745 except JSONInterfaceError:
746 num_downloads = 0
747
748 self.NavigateToURL(file_url, windex) # Trigger download.
743 # It might take a while for the download to kick in, hold on until then. 749 # It might take a while for the download to kick in, hold on until then.
744 self.assertTrue(self.WaitUntil( 750 self.assertTrue(self.WaitUntil(
745 lambda: len(self.GetDownloadsInfo().Downloads()) == num_downloads + 1)) 751 lambda: len(self.GetDownloadsInfo(windex).Downloads()) >
752 num_downloads))
746 753
747 def SetWindowDimensions( 754 def SetWindowDimensions(
748 self, x=None, y=None, width=None, height=None, windex=0): 755 self, x=None, y=None, width=None, height=None, windex=0):
749 """Set window dimensions. 756 """Set window dimensions.
750 757
751 All args are optional and current values will be preserved. 758 All args are optional and current values will be preserved.
752 Arbitrarily large values will be handled gracefully by the browser. 759 Arbitrarily large values will be handled gracefully by the browser.
753 760
754 Args: 761 Args:
755 x: window origin x 762 x: window origin x
(...skipping 1601 matching lines...) Expand 10 before | Expand all | Expand 10 after
2357 if self._options.verbose: 2364 if self._options.verbose:
2358 verbosity = 2 2365 verbosity = 2
2359 result = PyAutoTextTestRuner(verbosity=verbosity).run(pyauto_suite) 2366 result = PyAutoTextTestRuner(verbosity=verbosity).run(pyauto_suite)
2360 del loaded_tests # Need to destroy test cases before the suite 2367 del loaded_tests # Need to destroy test cases before the suite
2361 del pyauto_suite 2368 del pyauto_suite
2362 sys.exit(not result.wasSuccessful()) 2369 sys.exit(not result.wasSuccessful())
2363 2370
2364 2371
2365 if __name__ == '__main__': 2372 if __name__ == '__main__':
2366 Main() 2373 Main()
OLDNEW
« no previous file with comments | « chrome/test/functional/downloads.py ('k') | chrome/test/pyautolib/pyautolib.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698