OLD | NEW |
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/memory/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.h" | 8 #include "chrome/browser/bookmarks/bookmark_model.h" |
9 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 9 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
11 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" | 11 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" |
12 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h" | 12 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h" |
13 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" | 13 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" |
14 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h" | 14 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h" |
15 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" | 15 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 | 194 |
195 namespace { | 195 namespace { |
196 | 196 |
197 class BookmarkBarViewTest : public CocoaProfileTest { | 197 class BookmarkBarViewTest : public CocoaProfileTest { |
198 public: | 198 public: |
199 virtual void SetUp() { | 199 virtual void SetUp() { |
200 CocoaProfileTest::SetUp(); | 200 CocoaProfileTest::SetUp(); |
201 view_.reset([[BookmarkBarView alloc] init]); | 201 view_.reset([[BookmarkBarView alloc] init]); |
202 } | 202 } |
203 | 203 |
204 scoped_nsobject<BookmarkBarView> view_; | 204 base::scoped_nsobject<BookmarkBarView> view_; |
205 }; | 205 }; |
206 | 206 |
207 TEST_F(BookmarkBarViewTest, CanDragWindow) { | 207 TEST_F(BookmarkBarViewTest, CanDragWindow) { |
208 EXPECT_FALSE([view_ mouseDownCanMoveWindow]); | 208 EXPECT_FALSE([view_ mouseDownCanMoveWindow]); |
209 } | 209 } |
210 | 210 |
211 TEST_F(BookmarkBarViewTest, BookmarkButtonDragAndDrop) { | 211 TEST_F(BookmarkBarViewTest, BookmarkButtonDragAndDrop) { |
212 scoped_nsobject<FakeBookmarkDraggingInfo> | 212 base::scoped_nsobject<FakeBookmarkDraggingInfo> info( |
213 info([[FakeBookmarkDraggingInfo alloc] init]); | 213 [[FakeBookmarkDraggingInfo alloc] init]); |
214 [view_ setController:info.get()]; | 214 [view_ setController:info.get()]; |
215 [info reset]; | 215 [info reset]; |
216 | 216 |
217 BookmarkModel* bookmark_model = | 217 BookmarkModel* bookmark_model = |
218 BookmarkModelFactory::GetForProfile(profile()); | 218 BookmarkModelFactory::GetForProfile(profile()); |
219 const BookmarkNode* node = | 219 const BookmarkNode* node = |
220 bookmark_model->AddURL(bookmark_model->bookmark_bar_node(), | 220 bookmark_model->AddURL(bookmark_model->bookmark_bar_node(), |
221 0, | 221 0, |
222 ASCIIToUTF16("Test Bookmark"), | 222 ASCIIToUTF16("Test Bookmark"), |
223 GURL("http://www.exmaple.com")); | 223 GURL("http://www.exmaple.com")); |
224 | 224 |
225 scoped_nsobject<BookmarkButtonCell> button_cell( | 225 base::scoped_nsobject<BookmarkButtonCell> button_cell( |
226 [[BookmarkButtonCell buttonCellForNode:node | 226 [[BookmarkButtonCell buttonCellForNode:node |
227 text:nil | 227 text:nil |
228 image:nil | 228 image:nil |
229 menuController:nil] retain]); | 229 menuController:nil] retain]); |
230 scoped_nsobject<BookmarkButton> dragged_button([[BookmarkButton alloc] init]); | 230 base::scoped_nsobject<BookmarkButton> dragged_button( |
| 231 [[BookmarkButton alloc] init]); |
231 [dragged_button setCell:button_cell]; | 232 [dragged_button setCell:button_cell]; |
232 [info setDraggingSource:dragged_button.get()]; | 233 [info setDraggingSource:dragged_button.get()]; |
233 [info setDragDataType:kBookmarkButtonDragType]; | 234 [info setDragDataType:kBookmarkButtonDragType]; |
234 [info setButton:dragged_button.get()]; | 235 [info setButton:dragged_button.get()]; |
235 [info setBookmarkModel:bookmark_model]; | 236 [info setBookmarkModel:bookmark_model]; |
236 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); | 237 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); |
237 EXPECT_TRUE([view_ performDragOperation:(id)info.get()]); | 238 EXPECT_TRUE([view_ performDragOperation:(id)info.get()]); |
238 EXPECT_TRUE([info dragButtonToPong]); | 239 EXPECT_TRUE([info dragButtonToPong]); |
239 EXPECT_FALSE([info dragButtonToShouldCopy]); | 240 EXPECT_FALSE([info dragButtonToShouldCopy]); |
240 EXPECT_FALSE([info dragURLsPong]); | 241 EXPECT_FALSE([info dragURLsPong]); |
241 EXPECT_TRUE([info dragBookmarkDataPong]); | 242 EXPECT_TRUE([info dragBookmarkDataPong]); |
242 } | 243 } |
243 | 244 |
244 // When dragging bookmarks across profiles, we should always copy, never move. | 245 // When dragging bookmarks across profiles, we should always copy, never move. |
245 TEST_F(BookmarkBarViewTest, BookmarkButtonDragAndDropAcrossProfiles) { | 246 TEST_F(BookmarkBarViewTest, BookmarkButtonDragAndDropAcrossProfiles) { |
246 scoped_nsobject<FakeBookmarkDraggingInfo> | 247 base::scoped_nsobject<FakeBookmarkDraggingInfo> info( |
247 info([[FakeBookmarkDraggingInfo alloc] init]); | 248 [[FakeBookmarkDraggingInfo alloc] init]); |
248 [view_ setController:info.get()]; | 249 [view_ setController:info.get()]; |
249 [info reset]; | 250 [info reset]; |
250 | 251 |
251 // |other_profile| is owned by the |testing_profile_manager|. | 252 // |other_profile| is owned by the |testing_profile_manager|. |
252 TestingProfile* other_profile = | 253 TestingProfile* other_profile = |
253 testing_profile_manager()->CreateTestingProfile("other"); | 254 testing_profile_manager()->CreateTestingProfile("other"); |
254 other_profile->CreateBookmarkModel(true); | 255 other_profile->CreateBookmarkModel(true); |
255 | 256 |
256 BookmarkModel* bookmark_model = | 257 BookmarkModel* bookmark_model = |
257 BookmarkModelFactory::GetForProfile(profile()); | 258 BookmarkModelFactory::GetForProfile(profile()); |
258 ui_test_utils::WaitForBookmarkModelToLoad(bookmark_model); | 259 ui_test_utils::WaitForBookmarkModelToLoad(bookmark_model); |
259 | 260 |
260 const BookmarkNode* node = | 261 const BookmarkNode* node = |
261 bookmark_model->AddURL(bookmark_model->bookmark_bar_node(), | 262 bookmark_model->AddURL(bookmark_model->bookmark_bar_node(), |
262 0, | 263 0, |
263 ASCIIToUTF16("Test Bookmark"), | 264 ASCIIToUTF16("Test Bookmark"), |
264 GURL("http://www.exmaple.com")); | 265 GURL("http://www.exmaple.com")); |
265 | 266 |
266 scoped_nsobject<BookmarkButtonCell> button_cell( | 267 base::scoped_nsobject<BookmarkButtonCell> button_cell( |
267 [[BookmarkButtonCell buttonCellForNode:node | 268 [[BookmarkButtonCell buttonCellForNode:node |
268 text:nil | 269 text:nil |
269 image:nil | 270 image:nil |
270 menuController:nil] retain]); | 271 menuController:nil] retain]); |
271 scoped_nsobject<BookmarkButton> dragged_button([[BookmarkButton alloc] init]); | 272 base::scoped_nsobject<BookmarkButton> dragged_button( |
| 273 [[BookmarkButton alloc] init]); |
272 [dragged_button setCell:button_cell]; | 274 [dragged_button setCell:button_cell]; |
273 [info setDraggingSource:dragged_button.get()]; | 275 [info setDraggingSource:dragged_button.get()]; |
274 [info setDragDataType:kBookmarkButtonDragType]; | 276 [info setDragDataType:kBookmarkButtonDragType]; |
275 [info setButton:dragged_button.get()]; | 277 [info setButton:dragged_button.get()]; |
276 [info setBookmarkModel:BookmarkModelFactory::GetForProfile(other_profile)]; | 278 [info setBookmarkModel:BookmarkModelFactory::GetForProfile(other_profile)]; |
277 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); | 279 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); |
278 EXPECT_TRUE([view_ performDragOperation:(id)info.get()]); | 280 EXPECT_TRUE([view_ performDragOperation:(id)info.get()]); |
279 EXPECT_TRUE([info dragButtonToPong]); | 281 EXPECT_TRUE([info dragButtonToPong]); |
280 EXPECT_TRUE([info dragButtonToShouldCopy]); | 282 EXPECT_TRUE([info dragButtonToShouldCopy]); |
281 EXPECT_FALSE([info dragURLsPong]); | 283 EXPECT_FALSE([info dragURLsPong]); |
282 EXPECT_TRUE([info dragBookmarkDataPong]); | 284 EXPECT_TRUE([info dragBookmarkDataPong]); |
283 } | 285 } |
284 | 286 |
285 TEST_F(BookmarkBarViewTest, URLDragAndDrop) { | 287 TEST_F(BookmarkBarViewTest, URLDragAndDrop) { |
286 scoped_nsobject<FakeBookmarkDraggingInfo> | 288 base::scoped_nsobject<FakeBookmarkDraggingInfo> info( |
287 info([[FakeBookmarkDraggingInfo alloc] init]); | 289 [[FakeBookmarkDraggingInfo alloc] init]); |
288 [view_ setController:info.get()]; | 290 [view_ setController:info.get()]; |
289 [info reset]; | 291 [info reset]; |
290 | 292 |
291 NSArray* dragTypes = [URLDropTargetHandler handledDragTypes]; | 293 NSArray* dragTypes = [URLDropTargetHandler handledDragTypes]; |
292 for (NSString* type in dragTypes) { | 294 for (NSString* type in dragTypes) { |
293 [info setDragDataType:type]; | 295 [info setDragDataType:type]; |
294 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationCopy); | 296 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationCopy); |
295 EXPECT_TRUE([view_ performDragOperation:(id)info.get()]); | 297 EXPECT_TRUE([view_ performDragOperation:(id)info.get()]); |
296 EXPECT_FALSE([info dragButtonToPong]); | 298 EXPECT_FALSE([info dragButtonToPong]); |
297 EXPECT_TRUE([info dragURLsPong]); | 299 EXPECT_TRUE([info dragURLsPong]); |
298 EXPECT_TRUE([info dragBookmarkDataPong]); | 300 EXPECT_TRUE([info dragBookmarkDataPong]); |
299 [info reset]; | 301 [info reset]; |
300 } | 302 } |
301 } | 303 } |
302 | 304 |
303 TEST_F(BookmarkBarViewTest, BookmarkButtonDropIndicator) { | 305 TEST_F(BookmarkBarViewTest, BookmarkButtonDropIndicator) { |
304 scoped_nsobject<FakeBookmarkDraggingInfo> | 306 base::scoped_nsobject<FakeBookmarkDraggingInfo> info( |
305 info([[FakeBookmarkDraggingInfo alloc] init]); | 307 [[FakeBookmarkDraggingInfo alloc] init]); |
306 [view_ setController:info.get()]; | 308 [view_ setController:info.get()]; |
307 [info reset]; | 309 [info reset]; |
308 | 310 |
309 scoped_nsobject<BookmarkButton> dragged_button([[BookmarkButton alloc] init]); | 311 base::scoped_nsobject<BookmarkButton> dragged_button( |
| 312 [[BookmarkButton alloc] init]); |
310 [info setDraggingSource:dragged_button.get()]; | 313 [info setDraggingSource:dragged_button.get()]; |
311 [info setDragDataType:kBookmarkButtonDragType]; | 314 [info setDragDataType:kBookmarkButtonDragType]; |
312 EXPECT_FALSE([info draggingEnteredCalled]); | 315 EXPECT_FALSE([info draggingEnteredCalled]); |
313 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); | 316 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); |
314 EXPECT_TRUE([info draggingEnteredCalled]); // Ensure controller pinged. | 317 EXPECT_TRUE([info draggingEnteredCalled]); // Ensure controller pinged. |
315 EXPECT_TRUE([view_ dropIndicatorShown]); | 318 EXPECT_TRUE([view_ dropIndicatorShown]); |
316 EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos); | 319 EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos); |
317 | 320 |
318 [info setDropIndicatorShown:NO]; | 321 [info setDropIndicatorShown:NO]; |
319 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); | 322 EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove); |
320 EXPECT_FALSE([view_ dropIndicatorShown]); | 323 EXPECT_FALSE([view_ dropIndicatorShown]); |
321 } | 324 } |
322 | 325 |
323 } // namespace | 326 } // namespace |
OLD | NEW |