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

Side by Side Diff: chrome/browser/bookmarks/bookmark_model_unittest.cc

Issue 27082: Adds ability to sort the children of a node in the bookmark model. I... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 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/browser/bookmarks/bookmark_model.cc ('k') | chrome/views/tree_node_model.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 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/string_util.h" 5 #include "base/string_util.h"
6 #include "chrome/browser/bookmarks/bookmark_model.h" 6 #include "chrome/browser/bookmarks/bookmark_model.h"
7 #include "chrome/browser/bookmarks/bookmark_codec.h" 7 #include "chrome/browser/bookmarks/bookmark_codec.h"
8 #include "chrome/browser/bookmarks/bookmark_utils.h" 8 #include "chrome/browser/bookmarks/bookmark_utils.h"
9 #include "chrome/common/chrome_constants.h" 9 #include "chrome/common/chrome_constants.h"
10 #include "chrome/common/chrome_paths.h" 10 #include "chrome/common/chrome_paths.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 removed_count++; 83 removed_count++;
84 observer_details.Set(parent, NULL, index, -1); 84 observer_details.Set(parent, NULL, index, -1);
85 } 85 }
86 86
87 virtual void BookmarkNodeChanged(BookmarkModel* model, 87 virtual void BookmarkNodeChanged(BookmarkModel* model,
88 BookmarkNode* node) { 88 BookmarkNode* node) {
89 changed_count++; 89 changed_count++;
90 observer_details.Set(node, NULL, -1, -1); 90 observer_details.Set(node, NULL, -1, -1);
91 } 91 }
92 92
93 virtual void BookmarkNodeChildrenReordered(BookmarkModel* model,
94 BookmarkNode* node) {
95 reordered_count_++;
96 }
97
93 virtual void BookmarkNodeFavIconLoaded(BookmarkModel* model, 98 virtual void BookmarkNodeFavIconLoaded(BookmarkModel* model,
94 BookmarkNode* node) { 99 BookmarkNode* node) {
95 // We never attempt to load favicons, so that this method never 100 // We never attempt to load favicons, so that this method never
96 // gets invoked. 101 // gets invoked.
97 } 102 }
98 103
99 void ClearCounts() { 104 void ClearCounts() {
100 moved_count = added_count = removed_count = changed_count = 0; 105 reordered_count_ = moved_count = added_count = removed_count =
106 changed_count = 0;
101 } 107 }
102 108
103 void AssertObserverCount(int added_count, 109 void AssertObserverCount(int added_count,
104 int moved_count, 110 int moved_count,
105 int removed_count, 111 int removed_count,
106 int changed_count) { 112 int changed_count,
113 int reordered_count) {
107 ASSERT_EQ(added_count, this->added_count); 114 ASSERT_EQ(added_count, this->added_count);
108 ASSERT_EQ(moved_count, this->moved_count); 115 ASSERT_EQ(moved_count, this->moved_count);
109 ASSERT_EQ(removed_count, this->removed_count); 116 ASSERT_EQ(removed_count, this->removed_count);
110 ASSERT_EQ(changed_count, this->changed_count); 117 ASSERT_EQ(changed_count, this->changed_count);
118 ASSERT_EQ(reordered_count, reordered_count_);
111 } 119 }
112 120
113 void AssertNodesEqual(BookmarkNode* expected, BookmarkNode* actual) { 121 void AssertNodesEqual(BookmarkNode* expected, BookmarkNode* actual) {
114 ASSERT_TRUE(expected); 122 ASSERT_TRUE(expected);
115 ASSERT_TRUE(actual); 123 ASSERT_TRUE(actual);
116 EXPECT_EQ(expected->GetTitle(), actual->GetTitle()); 124 EXPECT_EQ(expected->GetTitle(), actual->GetTitle());
117 EXPECT_EQ(expected->GetType(), actual->GetType()); 125 EXPECT_EQ(expected->GetType(), actual->GetType());
118 EXPECT_TRUE(expected->date_added() == actual->date_added()); 126 EXPECT_TRUE(expected->date_added() == actual->date_added());
119 if (expected->GetType() == history::StarredEntry::URL) { 127 if (expected->GetType() == history::StarredEntry::URL) {
120 EXPECT_EQ(expected->GetURL(), actual->GetURL()); 128 EXPECT_EQ(expected->GetURL(), actual->GetURL());
(...skipping 17 matching lines...) Expand all
138 BookmarkModel model; 146 BookmarkModel model;
139 147
140 int moved_count; 148 int moved_count;
141 149
142 int added_count; 150 int added_count;
143 151
144 int removed_count; 152 int removed_count;
145 153
146 int changed_count; 154 int changed_count;
147 155
156 int reordered_count_;
157
148 ObserverDetails observer_details; 158 ObserverDetails observer_details;
149 }; 159 };
150 160
151 TEST_F(BookmarkModelTest, InitialState) { 161 TEST_F(BookmarkModelTest, InitialState) {
152 BookmarkNode* bb_node = model.GetBookmarkBarNode(); 162 BookmarkNode* bb_node = model.GetBookmarkBarNode();
153 ASSERT_TRUE(bb_node != NULL); 163 ASSERT_TRUE(bb_node != NULL);
154 EXPECT_EQ(0, bb_node->GetChildCount()); 164 EXPECT_EQ(0, bb_node->GetChildCount());
155 EXPECT_EQ(history::StarredEntry::BOOKMARK_BAR, bb_node->GetType()); 165 EXPECT_EQ(history::StarredEntry::BOOKMARK_BAR, bb_node->GetType());
156 166
157 BookmarkNode* other_node = model.other_node(); 167 BookmarkNode* other_node = model.other_node();
158 ASSERT_TRUE(other_node != NULL); 168 ASSERT_TRUE(other_node != NULL);
159 EXPECT_EQ(0, other_node->GetChildCount()); 169 EXPECT_EQ(0, other_node->GetChildCount());
160 EXPECT_EQ(history::StarredEntry::OTHER, other_node->GetType()); 170 EXPECT_EQ(history::StarredEntry::OTHER, other_node->GetType());
161 171
162 EXPECT_TRUE(bb_node->id() != other_node->id()); 172 EXPECT_TRUE(bb_node->id() != other_node->id());
163 } 173 }
164 174
165 TEST_F(BookmarkModelTest, AddURL) { 175 TEST_F(BookmarkModelTest, AddURL) {
166 BookmarkNode* root = model.GetBookmarkBarNode(); 176 BookmarkNode* root = model.GetBookmarkBarNode();
167 const std::wstring title(L"foo"); 177 const std::wstring title(L"foo");
168 const GURL url("http://foo.com"); 178 const GURL url("http://foo.com");
169 179
170 BookmarkNode* new_node = model.AddURL(root, 0, title, url); 180 BookmarkNode* new_node = model.AddURL(root, 0, title, url);
171 AssertObserverCount(1, 0, 0, 0); 181 AssertObserverCount(1, 0, 0, 0, 0);
172 observer_details.AssertEquals(root, NULL, 0, -1); 182 observer_details.AssertEquals(root, NULL, 0, -1);
173 183
174 ASSERT_EQ(1, root->GetChildCount()); 184 ASSERT_EQ(1, root->GetChildCount());
175 ASSERT_EQ(title, new_node->GetTitle()); 185 ASSERT_EQ(title, new_node->GetTitle());
176 ASSERT_TRUE(url == new_node->GetURL()); 186 ASSERT_TRUE(url == new_node->GetURL());
177 ASSERT_EQ(history::StarredEntry::URL, new_node->GetType()); 187 ASSERT_EQ(history::StarredEntry::URL, new_node->GetType());
178 ASSERT_TRUE(new_node == model.GetMostRecentlyAddedNodeForURL(url)); 188 ASSERT_TRUE(new_node == model.GetMostRecentlyAddedNodeForURL(url));
179 189
180 EXPECT_TRUE(new_node->id() != root->id() && 190 EXPECT_TRUE(new_node->id() != root->id() &&
181 new_node->id() != model.other_node()->id()); 191 new_node->id() != model.other_node()->id());
182 } 192 }
183 193
184 TEST_F(BookmarkModelTest, AddGroup) { 194 TEST_F(BookmarkModelTest, AddGroup) {
185 BookmarkNode* root = model.GetBookmarkBarNode(); 195 BookmarkNode* root = model.GetBookmarkBarNode();
186 const std::wstring title(L"foo"); 196 const std::wstring title(L"foo");
187 197
188 BookmarkNode* new_node = model.AddGroup(root, 0, title); 198 BookmarkNode* new_node = model.AddGroup(root, 0, title);
189 AssertObserverCount(1, 0, 0, 0); 199 AssertObserverCount(1, 0, 0, 0, 0);
190 observer_details.AssertEquals(root, NULL, 0, -1); 200 observer_details.AssertEquals(root, NULL, 0, -1);
191 201
192 ASSERT_EQ(1, root->GetChildCount()); 202 ASSERT_EQ(1, root->GetChildCount());
193 ASSERT_EQ(title, new_node->GetTitle()); 203 ASSERT_EQ(title, new_node->GetTitle());
194 ASSERT_EQ(history::StarredEntry::USER_GROUP, new_node->GetType()); 204 ASSERT_EQ(history::StarredEntry::USER_GROUP, new_node->GetType());
195 205
196 EXPECT_TRUE(new_node->id() != root->id() && 206 EXPECT_TRUE(new_node->id() != root->id() &&
197 new_node->id() != model.other_node()->id()); 207 new_node->id() != model.other_node()->id());
198 208
199 // Add another group, just to make sure group_ids are incremented correctly. 209 // Add another group, just to make sure group_ids are incremented correctly.
200 ClearCounts(); 210 ClearCounts();
201 BookmarkNode* new_node2 = model.AddGroup(root, 0, title); 211 BookmarkNode* new_node2 = model.AddGroup(root, 0, title);
202 AssertObserverCount(1, 0, 0, 0); 212 AssertObserverCount(1, 0, 0, 0, 0);
203 observer_details.AssertEquals(root, NULL, 0, -1); 213 observer_details.AssertEquals(root, NULL, 0, -1);
204 } 214 }
205 215
206 TEST_F(BookmarkModelTest, RemoveURL) { 216 TEST_F(BookmarkModelTest, RemoveURL) {
207 BookmarkNode* root = model.GetBookmarkBarNode(); 217 BookmarkNode* root = model.GetBookmarkBarNode();
208 const std::wstring title(L"foo"); 218 const std::wstring title(L"foo");
209 const GURL url("http://foo.com"); 219 const GURL url("http://foo.com");
210 BookmarkNode* new_node = model.AddURL(root, 0, title, url); 220 BookmarkNode* new_node = model.AddURL(root, 0, title, url);
211 ClearCounts(); 221 ClearCounts();
212 222
213 model.Remove(root, 0); 223 model.Remove(root, 0);
214 ASSERT_EQ(0, root->GetChildCount()); 224 ASSERT_EQ(0, root->GetChildCount());
215 AssertObserverCount(0, 0, 1, 0); 225 AssertObserverCount(0, 0, 1, 0, 0);
216 observer_details.AssertEquals(root, NULL, 0, -1); 226 observer_details.AssertEquals(root, NULL, 0, -1);
217 227
218 // Make sure there is no mapping for the URL. 228 // Make sure there is no mapping for the URL.
219 ASSERT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL); 229 ASSERT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL);
220 } 230 }
221 231
222 TEST_F(BookmarkModelTest, RemoveGroup) { 232 TEST_F(BookmarkModelTest, RemoveGroup) {
223 BookmarkNode* root = model.GetBookmarkBarNode(); 233 BookmarkNode* root = model.GetBookmarkBarNode();
224 BookmarkNode* group = model.AddGroup(root, 0, L"foo"); 234 BookmarkNode* group = model.AddGroup(root, 0, L"foo");
225 235
226 ClearCounts(); 236 ClearCounts();
227 237
228 // Add a URL as a child. 238 // Add a URL as a child.
229 const std::wstring title(L"foo"); 239 const std::wstring title(L"foo");
230 const GURL url("http://foo.com"); 240 const GURL url("http://foo.com");
231 BookmarkNode* new_node = model.AddURL(group, 0, title, url); 241 BookmarkNode* new_node = model.AddURL(group, 0, title, url);
232 242
233 ClearCounts(); 243 ClearCounts();
234 244
235 // Now remove the group. 245 // Now remove the group.
236 model.Remove(root, 0); 246 model.Remove(root, 0);
237 ASSERT_EQ(0, root->GetChildCount()); 247 ASSERT_EQ(0, root->GetChildCount());
238 AssertObserverCount(0, 0, 1, 0); 248 AssertObserverCount(0, 0, 1, 0, 0);
239 observer_details.AssertEquals(root, NULL, 0, -1); 249 observer_details.AssertEquals(root, NULL, 0, -1);
240 250
241 // Make sure there is no mapping for the URL. 251 // Make sure there is no mapping for the URL.
242 ASSERT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL); 252 ASSERT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL);
243 } 253 }
244 254
245 TEST_F(BookmarkModelTest, SetTitle) { 255 TEST_F(BookmarkModelTest, SetTitle) {
246 BookmarkNode* root = model.GetBookmarkBarNode(); 256 BookmarkNode* root = model.GetBookmarkBarNode();
247 std::wstring title(L"foo"); 257 std::wstring title(L"foo");
248 const GURL url("http://foo.com"); 258 const GURL url("http://foo.com");
249 BookmarkNode* node = model.AddURL(root, 0, title, url); 259 BookmarkNode* node = model.AddURL(root, 0, title, url);
250 260
251 ClearCounts(); 261 ClearCounts();
252 262
253 title = L"foo2"; 263 title = L"foo2";
254 model.SetTitle(node, title); 264 model.SetTitle(node, title);
255 AssertObserverCount(0, 0, 0, 1); 265 AssertObserverCount(0, 0, 0, 1, 0);
256 observer_details.AssertEquals(node, NULL, -1, -1); 266 observer_details.AssertEquals(node, NULL, -1, -1);
257 EXPECT_EQ(title, node->GetTitle()); 267 EXPECT_EQ(title, node->GetTitle());
258 } 268 }
259 269
260 TEST_F(BookmarkModelTest, Move) { 270 TEST_F(BookmarkModelTest, Move) {
261 BookmarkNode* root = model.GetBookmarkBarNode(); 271 BookmarkNode* root = model.GetBookmarkBarNode();
262 std::wstring title(L"foo"); 272 std::wstring title(L"foo");
263 const GURL url("http://foo.com"); 273 const GURL url("http://foo.com");
264 BookmarkNode* node = model.AddURL(root, 0, title, url); 274 BookmarkNode* node = model.AddURL(root, 0, title, url);
265 BookmarkNode* group1 = model.AddGroup(root, 0, L"foo"); 275 BookmarkNode* group1 = model.AddGroup(root, 0, L"foo");
266 ClearCounts(); 276 ClearCounts();
267 277
268 model.Move(node, group1, 0); 278 model.Move(node, group1, 0);
269 279
270 AssertObserverCount(0, 1, 0, 0); 280 AssertObserverCount(0, 1, 0, 0, 0);
271 observer_details.AssertEquals(root, group1, 1, 0); 281 observer_details.AssertEquals(root, group1, 1, 0);
272 EXPECT_TRUE(group1 == node->GetParent()); 282 EXPECT_TRUE(group1 == node->GetParent());
273 EXPECT_EQ(1, root->GetChildCount()); 283 EXPECT_EQ(1, root->GetChildCount());
274 EXPECT_EQ(group1, root->GetChild(0)); 284 EXPECT_EQ(group1, root->GetChild(0));
275 EXPECT_EQ(1, group1->GetChildCount()); 285 EXPECT_EQ(1, group1->GetChildCount());
276 EXPECT_EQ(node, group1->GetChild(0)); 286 EXPECT_EQ(node, group1->GetChild(0));
277 287
278 // And remove the group. 288 // And remove the group.
279 ClearCounts(); 289 ClearCounts();
280 model.Remove(root, 0); 290 model.Remove(root, 0);
281 AssertObserverCount(0, 0, 1, 0); 291 AssertObserverCount(0, 0, 1, 0, 0);
282 observer_details.AssertEquals(root, NULL, 0, -1); 292 observer_details.AssertEquals(root, NULL, 0, -1);
283 EXPECT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL); 293 EXPECT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL);
284 EXPECT_EQ(0, root->GetChildCount()); 294 EXPECT_EQ(0, root->GetChildCount());
285 } 295 }
286 296
287 // Tests that adding a URL to a folder updates the last modified time. 297 // Tests that adding a URL to a folder updates the last modified time.
288 TEST_F(BookmarkModelTest, ParentForNewNodes) { 298 TEST_F(BookmarkModelTest, ParentForNewNodes) {
289 ASSERT_EQ(model.GetBookmarkBarNode(), model.GetParentForNewNodes()); 299 ASSERT_EQ(model.GetBookmarkBarNode(), model.GetParentForNewNodes());
290 300
291 const std::wstring title(L"foo"); 301 const std::wstring title(L"foo");
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 bb_model_->SetURLStarred(url, std::wstring(), true); 830 bb_model_->SetURLStarred(url, std::wstring(), true);
821 831
822 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)->AddPage( 832 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)->AddPage(
823 url, NULL, 1, GURL(), PageTransition::TYPED, 833 url, NULL, 1, GURL(), PageTransition::TYPED,
824 HistoryService::RedirectList()); 834 HistoryService::RedirectList());
825 835
826 // This won't actually delete the URL, rather it'll empty out the visits. 836 // This won't actually delete the URL, rather it'll empty out the visits.
827 // This triggers blocking on the BookmarkModel. 837 // This triggers blocking on the BookmarkModel.
828 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)->DeleteURL(url); 838 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)->DeleteURL(url);
829 } 839 }
840
841 TEST_F(BookmarkModelTest, Sort) {
842 // Populate the bookmark bar node with nodes for 'B', 'a', 'd' and 'C'.
843 TestNode bbn;
844 PopulateNodeFromString(L"B a d C", &bbn);
845 BookmarkNode* parent = model.GetBookmarkBarNode();
846 PopulateBookmarkNode(&bbn, &model, parent);
847
848 ClearCounts();
849
850 // Sort the children of the bookmark bar node.
851 model.SortChildren(parent);
852
853 // Make sure we were notified.
854 AssertObserverCount(0, 0, 0, 0, 1);
855
856 // Make sure the order matches.
857 EXPECT_TRUE(parent->GetChild(0)->GetTitle() == L"a");
858 EXPECT_TRUE(parent->GetChild(1)->GetTitle() == L"B");
859 EXPECT_TRUE(parent->GetChild(2)->GetTitle() == L"C");
860 EXPECT_TRUE(parent->GetChild(3)->GetTitle() == L"d");
861 }
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_model.cc ('k') | chrome/views/tree_node_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698