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

Side by Side Diff: chrome/browser/ui/gtk/bookmarks/bookmark_editor_gtk_unittest.cc

Issue 6931018: Initial implementation of "Synced Bookmarks" folder. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Merge Created 9 years, 7 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
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 <gtk/gtk.h> 5 #include <gtk/gtk.h>
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h"
9 #include "base/string_util.h" 10 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
11 #include "chrome/browser/bookmarks/bookmark_model.h" 12 #include "chrome/browser/bookmarks/bookmark_model.h"
12 #include "chrome/browser/ui/gtk/bookmarks/bookmark_editor_gtk.h" 13 #include "chrome/browser/ui/gtk/bookmarks/bookmark_editor_gtk.h"
13 #include "chrome/browser/ui/gtk/bookmarks/bookmark_tree_model.h" 14 #include "chrome/browser/ui/gtk/bookmarks/bookmark_tree_model.h"
15 #include "chrome/common/chrome_switches.h"
14 #include "chrome/test/testing_profile.h" 16 #include "chrome/test/testing_profile.h"
15 #include "content/browser/browser_thread.h" 17 #include "content/browser/browser_thread.h"
16 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
17 19
18 using base::Time; 20 using base::Time;
19 using base::TimeDelta; 21 using base::TimeDelta;
20 using bookmark_utils::GetTitleFromTreeIter; 22 using bookmark_utils::GetTitleFromTreeIter;
21 23
22 // Base class for bookmark editor tests. This class is a copy from 24 // Base class for bookmark editor tests. This class is a copy from
23 // bookmark_editor_view_unittest.cc, and all the tests in this file are 25 // bookmark_editor_view_unittest.cc, and all the tests in this file are
24 // GTK-ifications of the corresponding views tests. Testing here is really 26 // GTK-ifications of the corresponding views tests. Testing here is really
25 // important because on Linux, we make round trip copies from chrome's 27 // important because on Linux, we make round trip copies from chrome's
26 // BookmarkModel class to GTK's native GtkTreeStore. 28 // BookmarkModel class to GTK's native GtkTreeStore.
27 class BookmarkEditorGtkTest : public testing::Test { 29 class BookmarkEditorGtkTest : public testing::Test {
28 public: 30 public:
29 BookmarkEditorGtkTest() 31 BookmarkEditorGtkTest()
30 : ui_thread_(BrowserThread::UI, &message_loop_), 32 : ui_thread_(BrowserThread::UI, &message_loop_),
31 file_thread_(BrowserThread::FILE, &message_loop_), 33 file_thread_(BrowserThread::FILE, &message_loop_),
32 model_(NULL) { 34 model_(NULL) {
33 } 35 }
34 36
35 virtual void SetUp() { 37 virtual void SetUp() {
38 CommandLine::ForCurrentProcess()->AppendSwitch(
39 switches::kEnableSyncedBookmarksFolder);
36 profile_.reset(new TestingProfile()); 40 profile_.reset(new TestingProfile());
37 profile_->CreateBookmarkModel(true); 41 profile_->CreateBookmarkModel(true);
38 profile_->BlockUntilBookmarkModelLoaded(); 42 profile_->BlockUntilBookmarkModelLoaded();
39 43
40 model_ = profile_->GetBookmarkModel(); 44 model_ = profile_->GetBookmarkModel();
41 45
42 AddTestData(); 46 AddTestData();
43 } 47 }
44 48
45 virtual void TearDown() { 49 virtual void TearDown() {
(...skipping 18 matching lines...) Expand all
64 // a 68 // a
65 // F1 69 // F1
66 // f1a 70 // f1a
67 // F11 71 // F11
68 // f11a 72 // f11a
69 // F2 73 // F2
70 // other node 74 // other node
71 // oa 75 // oa
72 // OF1 76 // OF1
73 // of1a 77 // of1a
78 // synced node
79 // sa
74 void AddTestData() { 80 void AddTestData() {
75 std::string test_base = base_path(); 81 std::string test_base = base_path();
76 82
77 model_->AddURL(model_->GetBookmarkBarNode(), 0, ASCIIToUTF16("a"), 83 model_->AddURL(model_->GetBookmarkBarNode(), 0, ASCIIToUTF16("a"),
78 GURL(test_base + "a")); 84 GURL(test_base + "a"));
79 const BookmarkNode* f1 = 85 const BookmarkNode* f1 =
80 model_->AddFolder(model_->GetBookmarkBarNode(), 1, ASCIIToUTF16("F1")); 86 model_->AddFolder(model_->GetBookmarkBarNode(), 1, ASCIIToUTF16("F1"));
81 model_->AddURL(f1, 0, ASCIIToUTF16("f1a"), GURL(test_base + "f1a")); 87 model_->AddURL(f1, 0, ASCIIToUTF16("f1a"), GURL(test_base + "f1a"));
82 const BookmarkNode* f11 = model_->AddFolder(f1, 1, ASCIIToUTF16("F11")); 88 const BookmarkNode* f11 = model_->AddFolder(f1, 1, ASCIIToUTF16("F11"));
83 model_->AddURL(f11, 0, ASCIIToUTF16("f11a"), GURL(test_base + "f11a")); 89 model_->AddURL(f11, 0, ASCIIToUTF16("f11a"), GURL(test_base + "f11a"));
84 model_->AddFolder(model_->GetBookmarkBarNode(), 2, ASCIIToUTF16("F2")); 90 model_->AddFolder(model_->GetBookmarkBarNode(), 2, ASCIIToUTF16("F2"));
85 91
86 // Children of the other node. 92 // Children of the other node.
87 model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("oa"), 93 model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("oa"),
88 GURL(test_base + "oa")); 94 GURL(test_base + "oa"));
89 const BookmarkNode* of1 = 95 const BookmarkNode* of1 =
90 model_->AddFolder(model_->other_node(), 1, ASCIIToUTF16("OF1")); 96 model_->AddFolder(model_->other_node(), 1, ASCIIToUTF16("OF1"));
91 model_->AddURL(of1, 0, ASCIIToUTF16("of1a"), GURL(test_base + "of1a")); 97 model_->AddURL(of1, 0, ASCIIToUTF16("of1a"), GURL(test_base + "of1a"));
98
99 // Children of the synced node.
100 model_->AddURL(model_->synced_node(), 0, ASCIIToUTF16("sa"),
101 GURL(test_base + "sa"));
92 } 102 }
93 }; 103 };
94 104
95 // Makes sure the tree model matches that of the bookmark bar model. 105 // Makes sure the tree model matches that of the bookmark bar model.
96 TEST_F(BookmarkEditorGtkTest, ModelsMatch) { 106 TEST_F(BookmarkEditorGtkTest, ModelsMatch) {
97 BookmarkEditorGtk editor(NULL, profile_.get(), NULL, 107 BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
98 BookmarkEditor::EditDetails(), 108 BookmarkEditor::EditDetails(),
99 BookmarkEditor::SHOW_TREE); 109 BookmarkEditor::SHOW_TREE);
100 110
101 // The root should have two children, one for the bookmark bar node, 111 // The root should have two children, one for the bookmark bar node,
102 // the other for the 'other bookmarks' folder. 112 // the other for the 'other bookmarks' folder.
103 GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_); 113 GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_);
104 GtkTreeIter toplevel; 114 GtkTreeIter toplevel;
105 ASSERT_TRUE(gtk_tree_model_get_iter_first(store, &toplevel)); 115 ASSERT_TRUE(gtk_tree_model_get_iter_first(store, &toplevel));
106 GtkTreeIter bookmark_bar_node = toplevel; 116 GtkTreeIter bookmark_bar_node = toplevel;
107 ASSERT_TRUE(gtk_tree_model_iter_next(store, &toplevel)); 117 ASSERT_TRUE(gtk_tree_model_iter_next(store, &toplevel));
108 GtkTreeIter other_node = toplevel; 118 GtkTreeIter other_node = toplevel;
119 ASSERT_TRUE(gtk_tree_model_iter_next(store, &toplevel));
120 GtkTreeIter synced_node = toplevel;
109 ASSERT_FALSE(gtk_tree_model_iter_next(store, &toplevel)); 121 ASSERT_FALSE(gtk_tree_model_iter_next(store, &toplevel));
110 122
111 // The bookmark bar should have 2 nodes: folder F1 and F2. 123 // The bookmark bar should have 2 nodes: folder F1 and F2.
112 GtkTreeIter f1_iter; 124 GtkTreeIter f1_iter;
113 GtkTreeIter child; 125 GtkTreeIter child;
114 ASSERT_EQ(2, gtk_tree_model_iter_n_children(store, &bookmark_bar_node)); 126 ASSERT_EQ(2, gtk_tree_model_iter_n_children(store, &bookmark_bar_node));
115 ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &bookmark_bar_node)); 127 ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &bookmark_bar_node));
116 f1_iter = child; 128 f1_iter = child;
117 ASSERT_EQ("F1", UTF16ToUTF8(GetTitleFromTreeIter(store, &child))); 129 ASSERT_EQ("F1", UTF16ToUTF8(GetTitleFromTreeIter(store, &child)));
118 ASSERT_TRUE(gtk_tree_model_iter_next(store, &child)); 130 ASSERT_TRUE(gtk_tree_model_iter_next(store, &child));
119 ASSERT_EQ("F2", UTF16ToUTF8(GetTitleFromTreeIter(store, &child))); 131 ASSERT_EQ("F2", UTF16ToUTF8(GetTitleFromTreeIter(store, &child)));
120 ASSERT_FALSE(gtk_tree_model_iter_next(store, &child)); 132 ASSERT_FALSE(gtk_tree_model_iter_next(store, &child));
121 133
122 // F1 should have one child, F11 134 // F1 should have one child, F11
123 ASSERT_EQ(1, gtk_tree_model_iter_n_children(store, &f1_iter)); 135 ASSERT_EQ(1, gtk_tree_model_iter_n_children(store, &f1_iter));
124 ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &f1_iter)); 136 ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &f1_iter));
125 ASSERT_EQ("F11", UTF16ToUTF8(GetTitleFromTreeIter(store, &child))); 137 ASSERT_EQ("F11", UTF16ToUTF8(GetTitleFromTreeIter(store, &child)));
126 ASSERT_FALSE(gtk_tree_model_iter_next(store, &child)); 138 ASSERT_FALSE(gtk_tree_model_iter_next(store, &child));
127 139
128 // Other node should have one child (OF1). 140 // Other node should have one child (OF1).
129 ASSERT_EQ(1, gtk_tree_model_iter_n_children(store, &other_node)); 141 ASSERT_EQ(1, gtk_tree_model_iter_n_children(store, &other_node));
130 ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &other_node)); 142 ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &other_node));
131 ASSERT_EQ("OF1", UTF16ToUTF8(GetTitleFromTreeIter(store, &child))); 143 ASSERT_EQ("OF1", UTF16ToUTF8(GetTitleFromTreeIter(store, &child)));
132 ASSERT_FALSE(gtk_tree_model_iter_next(store, &child)); 144 ASSERT_FALSE(gtk_tree_model_iter_next(store, &child));
145
146 // Synced node should have one child (sa).
147 ASSERT_EQ(0, gtk_tree_model_iter_n_children(store, &synced_node));
133 } 148 }
134 149
135 // Changes the title and makes sure parent/visual order doesn't change. 150 // Changes the title and makes sure parent/visual order doesn't change.
136 TEST_F(BookmarkEditorGtkTest, EditTitleKeepsPosition) { 151 TEST_F(BookmarkEditorGtkTest, EditTitleKeepsPosition) {
137 BookmarkEditorGtk editor(NULL, profile_.get(), NULL, 152 BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
138 BookmarkEditor::EditDetails(GetNode("a")), 153 BookmarkEditor::EditDetails(GetNode("a")),
139 BookmarkEditor::SHOW_TREE); 154 BookmarkEditor::SHOW_TREE);
140 gtk_entry_set_text(GTK_ENTRY(editor.name_entry_), "new_a"); 155 gtk_entry_set_text(GTK_ENTRY(editor.name_entry_), "new_a");
141 156
142 GtkTreeIter bookmark_bar_node; 157 GtkTreeIter bookmark_bar_node;
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 gtk_entry_set_text(GTK_ENTRY(editor.name_entry_), "new_a"); 331 gtk_entry_set_text(GTK_ENTRY(editor.name_entry_), "new_a");
317 332
318 editor.ApplyEdits(); 333 editor.ApplyEdits();
319 334
320 const BookmarkNode* other_node = profile_->GetBookmarkModel()->other_node(); 335 const BookmarkNode* other_node = profile_->GetBookmarkModel()->other_node();
321 ASSERT_EQ(2, other_node->child_count()); 336 ASSERT_EQ(2, other_node->child_count());
322 337
323 const BookmarkNode* new_node = other_node->GetChild(0); 338 const BookmarkNode* new_node = other_node->GetChild(0);
324 EXPECT_EQ(ASCIIToUTF16("new_a"), new_node->GetTitle()); 339 EXPECT_EQ(ASCIIToUTF16("new_a"), new_node->GetTitle());
325 } 340 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698