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

Unified Diff: chrome/browser/cocoa/autocomplete_text_field_unittest.mm

Issue 337027: [Mac] Adjust Omnibox implementation to not break undo chain. (Closed)
Patch Set: Tweak a comment 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/cocoa/autocomplete_text_field.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cocoa/autocomplete_text_field_unittest.mm
diff --git a/chrome/browser/cocoa/autocomplete_text_field_unittest.mm b/chrome/browser/cocoa/autocomplete_text_field_unittest.mm
index dfa4183569af107473ec54c9feed22ef89f5ad86..4a3f208831ba3aca45082c61b2f5fd23747cc7fb 100644
--- a/chrome/browser/cocoa/autocomplete_text_field_unittest.mm
+++ b/chrome/browser/cocoa/autocomplete_text_field_unittest.mm
@@ -578,4 +578,85 @@ TEST_F(AutocompleteTextFieldTest, SecurityIconMouseDown) {
[field_ mouseDown:event];
}
+// Verify that -setAttributedStringValue: works as expected when
+// focussed or when not focussed. Our code mostly depends on about
+// whether -stringValue works right.
+TEST_F(AutocompleteTextFieldTest, SetAttributedStringBaseline) {
+ EXPECT_EQ(nil, [field_ currentEditor]);
+
+ // So that we can set rich text.
+ [field_ setAllowsEditingTextAttributes:YES];
+
+ // Set an attribute different from the field's default so we can
+ // tell we got the same string out as we put in.
+ NSFont* font = [NSFont fontWithDescriptor:[[field_ font] fontDescriptor]
+ size:[[field_ font] pointSize] + 2];
+ NSDictionary* attributes =
+ [NSDictionary dictionaryWithObject:font
+ forKey:NSFontAttributeName];
+ static const NSString* kString = @"This is a test";
+ scoped_nsobject<NSAttributedString> attributedString(
+ [[NSAttributedString alloc] initWithString:kString
+ attributes:attributes]);
+
+ // Check that what we get back looks like what we put in.
+ EXPECT_FALSE([[field_ stringValue] isEqualToString:kString]);
+ [field_ setAttributedStringValue:attributedString];
+ EXPECT_TRUE([[field_ attributedStringValue]
+ isEqualToAttributedString:attributedString]);
+ EXPECT_TRUE([[field_ stringValue] isEqualToString:kString]);
+
+ // Try that again with focus.
+ cocoa_helper_.makeFirstResponder(field_);
+ EXPECT_TRUE([field_ currentEditor]);
+
+ // Check that what we get back looks like what we put in.
+ [field_ setStringValue:@""];
+ EXPECT_FALSE([[field_ stringValue] isEqualToString:kString]);
+ [field_ setAttributedStringValue:attributedString];
+ EXPECT_TRUE([[field_ attributedStringValue]
+ isEqualToAttributedString:attributedString]);
+ EXPECT_TRUE([[field_ stringValue] isEqualToString:kString]);
+}
+
+// -setAttributedStringValue: shouldn't reset the undo state if things
+// are being editted.
+TEST_F(AutocompleteTextFieldTest, SetAttributedStringUndo) {
+ NSColor* redColor = [NSColor redColor];
+ NSDictionary* attributes =
+ [NSDictionary dictionaryWithObject:redColor
+ forKey:NSForegroundColorAttributeName];
+ static const NSString* kString = @"This is a test";
+ scoped_nsobject<NSAttributedString> attributedString(
+ [[NSAttributedString alloc] initWithString:kString
+ attributes:attributes]);
+
+ cocoa_helper_.makeFirstResponder(field_);
+ EXPECT_TRUE([field_ currentEditor]);
+ NSTextView* editor = static_cast<NSTextView*>([field_ currentEditor]);
+ NSUndoManager* undoManager = [editor undoManager];
+ EXPECT_TRUE(undoManager);
+
+ // Nothing to undo, yet.
+ EXPECT_FALSE([undoManager canUndo]);
+
+ // Starting an editing action creates an undoable item.
+ [editor shouldChangeTextInRange:NSMakeRange(0, 0) replacementString:@""];
+ [editor didChangeText];
+ EXPECT_TRUE([undoManager canUndo]);
+
+ // -setStringValue: resets the editor's undo chain.
+ [field_ setStringValue:kString];
+ EXPECT_FALSE([undoManager canUndo]);
+
+ // Verify that -setAttributedStringValue: does not reset the
+ // editor's undo chain.
+ [field_ setStringValue:@""];
+ [editor shouldChangeTextInRange:NSMakeRange(0, 0) replacementString:@""];
+ [editor didChangeText];
+ EXPECT_TRUE([undoManager canUndo]);
+ [field_ setAttributedStringValue:attributedString];
+ EXPECT_TRUE([undoManager canUndo]);
+}
+
} // namespace
« 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