diff options
author | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-18 17:59:10 +0000 |
---|---|---|
committer | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-18 17:59:10 +0000 |
commit | 52c71ed5a093463acb72598dc8b07a35fbb49842 (patch) | |
tree | 7e1705718bed27cdd1068dacb06176da3fb5b531 /chrome/browser/cocoa/bookmark_bar_view_unittest.mm | |
parent | 1308459ce571eccb2b344f35ca0e4bf750be9395 (diff) | |
download | chromium_src-52c71ed5a093463acb72598dc8b07a35fbb49842.zip chromium_src-52c71ed5a093463acb72598dc8b07a35fbb49842.tar.gz chromium_src-52c71ed5a093463acb72598dc8b07a35fbb49842.tar.bz2 |
Drag and drop of buttons/folders from bar to bar.
Does not include DnD to/from menus.
No animations of drop destination yet.
BUG=http://crbug.com/17608
TEST=Do some draggin and droppin.
Confirm click still works on the marks and folders.
Confirm "other bookmarks" canNOT be moved.
Confirm NTP / detached bar also works for DnD.
Review URL: http://codereview.chromium.org/395031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32341 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/bookmark_bar_view_unittest.mm')
-rw-r--r-- | chrome/browser/cocoa/bookmark_bar_view_unittest.mm | 70 |
1 files changed, 66 insertions, 4 deletions
diff --git a/chrome/browser/cocoa/bookmark_bar_view_unittest.mm b/chrome/browser/cocoa/bookmark_bar_view_unittest.mm index 000d7fa..4091168 100644 --- a/chrome/browser/cocoa/bookmark_bar_view_unittest.mm +++ b/chrome/browser/cocoa/bookmark_bar_view_unittest.mm @@ -4,23 +4,85 @@ #include "base/scoped_nsobject.h" #import "chrome/browser/cocoa/bookmark_bar_view.h" +#import "chrome/browser/cocoa/bookmark_button.h" #import "chrome/browser/cocoa/cocoa_test_helper.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" +// Fake DraggingInfo, fake BookmarkBarController, fake pasteboard... +@interface FakeBookmarkDraggingInfo : NSObject { + scoped_nsobject<NSData> data_; + BOOL pong_; +} +@end + +@implementation FakeBookmarkDraggingInfo + +- (id)init { + if ((self = [super init])) { + data_.reset([[NSData dataWithBytes:&self length:sizeof(self)] retain]); + } + return self; +} + +// So we can be both info and pasteboard. +- (id)draggingPasteboard { + return self; +} + +// So we can look local. +- (id)draggingSource { + return self; +} + +- (BOOL)containsURLData { + return NO; +} + +- (NSPoint)draggingLocation { + return NSMakePoint(10, 10); +} + +- (NSData*)dataForType:(NSString*)type { + if ([type isEqual:kBookmarkButtonDragType]) + return data_.get(); + return nil; +} + +// Fake a controller for callback ponging +- (BOOL)dragButton:(BookmarkButton*)button to:(NSPoint)point { + pong_ = YES; + return YES; +} + +// Confirm the pong. +- (BOOL)dragButtonToPong { + return pong_; +} + +@end + namespace { -class BookmarkBarViewTest : public PlatformTest { +class BookmarkBarViewTest : public CocoaTest { public: - CocoaTestHelper cocoa_helper_; scoped_nsobject<BookmarkBarView> view_; }; -// This class only needs to do one thing: prevent mouse down events from moving -// the parent window around. TEST_F(BookmarkBarViewTest, CanDragWindow) { view_.reset([[BookmarkBarView alloc] init]); EXPECT_FALSE([view_.get() mouseDownCanMoveWindow]); } +TEST_F(BookmarkBarViewTest, BookmarkButtonDragAndDrop) { + view_.reset([[BookmarkBarView alloc] init]); + scoped_nsobject<FakeBookmarkDraggingInfo> + info([[FakeBookmarkDraggingInfo alloc] init]); + + [view_ setController:info.get()]; + EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); + EXPECT_TRUE([view_ performDragOperation:(id)info.get()]); + EXPECT_TRUE([info dragButtonToPong]); +} + } // namespace |