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

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

Issue 8598015: Do not allow multiline input when naming bookmarks/folders on Mac (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: pointer placement nit; move category into header file Created 9 years 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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 <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 7
8 #include "base/base_paths.h" 8 #include "base/base_paths.h"
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 23 matching lines...) Expand all
34 #include "testing/gtest/include/gtest/gtest.h" 34 #include "testing/gtest/include/gtest/gtest.h"
35 #include "ui/base/models/tree_node_iterator.h" 35 #include "ui/base/models/tree_node_iterator.h"
36 #include "ui/base/models/tree_node_model.h" 36 #include "ui/base/models/tree_node_model.h"
37 37
38 using base::Time; 38 using base::Time;
39 using base::TimeDelta; 39 using base::TimeDelta;
40 using content::BrowserThread; 40 using content::BrowserThread;
41 41
42 namespace { 42 namespace {
43 43
44 // Test cases used to test the removal of extra whitespace when adding
45 // a new folder/bookmark or updating a title of a folder/bookmark.
46 static struct {
47 const std::string input_title;
48 const std::string expected_title;
49 } whitespace_test_cases[] = {
50 {"foobar", "foobar"},
51 // Newlines.
52 {"foo\nbar", "foo bar"},
53 {"foo\n\nbar", "foo bar"},
54 {"foo\n\n\nbar", "foo bar"},
55 {"foo\r\nbar", "foo bar"},
56 {"foo\r\n\r\nbar", "foo bar"},
57 {"\nfoo\nbar\n", "foo bar"},
58 // Spaces.
59 {"foo bar", "foo bar"},
60 {" foo bar ", "foo bar"},
61 {" foo bar ", "foo bar"},
62 // Tabs.
63 {"\tfoo\tbar\t", "foo bar"},
64 {"\tfoo bar\t", "foo bar"},
65 // Mixed cases.
66 {"\tfoo\nbar\t", "foo bar"},
67 {"\tfoo\r\nbar\t", "foo bar"},
68 {" foo\tbar\n", "foo bar"},
69 {"\t foo \t bar \t", "foo bar"},
70 {"\n foo\r\n\tbar\n \t", "foo bar"},
71 };
72
44 // Helper to get a mutable bookmark node. 73 // Helper to get a mutable bookmark node.
45 BookmarkNode* AsMutable(const BookmarkNode* node) { 74 BookmarkNode* AsMutable(const BookmarkNode* node) {
46 return const_cast<BookmarkNode*>(node); 75 return const_cast<BookmarkNode*>(node);
47 } 76 }
48 77
49 void SwapDateAdded(BookmarkNode* n1, BookmarkNode* n2) { 78 void SwapDateAdded(BookmarkNode* n1, BookmarkNode* n2) {
50 Time tmp = n1->date_added(); 79 Time tmp = n1->date_added();
51 n1->set_date_added(n2->date_added()); 80 n1->set_date_added(n2->date_added());
52 n2->set_date_added(tmp); 81 n2->set_date_added(tmp);
53 } 82 }
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 ASSERT_EQ(title, new_node->GetTitle()); 234 ASSERT_EQ(title, new_node->GetTitle());
206 ASSERT_TRUE(url == new_node->url()); 235 ASSERT_TRUE(url == new_node->url());
207 ASSERT_EQ(BookmarkNode::URL, new_node->type()); 236 ASSERT_EQ(BookmarkNode::URL, new_node->type());
208 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); 237 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url));
209 238
210 EXPECT_TRUE(new_node->id() != root->id() && 239 EXPECT_TRUE(new_node->id() != root->id() &&
211 new_node->id() != model_.other_node()->id() && 240 new_node->id() != model_.other_node()->id() &&
212 new_node->id() != model_.synced_node()->id()); 241 new_node->id() != model_.synced_node()->id());
213 } 242 }
214 243
244 TEST_F(BookmarkModelTest, AddURLWithWhitespaceTitle) {
245 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(whitespace_test_cases); ++i) {
246 const BookmarkNode* root = model_.bookmark_bar_node();
247 const string16 title(ASCIIToUTF16(whitespace_test_cases[i].input_title));
248 const GURL url("http://foo.com");
249
250 const BookmarkNode* new_node = model_.AddURL(root, i, title, url);
251
252 int size = i + 1;
253 EXPECT_EQ(size, root->child_count());
254 EXPECT_EQ(ASCIIToUTF16(whitespace_test_cases[i].expected_title),
255 new_node->GetTitle());
256 EXPECT_EQ(BookmarkNode::URL, new_node->type());
257 }
258 }
259
215 TEST_F(BookmarkModelTest, AddURLToSyncedBookmarks) { 260 TEST_F(BookmarkModelTest, AddURLToSyncedBookmarks) {
216 const BookmarkNode* root = model_.synced_node(); 261 const BookmarkNode* root = model_.synced_node();
217 const string16 title(ASCIIToUTF16("foo")); 262 const string16 title(ASCIIToUTF16("foo"));
218 const GURL url("http://foo.com"); 263 const GURL url("http://foo.com");
219 264
220 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); 265 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url);
221 AssertObserverCount(1, 0, 0, 0, 0); 266 AssertObserverCount(1, 0, 0, 0, 0);
222 observer_details_.ExpectEquals(root, NULL, 0, -1); 267 observer_details_.ExpectEquals(root, NULL, 0, -1);
223 268
224 ASSERT_EQ(1, root->child_count()); 269 ASSERT_EQ(1, root->child_count());
(...skipping 23 matching lines...) Expand all
248 new_node->id() != model_.other_node()->id() && 293 new_node->id() != model_.other_node()->id() &&
249 new_node->id() != model_.synced_node()->id()); 294 new_node->id() != model_.synced_node()->id());
250 295
251 // Add another folder, just to make sure folder_ids are incremented correctly. 296 // Add another folder, just to make sure folder_ids are incremented correctly.
252 ClearCounts(); 297 ClearCounts();
253 model_.AddFolder(root, 0, title); 298 model_.AddFolder(root, 0, title);
254 AssertObserverCount(1, 0, 0, 0, 0); 299 AssertObserverCount(1, 0, 0, 0, 0);
255 observer_details_.ExpectEquals(root, NULL, 0, -1); 300 observer_details_.ExpectEquals(root, NULL, 0, -1);
256 } 301 }
257 302
303 TEST_F(BookmarkModelTest, AddFolderWithWhitespaceTitle) {
304 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(whitespace_test_cases); ++i) {
305 const BookmarkNode* root = model_.bookmark_bar_node();
306 const string16 title(ASCIIToUTF16(whitespace_test_cases[i].input_title));
307
308 const BookmarkNode* new_node = model_.AddFolder(root, i, title);
309
310 int size = i + 1;
311 EXPECT_EQ(size, root->child_count());
312 EXPECT_EQ(ASCIIToUTF16(whitespace_test_cases[i].expected_title),
313 new_node->GetTitle());
314 EXPECT_EQ(BookmarkNode::FOLDER, new_node->type());
315 }
316 }
317
258 TEST_F(BookmarkModelTest, RemoveURL) { 318 TEST_F(BookmarkModelTest, RemoveURL) {
259 const BookmarkNode* root = model_.bookmark_bar_node(); 319 const BookmarkNode* root = model_.bookmark_bar_node();
260 const string16 title(ASCIIToUTF16("foo")); 320 const string16 title(ASCIIToUTF16("foo"));
261 const GURL url("http://foo.com"); 321 const GURL url("http://foo.com");
262 model_.AddURL(root, 0, title, url); 322 model_.AddURL(root, 0, title, url);
263 ClearCounts(); 323 ClearCounts();
264 324
265 model_.Remove(root, 0); 325 model_.Remove(root, 0);
266 ASSERT_EQ(0, root->child_count()); 326 ASSERT_EQ(0, root->child_count());
267 AssertObserverCount(0, 0, 1, 0, 0); 327 AssertObserverCount(0, 0, 1, 0, 0);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 362
303 ClearCounts(); 363 ClearCounts();
304 364
305 title = ASCIIToUTF16("foo2"); 365 title = ASCIIToUTF16("foo2");
306 model_.SetTitle(node, title); 366 model_.SetTitle(node, title);
307 AssertObserverCount(0, 0, 0, 1, 0); 367 AssertObserverCount(0, 0, 0, 1, 0);
308 observer_details_.ExpectEquals(node, NULL, -1, -1); 368 observer_details_.ExpectEquals(node, NULL, -1, -1);
309 EXPECT_EQ(title, node->GetTitle()); 369 EXPECT_EQ(title, node->GetTitle());
310 } 370 }
311 371
372 TEST_F(BookmarkModelTest, SetTitleWithWhitespace) {
373 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(whitespace_test_cases); ++i) {
374 const BookmarkNode* root = model_.bookmark_bar_node();
375 string16 title(ASCIIToUTF16("dummy"));
376 const GURL url("http://foo.com");
377 const BookmarkNode* node = model_.AddURL(root, 0, title, url);
378
379 title = ASCIIToUTF16(whitespace_test_cases[i].input_title);
380 model_.SetTitle(node, title);
381 EXPECT_EQ(ASCIIToUTF16(whitespace_test_cases[i].expected_title),
382 node->GetTitle());
383 }
384 }
385
312 TEST_F(BookmarkModelTest, SetURL) { 386 TEST_F(BookmarkModelTest, SetURL) {
313 const BookmarkNode* root = model_.bookmark_bar_node(); 387 const BookmarkNode* root = model_.bookmark_bar_node();
314 const string16 title(ASCIIToUTF16("foo")); 388 const string16 title(ASCIIToUTF16("foo"));
315 GURL url("http://foo.com"); 389 GURL url("http://foo.com");
316 const BookmarkNode* node = model_.AddURL(root, 0, title, url); 390 const BookmarkNode* node = model_.AddURL(root, 0, title, url);
317 391
318 ClearCounts(); 392 ClearCounts();
319 393
320 url = GURL("http://foo2.com"); 394 url = GURL("http://foo2.com");
321 model_.SetURL(node, url); 395 model_.SetURL(node, url);
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
1030 TEST_F(BookmarkModelTest, SyncNodeVisibileWithChildren) { 1104 TEST_F(BookmarkModelTest, SyncNodeVisibileWithChildren) {
1031 const BookmarkNode* root = model_.synced_node(); 1105 const BookmarkNode* root = model_.synced_node();
1032 const string16 title(ASCIIToUTF16("foo")); 1106 const string16 title(ASCIIToUTF16("foo"));
1033 const GURL url("http://foo.com"); 1107 const GURL url("http://foo.com");
1034 1108
1035 model_.AddURL(root, 0, title, url); 1109 model_.AddURL(root, 0, title, url);
1036 EXPECT_TRUE(model_.synced_node()->IsVisible()); 1110 EXPECT_TRUE(model_.synced_node()->IsVisible());
1037 } 1111 }
1038 1112
1039 } // namespace 1113 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_model.cc ('k') | chrome/browser/ui/cocoa/bookmarks/bookmark_cell_single_line.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698