diff options
Diffstat (limited to 'chrome/browser/cocoa/autocomplete_text_field_unittest.mm')
-rw-r--r-- | chrome/browser/cocoa/autocomplete_text_field_unittest.mm | 96 |
1 files changed, 63 insertions, 33 deletions
diff --git a/chrome/browser/cocoa/autocomplete_text_field_unittest.mm b/chrome/browser/cocoa/autocomplete_text_field_unittest.mm index d695f86..1d0ae49 100644 --- a/chrome/browser/cocoa/autocomplete_text_field_unittest.mm +++ b/chrome/browser/cocoa/autocomplete_text_field_unittest.mm @@ -4,6 +4,7 @@ #import <Cocoa/Cocoa.h> +#include "app/resource_bundle.h" #import "base/cocoa_protocols_mac.h" #include "base/scoped_nsobject.h" #import "chrome/browser/cocoa/autocomplete_text_field.h" @@ -11,6 +12,7 @@ #import "chrome/browser/cocoa/autocomplete_text_field_editor.h" #import "chrome/browser/cocoa/autocomplete_text_field_unittest_helper.h" #import "chrome/browser/cocoa/cocoa_test_helper.h" +#include "grit/theme_resources.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" @@ -20,18 +22,34 @@ using ::testing::Return; using ::testing::StrictMock; namespace { -class MockSecurityImageView : public LocationBarViewMac::SecurityImageView { +class MockLocationIconView : public LocationBarViewMac::LocationIconView { public: - MockSecurityImageView(LocationBarViewMac* owner, - Profile* profile, - ToolbarModel* model) - : LocationBarViewMac::SecurityImageView(owner, profile, model) {} + MockLocationIconView() + : LocationBarViewMac::LocationIconView(NULL), + is_draggable_(false), + mouse_was_pressed_(false) {} + + // |LocationBarViewMac::LocationIconView| dragging support needs + // more setup than this test provides. + bool IsDraggable() { + return is_draggable_; + } + virtual NSPasteboard* GetDragPasteboard() { + return [NSPasteboard pasteboardWithUniqueName]; + } + void SetDraggable(bool is_draggable) { + is_draggable_ = is_draggable; + } // We can't use gmock's MOCK_METHOD macro, because it doesn't like the // NSRect argument to OnMousePressed. virtual void OnMousePressed(NSRect bounds) { mouse_was_pressed_ = true; } + bool MouseWasPressed() { return mouse_was_pressed_; } + + private: + bool is_draggable_; bool mouse_was_pressed_; }; @@ -582,32 +600,35 @@ TEST_F(AutocompleteTextFieldTest, TripleClickSelectsAll) { } // Clicking the security icon should call its OnMousePressed. -TEST_F(AutocompleteTextFieldObserverTest, SecurityIconMouseDown) { +TEST_F(AutocompleteTextFieldTest, LocationIconMouseDown) { AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; - MockSecurityImageView security_image_view(NULL, NULL, NULL); - [cell setSecurityImageView:&security_image_view]; - security_image_view.SetImageShown( - LocationBarViewMac::SecurityImageView::LOCK); - security_image_view.SetVisible(true); + MockLocationIconView location_icon_view; + [cell setLocationIconView:&location_icon_view]; + location_icon_view.SetImage( + ResourceBundle::GetSharedInstance().GetNSImageNamed( + IDR_OMNIBOX_HTTPS_VALID)); + location_icon_view.SetVisible(true); - NSRect iconFrame([cell securityImageFrameForFrame:[field_ bounds]]); + NSRect iconFrame([cell locationIconFrameForFrame:[field_ bounds]]); NSPoint location(NSMakePoint(NSMidX(iconFrame), NSMidY(iconFrame))); - NSEvent* event(Event(field_, location, NSLeftMouseDown, 1)); + NSEvent* downEvent(Event(field_, location, NSLeftMouseDown, 1)); + NSEvent* upEvent(Event(field_, location, NSLeftMouseUp, 1)); - [field_ mouseDown:event]; - EXPECT_TRUE(security_image_view.mouse_was_pressed_); + // Since location icon can be dragged, the mouse-press is sent on + // mouse-up. + [NSApp postEvent:upEvent atStart:YES]; + [field_ mouseDown:downEvent]; + EXPECT_TRUE(location_icon_view.MouseWasPressed()); + + // TODO(shess): Test that mouse drags are initiated if the next + // event is a drag, or if the mouse-up takes too long to arrive. } // Clicking a Page Action icon should call its OnMousePressed. -TEST_F(AutocompleteTextFieldObserverTest, PageActionMouseDown) { +TEST_F(AutocompleteTextFieldTest, PageActionMouseDown) { AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; - MockSecurityImageView security_image_view(NULL, NULL, NULL); - security_image_view.SetImageShown( - LocationBarViewMac::SecurityImageView::LOCK); - [cell setSecurityImageView:&security_image_view]; - MockPageActionImageView page_action_view; NSImage* image = [NSImage imageNamed:@"NSApplicationIcon"]; page_action_view.SetImage(image); @@ -620,8 +641,7 @@ TEST_F(AutocompleteTextFieldObserverTest, PageActionMouseDown) { list.Add(&page_action_view2); [cell setPageActionViewList:&list]; - // One page action, no security lock. - security_image_view.SetVisible(false); + // One page action. page_action_view.SetVisible(true); page_action_view2.SetVisible(false); NSRect iconFrame([cell pageActionFrameForIndex:0 inFrame:[field_ bounds]]); @@ -631,7 +651,7 @@ TEST_F(AutocompleteTextFieldObserverTest, PageActionMouseDown) { [field_ mouseDown:event]; EXPECT_TRUE(page_action_view.MouseWasPressed()); - // Two page actions, no security lock. + // Two page actions, no lock. page_action_view2.SetVisible(true); iconFrame = [cell pageActionFrameForIndex:0 inFrame:[field_ bounds]]; location = NSMakePoint(NSMidX(iconFrame), NSMidY(iconFrame)); @@ -647,8 +667,7 @@ TEST_F(AutocompleteTextFieldObserverTest, PageActionMouseDown) { [field_ mouseDown:event]; EXPECT_TRUE(page_action_view.MouseWasPressed()); - // Two page actions plus security lock. - security_image_view.SetVisible(true); + // Two page actions. iconFrame = [cell pageActionFrameForIndex:0 inFrame:[field_ bounds]]; location = NSMakePoint(NSMidX(iconFrame), NSMidY(iconFrame)); event = Event(field_, location, NSLeftMouseDown, 1); @@ -662,13 +681,6 @@ TEST_F(AutocompleteTextFieldObserverTest, PageActionMouseDown) { [field_ mouseDown:event]; EXPECT_TRUE(page_action_view.MouseWasPressed()); - - iconFrame = [cell securityImageFrameForFrame:[field_ bounds]]; - location = NSMakePoint(NSMidX(iconFrame), NSMidY(iconFrame)); - event = Event(field_, location, NSLeftMouseDown, 1); - - [field_ mouseDown:event]; - EXPECT_TRUE(security_image_view.mouse_was_pressed_); } // Test that page action menus are properly returned. @@ -860,4 +872,22 @@ TEST_F(AutocompleteTextFieldObserverTest, SendsOnResignKey) { [test_window() resignKeyWindow]; } +TEST_F(AutocompleteTextFieldTest, LocationDragPasteboard) { + AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; + + MockLocationIconView location_icon_view; + location_icon_view.SetImage( + ResourceBundle::GetSharedInstance().GetNSImageNamed( + IDR_OMNIBOX_HTTPS_VALID)); + location_icon_view.SetVisible(true); + [cell setLocationIconView:&location_icon_view]; + + // Not draggable, so no pasteboard. + EXPECT_FALSE([field_ locationDragPasteboard]); + + // Gets a pasteboard when draggable. + location_icon_view.SetDraggable(true); + EXPECT_TRUE([field_ locationDragPasteboard]); +} + } // namespace |