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

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

Issue 159105: [Mac] Detect control-key changes in autocomplete field. (Closed)
Patch Set: More comments about Control handling. Created 11 years, 5 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/cocoa/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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 <Cocoa/Cocoa.h> 5 #import <Cocoa/Cocoa.h>
6 6
7 #include "base/scoped_nsobject.h" 7 #include "base/scoped_nsobject.h"
8 #import "chrome/browser/cocoa/autocomplete_text_field.h" 8 #import "chrome/browser/cocoa/autocomplete_text_field.h"
9 #import "chrome/browser/cocoa/autocomplete_text_field_cell.h" 9 #import "chrome/browser/cocoa/autocomplete_text_field_cell.h"
10 #import "chrome/browser/cocoa/autocomplete_text_field_editor.h"
10 #import "chrome/browser/cocoa/cocoa_test_helper.h" 11 #import "chrome/browser/cocoa/cocoa_test_helper.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 @interface AutocompleteTextFieldTestDelegate : NSObject { 14 @interface AutocompleteTextFieldTestDelegate : NSObject {
14 BOOL textShouldPaste_; 15 BOOL textShouldPaste_;
15 BOOL receivedTextShouldPaste_; 16 BOOL receivedTextShouldPaste_;
17 BOOL receivedFlagsChanged_;
16 } 18 }
17 - initWithTextShouldPaste:(BOOL)flag; 19 - initWithTextShouldPaste:(BOOL)flag;
18 - (BOOL)receivedTextShouldPaste; 20 - (BOOL)receivedTextShouldPaste;
21 - (BOOL)receivedFlagsChanged;
19 @end 22 @end
20 23
21 namespace { 24 namespace {
22 25
23 class AutocompleteTextFieldTest : public testing::Test { 26 class AutocompleteTextFieldTest : public testing::Test {
24 public: 27 public:
25 AutocompleteTextFieldTest() { 28 AutocompleteTextFieldTest() {
26 NSRect frame = NSMakeRect(0, 0, 50, 30); 29 NSRect frame = NSMakeRect(0, 0, 50, 30);
27 field_.reset([[AutocompleteTextField alloc] initWithFrame:frame]); 30 field_.reset([[AutocompleteTextField alloc] initWithFrame:frame]);
28 [field_ setStringValue:@"Testing"]; 31 [field_ setStringValue:@"Testing"];
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 EXPECT_TRUE([shouldPaste receivedTextShouldPaste]); 67 EXPECT_TRUE([shouldPaste receivedTextShouldPaste]);
65 68
66 scoped_nsobject<AutocompleteTextFieldTestDelegate> shouldNotPaste( 69 scoped_nsobject<AutocompleteTextFieldTestDelegate> shouldNotPaste(
67 [[AutocompleteTextFieldTestDelegate alloc] initWithTextShouldPaste:NO]); 70 [[AutocompleteTextFieldTestDelegate alloc] initWithTextShouldPaste:NO]);
68 [field_ setDelegate:shouldNotPaste]; 71 [field_ setDelegate:shouldNotPaste];
69 EXPECT_FALSE([shouldNotPaste receivedTextShouldPaste]); 72 EXPECT_FALSE([shouldNotPaste receivedTextShouldPaste]);
70 EXPECT_FALSE([field_ textShouldPaste:nil]); 73 EXPECT_FALSE([field_ textShouldPaste:nil]);
71 EXPECT_TRUE([shouldNotPaste receivedTextShouldPaste]); 74 EXPECT_TRUE([shouldNotPaste receivedTextShouldPaste]);
72 } 75 }
73 76
77 // Test that -control:flagsChanged: properly reaches the delegate.
78 TEST_F(AutocompleteTextFieldTest, FlagsChanged) {
79 EXPECT_TRUE(![field_ delegate]);
80
81 // This shouldn't crash, at least.
82 [field_ flagsChanged:nil];
83
84 scoped_nsobject<AutocompleteTextFieldTestDelegate> delegate(
85 [[AutocompleteTextFieldTestDelegate alloc] initWithTextShouldPaste:NO]);
86 [field_ setDelegate:delegate];
87 EXPECT_FALSE([delegate receivedFlagsChanged]);
88 [field_ flagsChanged:nil];
89 EXPECT_TRUE([delegate receivedFlagsChanged]);
90 }
91
92 // Test that -control:flagsChanged: properly reaches the delegate when
93 // the -flagsChanged: message goes to the editor. In that case it is
94 // forwarded via the responder chain.
95 TEST_F(AutocompleteTextFieldTest, FieldEditorFlagsChanged) {
96 EXPECT_TRUE(![field_ delegate]);
97
98 scoped_nsobject<AutocompleteTextFieldTestDelegate> delegate(
99 [[AutocompleteTextFieldTestDelegate alloc] initWithTextShouldPaste:NO]);
100
101 // Setup a field editor for |field_|.
102 scoped_nsobject<AutocompleteTextFieldEditor> editor(
103 [[AutocompleteTextFieldEditor alloc] init]);
104 [field_ setDelegate:delegate];
105
106 [editor setFieldEditor:YES];
107 [[field_ cell] setUpFieldEditorAttributes:editor];
108 [[field_ cell] editWithFrame:[field_ bounds]
109 inView:field_
110 editor:editor
111 delegate:[field_ delegate]
112 event:nil];
113 EXPECT_FALSE([delegate receivedFlagsChanged]);
114 [editor flagsChanged:nil];
115 EXPECT_TRUE([delegate receivedFlagsChanged]);
116 }
117
74 } // namespace 118 } // namespace
75 119
76 @implementation AutocompleteTextFieldTestDelegate 120 @implementation AutocompleteTextFieldTestDelegate
77 121
78 - initWithTextShouldPaste:(BOOL)flag { 122 - initWithTextShouldPaste:(BOOL)flag {
79 self = [super init]; 123 self = [super init];
80 if (self) { 124 if (self) {
81 textShouldPaste_ = flag; 125 textShouldPaste_ = flag;
82 receivedTextShouldPaste_ = NO; 126 receivedTextShouldPaste_ = NO;
127 receivedFlagsChanged_ = NO;
83 } 128 }
84 return self; 129 return self;
85 } 130 }
86 131
87 - (BOOL)receivedTextShouldPaste { 132 - (BOOL)receivedTextShouldPaste {
88 return receivedTextShouldPaste_; 133 return receivedTextShouldPaste_;
89 } 134 }
90 135
136 - (BOOL)receivedFlagsChanged {
137 return receivedFlagsChanged_;
138 }
139
91 - (BOOL)control:(NSControl*)control textShouldPaste:(NSText*)fieldEditor { 140 - (BOOL)control:(NSControl*)control textShouldPaste:(NSText*)fieldEditor {
92 receivedTextShouldPaste_ = YES; 141 receivedTextShouldPaste_ = YES;
93 return textShouldPaste_; 142 return textShouldPaste_;
94 } 143 }
95 144
145 - (void)control:(id)control flagsChanged:(NSEvent*)theEvent {
146 receivedFlagsChanged_ = YES;
147 }
148
96 @end 149 @end
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/autocomplete_text_field.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698