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

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

Issue 1855783002: mac: More pasteboard fixes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@temp23_dnd
Patch Set: Created 4 years, 8 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/mac/scoped_nsobject.h" 5 #include "base/mac/scoped_nsobject.h"
6 #include "base/strings/string16.h" 6 #include "base/strings/string16.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 8 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" 10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
11 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h" 11 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h"
12 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" 12 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
13 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" 13 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h"
14 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 14 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
15 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" 15 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
16 #import "chrome/browser/ui/cocoa/url_drop_target.h" 16 #import "chrome/browser/ui/cocoa/url_drop_target.h"
17 #include "chrome/test/base/testing_profile.h" 17 #include "chrome/test/base/testing_profile.h"
18 #include "components/bookmarks/browser/bookmark_model.h" 18 #include "components/bookmarks/browser/bookmark_model.h"
19 #include "components/bookmarks/test/bookmark_test_helpers.h" 19 #include "components/bookmarks/test/bookmark_test_helpers.h"
20 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
21 #include "testing/platform_test.h" 21 #include "testing/platform_test.h"
22 #import "third_party/mozilla/NSPasteboard+Utils.h" 22 #import "third_party/mozilla/NSPasteboard+Utils.h"
23 #import "third_party/ocmock/OCMock/OCMock.h" 23 #import "third_party/ocmock/OCMock/OCMock.h"
24 #import "third_party/ocmock/ocmock_extensions.h" 24 #import "third_party/ocmock/ocmock_extensions.h"
25 #include "ui/base/clipboard/clipboard_util_mac.h"
25 26
26 using bookmarks::BookmarkModel; 27 using bookmarks::BookmarkModel;
27 using bookmarks::BookmarkNode; 28 using bookmarks::BookmarkNode;
28 29
29 // Allows us to verify BookmarkBarFolderView. 30 // Allows us to verify BookmarkBarFolderView.
30 @interface BookmarkBarFolderView(TestingAPI) 31 @interface BookmarkBarFolderView(TestingAPI)
31 32
32 @property(readonly, nonatomic) BOOL dropIndicatorShown; 33 @property(readonly, nonatomic) BOOL dropIndicatorShown;
33 @property(readonly, nonatomic) CGFloat dropIndicatorPosition; 34 @property(readonly, nonatomic) CGFloat dropIndicatorPosition;
34 35
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 [view_ setController:mock_controller_]; 74 [view_ setController:mock_controller_];
74 } 75 }
75 76
76 void TearDown() override { 77 void TearDown() override {
77 [mock_controller_ verify]; 78 [mock_controller_ verify];
78 CocoaProfileTest::TearDown(); 79 CocoaProfileTest::TearDown();
79 } 80 }
80 81
81 id GetFakePasteboardForType(NSString* dataType) { 82 id GetFakePasteboardForType(NSString* dataType) {
82 id pasteboard = [OCMockObject mockForClass:[NSPasteboard class]]; 83 id pasteboard = [OCMockObject mockForClass:[NSPasteboard class]];
83 if ([dataType isEqualToString:kBookmarkButtonDragType]) { 84 if ([dataType isEqualToString:ui::ClipboardUtil::UTIForPasteboardType(
85 kBookmarkButtonDragType)]) {
84 BookmarkButton* button = mock_button_.get(); 86 BookmarkButton* button = mock_button_.get();
85 [[[pasteboard stub] 87 [[[pasteboard stub]
86 andReturn:[NSData dataWithBytes:&button length:sizeof(button)]] 88 andReturn:[NSData dataWithBytes:&button length:sizeof(button)]]
87 dataForType:dataType]; 89 dataForType:dataType];
88 } else { 90 } else {
89 [[[pasteboard stub] andReturn:[NSData data]] dataForType:dataType]; 91 [[[pasteboard stub] andReturn:[NSData data]] dataForType:dataType];
90 } 92 }
91 [[[pasteboard stub] andReturn:nil] dataForType:OCMOCK_ANY]; 93 [[[pasteboard stub] andReturn:nil] dataForType:OCMOCK_ANY];
92 [[[pasteboard stub] andReturnBool:YES] containsURLData]; 94 [[[pasteboard stub] andReturnBool:YES] containsURLData];
93 [[pasteboard stub] getURLs:[OCMArg setTo:nil] 95 [[pasteboard stub] getURLs:[OCMArg setTo:nil]
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 [[[mock_button stub] andReturnValue:OCMOCK_VALUE(node)] bookmarkNode]; 138 [[[mock_button stub] andReturnValue:OCMOCK_VALUE(node)] bookmarkNode];
137 return [mock_button retain]; 139 return [mock_button retain];
138 } 140 }
139 141
140 base::scoped_nsobject<id> mock_controller_; 142 base::scoped_nsobject<id> mock_controller_;
141 base::scoped_nsobject<BookmarkBarFolderView> view_; 143 base::scoped_nsobject<BookmarkBarFolderView> view_;
142 base::scoped_nsobject<id> mock_button_; 144 base::scoped_nsobject<id> mock_button_;
143 }; 145 };
144 146
145 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDrop) { 147 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDrop) {
146 id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType); 148 id drag_info = GetFakeDragInfoForType(
149 ui::ClipboardUtil::UTIForPasteboardType(kBookmarkButtonDragType));
147 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] 150 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
148 draggingEntered:drag_info]; 151 draggingEntered:drag_info];
149 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info]; 152 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info];
150 [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY 153 [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY
151 to:kPoint 154 to:kPoint
152 copy:NO]; 155 copy:NO];
153 156
154 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); 157 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
155 EXPECT_TRUE([view_ performDragOperation:drag_info]); 158 EXPECT_TRUE([view_ performDragOperation:drag_info]);
156 } 159 }
157 160
158 // When dragging bookmarks across profiles, we should always copy, never move. 161 // When dragging bookmarks across profiles, we should always copy, never move.
159 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDropAcrossProfiles) { 162 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDropAcrossProfiles) {
160 // |other_profile| is owned by the |testing_profile_manager|. 163 // |other_profile| is owned by the |testing_profile_manager|.
161 TestingProfile* other_profile = 164 TestingProfile* other_profile =
162 testing_profile_manager()->CreateTestingProfile("other"); 165 testing_profile_manager()->CreateTestingProfile("other");
163 other_profile->CreateBookmarkModel(true); 166 other_profile->CreateBookmarkModel(true);
164 bookmarks::test::WaitForBookmarkModelToLoad( 167 bookmarks::test::WaitForBookmarkModelToLoad(
165 BookmarkModelFactory::GetForProfile(other_profile)); 168 BookmarkModelFactory::GetForProfile(other_profile));
166 169
167 mock_controller_.reset(GetMockController( 170 mock_controller_.reset(GetMockController(
168 YES, BookmarkModelFactory::GetForProfile(other_profile))); 171 YES, BookmarkModelFactory::GetForProfile(other_profile)));
169 [view_ setController:mock_controller_]; 172 [view_ setController:mock_controller_];
170 173
171 id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType); 174 id drag_info = GetFakeDragInfoForType(
175 ui::ClipboardUtil::UTIForPasteboardType(kBookmarkButtonDragType));
172 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] 176 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
173 draggingEntered:drag_info]; 177 draggingEntered:drag_info];
174 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info]; 178 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info];
175 [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY 179 [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY
176 to:kPoint 180 to:kPoint
177 copy:YES]; 181 copy:YES];
178 182
179 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); 183 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
180 EXPECT_TRUE([view_ performDragOperation:drag_info]); 184 EXPECT_TRUE([view_ performDragOperation:drag_info]);
181 } 185 }
182 186
183 TEST_F(BookmarkBarFolderViewTest, URLDragAndDrop) { 187 TEST_F(BookmarkBarFolderViewTest, URLDragAndDrop) {
184 NSArray* dragTypes = [URLDropTargetHandler handledDragTypes]; 188 NSArray* dragTypes = [URLDropTargetHandler handledDragTypes];
185 for (NSString* type in dragTypes) { 189 for (NSString* type in dragTypes) {
186 id drag_info = GetFakeDragInfoForType(type); 190 id drag_info = GetFakeDragInfoForType(type);
187 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] 191 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
188 draggingEntered:drag_info]; 192 draggingEntered:drag_info];
189 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info]; 193 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info];
190 [[[mock_controller_ expect] andReturnBool:YES] addURLs:OCMOCK_ANY 194 [[[mock_controller_ expect] andReturnBool:YES] addURLs:OCMOCK_ANY
191 withTitles:OCMOCK_ANY 195 withTitles:OCMOCK_ANY
192 at:kPoint]; 196 at:kPoint];
193 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); 197 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
194 EXPECT_TRUE([view_ performDragOperation:drag_info]); 198 EXPECT_TRUE([view_ performDragOperation:drag_info]);
195 [mock_controller_ verify]; 199 [mock_controller_ verify];
196 } 200 }
197 } 201 }
198 202
199 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDropIndicator) { 203 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDropIndicator) {
200 id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType); 204 id drag_info = GetFakeDragInfoForType(
205 ui::ClipboardUtil::UTIForPasteboardType(kBookmarkButtonDragType));
201 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] 206 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
202 draggingEntered:drag_info]; 207 draggingEntered:drag_info];
203 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); 208 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
204 [mock_controller_ verify]; 209 [mock_controller_ verify];
205 EXPECT_TRUE([view_ dropIndicatorShown]); 210 EXPECT_TRUE([view_ dropIndicatorShown]);
206 EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos); 211 EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos);
207 mock_controller_.reset(GetMockController( 212 mock_controller_.reset(GetMockController(
208 NO, BookmarkModelFactory::GetForProfile(profile()))); 213 NO, BookmarkModelFactory::GetForProfile(profile())));
209 [view_ setController:mock_controller_]; 214 [view_ setController:mock_controller_];
210 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] 215 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
211 draggingEntered:drag_info]; 216 draggingEntered:drag_info];
212 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); 217 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
213 EXPECT_FALSE([view_ dropIndicatorShown]); 218 EXPECT_FALSE([view_ dropIndicatorShown]);
214 } 219 }
215 220
216 } // namespace 221 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698