OLD | NEW |
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_bar_model.h" | 6 #include "chrome/browser/bookmarks/bookmark_model.h" |
7 #include "chrome/browser/profile.h" | 7 #include "chrome/browser/profile.h" |
8 #include "chrome/browser/views/bookmark_editor_view.h" | 8 #include "chrome/browser/views/bookmark_editor_view.h" |
9 #include "chrome/common/pref_names.h" | 9 #include "chrome/common/pref_names.h" |
10 #include "chrome/common/pref_service.h" | 10 #include "chrome/common/pref_service.h" |
11 #include "chrome/test/testing_profile.h" | 11 #include "chrome/test/testing_profile.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
13 | 13 |
14 // Base class for bookmark editor tests. Creates a BookmarkBarModel and | 14 // Base class for bookmark editor tests. Creates a BookmarkModel and populates |
15 // populates it with test data. | 15 // it with test data. |
16 class BookmarkEditorViewTest : public testing::Test { | 16 class BookmarkEditorViewTest : public testing::Test { |
17 public: | 17 public: |
18 BookmarkEditorViewTest() : model_(NULL) { | 18 BookmarkEditorViewTest() : model_(NULL) { |
19 } | 19 } |
20 | 20 |
21 virtual void SetUp() { | 21 virtual void SetUp() { |
22 profile_.reset(new TestingProfile()); | 22 profile_.reset(new TestingProfile()); |
23 profile_->set_has_history_service(true); | 23 profile_->set_has_history_service(true); |
24 profile_->CreateBookmarkBarModel(true); | 24 profile_->CreateBookmarkModel(true); |
25 | 25 |
26 model_ = profile_->GetBookmarkBarModel(); | 26 model_ = profile_->GetBookmarkModel(); |
27 | 27 |
28 AddTestData(); | 28 AddTestData(); |
29 } | 29 } |
30 | 30 |
31 virtual void TearDown() { | 31 virtual void TearDown() { |
32 } | 32 } |
33 | 33 |
34 protected: | 34 protected: |
35 MessageLoopForUI message_loop_; | 35 MessageLoopForUI message_loop_; |
36 BookmarkBarModel* model_; | 36 BookmarkModel* model_; |
37 scoped_ptr<TestingProfile> profile_; | 37 scoped_ptr<TestingProfile> profile_; |
38 | 38 |
39 std::string base_path() const { return "file:///c:/tmp/"; } | 39 std::string base_path() const { return "file:///c:/tmp/"; } |
40 | 40 |
41 private: | 41 private: |
42 // Creates the following structure: | 42 // Creates the following structure: |
43 // bookmark bar node | 43 // bookmark bar node |
44 // a | 44 // a |
45 // F1 | 45 // F1 |
46 // f1a | 46 // f1a |
47 // F11 | 47 // F11 |
48 // f11a | 48 // f11a |
49 // F2 | 49 // F2 |
50 // other node | 50 // other node |
51 // oa | 51 // oa |
52 // OF1 | 52 // OF1 |
53 // of1a | 53 // of1a |
54 void AddTestData() { | 54 void AddTestData() { |
55 std::string test_base = base_path(); | 55 std::string test_base = base_path(); |
56 | 56 |
57 model_->AddURL(model_->GetBookmarkBarNode(), 0, L"a", | 57 model_->AddURL(model_->GetBookmarkBarNode(), 0, L"a", |
58 GURL(test_base + "a")); | 58 GURL(test_base + "a")); |
59 BookmarkBarNode* f1 = | 59 BookmarkNode* f1 = model_->AddGroup(model_->GetBookmarkBarNode(), 1, L"F1"); |
60 model_->AddGroup(model_->GetBookmarkBarNode(), 1, L"F1"); | |
61 model_->AddURL(f1, 0, L"f1a", GURL(test_base + "f1a")); | 60 model_->AddURL(f1, 0, L"f1a", GURL(test_base + "f1a")); |
62 BookmarkBarNode* f11 = model_->AddGroup(f1, 1, L"F11"); | 61 BookmarkNode* f11 = model_->AddGroup(f1, 1, L"F11"); |
63 model_->AddURL(f11, 0, L"f11a", GURL(test_base + "f11a")); | 62 model_->AddURL(f11, 0, L"f11a", GURL(test_base + "f11a")); |
64 model_->AddGroup(model_->GetBookmarkBarNode(), 2, L"F2"); | 63 model_->AddGroup(model_->GetBookmarkBarNode(), 2, L"F2"); |
65 | 64 |
66 // Children of the other node. | 65 // Children of the other node. |
67 model_->AddURL(model_->other_node(), 0, L"oa", | 66 model_->AddURL(model_->other_node(), 0, L"oa", |
68 GURL(test_base + "oa")); | 67 GURL(test_base + "oa")); |
69 BookmarkBarNode* of1 = | 68 BookmarkNode* of1 = model_->AddGroup(model_->other_node(), 1, L"OF1"); |
70 model_->AddGroup(model_->other_node(), 1, L"OF1"); | |
71 model_->AddURL(of1, 0, L"of1a", GURL(test_base + "of1a")); | 69 model_->AddURL(of1, 0, L"of1a", GURL(test_base + "of1a")); |
72 } | 70 } |
73 }; | 71 }; |
74 | 72 |
75 // Makes sure the tree model matches that of the bookmark bar model. | 73 // Makes sure the tree model matches that of the bookmark bar model. |
76 TEST_F(BookmarkEditorViewTest, ModelsMatch) { | 74 TEST_F(BookmarkEditorViewTest, ModelsMatch) { |
77 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "xxx"), | 75 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "xxx"), |
78 L"xxx"); | 76 L"xxx"); |
79 BookmarkEditorView::BookmarkNode* editor_root = editor.tree_model_->GetRoot(); | 77 BookmarkEditorView::EditorNode* editor_root = editor.tree_model_->GetRoot(); |
80 // The root should have two children, one for the bookmark bar node, | 78 // The root should have two children, one for the bookmark bar node, |
81 // the other for the 'other bookmarks' folder. | 79 // the other for the 'other bookmarks' folder. |
82 ASSERT_EQ(2, editor_root->GetChildCount()); | 80 ASSERT_EQ(2, editor_root->GetChildCount()); |
83 | 81 |
84 BookmarkEditorView::BookmarkNode* bb_node = editor_root->GetChild(0); | 82 BookmarkEditorView::EditorNode* bb_node = editor_root->GetChild(0); |
85 // The root should have 2 nodes: folder F1 and F2. | 83 // The root should have 2 nodes: folder F1 and F2. |
86 ASSERT_EQ(2, bb_node->GetChildCount()); | 84 ASSERT_EQ(2, bb_node->GetChildCount()); |
87 ASSERT_EQ(L"F1", bb_node->GetChild(0)->GetTitle()); | 85 ASSERT_EQ(L"F1", bb_node->GetChild(0)->GetTitle()); |
88 ASSERT_EQ(L"F2", bb_node->GetChild(1)->GetTitle()); | 86 ASSERT_EQ(L"F2", bb_node->GetChild(1)->GetTitle()); |
89 | 87 |
90 // F1 should have one child, F11 | 88 // F1 should have one child, F11 |
91 ASSERT_EQ(1, bb_node->GetChild(0)->GetChildCount()); | 89 ASSERT_EQ(1, bb_node->GetChild(0)->GetChildCount()); |
92 ASSERT_EQ(L"F11", bb_node->GetChild(0)->GetChild(0)->GetTitle()); | 90 ASSERT_EQ(L"F11", bb_node->GetChild(0)->GetChild(0)->GetTitle()); |
93 | 91 |
94 BookmarkEditorView::BookmarkNode* other_node = editor_root->GetChild(1); | 92 BookmarkEditorView::EditorNode* other_node = editor_root->GetChild(1); |
95 // Other node should have one child (OF1). | 93 // Other node should have one child (OF1). |
96 ASSERT_EQ(1, other_node->GetChildCount()); | 94 ASSERT_EQ(1, other_node->GetChildCount()); |
97 ASSERT_EQ(L"OF1", other_node->GetChild(0)->GetTitle()); | 95 ASSERT_EQ(L"OF1", other_node->GetChild(0)->GetTitle()); |
98 } | 96 } |
99 | 97 |
100 // Changes the title and makes sure parent/visual order doesn't change. | 98 // Changes the title and makes sure parent/visual order doesn't change. |
101 TEST_F(BookmarkEditorViewTest, EditTitleKeepsPosition) { | 99 TEST_F(BookmarkEditorViewTest, EditTitleKeepsPosition) { |
102 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"new_a"); | 100 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"new_a"); |
103 | 101 |
104 editor.ApplyEdits(editor.tree_model_->GetRoot()->GetChild(0)); | 102 editor.ApplyEdits(editor.tree_model_->GetRoot()->GetChild(0)); |
105 | 103 |
106 BookmarkBarNode* bb_node = | 104 BookmarkNode* bb_node = profile_->GetBookmarkModel()->GetBookmarkBarNode(); |
107 profile_->GetBookmarkBarModel()->GetBookmarkBarNode(); | |
108 ASSERT_EQ(L"new_a", bb_node->GetChild(0)->GetTitle()); | 105 ASSERT_EQ(L"new_a", bb_node->GetChild(0)->GetTitle()); |
109 // The URL shouldn't have changed. | 106 // The URL shouldn't have changed. |
110 ASSERT_TRUE(GURL(base_path() + "a") == bb_node->GetChild(0)->GetURL()); | 107 ASSERT_TRUE(GURL(base_path() + "a") == bb_node->GetChild(0)->GetURL()); |
111 } | 108 } |
112 | 109 |
113 // Changes the url and makes sure parent/visual order doesn't change. | 110 // Changes the url and makes sure parent/visual order doesn't change. |
114 TEST_F(BookmarkEditorViewTest, EditURLKeepsPosition) { | 111 TEST_F(BookmarkEditorViewTest, EditURLKeepsPosition) { |
115 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"a"); | 112 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"a"); |
116 | 113 |
117 editor.url_tf_.SetText(UTF8ToWide(GURL(base_path() + "new_a").spec())); | 114 editor.url_tf_.SetText(UTF8ToWide(GURL(base_path() + "new_a").spec())); |
118 | 115 |
119 editor.ApplyEdits(editor.tree_model_->GetRoot()->GetChild(0)); | 116 editor.ApplyEdits(editor.tree_model_->GetRoot()->GetChild(0)); |
120 | 117 |
121 BookmarkBarNode* bb_node = | 118 BookmarkNode* bb_node = profile_->GetBookmarkModel()->GetBookmarkBarNode(); |
122 profile_->GetBookmarkBarModel()->GetBookmarkBarNode(); | |
123 ASSERT_EQ(L"a", bb_node->GetChild(0)->GetTitle()); | 119 ASSERT_EQ(L"a", bb_node->GetChild(0)->GetTitle()); |
124 // The URL should have changed. | 120 // The URL should have changed. |
125 ASSERT_TRUE(GURL(base_path() + "new_a") == bb_node->GetChild(0)->GetURL()); | 121 ASSERT_TRUE(GURL(base_path() + "new_a") == bb_node->GetChild(0)->GetURL()); |
126 } | 122 } |
127 | 123 |
128 // Moves 'a' to be a child of the other node. | 124 // Moves 'a' to be a child of the other node. |
129 TEST_F(BookmarkEditorViewTest, ChangeParent) { | 125 TEST_F(BookmarkEditorViewTest, ChangeParent) { |
130 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"a"); | 126 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"a"); |
131 | 127 |
132 editor.ApplyEdits(editor.tree_model_->GetRoot()->GetChild(1)); | 128 editor.ApplyEdits(editor.tree_model_->GetRoot()->GetChild(1)); |
133 | 129 |
134 BookmarkBarNode* other_node = profile_->GetBookmarkBarModel()->other_node(); | 130 BookmarkNode* other_node = profile_->GetBookmarkModel()->other_node(); |
135 ASSERT_EQ(L"a", other_node->GetChild(2)->GetTitle()); | 131 ASSERT_EQ(L"a", other_node->GetChild(2)->GetTitle()); |
136 ASSERT_TRUE(GURL(base_path() + "a") == other_node->GetChild(2)->GetURL()); | 132 ASSERT_TRUE(GURL(base_path() + "a") == other_node->GetChild(2)->GetURL()); |
137 } | 133 } |
138 | 134 |
139 // Changes the URL to a URL that is already starred. | 135 // Changes the URL to a URL that is already starred. |
140 TEST_F(BookmarkEditorViewTest, ChangeURLToExistingURL) { | 136 TEST_F(BookmarkEditorViewTest, ChangeURLToExistingURL) { |
141 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"a"); | 137 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"a"); |
142 | 138 |
143 editor.url_tf_.SetText(UTF8ToWide(GURL(base_path() + "f1a").spec())); | 139 editor.url_tf_.SetText(UTF8ToWide(GURL(base_path() + "f1a").spec())); |
144 | 140 |
145 editor.ApplyEdits(editor.tree_model_->GetRoot()->GetChild(0)); | 141 editor.ApplyEdits(editor.tree_model_->GetRoot()->GetChild(0)); |
146 | 142 |
147 // Position shouldn't have changed. | 143 // Position shouldn't have changed. |
148 BookmarkBarNode* bb_node = | 144 BookmarkNode* bb_node = profile_->GetBookmarkModel()->GetBookmarkBarNode(); |
149 profile_->GetBookmarkBarModel()->GetBookmarkBarNode(); | |
150 ASSERT_EQ(L"a", bb_node->GetChild(0)->GetTitle()); | 145 ASSERT_EQ(L"a", bb_node->GetChild(0)->GetTitle()); |
151 // The URL should have changed. | 146 // The URL should have changed. |
152 ASSERT_TRUE(GURL(base_path() + "f1a") == bb_node->GetChild(0)->GetURL()); | 147 ASSERT_TRUE(GURL(base_path() + "f1a") == bb_node->GetChild(0)->GetURL()); |
153 | 148 |
154 // And F1 should have one last child (f1a was removed from it). | 149 // And F1 should have one last child (f1a was removed from it). |
155 ASSERT_EQ(1, bb_node->GetChild(1)->GetChildCount()); | 150 ASSERT_EQ(1, bb_node->GetChild(1)->GetChildCount()); |
156 ASSERT_NE(L"f1a", bb_node->GetChild(1)->GetChild(0)->GetTitle()); | 151 ASSERT_NE(L"f1a", bb_node->GetChild(1)->GetChild(0)->GetTitle()); |
157 } | 152 } |
158 | 153 |
159 // Creates a new folder and moves a node to it. | 154 // Creates a new folder and moves a node to it. |
160 TEST_F(BookmarkEditorViewTest, MoveToNewParent) { | 155 TEST_F(BookmarkEditorViewTest, MoveToNewParent) { |
161 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"a"); | 156 BookmarkEditorView editor(profile_.get(), GURL(base_path() + "a"), L"a"); |
162 | 157 |
163 // Create two nodes: "F21" as a child of "F2" and "F211" as a child of "F21". | 158 // Create two nodes: "F21" as a child of "F2" and "F211" as a child of "F21". |
164 BookmarkEditorView::BookmarkNode* f2 = | 159 BookmarkEditorView::EditorNode* f2 = |
165 editor.tree_model_->GetRoot()->GetChild(0)->GetChild(1); | 160 editor.tree_model_->GetRoot()->GetChild(0)->GetChild(1); |
166 BookmarkEditorView::BookmarkNode* f21 = editor.AddNewGroup(f2); | 161 BookmarkEditorView::EditorNode* f21 = editor.AddNewGroup(f2); |
167 f21->SetTitle(L"F21"); | 162 f21->SetTitle(L"F21"); |
168 BookmarkEditorView::BookmarkNode* f211 = editor.AddNewGroup(f21); | 163 BookmarkEditorView::EditorNode* f211 = editor.AddNewGroup(f21); |
169 f211->SetTitle(L"F211"); | 164 f211->SetTitle(L"F211"); |
170 | 165 |
171 // Parent the node to "F21". | 166 // Parent the node to "F21". |
172 editor.ApplyEdits(f2); | 167 editor.ApplyEdits(f2); |
173 | 168 |
174 BookmarkBarNode* bb_node = | 169 BookmarkNode* bb_node = profile_->GetBookmarkModel()->GetBookmarkBarNode(); |
175 profile_->GetBookmarkBarModel()->GetBookmarkBarNode(); | 170 BookmarkNode* mf2 = bb_node->GetChild(1); |
176 BookmarkBarNode* mf2 = bb_node->GetChild(1); | |
177 | 171 |
178 // F2 in the model should have two children now: F21 and the node edited. | 172 // F2 in the model should have two children now: F21 and the node edited. |
179 ASSERT_EQ(2, mf2->GetChildCount()); | 173 ASSERT_EQ(2, mf2->GetChildCount()); |
180 // F21 should be first. | 174 // F21 should be first. |
181 ASSERT_EQ(L"F21", mf2->GetChild(0)->GetTitle()); | 175 ASSERT_EQ(L"F21", mf2->GetChild(0)->GetTitle()); |
182 // Then a. | 176 // Then a. |
183 ASSERT_EQ(L"a", mf2->GetChild(1)->GetTitle()); | 177 ASSERT_EQ(L"a", mf2->GetChild(1)->GetTitle()); |
184 | 178 |
185 // F21 should have one child, F211. | 179 // F21 should have one child, F211. |
186 BookmarkBarNode* mf21 = mf2->GetChild(0); | 180 BookmarkNode* mf21 = mf2->GetChild(0); |
187 ASSERT_EQ(1, mf21->GetChildCount()); | 181 ASSERT_EQ(1, mf21->GetChildCount()); |
188 ASSERT_EQ(L"F211", mf21->GetChild(0)->GetTitle()); | 182 ASSERT_EQ(L"F211", mf21->GetChild(0)->GetTitle()); |
189 } | 183 } |
190 | 184 |
OLD | NEW |