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

Side by Side Diff: chrome/test/live_sync/bookmark_model_verifier.cc

Issue 159728: Add browser/sync to the repository. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 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
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2006-2009 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 #ifdef CHROME_PERSONALIZATION
6
7 #include "chrome/test/live_sync/bookmark_model_verifier.h"
8
9 #include <vector>
10 #include <stack>
11
12 #include "app/tree_node_iterator.h"
13 #include "chrome/browser/bookmarks/bookmark_model.h"
14 #include "chrome/browser/bookmarks/bookmark_utils.h"
15 #include "chrome/test/live_sync/live_bookmarks_sync_test.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17
18 // static
19 void BookmarkModelVerifier::ExpectBookmarkInfoMatch(
20 const BookmarkNode* expected, const BookmarkNode* actual) {
21 EXPECT_EQ(expected->GetTitle(), actual->GetTitle());
22 EXPECT_EQ(expected->is_folder(), actual->is_folder());
23 EXPECT_EQ(expected->GetURL(), actual->GetURL());
24 EXPECT_EQ(expected->GetParent()->IndexOfChild(expected),
25 actual->GetParent()->IndexOfChild(actual));
26 }
27
28 BookmarkModelVerifier::BookmarkModelVerifier() {
29 verifier_profile_.reset(LiveBookmarksSyncTest::MakeProfile(L"verifier"));
30 verifier_ = verifier_profile_->GetBookmarkModel();
31 }
32
33 BookmarkModelVerifier* BookmarkModelVerifier::Create() {
34 BookmarkModelVerifier* v = new BookmarkModelVerifier();
35 LiveBookmarksSyncTest::BlockUntilLoaded(v->verifier_);
36 return v;
37 }
38
39 void BookmarkModelVerifier::ExpectMatch(BookmarkModel* actual) {
40 ExpectModelsMatch(verifier_, actual);
41 }
42
43 // static
44 void BookmarkModelVerifier::ExpectModelsMatch(
45 BookmarkModel* expected, BookmarkModel* actual) {
46 TreeNodeIterator<const BookmarkNode> e_iterator(expected->root_node());
47 TreeNodeIterator<const BookmarkNode> a_iterator(actual->root_node());
48
49 // Pre-order traversal of each model, comparing at each step.
50 while (e_iterator.has_next()) {
51 const BookmarkNode* e_node = e_iterator.Next();
52 ASSERT_TRUE(a_iterator.has_next());
53 const BookmarkNode* a_node = a_iterator.Next();
54 ExpectBookmarkInfoMatch(e_node, a_node);
55 }
56 ASSERT_FALSE(a_iterator.has_next());
57 }
58
59 void BookmarkModelVerifier::FindNodeInVerifier(BookmarkModel* foreign_model,
60 const BookmarkNode* foreign_node,
61 const BookmarkNode** result) {
62 // Climb the tree.
63 std::stack<int> path;
64 const BookmarkNode* walker = foreign_node;
65 while (walker != foreign_model->root_node()) {
66 path.push(walker->GetParent()->IndexOfChild(walker));
67 walker = walker->GetParent();
68 }
69
70 // Swing over to the other tree.
71 walker = verifier_->root_node();
72
73 // Climb down.
74 while (!path.empty()) {
75 ASSERT_TRUE(walker->is_folder());
76 ASSERT_LT(path.top(), walker->GetChildCount());
77 walker = walker->GetChild(path.top());
78 path.pop();
79 }
80
81 ExpectBookmarkInfoMatch(foreign_node, walker);
82 *result = walker;
83 }
84
85 const BookmarkNode* BookmarkModelVerifier::AddGroup(BookmarkModel* model,
86 const BookmarkNode* parent, int index, const string16& title) {
87 const BookmarkNode* v_parent = NULL;
88 FindNodeInVerifier(model, parent, &v_parent);
89 const BookmarkNode* result = model->AddGroup(parent, index, title);
90 EXPECT_TRUE(result);
91 if (!result) return NULL;
92 const BookmarkNode* v_node = verifier_->AddGroup(v_parent, index, title);
93 EXPECT_TRUE(v_node);
94 if (!v_node) return NULL;
95 ExpectBookmarkInfoMatch(v_node, result);
96 return result;
97 }
98
99 const BookmarkNode* BookmarkModelVerifier::AddURL(BookmarkModel* model,
100 const BookmarkNode* parent, int index, const string16& title,
101 const GURL& url) {
102 const BookmarkNode* v_parent = NULL;
103 FindNodeInVerifier(model, parent, &v_parent);
104 const BookmarkNode* result = model->AddURL(parent, index, title, url);
105 EXPECT_TRUE(result);
106 if (!result) return NULL;
107 const BookmarkNode* v_node = verifier_->AddURL(v_parent, index, title, url);
108 EXPECT_TRUE(v_node);
109 if (!v_node) return NULL;
110 ExpectBookmarkInfoMatch(v_node, result);
111 return result;
112 }
113
114 void BookmarkModelVerifier::SetTitle(BookmarkModel* model,
115 const BookmarkNode* node,
116 const string16& title) {
117 const BookmarkNode* v_node = NULL;
118 FindNodeInVerifier(model, node, &v_node);
119 model->SetTitle(node, title);
120 verifier_->SetTitle(v_node, title);
121 }
122
123 void BookmarkModelVerifier::Move(BookmarkModel* model, const BookmarkNode* node,
124 const BookmarkNode* new_parent, int index) {
125 const BookmarkNode* v_new_parent = NULL;
126 const BookmarkNode* v_node = NULL;
127 FindNodeInVerifier(model, new_parent, &v_new_parent);
128 FindNodeInVerifier(model, node, &v_node);
129 model->Move(node, new_parent, index);
130 verifier_->Move(v_node, v_new_parent, index);
131 }
132
133 void BookmarkModelVerifier::Remove(BookmarkModel* model,
134 const BookmarkNode* parent,
135 int index) {
136 const BookmarkNode* v_parent = NULL;
137 FindNodeInVerifier(model, parent, &v_parent);
138 ExpectBookmarkInfoMatch(parent->GetChild(index), v_parent->GetChild(index));
139 model->Remove(parent, index);
140 verifier_->Remove(v_parent, index);
141 }
142
143 void BookmarkModelVerifier::SortChildren(BookmarkModel* model,
144 const BookmarkNode* parent) {
145 const BookmarkNode* v_parent = NULL;
146 FindNodeInVerifier(model, parent, &v_parent);
147 model->SortChildren(parent);
148 verifier_->SortChildren(v_parent);
149 }
150
151 void BookmarkModelVerifier::SetURL(BookmarkModel* model,
152 const BookmarkNode* node,
153 const GURL& new_url) {
154 const BookmarkNode* v_node = NULL;
155 FindNodeInVerifier(model, node, &v_node);
156 bookmark_utils::ApplyEditsWithNoGroupChange(model, node->GetParent(),
157 node, node->GetTitle(), new_url, NULL);
158 bookmark_utils::ApplyEditsWithNoGroupChange(verifier_, v_node->GetParent(),
159 v_node, v_node->GetTitle(), new_url, NULL);
160 }
161
162 #endif // CHROME_PERSONALIZATION
OLDNEW
« no previous file with comments | « chrome/test/live_sync/bookmark_model_verifier.h ('k') | chrome/test/live_sync/live_bookmarks_sync_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698