| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/memory/scoped_nsobject.h" |
| 6 #include "base/string16.h" |
| 7 #include "base/utf_string_conversions.h" |
| 6 #include "chrome/browser/bookmarks/bookmark_model.h" | 8 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 7 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
| 8 #include "chrome/browser/ui/browser_window.h" | |
| 9 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" | 10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" |
| 10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h" | 11 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h" |
| 11 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" | 12 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" |
| 12 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" | 13 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" |
| 13 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" | 14 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
| 14 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" | 15 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
| 15 #import "chrome/browser/ui/cocoa/url_drop_target.h" | 16 #import "chrome/browser/ui/cocoa/url_drop_target.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 17 #include "testing/platform_test.h" | 18 #include "testing/platform_test.h" |
| 18 #import "third_party/mozilla/NSPasteboard+Utils.h" | 19 #import "third_party/mozilla/NSPasteboard+Utils.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 const CGFloat kFakeIndicatorPos = 7.0; | 52 const CGFloat kFakeIndicatorPos = 7.0; |
| 52 const NSPoint kPoint = {10, 10}; | 53 const NSPoint kPoint = {10, 10}; |
| 53 | 54 |
| 54 class BookmarkBarFolderViewTest : public CocoaProfileTest { | 55 class BookmarkBarFolderViewTest : public CocoaProfileTest { |
| 55 public: | 56 public: |
| 56 virtual void SetUp() { | 57 virtual void SetUp() { |
| 57 CocoaProfileTest::SetUp(); | 58 CocoaProfileTest::SetUp(); |
| 58 | 59 |
| 59 view_.reset([[BookmarkBarFolderView alloc] init]); | 60 view_.reset([[BookmarkBarFolderView alloc] init]); |
| 60 | 61 |
| 61 // The created window will be destroyed in |CocoaProfileTest::TearDown()|. | |
| 62 window_ = CreateBrowserWindow()->GetNativeHandle(); | |
| 63 mock_controller_.reset(GetMockController(YES, | 62 mock_controller_.reset(GetMockController(YES, |
| 64 profile()->GetBookmarkModel())); | 63 profile()->GetBookmarkModel())); |
| 65 | 64 |
| 66 mock_button_.reset(GetMockButton(mock_controller_.get())); | 65 mock_button_.reset(GetMockButton(mock_controller_.get())); |
| 67 [view_ awakeFromNib]; | 66 [view_ awakeFromNib]; |
| 68 [view_ setController:mock_controller_]; | 67 [view_ setController:mock_controller_]; |
| 69 } | 68 } |
| 70 | 69 |
| 71 virtual void TearDown() { | 70 virtual void TearDown() { |
| 72 [mock_controller_ verify]; | 71 [mock_controller_ verify]; |
| 73 | |
| 74 // Order is important here: We need to release the mock objects *prior* to | |
| 75 // calling |CocoaProfileTest::TearDown()|. This is because the | |
| 76 // |mock_controller_| retains |window_|; and if any windows remain allocated | |
| 77 // when |CocoaProfileTest::TearDown()| is called, this triggers an assertion | |
| 78 // in |ui_cocoa_test_helper.mm|. | |
| 79 mock_controller_.reset(); | |
| 80 mock_button_.reset(); | |
| 81 CocoaProfileTest::TearDown(); | 72 CocoaProfileTest::TearDown(); |
| 82 } | 73 } |
| 83 | 74 |
| 84 id GetFakePasteboardForType(NSString* dataType) { | 75 id GetFakePasteboardForType(NSString* dataType) { |
| 85 id pasteboard = [OCMockObject mockForClass:[NSPasteboard class]]; | 76 id pasteboard = [OCMockObject mockForClass:[NSPasteboard class]]; |
| 86 if ([dataType isEqualToString:kBookmarkButtonDragType]) { | 77 if ([dataType isEqualToString:kBookmarkButtonDragType]) { |
| 87 BookmarkButton* button = mock_button_.get(); | 78 BookmarkButton* button = mock_button_.get(); |
| 88 [[[pasteboard stub] | 79 [[[pasteboard stub] |
| 89 andReturn:[NSData dataWithBytes:&button length:sizeof(button)]] | 80 andReturn:[NSData dataWithBytes:&button length:sizeof(button)]] |
| 90 dataForType:dataType]; | 81 dataForType:dataType]; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 115 | 106 |
| 116 id GetMockController(BOOL show_indicator, BookmarkModel* model) { | 107 id GetMockController(BOOL show_indicator, BookmarkModel* model) { |
| 117 id mock_controller = | 108 id mock_controller = |
| 118 [OCMockObject mockForClass:[BookmarkBarFolderController class]]; | 109 [OCMockObject mockForClass:[BookmarkBarFolderController class]]; |
| 119 [[[mock_controller stub] andReturnBool:YES] | 110 [[[mock_controller stub] andReturnBool:YES] |
| 120 draggingAllowed:OCMOCK_ANY]; | 111 draggingAllowed:OCMOCK_ANY]; |
| 121 [[[mock_controller stub] andReturnBool:show_indicator] | 112 [[[mock_controller stub] andReturnBool:show_indicator] |
| 122 shouldShowIndicatorShownForPoint:kPoint]; | 113 shouldShowIndicatorShownForPoint:kPoint]; |
| 123 [[[mock_controller stub] andReturnFloat:kFakeIndicatorPos] | 114 [[[mock_controller stub] andReturnFloat:kFakeIndicatorPos] |
| 124 indicatorPosForDragToPoint:kPoint]; | 115 indicatorPosForDragToPoint:kPoint]; |
| 125 [[[mock_controller stub] andReturn:window_] browserWindow]; | |
| 126 [[[mock_controller stub] andReturnValue:OCMOCK_VALUE(model)] bookmarkModel]; | 116 [[[mock_controller stub] andReturnValue:OCMOCK_VALUE(model)] bookmarkModel]; |
| 127 return [mock_controller retain]; | 117 return [mock_controller retain]; |
| 128 } | 118 } |
| 129 | 119 |
| 130 id GetMockButton(id mock_controller) { | 120 id GetMockButton(id mock_controller) { |
| 121 BookmarkModel* bookmark_model = profile()->GetBookmarkModel(); |
| 122 const BookmarkNode* node = |
| 123 bookmark_model->AddURL(bookmark_model->bookmark_bar_node(), |
| 124 0, |
| 125 ASCIIToUTF16("Test Bookmark"), |
| 126 GURL("http://www.exmaple.com")); |
| 127 |
| 131 id mock_button = [OCMockObject mockForClass:[BookmarkButton class]]; | 128 id mock_button = [OCMockObject mockForClass:[BookmarkButton class]]; |
| 132 [[[mock_button stub] andReturn:mock_controller] delegate]; | 129 [[[mock_button stub] andReturnValue:OCMOCK_VALUE(node)] bookmarkNode]; |
| 133 return [mock_button retain]; | 130 return [mock_button retain]; |
| 134 } | 131 } |
| 135 | 132 |
| 136 scoped_nsobject<id> mock_controller_; | 133 scoped_nsobject<id> mock_controller_; |
| 137 scoped_nsobject<BookmarkBarFolderView> view_; | 134 scoped_nsobject<BookmarkBarFolderView> view_; |
| 138 NSWindow* window_; // WEAK, owned by CocoaProfileTest | |
| 139 scoped_nsobject<id> mock_button_; | 135 scoped_nsobject<id> mock_button_; |
| 140 }; | 136 }; |
| 141 | 137 |
| 142 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDrop) { | 138 TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDrop) { |
| 143 id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType); | 139 id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType); |
| 144 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] | 140 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] |
| 145 draggingEntered:drag_info]; | 141 draggingEntered:drag_info]; |
| 146 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info]; | 142 [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info]; |
| 147 [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY | 143 [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY |
| 148 to:kPoint | 144 to:kPoint |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos); | 198 EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos); |
| 203 mock_controller_.reset(GetMockController(NO, profile()->GetBookmarkModel())); | 199 mock_controller_.reset(GetMockController(NO, profile()->GetBookmarkModel())); |
| 204 [view_ setController:mock_controller_]; | 200 [view_ setController:mock_controller_]; |
| 205 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] | 201 [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] |
| 206 draggingEntered:drag_info]; | 202 draggingEntered:drag_info]; |
| 207 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); | 203 EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); |
| 208 EXPECT_FALSE([view_ dropIndicatorShown]); | 204 EXPECT_FALSE([view_ dropIndicatorShown]); |
| 209 } | 205 } |
| 210 | 206 |
| 211 } // namespace | 207 } // namespace |
| OLD | NEW |