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

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

Issue 295036: [Mac] Simplify field editor code which tracks whether editor rect changed. (Closed)
Patch Set: Pinks comments. Created 11 years, 2 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_cell_unittest.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 #import "base/cocoa_protocols_mac.h" 7 #import "base/cocoa_protocols_mac.h"
8 #include "base/scoped_nsobject.h" 8 #include "base/scoped_nsobject.h"
9 #import "chrome/browser/cocoa/autocomplete_text_field.h" 9 #import "chrome/browser/cocoa/autocomplete_text_field.h"
10 #import "chrome/browser/cocoa/autocomplete_text_field_cell.h" 10 #import "chrome/browser/cocoa/autocomplete_text_field_cell.h"
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 NSRect frame = [field_ frame]; 251 NSRect frame = [field_ frame];
252 frame.size.width += 10.0; 252 frame.size.width += 10.0;
253 [field_ setFrame:frame]; 253 [field_ setFrame:frame];
254 } 254 }
255 255
256 // Test that the field editor gets the same bounds when focus is 256 // Test that the field editor gets the same bounds when focus is
257 // delivered by the standard focusing machinery, or by 257 // delivered by the standard focusing machinery, or by
258 // -resetFieldEditorFrameIfNeeded. 258 // -resetFieldEditorFrameIfNeeded.
259 TEST_F(AutocompleteTextFieldTest, ResetFieldEditorBase) { 259 TEST_F(AutocompleteTextFieldTest, ResetFieldEditorBase) {
260 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; 260 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell];
261 EXPECT_FALSE([cell fieldEditorNeedsReset]);
262 261
263 // Capture the editor frame resulting from the standard focus 262 // Capture the editor frame resulting from the standard focus
264 // machinery. 263 // machinery.
265 cocoa_helper_.makeFirstResponder(field_); 264 cocoa_helper_.makeFirstResponder(field_);
266 const NSRect baseEditorFrame(EditorFrame()); 265 const NSRect baseEditorFrame(EditorFrame());
267 266
268 // Setting a hint should result in a strictly smaller editor frame. 267 // Setting a hint should result in a strictly smaller editor frame.
268 EXPECT_FALSE([cell hintString]);
269 [cell setSearchHintString:@"search hint" availableWidth:kWidth]; 269 [cell setSearchHintString:@"search hint" availableWidth:kWidth];
270 EXPECT_TRUE([cell fieldEditorNeedsReset]); 270 EXPECT_TRUE([cell hintString]);
271 [field_ resetFieldEditorFrameIfNeeded]; 271 [field_ resetFieldEditorFrameIfNeeded];
272 EXPECT_FALSE([cell fieldEditorNeedsReset]);
273 EXPECT_FALSE(NSEqualRects(baseEditorFrame, EditorFrame())); 272 EXPECT_FALSE(NSEqualRects(baseEditorFrame, EditorFrame()));
274 EXPECT_TRUE(NSContainsRect(baseEditorFrame, EditorFrame())); 273 EXPECT_TRUE(NSContainsRect(baseEditorFrame, EditorFrame()));
275 274
276 // Clearing hint string and using -resetFieldEditorFrameIfNeeded 275 // Clearing hint string and using -resetFieldEditorFrameIfNeeded
277 // should result in the same frame as the standard focus machinery. 276 // should result in the same frame as the standard focus machinery.
278 [cell clearKeywordAndHint]; 277 [cell clearKeywordAndHint];
279 EXPECT_TRUE([cell fieldEditorNeedsReset]); 278 EXPECT_FALSE([cell hintString]);
280 [field_ resetFieldEditorFrameIfNeeded]; 279 [field_ resetFieldEditorFrameIfNeeded];
281 EXPECT_FALSE([cell fieldEditorNeedsReset]);
282 EXPECT_TRUE(NSEqualRects(baseEditorFrame, EditorFrame())); 280 EXPECT_TRUE(NSEqualRects(baseEditorFrame, EditorFrame()));
283 } 281 }
284 282
285 // Test that the field editor gets the same bounds when focus is 283 // Test that the field editor gets the same bounds when focus is
286 // delivered by the standard focusing machinery, or by 284 // delivered by the standard focusing machinery, or by
287 // -resetFieldEditorFrameIfNeeded. 285 // -resetFieldEditorFrameIfNeeded.
288 TEST_F(AutocompleteTextFieldTest, ResetFieldEditorSearchHint) { 286 TEST_F(AutocompleteTextFieldTest, ResetFieldEditorSearchHint) {
289 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; 287 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell];
290 EXPECT_FALSE([cell fieldEditorNeedsReset]);
291 288
292 const NSString* kHintString(@"Type to search"); 289 const NSString* kHintString(@"Type to search");
293 290
294 // Capture the editor frame resulting from the standard focus 291 // Capture the editor frame resulting from the standard focus
295 // machinery. 292 // machinery.
296 [cell setSearchHintString:kHintString availableWidth:kWidth]; 293 [cell setSearchHintString:kHintString availableWidth:kWidth];
297 EXPECT_TRUE([cell fieldEditorNeedsReset]); 294 EXPECT_TRUE([cell hintString]);
298 [cell setFieldEditorNeedsReset:NO];
299 EXPECT_FALSE([cell fieldEditorNeedsReset]);
300 cocoa_helper_.makeFirstResponder(field_); 295 cocoa_helper_.makeFirstResponder(field_);
301 const NSRect baseEditorFrame(EditorFrame()); 296 const NSRect baseEditorFrame(EditorFrame());
302 297
303 // Clearing the hint should result in a strictly larger editor 298 // Clearing the hint should result in a strictly larger editor
304 // frame. 299 // frame.
305 [cell clearKeywordAndHint]; 300 [cell clearKeywordAndHint];
306 EXPECT_TRUE([cell fieldEditorNeedsReset]); 301 EXPECT_FALSE([cell hintString]);
307 [field_ resetFieldEditorFrameIfNeeded]; 302 [field_ resetFieldEditorFrameIfNeeded];
308 EXPECT_FALSE([cell fieldEditorNeedsReset]);
309 EXPECT_FALSE(NSEqualRects(baseEditorFrame, EditorFrame())); 303 EXPECT_FALSE(NSEqualRects(baseEditorFrame, EditorFrame()));
310 EXPECT_TRUE(NSContainsRect(EditorFrame(), baseEditorFrame)); 304 EXPECT_TRUE(NSContainsRect(EditorFrame(), baseEditorFrame));
311 305
312 // Setting the same hint string and using 306 // Setting the same hint string and using
313 // -resetFieldEditorFrameIfNeeded should result in the same frame as 307 // -resetFieldEditorFrameIfNeeded should result in the same frame as
314 // the standard focus machinery. 308 // the standard focus machinery.
315 [cell setSearchHintString:kHintString availableWidth:kWidth]; 309 [cell setSearchHintString:kHintString availableWidth:kWidth];
316 EXPECT_TRUE([cell fieldEditorNeedsReset]); 310 EXPECT_TRUE([cell hintString]);
317 [field_ resetFieldEditorFrameIfNeeded]; 311 [field_ resetFieldEditorFrameIfNeeded];
318 EXPECT_FALSE([cell fieldEditorNeedsReset]);
319 EXPECT_TRUE(NSEqualRects(baseEditorFrame, EditorFrame())); 312 EXPECT_TRUE(NSEqualRects(baseEditorFrame, EditorFrame()));
320 } 313 }
321 314
322 // Test that the field editor gets the same bounds when focus is 315 // Test that the field editor gets the same bounds when focus is
323 // delivered by the standard focusing machinery, or by 316 // delivered by the standard focusing machinery, or by
324 // -resetFieldEditorFrameIfNeeded. 317 // -resetFieldEditorFrameIfNeeded.
325 TEST_F(AutocompleteTextFieldTest, ResetFieldEditorKeywordHint) { 318 TEST_F(AutocompleteTextFieldTest, ResetFieldEditorKeywordHint) {
326 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; 319 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell];
327 EXPECT_FALSE([cell fieldEditorNeedsReset]);
328 320
329 const NSString* kFullString(@"Search Engine:"); 321 const NSString* kFullString(@"Search Engine:");
330 const NSString* kPartialString(@"Search Eng:"); 322 const NSString* kPartialString(@"Search Eng:");
331 323
332 // Capture the editor frame resulting from the standard focus 324 // Capture the editor frame resulting from the standard focus
333 // machinery. 325 // machinery.
334 [cell setKeywordString:kFullString 326 [cell setKeywordString:kFullString
335 partialString:kPartialString 327 partialString:kPartialString
336 availableWidth:kWidth]; 328 availableWidth:kWidth];
337 EXPECT_TRUE([cell fieldEditorNeedsReset]); 329 EXPECT_TRUE([cell keywordString]);
338 [cell setFieldEditorNeedsReset:NO];
339 EXPECT_FALSE([cell fieldEditorNeedsReset]);
340 cocoa_helper_.makeFirstResponder(field_); 330 cocoa_helper_.makeFirstResponder(field_);
341 const NSRect baseEditorFrame(EditorFrame()); 331 const NSRect baseEditorFrame(EditorFrame());
342 332
343 // Clearing the hint should result in a strictly larger editor 333 // Clearing the hint should result in a strictly larger editor
344 // frame. 334 // frame.
345 [cell clearKeywordAndHint]; 335 [cell clearKeywordAndHint];
346 EXPECT_TRUE([cell fieldEditorNeedsReset]); 336 EXPECT_FALSE([cell keywordString]);
347 [field_ resetFieldEditorFrameIfNeeded]; 337 [field_ resetFieldEditorFrameIfNeeded];
348 EXPECT_FALSE([cell fieldEditorNeedsReset]);
349 EXPECT_FALSE(NSEqualRects(baseEditorFrame, EditorFrame())); 338 EXPECT_FALSE(NSEqualRects(baseEditorFrame, EditorFrame()));
350 EXPECT_TRUE(NSContainsRect(EditorFrame(), baseEditorFrame)); 339 EXPECT_TRUE(NSContainsRect(EditorFrame(), baseEditorFrame));
351 340
352 // Setting the same hint string and using 341 // Setting the same hint string and using
353 // -resetFieldEditorFrameIfNeeded should result in the same frame as 342 // -resetFieldEditorFrameIfNeeded should result in the same frame as
354 // the standard focus machinery. 343 // the standard focus machinery.
355 [cell setKeywordString:kFullString 344 [cell setKeywordString:kFullString
356 partialString:kPartialString 345 partialString:kPartialString
357 availableWidth:kWidth]; 346 availableWidth:kWidth];
358 EXPECT_TRUE([cell fieldEditorNeedsReset]); 347 EXPECT_TRUE([cell keywordString]);
359 [field_ resetFieldEditorFrameIfNeeded]; 348 [field_ resetFieldEditorFrameIfNeeded];
360 EXPECT_FALSE([cell fieldEditorNeedsReset]);
361 EXPECT_TRUE(NSEqualRects(baseEditorFrame, EditorFrame())); 349 EXPECT_TRUE(NSEqualRects(baseEditorFrame, EditorFrame()));
362 } 350 }
363 351
364 // Test that resetting the field editor bounds does not cause untoward 352 // Test that resetting the field editor bounds does not cause untoward
365 // messages to the field's delegate. 353 // messages to the field's delegate.
366 TEST_F(AutocompleteTextFieldTest, ResetFieldEditorBlocksEndEditing) { 354 TEST_F(AutocompleteTextFieldTest, ResetFieldEditorBlocksEndEditing) {
367 // First, test that -makeFirstResponder: sends 355 // First, test that -makeFirstResponder: sends
368 // -controlTextDidBeginEditing: and -control:textShouldEndEditing at 356 // -controlTextDidBeginEditing: and -control:textShouldEndEditing at
369 // the expected times. 357 // the expected times.
370 { 358 {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 [field_ setDelegate:mockDelegate]; 391 [field_ setDelegate:mockDelegate];
404 392
405 // Start editing. 393 // Start editing.
406 [[mockDelegate expect] controlTextDidBeginEditing:OCMOCK_ANY]; 394 [[mockDelegate expect] controlTextDidBeginEditing:OCMOCK_ANY];
407 NSTextView* editor = static_cast<NSTextView*>([field_ currentEditor]); 395 NSTextView* editor = static_cast<NSTextView*>([field_ currentEditor]);
408 [editor shouldChangeTextInRange:NSMakeRange(0, 0) replacementString:@""]; 396 [editor shouldChangeTextInRange:NSMakeRange(0, 0) replacementString:@""];
409 [mockDelegate verify]; 397 [mockDelegate verify];
410 398
411 // No more messages to mockDelegate. 399 // No more messages to mockDelegate.
412 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; 400 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell];
413 EXPECT_FALSE([cell fieldEditorNeedsReset]);
414 [cell setSearchHintString:@"Type to search" availableWidth:kWidth]; 401 [cell setSearchHintString:@"Type to search" availableWidth:kWidth];
415 EXPECT_TRUE([cell fieldEditorNeedsReset]);
416 [field_ resetFieldEditorFrameIfNeeded]; 402 [field_ resetFieldEditorFrameIfNeeded];
417 [mockDelegate verify]; 403 [mockDelegate verify];
418 404
419 [field_ setDelegate:nil]; 405 [field_ setDelegate:nil];
420 } 406 }
421 } 407 }
422 408
423 // Clicking in the search hint should put the caret in the rightmost 409 // Clicking in the search hint should put the caret in the rightmost
424 // position. 410 // position.
425 TEST_F(AutocompleteTextFieldTest, ClickSearchHintPutsCaretRightmost) { 411 TEST_F(AutocompleteTextFieldTest, ClickSearchHintPutsCaretRightmost) {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 [[NSImage alloc] initWithSize:NSMakeSize(20, 20)]); 572 [[NSImage alloc] initWithSize:NSMakeSize(20, 20)]);
587 [cell setHintIcon:hintIcon.get() label:nil color:nil]; 573 [cell setHintIcon:hintIcon.get() label:nil color:nil];
588 NSRect iconFrame([cell hintImageFrameForFrame:[field_ bounds]]); 574 NSRect iconFrame([cell hintImageFrameForFrame:[field_ bounds]]);
589 NSPoint location(NSMakePoint(NSMidX(iconFrame), NSMidY(iconFrame))); 575 NSPoint location(NSMakePoint(NSMidX(iconFrame), NSMidY(iconFrame)));
590 NSEvent* event(Event(field_, location, NSLeftMouseDown, 1)); 576 NSEvent* event(Event(field_, location, NSLeftMouseDown, 1));
591 EXPECT_CALL(field_observer_, OnSecurityIconClicked()); 577 EXPECT_CALL(field_observer_, OnSecurityIconClicked());
592 [field_ mouseDown:event]; 578 [field_ mouseDown:event];
593 } 579 }
594 580
595 } // namespace 581 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/autocomplete_text_field_cell_unittest.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698