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

Unified Diff: chrome/browser/cocoa/bookmark_tree_controller_unittest.mm

Issue 501073: Native Cocoa bookmark manager, part 1 (Closed)
Patch Set: Style fixes, and copy/paste unit tests Created 10 years, 12 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/cocoa/bookmark_tree_controller_unittest.mm
diff --git a/chrome/browser/cocoa/bookmark_tree_controller_unittest.mm b/chrome/browser/cocoa/bookmark_tree_controller_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..60f13c495563628ce238a4f6025f38346c3394fb
--- /dev/null
+++ b/chrome/browser/cocoa/bookmark_tree_controller_unittest.mm
@@ -0,0 +1,186 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/scoped_nsobject.h"
+#import "chrome/browser/cocoa/bookmark_groups_controller.h"
+#import "chrome/browser/cocoa/bookmark_manager_controller.h"
+#import "chrome/browser/cocoa/bookmark_tree_controller.h"
+#include "chrome/browser/cocoa/browser_test_helper.h"
+#import "chrome/browser/cocoa/cocoa_test_helper.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/platform_test.h"
+
+// Mac WebKit uses this type, declared in WebKit/mac/History/WebURLsWithTitles.h
+static NSString* const WebURLsWithTitlesPboardType =
+@"WebURLsWithTitlesPboardType";
viettrungluu 2010/01/04 21:19:01 Indent (second line) 4 spaces.
+
+namespace {
+
+class BookmarkTreeControllerTest : public CocoaTest {
+ public:
+ void SetUp() {
+ CocoaTest::SetUp();
+ pasteboard_ = [NSPasteboard pasteboardWithUniqueName];
+ manager_ = [BookmarkManagerController showBookmarkManager:
+ browser_test_helper_.profile()];
+ ASSERT_TRUE(manager_);
+ treeController_ = [manager_ treeController];
+ ASSERT_TRUE(treeController_);
+ }
+
+ void TearDown() {
+ [manager_ close];
+ [pasteboard_ releaseGlobally];
+ CocoaTest::TearDown();
+ }
+
+ id SelectBar() {
+ BookmarkModel* model = [manager_ bookmarkModel];
+ id barItem = [manager_ itemFromNode:model->GetBookmarkBarNode()];
+ [[manager_ groupsController] setSelectedGroup:barItem];
+ return barItem;
+ }
+
+ id AddToBar(const std::wstring& title, const std::string& urlStr) {
+ BookmarkModel* model = [manager_ bookmarkModel];
+ const BookmarkNode* bar = model->GetBookmarkBarNode();
+ const BookmarkNode* node;
+ node = model->AddURL(bar, bar->GetChildCount(), title, GURL(urlStr));
+ return [manager_ itemFromNode:node];
+ }
+
+ BrowserTestHelper browser_test_helper_;
+ BookmarkManagerController* manager_;
+ BookmarkTreeController* treeController_;
+ NSPasteboard* pasteboard_;
+};
+
+TEST_F(BookmarkTreeControllerTest, Model) {
+ // Select nothing in the group list and check tree is empty:
+ BookmarkGroupsController* groupsController = [manager_ groupsController];
+ [groupsController setSelectedGroup:nil];
+ ASSERT_EQ(nil, [treeController_ group]);
+
+ // Select the bookmarks bar and check that it's shown in the tree:
+ id barItem = SelectBar();
+ ASSERT_EQ(barItem, [treeController_ group]);
+}
+
+TEST_F(BookmarkTreeControllerTest, Selection) {
+ SelectBar();
+ id test1 = AddToBar(L"Test 1", "http://example.com/test1");
+ id test2 = AddToBar(L"Test 2", "http://example.com/test2");
+ id test3 = AddToBar(L"Test 3", "http://example.com/test3");
+ EXPECT_EQ(0U, [[treeController_ selectedItems] count]);
+
+ NSArray* sel = [NSArray arrayWithObject:test2];
+ [treeController_ setSelectedItems:sel];
+ EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]);
+ sel = [NSArray arrayWithObjects:test1, test3, nil];
+ [treeController_ setSelectedItems:sel];
+ EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]);
+ sel = [NSArray arrayWithObjects:test1, test2, test3, nil];
+ [treeController_ setSelectedItems:sel];
+ EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]);
+ sel = [NSArray array];
+ [treeController_ setSelectedItems:sel];
+ EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]);
+}
+
+TEST_F(BookmarkTreeControllerTest, CopyURLs) {
+ SelectBar();
+ AddToBar(L"Test 1", "http://example.com/test1");
+ AddToBar(L"Test 2", "http://example.com/test2");
+ AddToBar(L"Test 3", "http://example.com/test3");
+ [[treeController_ outline] selectAll:treeController_];
+
+ ASSERT_TRUE([treeController_ copyToPasteboard:pasteboard_]);
+
+ NSArray* contents = [pasteboard_ propertyListForType:
+ WebURLsWithTitlesPboardType];
+ ASSERT_TRUE([contents isKindOfClass:[NSArray class]]);
+ NSArray* urlStrings = [contents objectAtIndex:0];
+ EXPECT_TRUE([urlStrings isKindOfClass:[NSArray class]]);
+ NSArray* expectedURLStrings = [NSArray arrayWithObjects:
+ @"http://example.com/test1",
+ @"http://example.com/test2",
+ @"http://example.com/test3", nil];
+ EXPECT_TRUE([urlStrings isEqual:expectedURLStrings]);
+ NSArray* titles = [contents objectAtIndex:1];
+ EXPECT_TRUE([titles isKindOfClass:[NSArray class]]);
+ NSArray* expectedTitles = [NSArray arrayWithObjects:
+ @"Test 1",
+ @"Test 2",
+ @"Test 3", nil];
+ EXPECT_TRUE([titles isEqual:expectedTitles]);
+
+ NSString* str = [pasteboard_ stringForType:NSStringPboardType];
+ EXPECT_TRUE([str isEqual:
+ @"http://example.com/test1\n"
+ "http://example.com/test2\n"
+ "http://example.com/test3"]);
+
+ EXPECT_FALSE([pasteboard_ dataForType:NSURLPboardType]);
+}
+
+TEST_F(BookmarkTreeControllerTest, PasteSingleURL) {
+ [pasteboard_ declareTypes:[NSArray arrayWithObjects:
+ NSURLPboardType, @"public.url-name", nil]
+ owner:nil];
+ [[NSURL URLWithString:@"http://google.com"] writeToPasteboard:pasteboard_];
+ [pasteboard_ setString:@"Gooooogle" forType:@"public.url-name"];
+
+ SelectBar();
+ AddToBar(L"Test 1", "http://example.com/test1");
+ AddToBar(L"Test 2", "http://example.com/test2");
+ AddToBar(L"Test 3", "http://example.com/test3");
+
+ ASSERT_TRUE([treeController_ pasteFromPasteboard:pasteboard_]);
+ EXPECT_EQ(4, [[treeController_ outline] numberOfRows]);
+ EXPECT_EQ(3, [[treeController_ outline] selectedRow]);
+ NSArray* sel = [treeController_ selectedItems];
+ ASSERT_EQ(1U, [sel count]);
+ const BookmarkNode* node = [manager_ nodeFromItem:[sel objectAtIndex:0]];
+ ASSERT_TRUE(node);
+ EXPECT_EQ(GURL("http://google.com"), node->GetURL());
+ EXPECT_EQ(L"Gooooogle", node->GetTitle());
+}
+
+TEST_F(BookmarkTreeControllerTest, PasteMultipleURLs) {
+ [pasteboard_ declareTypes:[NSArray arrayWithObjects:
+ WebURLsWithTitlesPboardType,
+ NSURLPboardType, nil]
+ owner:nil];
+ NSMutableArray* urls = [NSArray arrayWithObjects:
+ @"http://google.com", @"http://chromium.org", nil];
+ NSMutableArray* titles = [NSArray arrayWithObjects:
+ @"Gooooogle", @"Chrooooomium", nil];
+ [pasteboard_ setPropertyList:[NSArray arrayWithObjects:urls, titles, nil]
+ forType:WebURLsWithTitlesPboardType];
+ [[NSURL URLWithString:@"http://example.com"] writeToPasteboard:pasteboard_];
+
+ SelectBar();
+ AddToBar(L"Test 1", "http://example.com/test1");
+ id test2 = AddToBar(L"Test 2", "http://example.com/test2");
+ AddToBar(L"Test 3", "http://example.com/test3");
+ [treeController_ setSelectedItems:[NSArray arrayWithObject:test2]];
+
+ ASSERT_TRUE([treeController_ pasteFromPasteboard:pasteboard_]);
+ EXPECT_EQ(5, [[treeController_ outline] numberOfRows]);
+ EXPECT_TRUE([[[treeController_ outline] selectedRowIndexes]
+ isEqual:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2, 2)]]);
+ NSArray* sel = [treeController_ selectedItems];
+ ASSERT_EQ(2U, [sel count]);
+
+ const BookmarkNode* node = [manager_ nodeFromItem:[sel objectAtIndex:0]];
+ ASSERT_TRUE(node);
+ EXPECT_EQ(GURL("http://google.com"), node->GetURL());
+ EXPECT_EQ(L"Gooooogle", node->GetTitle());
+ node = [manager_ nodeFromItem:[sel objectAtIndex:1]];
+ ASSERT_TRUE(node);
+ EXPECT_EQ(GURL("http://chromium.org"), node->GetURL());
+ EXPECT_EQ(L"Chrooooomium", node->GetTitle());
+}
+
+} // namespace

Powered by Google App Engine
This is Rietveld 408576698