OLD | NEW |
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 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
6 | 6 |
7 #include "base/memory/scoped_nsobject.h" | 7 #include "base/memory/scoped_nsobject.h" |
8 #include "base/sys_string_conversions.h" | 8 #include "base/sys_string_conversions.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/bookmarks/bookmark_model.h" | 10 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 11 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
11 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_editor_controller.h" | 12 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_editor_controller.h" |
12 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" | 13 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
13 #include "chrome/test/base/test_browser_window.h" | 14 #include "chrome/test/base/test_browser_window.h" |
14 #include "grit/generated_resources.h" | 15 #include "grit/generated_resources.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
16 #import "testing/gtest_mac.h" | 17 #import "testing/gtest_mac.h" |
17 #include "testing/platform_test.h" | 18 #include "testing/platform_test.h" |
18 #include "ui/base/l10n/l10n_util_mac.h" | 19 #include "ui/base/l10n/l10n_util_mac.h" |
19 | 20 |
20 class BookmarkEditorBaseControllerTest : public CocoaProfileTest { | 21 class BookmarkEditorBaseControllerTest : public CocoaProfileTest { |
21 public: | 22 public: |
22 BookmarkEditorBaseController* controller_; // weak | 23 BookmarkEditorBaseController* controller_; // weak |
23 const BookmarkNode* folder_a_; | 24 const BookmarkNode* folder_a_; |
24 const BookmarkNode* folder_b_; | 25 const BookmarkNode* folder_b_; |
25 const BookmarkNode* folder_b_0_; | 26 const BookmarkNode* folder_b_0_; |
26 const BookmarkNode* folder_b_3_; | 27 const BookmarkNode* folder_b_3_; |
27 const BookmarkNode* folder_c_; | 28 const BookmarkNode* folder_c_; |
28 | 29 |
29 void CreateModel() { | 30 void CreateModel() { |
30 // Set up a small bookmark hierarchy, which will look as follows: | 31 // Set up a small bookmark hierarchy, which will look as follows: |
31 // a b c d | 32 // a b c d |
32 // a-0 b-0 c-0 | 33 // a-0 b-0 c-0 |
33 // a-1 b-00 c-1 | 34 // a-1 b-00 c-1 |
34 // a-2 b-1 c-2 | 35 // a-2 b-1 c-2 |
35 // b-2 c-3 | 36 // b-2 c-3 |
36 // b-3 | 37 // b-3 |
37 // b-30 | 38 // b-30 |
38 // b-31 | 39 // b-31 |
39 // b-4 | 40 // b-4 |
40 BookmarkModel& model(*(profile()->GetBookmarkModel())); | 41 BookmarkModel& model(*(BookmarkModelFactory::GetForProfile(profile()))); |
41 const BookmarkNode* root = model.bookmark_bar_node(); | 42 const BookmarkNode* root = model.bookmark_bar_node(); |
42 folder_a_ = model.AddFolder(root, 0, ASCIIToUTF16("a")); | 43 folder_a_ = model.AddFolder(root, 0, ASCIIToUTF16("a")); |
43 model.AddURL(folder_a_, 0, ASCIIToUTF16("a-0"), GURL("http://a-0.com")); | 44 model.AddURL(folder_a_, 0, ASCIIToUTF16("a-0"), GURL("http://a-0.com")); |
44 model.AddURL(folder_a_, 1, ASCIIToUTF16("a-1"), GURL("http://a-1.com")); | 45 model.AddURL(folder_a_, 1, ASCIIToUTF16("a-1"), GURL("http://a-1.com")); |
45 model.AddURL(folder_a_, 2, ASCIIToUTF16("a-2"), GURL("http://a-2.com")); | 46 model.AddURL(folder_a_, 2, ASCIIToUTF16("a-2"), GURL("http://a-2.com")); |
46 | 47 |
47 folder_b_ = model.AddFolder(root, 1, ASCIIToUTF16("b")); | 48 folder_b_ = model.AddFolder(root, 1, ASCIIToUTF16("b")); |
48 folder_b_0_ = model.AddFolder(folder_b_, 0, ASCIIToUTF16("b-0")); | 49 folder_b_0_ = model.AddFolder(folder_b_, 0, ASCIIToUTF16("b-0")); |
49 model.AddURL(folder_b_0_, 0, ASCIIToUTF16("bb-0"), GURL("http://bb-0.com")); | 50 model.AddURL(folder_b_0_, 0, ASCIIToUTF16("bb-0"), GURL("http://bb-0.com")); |
50 model.AddURL(folder_b_, 1, ASCIIToUTF16("b-1"), GURL("http://b-1.com")); | 51 model.AddURL(folder_b_, 1, ASCIIToUTF16("b-1"), GURL("http://b-1.com")); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 controller_ = NULL; | 90 controller_ = NULL; |
90 CocoaTest::TearDown(); | 91 CocoaTest::TearDown(); |
91 } | 92 } |
92 | 93 |
93 virtual Browser* CreateBrowser() OVERRIDE { | 94 virtual Browser* CreateBrowser() OVERRIDE { |
94 return chrome::CreateBrowserWithTestWindowForProfile(profile()); | 95 return chrome::CreateBrowserWithTestWindowForProfile(profile()); |
95 } | 96 } |
96 }; | 97 }; |
97 | 98 |
98 TEST_F(BookmarkEditorBaseControllerTest, VerifyBookmarkTestModel) { | 99 TEST_F(BookmarkEditorBaseControllerTest, VerifyBookmarkTestModel) { |
99 BookmarkModel& model(*(profile()->GetBookmarkModel())); | 100 BookmarkModel& model(*(BookmarkModelFactory::GetForProfile(profile()))); |
100 const BookmarkNode& root(*model.bookmark_bar_node()); | 101 const BookmarkNode& root(*model.bookmark_bar_node()); |
101 EXPECT_EQ(4, root.child_count()); | 102 EXPECT_EQ(4, root.child_count()); |
102 // a | 103 // a |
103 const BookmarkNode* child = root.GetChild(0); | 104 const BookmarkNode* child = root.GetChild(0); |
104 EXPECT_EQ(3, child->child_count()); | 105 EXPECT_EQ(3, child->child_count()); |
105 const BookmarkNode* subchild = child->GetChild(0); | 106 const BookmarkNode* subchild = child->GetChild(0); |
106 EXPECT_EQ(0, subchild->child_count()); | 107 EXPECT_EQ(0, subchild->child_count()); |
107 subchild = child->GetChild(1); | 108 subchild = child->GetChild(1); |
108 EXPECT_EQ(0, subchild->child_count()); | 109 EXPECT_EQ(0, subchild->child_count()); |
109 subchild = child->GetChild(2); | 110 subchild = child->GetChild(2); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 EXPECT_TRUE(newFolderInfo); | 170 EXPECT_TRUE(newFolderInfo); |
170 NSString* newFolderName = [newFolderInfo folderName]; | 171 NSString* newFolderName = [newFolderInfo folderName]; |
171 EXPECT_NSEQ(expectedName, newFolderName); | 172 EXPECT_NSEQ(expectedName, newFolderName); |
172 [controller_ createNewFolders]; | 173 [controller_ createNewFolders]; |
173 // Verify that the tab folder was added to the new folder. | 174 // Verify that the tab folder was added to the new folder. |
174 EXPECT_EQ(3, folder_b_3_->child_count()); | 175 EXPECT_EQ(3, folder_b_3_->child_count()); |
175 [controller_ cancel:nil]; | 176 [controller_ cancel:nil]; |
176 } | 177 } |
177 | 178 |
178 TEST_F(BookmarkEditorBaseControllerTest, CreateTwoFolders) { | 179 TEST_F(BookmarkEditorBaseControllerTest, CreateTwoFolders) { |
179 BookmarkModel* model = profile()->GetBookmarkModel(); | 180 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile()); |
180 const BookmarkNode* bar = model->bookmark_bar_node(); | 181 const BookmarkNode* bar = model->bookmark_bar_node(); |
181 // Create 2 folders which are children of the bar. | 182 // Create 2 folders which are children of the bar. |
182 [controller_ selectTestNodeInBrowser:bar]; | 183 [controller_ selectTestNodeInBrowser:bar]; |
183 [controller_ newFolder:nil]; | 184 [controller_ newFolder:nil]; |
184 [controller_ selectTestNodeInBrowser:bar]; | 185 [controller_ selectTestNodeInBrowser:bar]; |
185 [controller_ newFolder:nil]; | 186 [controller_ newFolder:nil]; |
186 // If we do NOT crash on createNewFolders, success! | 187 // If we do NOT crash on createNewFolders, success! |
187 // (e.g. http://crbug.com/47877 is fixed). | 188 // (e.g. http://crbug.com/47877 is fixed). |
188 [controller_ createNewFolders]; | 189 [controller_ createNewFolders]; |
189 [controller_ cancel:nil]; | 190 [controller_ cancel:nil]; |
190 } | 191 } |
191 | 192 |
192 TEST_F(BookmarkEditorBaseControllerTest, SelectedFolderDeleted) { | 193 TEST_F(BookmarkEditorBaseControllerTest, SelectedFolderDeleted) { |
193 BookmarkModel& model(*(profile()->GetBookmarkModel())); | 194 BookmarkModel& model(*(BookmarkModelFactory::GetForProfile(profile()))); |
194 [controller_ selectTestNodeInBrowser:folder_b_3_]; | 195 [controller_ selectTestNodeInBrowser:folder_b_3_]; |
195 EXPECT_EQ(folder_b_3_, [controller_ selectedNode]); | 196 EXPECT_EQ(folder_b_3_, [controller_ selectedNode]); |
196 | 197 |
197 // Delete the selected node, and verify it's no longer selected: | 198 // Delete the selected node, and verify it's no longer selected: |
198 model.Remove(folder_b_, 3); | 199 model.Remove(folder_b_, 3); |
199 EXPECT_NE(folder_b_3_, [controller_ selectedNode]); | 200 EXPECT_NE(folder_b_3_, [controller_ selectedNode]); |
200 | 201 |
201 [controller_ cancel:nil]; | 202 [controller_ cancel:nil]; |
202 } | 203 } |
203 | 204 |
204 TEST_F(BookmarkEditorBaseControllerTest, SelectedFoldersParentDeleted) { | 205 TEST_F(BookmarkEditorBaseControllerTest, SelectedFoldersParentDeleted) { |
205 BookmarkModel& model(*(profile()->GetBookmarkModel())); | 206 BookmarkModel& model(*(BookmarkModelFactory::GetForProfile(profile()))); |
206 const BookmarkNode* root = model.bookmark_bar_node(); | 207 const BookmarkNode* root = model.bookmark_bar_node(); |
207 [controller_ selectTestNodeInBrowser:folder_b_3_]; | 208 [controller_ selectTestNodeInBrowser:folder_b_3_]; |
208 EXPECT_EQ(folder_b_3_, [controller_ selectedNode]); | 209 EXPECT_EQ(folder_b_3_, [controller_ selectedNode]); |
209 | 210 |
210 // Delete the selected node's parent, and verify it's no longer selected: | 211 // Delete the selected node's parent, and verify it's no longer selected: |
211 model.Remove(root, 1); | 212 model.Remove(root, 1); |
212 EXPECT_NE(folder_b_3_, [controller_ selectedNode]); | 213 EXPECT_NE(folder_b_3_, [controller_ selectedNode]); |
213 | 214 |
214 [controller_ cancel:nil]; | 215 [controller_ cancel:nil]; |
215 } | 216 } |
216 | 217 |
217 TEST_F(BookmarkEditorBaseControllerTest, FolderAdded) { | 218 TEST_F(BookmarkEditorBaseControllerTest, FolderAdded) { |
218 BookmarkModel& model(*(profile()->GetBookmarkModel())); | 219 BookmarkModel& model(*(BookmarkModelFactory::GetForProfile(profile()))); |
219 const BookmarkNode* root = model.bookmark_bar_node(); | 220 const BookmarkNode* root = model.bookmark_bar_node(); |
220 | 221 |
221 // Add a folder node to the model, and verify it can be selected in the tree: | 222 // Add a folder node to the model, and verify it can be selected in the tree: |
222 const BookmarkNode* folder_added = model.AddFolder( | 223 const BookmarkNode* folder_added = model.AddFolder( |
223 root, 0, ASCIIToUTF16("added")); | 224 root, 0, ASCIIToUTF16("added")); |
224 [controller_ selectTestNodeInBrowser:folder_added]; | 225 [controller_ selectTestNodeInBrowser:folder_added]; |
225 EXPECT_EQ(folder_added, [controller_ selectedNode]); | 226 EXPECT_EQ(folder_added, [controller_ selectedNode]); |
226 | 227 |
227 [controller_ cancel:nil]; | 228 [controller_ cancel:nil]; |
228 } | 229 } |
229 | 230 |
230 // Verifies expandeNodes and getExpandedNodes. | 231 // Verifies expandeNodes and getExpandedNodes. |
231 TEST_F(BookmarkEditorBaseControllerTest, ExpandedState) { | 232 TEST_F(BookmarkEditorBaseControllerTest, ExpandedState) { |
232 BookmarkModel& model(*(profile()->GetBookmarkModel())); | 233 BookmarkModel& model(*(BookmarkModelFactory::GetForProfile(profile()))); |
233 | 234 |
234 // Sets up the state we're going to expand. | 235 // Sets up the state we're going to expand. |
235 BookmarkExpandedStateTracker::Nodes nodes; | 236 BookmarkExpandedStateTracker::Nodes nodes; |
236 nodes.insert(model.bookmark_bar_node()); | 237 nodes.insert(model.bookmark_bar_node()); |
237 nodes.insert(folder_b_); | 238 nodes.insert(folder_b_); |
238 nodes.insert(folder_c_); | 239 nodes.insert(folder_c_); |
239 | 240 |
240 // Initial state shouldn't match expected state, otherwise this test isn't | 241 // Initial state shouldn't match expected state, otherwise this test isn't |
241 // really going to test anything. | 242 // really going to test anything. |
242 BookmarkExpandedStateTracker::Nodes actual = [controller_ getExpandedNodes]; | 243 BookmarkExpandedStateTracker::Nodes actual = [controller_ getExpandedNodes]; |
(...skipping 17 matching lines...) Expand all Loading... |
260 reinterpret_cast<const BookmarkNode*>(&children); | 261 reinterpret_cast<const BookmarkNode*>(&children); |
261 BookmarkFolderInfo* info = | 262 BookmarkFolderInfo* info = |
262 [BookmarkFolderInfo bookmarkFolderInfoWithFolderName:@"name" | 263 [BookmarkFolderInfo bookmarkFolderInfoWithFolderName:@"name" |
263 folderNode:fakeNode | 264 folderNode:fakeNode |
264 children:children]; | 265 children:children]; |
265 EXPECT_TRUE(info); | 266 EXPECT_TRUE(info); |
266 EXPECT_EQ([info folderName], @"name"); | 267 EXPECT_EQ([info folderName], @"name"); |
267 EXPECT_EQ([info children], children); | 268 EXPECT_EQ([info children], children); |
268 EXPECT_EQ([info folderNode], fakeNode); | 269 EXPECT_EQ([info folderNode], fakeNode); |
269 } | 270 } |
OLD | NEW |