Chromium Code Reviews| 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 |