| OLD | NEW | 
|---|
| (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 | 
| OLD | NEW | 
|---|