OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/scoped_nsobject.h" | |
6 #import "chrome/browser/cocoa/bookmark_groups_controller.h" | |
7 #import "chrome/browser/cocoa/bookmark_manager_controller.h" | |
8 #import "chrome/browser/cocoa/bookmark_tree_controller.h" | |
9 #include "chrome/browser/cocoa/browser_test_helper.h" | |
10 #import "chrome/browser/cocoa/cocoa_test_helper.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 #include "testing/platform_test.h" | |
13 | |
14 // Mac WebKit uses this type, declared in WebKit/mac/History/WebURLsWithTitles.h | |
15 static NSString* const WebURLsWithTitlesPboardType = | |
16 @"WebURLsWithTitlesPboardType"; | |
viettrungluu
2010/01/04 21:19:01
Indent (second line) 4 spaces.
| |
17 | |
18 namespace { | |
19 | |
20 class BookmarkTreeControllerTest : public CocoaTest { | |
21 public: | |
22 void SetUp() { | |
23 CocoaTest::SetUp(); | |
24 pasteboard_ = [NSPasteboard pasteboardWithUniqueName]; | |
25 manager_ = [BookmarkManagerController showBookmarkManager: | |
26 browser_test_helper_.profile()]; | |
27 ASSERT_TRUE(manager_); | |
28 treeController_ = [manager_ treeController]; | |
29 ASSERT_TRUE(treeController_); | |
30 } | |
31 | |
32 void TearDown() { | |
33 [manager_ close]; | |
34 [pasteboard_ releaseGlobally]; | |
35 CocoaTest::TearDown(); | |
36 } | |
37 | |
38 id SelectBar() { | |
39 BookmarkModel* model = [manager_ bookmarkModel]; | |
40 id barItem = [manager_ itemFromNode:model->GetBookmarkBarNode()]; | |
41 [[manager_ groupsController] setSelectedGroup:barItem]; | |
42 return barItem; | |
43 } | |
44 | |
45 id AddToBar(const std::wstring& title, const std::string& urlStr) { | |
46 BookmarkModel* model = [manager_ bookmarkModel]; | |
47 const BookmarkNode* bar = model->GetBookmarkBarNode(); | |
48 const BookmarkNode* node; | |
49 node = model->AddURL(bar, bar->GetChildCount(), title, GURL(urlStr)); | |
50 return [manager_ itemFromNode:node]; | |
51 } | |
52 | |
53 BrowserTestHelper browser_test_helper_; | |
54 BookmarkManagerController* manager_; | |
55 BookmarkTreeController* treeController_; | |
56 NSPasteboard* pasteboard_; | |
57 }; | |
58 | |
59 TEST_F(BookmarkTreeControllerTest, Model) { | |
60 // Select nothing in the group list and check tree is empty: | |
61 BookmarkGroupsController* groupsController = [manager_ groupsController]; | |
62 [groupsController setSelectedGroup:nil]; | |
63 ASSERT_EQ(nil, [treeController_ group]); | |
64 | |
65 // Select the bookmarks bar and check that it's shown in the tree: | |
66 id barItem = SelectBar(); | |
67 ASSERT_EQ(barItem, [treeController_ group]); | |
68 } | |
69 | |
70 TEST_F(BookmarkTreeControllerTest, Selection) { | |
71 SelectBar(); | |
72 id test1 = AddToBar(L"Test 1", "http://example.com/test1"); | |
73 id test2 = AddToBar(L"Test 2", "http://example.com/test2"); | |
74 id test3 = AddToBar(L"Test 3", "http://example.com/test3"); | |
75 EXPECT_EQ(0U, [[treeController_ selectedItems] count]); | |
76 | |
77 NSArray* sel = [NSArray arrayWithObject:test2]; | |
78 [treeController_ setSelectedItems:sel]; | |
79 EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]); | |
80 sel = [NSArray arrayWithObjects:test1, test3, nil]; | |
81 [treeController_ setSelectedItems:sel]; | |
82 EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]); | |
83 sel = [NSArray arrayWithObjects:test1, test2, test3, nil]; | |
84 [treeController_ setSelectedItems:sel]; | |
85 EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]); | |
86 sel = [NSArray array]; | |
87 [treeController_ setSelectedItems:sel]; | |
88 EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]); | |
89 } | |
90 | |
91 TEST_F(BookmarkTreeControllerTest, CopyURLs) { | |
92 SelectBar(); | |
93 AddToBar(L"Test 1", "http://example.com/test1"); | |
94 AddToBar(L"Test 2", "http://example.com/test2"); | |
95 AddToBar(L"Test 3", "http://example.com/test3"); | |
96 [[treeController_ outline] selectAll:treeController_]; | |
97 | |
98 ASSERT_TRUE([treeController_ copyToPasteboard:pasteboard_]); | |
99 | |
100 NSArray* contents = [pasteboard_ propertyListForType: | |
101 WebURLsWithTitlesPboardType]; | |
102 ASSERT_TRUE([contents isKindOfClass:[NSArray class]]); | |
103 NSArray* urlStrings = [contents objectAtIndex:0]; | |
104 EXPECT_TRUE([urlStrings isKindOfClass:[NSArray class]]); | |
105 NSArray* expectedURLStrings = [NSArray arrayWithObjects: | |
106 @"http://example.com/test1", | |
107 @"http://example.com/test2", | |
108 @"http://example.com/test3", nil]; | |
109 EXPECT_TRUE([urlStrings isEqual:expectedURLStrings]); | |
110 NSArray* titles = [contents objectAtIndex:1]; | |
111 EXPECT_TRUE([titles isKindOfClass:[NSArray class]]); | |
112 NSArray* expectedTitles = [NSArray arrayWithObjects: | |
113 @"Test 1", | |
114 @"Test 2", | |
115 @"Test 3", nil]; | |
116 EXPECT_TRUE([titles isEqual:expectedTitles]); | |
117 | |
118 NSString* str = [pasteboard_ stringForType:NSStringPboardType]; | |
119 EXPECT_TRUE([str isEqual: | |
120 @"http://example.com/test1\n" | |
121 "http://example.com/test2\n" | |
122 "http://example.com/test3"]); | |
123 | |
124 EXPECT_FALSE([pasteboard_ dataForType:NSURLPboardType]); | |
125 } | |
126 | |
127 TEST_F(BookmarkTreeControllerTest, PasteSingleURL) { | |
128 [pasteboard_ declareTypes:[NSArray arrayWithObjects: | |
129 NSURLPboardType, @"public.url-name", nil] | |
130 owner:nil]; | |
131 [[NSURL URLWithString:@"http://google.com"] writeToPasteboard:pasteboard_]; | |
132 [pasteboard_ setString:@"Gooooogle" forType:@"public.url-name"]; | |
133 | |
134 SelectBar(); | |
135 AddToBar(L"Test 1", "http://example.com/test1"); | |
136 AddToBar(L"Test 2", "http://example.com/test2"); | |
137 AddToBar(L"Test 3", "http://example.com/test3"); | |
138 | |
139 ASSERT_TRUE([treeController_ pasteFromPasteboard:pasteboard_]); | |
140 EXPECT_EQ(4, [[treeController_ outline] numberOfRows]); | |
141 EXPECT_EQ(3, [[treeController_ outline] selectedRow]); | |
142 NSArray* sel = [treeController_ selectedItems]; | |
143 ASSERT_EQ(1U, [sel count]); | |
144 const BookmarkNode* node = [manager_ nodeFromItem:[sel objectAtIndex:0]]; | |
145 ASSERT_TRUE(node); | |
146 EXPECT_EQ(GURL("http://google.com"), node->GetURL()); | |
147 EXPECT_EQ(L"Gooooogle", node->GetTitle()); | |
148 } | |
149 | |
150 TEST_F(BookmarkTreeControllerTest, PasteMultipleURLs) { | |
151 [pasteboard_ declareTypes:[NSArray arrayWithObjects: | |
152 WebURLsWithTitlesPboardType, | |
153 NSURLPboardType, nil] | |
154 owner:nil]; | |
155 NSMutableArray* urls = [NSArray arrayWithObjects: | |
156 @"http://google.com", @"http://chromium.org", nil]; | |
157 NSMutableArray* titles = [NSArray arrayWithObjects: | |
158 @"Gooooogle", @"Chrooooomium", nil]; | |
159 [pasteboard_ setPropertyList:[NSArray arrayWithObjects:urls, titles, nil] | |
160 forType:WebURLsWithTitlesPboardType]; | |
161 [[NSURL URLWithString:@"http://example.com"] writeToPasteboard:pasteboard_]; | |
162 | |
163 SelectBar(); | |
164 AddToBar(L"Test 1", "http://example.com/test1"); | |
165 id test2 = AddToBar(L"Test 2", "http://example.com/test2"); | |
166 AddToBar(L"Test 3", "http://example.com/test3"); | |
167 [treeController_ setSelectedItems:[NSArray arrayWithObject:test2]]; | |
168 | |
169 ASSERT_TRUE([treeController_ pasteFromPasteboard:pasteboard_]); | |
170 EXPECT_EQ(5, [[treeController_ outline] numberOfRows]); | |
171 EXPECT_TRUE([[[treeController_ outline] selectedRowIndexes] | |
172 isEqual:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2, 2)]]); | |
173 NSArray* sel = [treeController_ selectedItems]; | |
174 ASSERT_EQ(2U, [sel count]); | |
175 | |
176 const BookmarkNode* node = [manager_ nodeFromItem:[sel objectAtIndex:0]]; | |
177 ASSERT_TRUE(node); | |
178 EXPECT_EQ(GURL("http://google.com"), node->GetURL()); | |
179 EXPECT_EQ(L"Gooooogle", node->GetTitle()); | |
180 node = [manager_ nodeFromItem:[sel objectAtIndex:1]]; | |
181 ASSERT_TRUE(node); | |
182 EXPECT_EQ(GURL("http://chromium.org"), node->GetURL()); | |
183 EXPECT_EQ(L"Chrooooomium", node->GetTitle()); | |
184 } | |
185 | |
186 } // namespace | |
OLD | NEW |