| Index: chrome/test/pyautolib/ntp_model.py
|
| ===================================================================
|
| --- chrome/test/pyautolib/ntp_model.py (revision 0)
|
| +++ chrome/test/pyautolib/ntp_model.py (revision 0)
|
| @@ -0,0 +1,213 @@
|
| +#!/usr/bin/python
|
| +
|
| +# Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""NTPModel: python representation of the NTP.
|
| +
|
| +This does not refer to any one particular instance of the NTP, but the
|
| +model behind all such pages.
|
| +
|
| +Obtain one of these from PyUITestSuite::GetNTPModel() call.
|
| +
|
| +Most actions with the NTPModel will raise a NTPThumbnailNotShownError
|
| +if an attempt is made to manipulate a Most Visited site thumbnail that
|
| +is not visible to the actual user.
|
| +"""
|
| +
|
| +import exceptions
|
| +
|
| +
|
| +class NTPThumbnailNotShownError(RuntimeError):
|
| + """Represent an error from attempting to manipulate a NTP thumbnail that
|
| + is not visible to a real user."""
|
| + pass
|
| +
|
| +class NTPModel(object):
|
| +
|
| + def __init__(self, sender):
|
| + """Initialize the NTPModel with the channel for sending requests.
|
| +
|
| + Args:
|
| + sender: a pyautolib.PyUITestBase which can send JSON requests
|
| + """
|
| + self._sender = sender
|
| +
|
| + def GetThumbnails(self):
|
| + """Return a list of info about the sites in the most visited section.
|
| + SAMPLE:
|
| + [{ u'title': u'Google',
|
| + u'url': u'http://www.google.com',
|
| + u'is_pinned': False},
|
| + {
|
| + u'title': u'Yahoo',
|
| + u'url': u'http://www.yahoo.com',
|
| + u'is_pinned': True}]
|
| + """
|
| + return self._GetInfo()['most_visited']
|
| +
|
| + def GetThumbnailIndex(self, thumbnail):
|
| + """Returns the index of the given thumbnail, or -1 if it is not shown.
|
| +
|
| + Args:
|
| + thumbnail: a thumbnail dict received from |GetThumbnails|
|
| + """
|
| + thumbnails = self.GetThumbnails()
|
| + for i in range(len(thumbnails)):
|
| + if thumbnails[i]['url'] == thumbnail['url']:
|
| + return i
|
| + return -1
|
| +
|
| + def MoveThumbnail(self, thumbnail, new_index):
|
| + """Moves the given thumbnail to a new index. The indices in the NTP Most
|
| + Visited sites section look like:
|
| + 0 1 2 3
|
| + 4 5 6 7
|
| +
|
| + Args:
|
| + thumbnail: a thumbnail dict received from |GetThumbnails|
|
| + new_index: the index to be moved to in the Most Visited sites section
|
| +
|
| + Raises:
|
| + exceptions.IndexError if there is no thumbnail at the index
|
| +
|
| + Note:
|
| + When a thumbnail is moved, it is automatically pinned
|
| + """
|
| + if new_index < 0 or new_index >= len(self.GetThumbnails()):
|
| + raise exceptions.IndexError()
|
| + self._CheckThumbnailShown(thumbnail)
|
| + cmd_dict = {
|
| + 'command': 'MoveNTPMostVisitedThumbnail',
|
| + 'url': thumbnail['url'],
|
| + 'index': new_index,
|
| + 'old_index': self.GetThumbnailIndex(thumbnail)
|
| + }
|
| + self._sender._GetResultFromJSONRequest(cmd_dict)
|
| +
|
| + def RemoveThumbnail(self, thumbnail):
|
| + """Removes the thumbnail and returns true on success.
|
| +
|
| + Args:
|
| + thumbnail: a thumbnail dict received from |GetThumbnails|
|
| + """
|
| + self._CheckThumbnailShown(thumbnail)
|
| + cmd_dict = {
|
| + 'command': 'RemoveNTPMostVisitedThumbnail',
|
| + 'url': thumbnail['url']
|
| + }
|
| + self._sender._GetResultFromJSONRequest(cmd_dict)
|
| +
|
| + def PinThumbnail(self, thumbnail):
|
| + """Pins the thumbnail.
|
| +
|
| + Args:
|
| + thumbnail: a thumbnail dict received from |GetThumbnails|
|
| + """
|
| + self._CheckThumbnailShown(thumbnail)
|
| + self.MoveThumbnail(thumbnail, self.GetThumbnailIndex(thumbnail))
|
| +
|
| + def UnpinThumbnail(self, thumbnail):
|
| + """Unpins the thumbnail and returns true on success.
|
| +
|
| + Args:
|
| + thumbnail: a thumbnail dict received from |GetThumbnails|
|
| + """
|
| + self._CheckThumbnailShown(thumbnail)
|
| + cmd_dict = {
|
| + 'command': 'UnpinNTPMostVisitedThumbnail',
|
| + 'url': thumbnail['url']
|
| + }
|
| + self._sender._GetResultFromJSONRequest(cmd_dict)
|
| +
|
| + def IsPinned(self, thumbnail):
|
| + """Returns whether the thumbnail is pinned.
|
| +
|
| + Args:
|
| + thumbnail: a thumbnail dict received from |GetThumbnails|
|
| + """
|
| + self._CheckThumbnailShown(thumbnail)
|
| + return self.GetThumbnails()[self.GetThumbnailIndex(thumbnail)]['is_pinned']
|
| +
|
| + def RestoreAllThumbnails(self):
|
| + """Restores all the removed thumbnails.
|
| + Note:
|
| + the default thumbnails may come back into the Most Visited sites
|
| + section after doing this
|
| + """
|
| + cmd_dict = {
|
| + 'command': 'RestoreAllNTPMostVisitedThumbnails'
|
| + }
|
| + self._sender._GetResultFromJSONRequest(cmd_dict)
|
| +
|
| + def CloseDefaultThumbnails(self):
|
| + """Closes all the default thumbnails. These do not actually need to be
|
| + showing to close.
|
| + Note:
|
| + using this method will make your test depend on the default thumbnail
|
| + urls, which could easily change. Do not use this method unless
|
| + necessary.
|
| + """
|
| + cmd_dict = { 'command': 'RemoveNTPMostVisitedThumbnail' }
|
| + cmd_dict['url'] = 'http://www.google.com/chrome/intl/en/welcome.html'
|
| + self._sender._GetResultFromJSONRequest(cmd_dict)
|
| + cmd_dict['url'] = ('https://tools.google.com/chrome/intl/en/themes'
|
| + '/index.html')
|
| + self._sender._GetResultFromJSONRequest(cmd_dict)
|
| +
|
| + def GetRecentlyClosed(self):
|
| + """Return a list of info about the items in the recently closed section.
|
| + SAMPLE:
|
| + [{
|
| + u'type': u'tab',
|
| + u'url': u'http://www.bing.com',
|
| + u'title': u'Bing',
|
| + u'timestamp': 2139082.03912, # Seconds since epoch (Jan 1, 1970)
|
| + u'direction': u'ltr'},
|
| + {
|
| + u'type': u'window',
|
| + u'timestamp': 2130821.90812,
|
| + u'tabs': [
|
| + {
|
| + u'type': u'tab',
|
| + u'url': u'http://www.cnn.com',
|
| + u'title': u'CNN',
|
| + u'timestamp': 2129082.12098,
|
| + u'direction': u'ltr'}]},
|
| + {
|
| + u'type': u'tab',
|
| + u'url': u'http://www.altavista.com',
|
| + u'title': u'Altavista',
|
| + u'timestamp': 21390820.12903,
|
| + u'direction': u'rtl'}]
|
| + """
|
| + return self._GetInfo()['recently_closed']
|
| +
|
| + def _GetInfo(self):
|
| + """Get info about the NTP. This does not retrieve the actual info shown
|
| + in a particular NTP, but the current data that would be used to display
|
| + a NTP.
|
| +
|
| + This includes info about the most visited sites and the recently closed
|
| + tabs and windows.
|
| +
|
| + Returns:
|
| + a dictionary containing info about NTP info. See details about the
|
| + sections in their respective methods.
|
| + SAMPLE:
|
| + { u'most_visited': [ ... ],
|
| + u'recently_closed': [ ... ]
|
| + }
|
| +
|
| + Raises:
|
| + pyauto_errors.JSONInterfaceError if the automation call returns an error.
|
| + """
|
| + cmd_dict = {
|
| + 'command': 'GetNTPInfo',
|
| + }
|
| + return self._sender._GetResultFromJSONRequest(cmd_dict)
|
| +
|
| + def _CheckThumbnailShown(self, thumbnail):
|
| + if self.GetThumbnailIndex(thumbnail) == -1:
|
| + raise NTPThumbnailNotShownError()
|
|
|
| Property changes on: chrome\test\pyautolib\ntp_model.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|