| Index: chrome/test/pyautolib/bookmark_model.py
|
| ===================================================================
|
| --- chrome/test/pyautolib/bookmark_model.py (revision 261231)
|
| +++ chrome/test/pyautolib/bookmark_model.py (working copy)
|
| @@ -1,99 +0,0 @@
|
| -# Copyright (c) 2011 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.
|
| -
|
| -"""BookmarkModel: python representation of the bookmark model.
|
| -
|
| -Obtain one of these from PyUITestSuite::GetBookmarkModel() call.
|
| -"""
|
| -
|
| -import os
|
| -import simplejson as json
|
| -import sys
|
| -
|
| -class BookmarkModel(object):
|
| -
|
| - def __init__(self, json_string):
|
| - """Initialize a BookmarkModel from a string of json.
|
| -
|
| - The JSON representation is the same as used by the bookmark model
|
| - to save to disk.
|
| -
|
| - Args:
|
| - json_string: a string of JSON.
|
| - """
|
| - self.bookdict = json.loads(json_string)
|
| -
|
| - def BookmarkBar(self):
|
| - """Return the bookmark bar node as a dict."""
|
| - return self.bookdict['roots']['bookmark_bar']
|
| -
|
| - def Other(self):
|
| - """Return the 'other' node (e.g. parent of "Other Bookmarks")"""
|
| - return self.bookdict['roots']['other']
|
| -
|
| - def NodeCount(self, node=None):
|
| - """Return a count of bookmark nodes, including folders.
|
| -
|
| - The root node itself is included in the count.
|
| -
|
| - Args:
|
| - node: the root to start with. If not specified, count all."""
|
| - if node == None:
|
| - return reduce(lambda x, y: x + y,
|
| - [self.NodeCount(x)
|
| - for x in self.bookdict['roots'].values()])
|
| - total = 1
|
| - children = node.get('children', None)
|
| - if children:
|
| - total = total + reduce(lambda x,y: x + y,
|
| - [self.NodeCount(x) for x in children])
|
| - return total
|
| -
|
| - def FindByID(self, id, nodes=None):
|
| - """Find the bookmark by id. Return the dict or None.
|
| -
|
| - Args:
|
| - id: the id to look for.
|
| - nodes: an iterable of nodes to start with. If not specified, search all.
|
| - 'Not specified' means None, not [].
|
| - """
|
| - # Careful; we may get an empty list which is different than not
|
| - # having specified a list.
|
| - if nodes == None:
|
| - nodes = self.bookdict['roots'].values()
|
| - # Check each item. If it matches, return. If not, check each of
|
| - # their kids.
|
| - for node in nodes:
|
| - if node['id'] == id:
|
| - return node
|
| - for child in node.get('children', []):
|
| - found_node = self.FindByID(id, [child])
|
| - if found_node:
|
| - return found_node
|
| - # Not found at all.
|
| - return None
|
| -
|
| - def FindByTitle(self, title, nodes=None):
|
| - """Return a tuple of all nodes which have |title| in their title.
|
| -
|
| - Args:
|
| - title: the title to look for.
|
| - node: an iterable of nodes to start with. If not specified, search all.
|
| - 'Not specified' means None, not [].
|
| - """
|
| - # Careful; we may get an empty list which is different than not
|
| - # having specified a list.
|
| - if nodes == None:
|
| - nodes = self.bookdict['roots'].values()
|
| - # Check each item. If it matches, return. If not, check each of
|
| - # their kids.
|
| - results = []
|
| - for node in nodes:
|
| - node_title = node.get('title', None) or node.get('name', None)
|
| - if title == node_title:
|
| - results.append(node)
|
| - # Note we check everything; unlike the FindByID, we do not stop early.
|
| - for child in node.get('children', []):
|
| - results += self.FindByTitle(title, [child])
|
| - return results
|
|
|