| 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 |