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

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

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 8 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/pyautolib/asan_stub.c ('k') | chrome/test/pyautolib/chrome_driver_factory.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 """BookmarkModel: python representation of the bookmark model.
6
7 Obtain one of these from PyUITestSuite::GetBookmarkModel() call.
8 """
9
10 import os
11 import simplejson as json
12 import sys
13
14 class BookmarkModel(object):
15
16 def __init__(self, json_string):
17 """Initialize a BookmarkModel from a string of json.
18
19 The JSON representation is the same as used by the bookmark model
20 to save to disk.
21
22 Args:
23 json_string: a string of JSON.
24 """
25 self.bookdict = json.loads(json_string)
26
27 def BookmarkBar(self):
28 """Return the bookmark bar node as a dict."""
29 return self.bookdict['roots']['bookmark_bar']
30
31 def Other(self):
32 """Return the 'other' node (e.g. parent of "Other Bookmarks")"""
33 return self.bookdict['roots']['other']
34
35 def NodeCount(self, node=None):
36 """Return a count of bookmark nodes, including folders.
37
38 The root node itself is included in the count.
39
40 Args:
41 node: the root to start with. If not specified, count all."""
42 if node == None:
43 return reduce(lambda x, y: x + y,
44 [self.NodeCount(x)
45 for x in self.bookdict['roots'].values()])
46 total = 1
47 children = node.get('children', None)
48 if children:
49 total = total + reduce(lambda x,y: x + y,
50 [self.NodeCount(x) for x in children])
51 return total
52
53 def FindByID(self, id, nodes=None):
54 """Find the bookmark by id. Return the dict or None.
55
56 Args:
57 id: the id to look for.
58 nodes: an iterable of nodes to start with. If not specified, search all.
59 'Not specified' means None, not [].
60 """
61 # Careful; we may get an empty list which is different than not
62 # having specified a list.
63 if nodes == None:
64 nodes = self.bookdict['roots'].values()
65 # Check each item. If it matches, return. If not, check each of
66 # their kids.
67 for node in nodes:
68 if node['id'] == id:
69 return node
70 for child in node.get('children', []):
71 found_node = self.FindByID(id, [child])
72 if found_node:
73 return found_node
74 # Not found at all.
75 return None
76
77 def FindByTitle(self, title, nodes=None):
78 """Return a tuple of all nodes which have |title| in their title.
79
80 Args:
81 title: the title to look for.
82 node: an iterable of nodes to start with. If not specified, search all.
83 'Not specified' means None, not [].
84 """
85 # Careful; we may get an empty list which is different than not
86 # having specified a list.
87 if nodes == None:
88 nodes = self.bookdict['roots'].values()
89 # Check each item. If it matches, return. If not, check each of
90 # their kids.
91 results = []
92 for node in nodes:
93 node_title = node.get('title', None) or node.get('name', None)
94 if title == node_title:
95 results.append(node)
96 # Note we check everything; unlike the FindByID, we do not stop early.
97 for child in node.get('children', []):
98 results += self.FindByTitle(title, [child])
99 return results
OLDNEW
« no previous file with comments | « chrome/test/pyautolib/asan_stub.c ('k') | chrome/test/pyautolib/chrome_driver_factory.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698