summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/bookmark_bar_view_unittest.mm
diff options
context:
space:
mode:
authorjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-18 17:59:10 +0000
committerjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-18 17:59:10 +0000
commit52c71ed5a093463acb72598dc8b07a35fbb49842 (patch)
tree7e1705718bed27cdd1068dacb06176da3fb5b531 /chrome/browser/cocoa/bookmark_bar_view_unittest.mm
parent1308459ce571eccb2b344f35ca0e4bf750be9395 (diff)
downloadchromium_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.mm70
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