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

Side by Side Diff: chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_unittest.mm

Issue 1011943002: Mac: Clicking an omnibox decoration should not highlight the omnibox. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unit test. Created 5 years, 7 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
« no previous file with comments | « chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #import <ApplicationServices/ApplicationServices.h> 5 #import <ApplicationServices/ApplicationServices.h>
6 #import <Cocoa/Cocoa.h> 6 #import <Cocoa/Cocoa.h>
7 7
8 #include "base/mac/foundation_util.h" 8 #include "base/mac/foundation_util.h"
9 #include "base/mac/scoped_nsobject.h" 9 #include "base/mac/scoped_nsobject.h"
10 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" 10 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 ofView:field_]; 782 ofView:field_];
783 EXPECT_FALSE([[field_ cell] showsFirstResponder]); 783 EXPECT_FALSE([[field_ cell] showsFirstResponder]);
784 EXPECT_FALSE([FieldEditor() shouldDrawInsertionPoint]); 784 EXPECT_FALSE([FieldEditor() shouldDrawInsertionPoint]);
785 785
786 [[field_ cell] setHideFocusState:NO 786 [[field_ cell] setHideFocusState:NO
787 ofView:field_]; 787 ofView:field_];
788 EXPECT_TRUE([[field_ cell] showsFirstResponder]); 788 EXPECT_TRUE([[field_ cell] showsFirstResponder]);
789 EXPECT_TRUE([FieldEditor() shouldDrawInsertionPoint]); 789 EXPECT_TRUE([FieldEditor() shouldDrawInsertionPoint]);
790 } 790 }
791 791
792 // Verify that OnSetFocus for button decorations is only sent after the 792 // Verify that clicking on a button decoration does not focus the omnibox.
793 // decoration is picked as the target for the subsequent -mouseDown:. Otherwise
794 // hiding a ButtonDecoration in OnSetFocus will prevent a call to
795 // OnMousePressed, since it is already hidden at the time of mouseDown.
796 TEST_F(AutocompleteTextFieldObserverTest, ButtonDecorationFocus) { 793 TEST_F(AutocompleteTextFieldObserverTest, ButtonDecorationFocus) {
erikchen 2015/05/07 19:33:51 This test was written for Omnitheatre, and is no l
Scott Hess - ex-Googler 2015/05/07 20:07:42 Would it make sense to further revise this to not
erikchen 2015/05/08 01:51:46 Good suggestion. I updated the test, and discovere
797 // Add the mock button. 794 // Add the mock button.
798 MockButtonDecoration mock_button; 795 MockButtonDecoration mock_button;
799 mock_button.SetVisible(true); 796 mock_button.SetVisible(true);
800 AutocompleteTextFieldCell* cell = [field_ cell]; 797 AutocompleteTextFieldCell* cell = [field_ cell];
801 [cell addLeftDecoration:&mock_button]; 798 [cell addLeftDecoration:&mock_button];
802 799
803 // Ensure button is hidden when OnSetFocus() is called.
804 EXPECT_CALL(field_observer_, OnSetFocus(false)).WillOnce(
805 testing::InvokeWithoutArgs(&mock_button, &MockButtonDecoration::Hide));
806
807 // Ignore incidental calls. 800 // Ignore incidental calls.
808 EXPECT_CALL(field_observer_, SelectionRangeForProposedRange(_)) 801 EXPECT_CALL(field_observer_, SelectionRangeForProposedRange(_))
809 .WillRepeatedly(testing::Return(NSMakeRange(0, 0))); 802 .WillRepeatedly(testing::Return(NSMakeRange(0, 0)));
810 EXPECT_CALL(field_observer_, OnMouseDown(_)); 803 EXPECT_CALL(field_observer_, OnMouseDown(_));
811 804
812 // Still expect an OnMousePressed on the button. 805 // Expect an OnMousePressed on the button.
813 EXPECT_CALL(mock_button, OnMousePressed(_, _)) 806 EXPECT_CALL(mock_button, OnMousePressed(_, _))
814 .WillOnce(testing::Return(true)); 807 .WillOnce(testing::Return(true));
815 808
816 // Get click point for button decoration. 809 // Get click point for button decoration.
817 NSRect button_rect = 810 NSRect button_rect =
818 [cell frameForDecoration:&mock_button inFrame:[field_ bounds]]; 811 [cell frameForDecoration:&mock_button inFrame:[field_ bounds]];
819 EXPECT_FALSE(NSIsEmptyRect(button_rect)); 812 EXPECT_FALSE(NSIsEmptyRect(button_rect));
820 NSPoint click_location = 813 NSPoint click_location =
821 NSMakePoint(NSMidX(button_rect), NSMidY(button_rect)); 814 NSMakePoint(NSMidX(button_rect), NSMidY(button_rect));
822 815
823 // Ensure the field is currently not first responder. 816 // Ensure the field is currently not first responder.
824 [test_window() makePretendKeyWindowAndSetFirstResponder:nil]; 817 [test_window() makePretendKeyWindowAndSetFirstResponder:nil];
825 EXPECT_NSNE([[field_ window] firstResponder], field_); 818 EXPECT_FALSE([base::mac::ObjCCast<NSView>(
819 [[field_ window] firstResponder]) isDescendantOf:field_]);
Scott Hess - ex-Googler 2015/05/07 20:07:42 At this point is there any first responder at all
erikchen 2015/05/08 01:51:46 The first responder is CocoaTestHelperWindow. I'd
826 820
827 // Execute button click event sequence. 821 // Execute button click event sequence.
828 NSEvent* downEvent = Event(field_, click_location, NSLeftMouseDown); 822 NSEvent* downEvent = Event(field_, click_location, NSLeftMouseDown);
829 NSEvent* upEvent = Event(field_, click_location, NSLeftMouseUp); 823 NSEvent* upEvent = Event(field_, click_location, NSLeftMouseUp);
830 824
831 // Can't just use -sendEvent:, since that doesn't populate -currentEvent. 825 // Can't just use -sendEvent:, since that doesn't populate -currentEvent.
832 [NSApp postEvent:downEvent atStart:YES]; 826 [NSApp postEvent:downEvent atStart:YES];
833 [NSApp postEvent:upEvent atStart:NO]; 827 [NSApp postEvent:upEvent atStart:NO];
834 NSEvent* next_event = [NSApp nextEventMatchingMask:NSAnyEventMask 828 NSEvent* next_event = [NSApp nextEventMatchingMask:NSAnyEventMask
835 untilDate:nil 829 untilDate:nil
836 inMode:NSDefaultRunLoopMode 830 inMode:NSDefaultRunLoopMode
837 dequeue:YES]; 831 dequeue:YES];
838 [NSApp sendEvent:next_event]; 832 [NSApp sendEvent:next_event];
839 833
840 // Expectations check that both OnSetFocus and OnMouseDown were called. 834 // Expectations check that OnMouseDown was called. Additionally, ensure
841 // Additionally, ensure button is hidden and field is firstResponder. 835 // button is visible and field is not firstResponder.
842 EXPECT_FALSE(mock_button.IsVisible()); 836 EXPECT_TRUE(mock_button.IsVisible());
843 EXPECT_TRUE(NSIsEmptyRect([cell frameForDecoration:&mock_left_decoration_ 837 EXPECT_FALSE(NSIsEmptyRect([cell frameForDecoration:&mock_button
844 inFrame:[field_ bounds]])); 838 inFrame:[field_ bounds]]));
Scott Hess - ex-Googler 2015/05/07 20:07:42 Alignment.
erikchen 2015/05/08 01:51:46 I clang-format-ed the entire CL.
Scott Hess - ex-Googler 2015/05/08 19:38:28 And the offending code is no longer present anyhow
erikchen 2015/05/08 20:02:20 The previous code was not. I should have been more
845 EXPECT_TRUE([base::mac::ObjCCastStrict<NSView>( 839 EXPECT_FALSE([base::mac::ObjCCast<NSView>(
846 [[field_ window] firstResponder]) isDescendantOf:field_]); 840 [[field_ window] firstResponder]) isDescendantOf:field_]);
Scott Hess - ex-Googler 2015/05/07 20:07:42 Here also.
erikchen 2015/05/08 01:51:46 ditto.
847 } 841 }
848 842
849 TEST_F(AutocompleteTextFieldObserverTest, SendsEditingMessages) { 843 TEST_F(AutocompleteTextFieldObserverTest, SendsEditingMessages) {
850 // Many of these methods try to change the selection. 844 // Many of these methods try to change the selection.
851 EXPECT_CALL(field_observer_, SelectionRangeForProposedRange(A<NSRange>())) 845 EXPECT_CALL(field_observer_, SelectionRangeForProposedRange(A<NSRange>()))
852 .WillRepeatedly(ReturnArg<0>()); 846 .WillRepeatedly(ReturnArg<0>());
853 847
854 EXPECT_CALL(field_observer_, OnSetFocus(false)); 848 EXPECT_CALL(field_observer_, OnSetFocus(false));
855 // Becoming first responder doesn't begin editing. 849 // Becoming first responder doesn't begin editing.
856 [test_window() makePretendKeyWindowAndSetFirstResponder:field_]; 850 [test_window() makePretendKeyWindowAndSetFirstResponder:field_];
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 base::scoped_nsobject<AutocompleteTextField> pin([field_ retain]); 889 base::scoped_nsobject<AutocompleteTextField> pin([field_ retain]);
896 [field_ removeFromSuperview]; 890 [field_ removeFromSuperview];
897 [test_window() resignKeyWindow]; 891 [test_window() resignKeyWindow];
898 892
899 [[test_window() contentView] addSubview:field_]; 893 [[test_window() contentView] addSubview:field_];
900 EXPECT_CALL(field_observer_, ClosePopup()); 894 EXPECT_CALL(field_observer_, ClosePopup());
901 [test_window() resignKeyWindow]; 895 [test_window() resignKeyWindow];
902 } 896 }
903 897
904 } // namespace 898 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698