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

Side by Side Diff: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm

Issue 8141003: [Mac] Restore the old bookmark menus now that the experiment is over. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "base/memory/scoped_nsobject.h"
6 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
7 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h"
8 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
9 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h"
10 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
11 #import "chrome/browser/ui/cocoa/url_drop_target.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "testing/platform_test.h"
14 #import "third_party/mozilla/NSPasteboard+Utils.h"
15 #import "third_party/ocmock/OCMock/OCMock.h"
16 #import "third_party/ocmock/ocmock_extensions.h"
17
18 // Allows us to verify BookmarkBarFolderView.
19 @interface BookmarkBarFolderView(TestingAPI)
20
21 @property(readonly, nonatomic) BOOL dropIndicatorShown;
22 @property(readonly, nonatomic) CGFloat dropIndicatorPosition;
23
24 -(void)setController:(id<BookmarkButtonControllerProtocol>)controller;
25
26 @end
27
28 @implementation BookmarkBarFolderView(TestingAPI)
29
30 -(void)setController:(id<BookmarkButtonControllerProtocol>)controller {
31 controller_ = controller;
32 }
33
34 -(BOOL)dropIndicatorShown {
35 return dropIndicatorShown_;
36 }
37
38 -(CGFloat)dropIndicatorPosition {
39 return dropIndicatorPosition_;
40 }
41
42 @end
43
44 namespace {
45
46 // Some values used for mocks and fakes.
47 const CGFloat kFakeIndicatorPos = 7.0;
48 const NSPoint kPoint = {10, 10};
49
50 class BookmarkBarFolderViewTest : public CocoaTest {
51 public:
52 virtual void SetUp() {
53 CocoaTest::SetUp();
54 view_.reset([[BookmarkBarFolderView alloc] init]);
55 mock_controller_.reset([GetMockController(YES) retain]);
56 [view_ awakeFromNib];
57 [view_ setController:mock_controller_];
58 }
59
60 virtual void TearDown() {
61 [mock_controller_ verify];
62 CocoaTest::TearDown();
63 }
64
65 id GetFakePasteboardForType(NSString* dataType) {
66 id pasteboard = [OCMockObject mockForClass:[NSPasteboard class]];
67 [[[pasteboard stub] andReturn:[NSData data]] dataForType:dataType];
68 [[[pasteboard stub] andReturn:nil] dataForType:OCMOCK_ANY];
69 [[[pasteboard stub] andReturnBool:YES] containsURLData];
70 [[pasteboard stub] getURLs:[OCMArg setTo:nil]
71 andTitles:[OCMArg setTo:nil]
72 convertingFilenames:YES];
73 return pasteboard;
74 }
75
76 id GetFakeDragInfoForType(NSString* dataType) {
77 // Need something non-nil to return as the draggingSource.
78 id source = [OCMockObject mockForClass:[NSObject class]];
79 id drag_info = [OCMockObject mockForProtocol:@protocol(NSDraggingInfo)];
80 id pasteboard = GetFakePasteboardForType(dataType);
81 [[[drag_info stub] andReturn:pasteboard] draggingPasteboard];
82 [[[drag_info stub] andReturnNSPoint:kPoint] draggingLocation];
83 [[[drag_info stub] andReturn:source] draggingSource];
84 [[[drag_info stub]
85 andReturnUnsignedInteger:NSDragOperationCopy | NSDragOperationMove]
86 draggingSourceOperationMask];
87 return drag_info;
88 }
89
90 id GetMockController(BOOL show_indicator) {
91 id mock_controller
92 = [OCMockObject mockForClass:[BookmarkBarFolderController class]];
93 [[[mock_controller stub] andReturnBool:YES]
94 draggingAllowed:OCMOCK_ANY];
95 [[[mock_controller stub] andReturnBool:show_indicator]
96 shouldShowIndicatorShownForPoint:kPoint];
97 [[[mock_controller stub] andReturnFloat:kFakeIndicatorPos]
98 indicatorPosForDragToPoint:kPoint];
99 return mock_controller;
100 }
101
102 scoped_nsobject<id> mock_controller_;
103 scoped_nsobject<BookmarkBarFolderView> view_;
104 };
105
106 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDrop) {
107 id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType);
108 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
109 draggingEntered:drag_info];
110 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info];
111 [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY
112 to:kPoint
113 copy:NO];
114
115 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
116 EXPECT_TRUE([view_ performDragOperation:drag_info]);
117 }
118
119 TEST_F(BookmarkBarFolderViewTest, URLDragAndDrop) {
120 NSArray* dragTypes = [URLDropTargetHandler handledDragTypes];
121 for (NSString* type in dragTypes) {
122 id drag_info = GetFakeDragInfoForType(type);
123 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
124 draggingEntered:drag_info];
125 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info];
126 [[[mock_controller_ expect] andReturnBool:YES] addURLs:OCMOCK_ANY
127 withTitles:OCMOCK_ANY
128 at:kPoint];
129 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
130 EXPECT_TRUE([view_ performDragOperation:drag_info]);
131 [mock_controller_ verify];
132 }
133 }
134
135 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDropIndicator) {
136 id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType);
137 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
138 draggingEntered:drag_info];
139 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
140 [mock_controller_ verify];
141 EXPECT_TRUE([view_ dropIndicatorShown]);
142 EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos);
143 mock_controller_.reset([GetMockController(NO) retain]);
144 [view_ setController:mock_controller_];
145 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
146 draggingEntered:drag_info];
147 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
148 EXPECT_FALSE([view_ dropIndicatorShown]);
149 }
150
151 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698