Index: ui/views/cocoa/bridged_native_widget_unittest.mm |
diff --git a/ui/views/cocoa/bridged_native_widget_unittest.mm b/ui/views/cocoa/bridged_native_widget_unittest.mm |
index 1faee145fec4433b886cf07b9ce726cf1dc50e9d..e6afebc157d5d52d857f29e80ac6f3cd5f1f243c 100644 |
--- a/ui/views/cocoa/bridged_native_widget_unittest.mm |
+++ b/ui/views/cocoa/bridged_native_widget_unittest.mm |
@@ -57,6 +57,63 @@ using base::SysUTF8ToNSString; |
namespace { |
+// Implemented NSResponder action messages for use in tests. |
+NSArray* const kMoveActions = @[ |
+ @"moveForward:", |
+ @"moveRight:", |
+ @"moveBackward:", |
+ @"moveLeft:", |
+ @"moveUp:", |
+ @"moveDown:", |
+ @"moveWordForward:", |
+ @"moveWordBackward:", |
+ @"moveToBeginningOfLine:", |
+ @"moveToEndOfLine:", |
+ @"moveToBeginningOfParagraph:", |
+ @"moveToEndOfParagraph:", |
+ @"moveToEndOfDocument:", |
+ @"moveToBeginningOfDocument:", |
+ @"pageDown:", |
+ @"pageUp:", |
+ @"moveWordRight:", |
+ @"moveWordLeft:", |
+ @"moveToLeftEndOfLine:", |
+ @"moveToRightEndOfLine:" |
+]; |
+ |
+NSArray* const kSelectActions = @[ |
+ @"moveBackwardAndModifySelection:", |
+ @"moveForwardAndModifySelection:", |
+ @"moveWordForwardAndModifySelection:", |
+ @"moveWordBackwardAndModifySelection:", |
+ @"moveUpAndModifySelection:", |
+ @"moveDownAndModifySelection:", |
+ @"moveToBeginningOfLineAndModifySelection:", |
+ @"moveToEndOfLineAndModifySelection:", |
+ @"moveToBeginningOfParagraphAndModifySelection:", |
+ @"moveToEndOfParagraphAndModifySelection:", |
+ @"moveToEndOfDocumentAndModifySelection:", |
+ @"moveToBeginningOfDocumentAndModifySelection:", |
+ @"pageDownAndModifySelection:", |
+ @"pageUpAndModifySelection:", |
+ @"moveParagraphForwardAndModifySelection:", |
+ @"moveParagraphBackwardAndModifySelection:", |
+ @"moveRightAndModifySelection:", |
+ @"moveLeftAndModifySelection:", |
+ @"moveWordRightAndModifySelection:", |
+ @"moveWordLeftAndModifySelection:", |
+ @"moveToLeftEndOfLineAndModifySelection:", |
+ @"moveToRightEndOfLineAndModifySelection:" |
+]; |
+ |
+NSArray* const kDeleteActions = @[ |
+ @"deleteForward:", @"deleteBackward:", @"deleteWordForward:", |
+ @"deleteWordBackward:", @"deleteToBeginningOfLine:", @"deleteToEndOfLine:", |
+ @"deleteToBeginningOfParagraph:", @"deleteToEndOfParagraph:" |
+]; |
+ |
+NSArray* const kMiscActions = @[ @"insertText:", @"cancelOperation:" ]; |
+ |
// Empty range shortcut for readibility. |
NSRange EmptyRange() { |
return NSMakeRange(NSNotFound, 0); |
@@ -944,29 +1001,7 @@ TEST_F(BridgedNativeWidgetTest, TextInput_DeleteToEndOfParagraph) { |
// Test move commands against expectations set by |dummy_text_view_|. |
TEST_F(BridgedNativeWidgetTest, TextInput_MoveEditingCommands) { |
- NSArray* selectors = @[ |
- @"moveForward:", |
- @"moveRight:", |
- @"moveBackward:", |
- @"moveLeft:", |
- @"moveUp:", |
- @"moveDown:", |
- @"moveWordForward:", |
- @"moveWordBackward:", |
- @"moveToBeginningOfLine:", |
- @"moveToEndOfLine:", |
- @"moveToBeginningOfParagraph:", |
- @"moveToEndOfParagraph:", |
- @"moveToEndOfDocument:", |
- @"moveToBeginningOfDocument:", |
- @"pageDown:", |
- @"pageUp:", |
- @"moveWordRight:", |
- @"moveWordLeft:", |
- @"moveToLeftEndOfLine:", |
- @"moveToRightEndOfLine:" |
- ]; |
- TestEditingCommands(selectors); |
+ TestEditingCommands(kMoveActions); |
} |
// Todo(karandeepb): Enable this test once the behavior of all move and select |
@@ -974,41 +1009,26 @@ TEST_F(BridgedNativeWidgetTest, TextInput_MoveEditingCommands) { |
// Test move and select commands against expectations set by |dummy_text_view_|. |
TEST_F(BridgedNativeWidgetTest, |
TextInput_MoveAndSelectEditingCommands_DISABLED) { |
- NSArray* selectors = @[ |
- @"moveBackwardAndModifySelection:", |
- @"moveForwardAndModifySelection:", |
- @"moveWordForwardAndModifySelection:", |
- @"moveWordBackwardAndModifySelection:", |
- @"moveUpAndModifySelection:", |
- @"moveDownAndModifySelection:", |
- @"moveToBeginningOfLineAndModifySelection:", |
- @"moveToEndOfLineAndModifySelection:", |
- @"moveToBeginningOfParagraphAndModifySelection:", |
- @"moveToEndOfParagraphAndModifySelection:", |
- @"moveToEndOfDocumentAndModifySelection:", |
- @"moveToBeginningOfDocumentAndModifySelection:", |
- @"pageDownAndModifySelection:", |
- @"pageUpAndModifySelection:", |
- @"moveParagraphForwardAndModifySelection:", |
- @"moveParagraphBackwardAndModifySelection:", |
- @"moveRightAndModifySelection:", |
- @"moveLeftAndModifySelection:", |
- @"moveWordRightAndModifySelection:", |
- @"moveWordLeftAndModifySelection:", |
- @"moveToLeftEndOfLineAndModifySelection:", |
- @"moveToRightEndOfLineAndModifySelection:" |
- ]; |
- TestEditingCommands(selectors); |
+ TestEditingCommands(kSelectActions); |
} |
// Test delete commands against expectations set by |dummy_text_view_|. |
TEST_F(BridgedNativeWidgetTest, TextInput_DeleteCommands) { |
- NSArray* selectors = @[ |
- @"deleteForward:", @"deleteBackward:", @"deleteWordForward:", |
- @"deleteWordBackward:", @"deleteToBeginningOfLine:", @"deleteToEndOfLine:", |
- @"deleteToBeginningOfParagraph:", @"deleteToEndOfParagraph:" |
- ]; |
- TestEditingCommands(selectors); |
+ TestEditingCommands(kDeleteActions); |
+} |
+ |
+// Test that we don't crash during an action message even if the TextInputClient |
+// is nil. Regression test for crbug.com/615745. |
+TEST_F(BridgedNativeWidgetTest, NilTextInputClient) { |
+ [ns_view_ setTextInputClient:nil]; |
+ NSMutableArray* selectors = [NSMutableArray array]; |
+ [selectors addObjectsFromArray:kMoveActions]; |
+ [selectors addObjectsFromArray:kSelectActions]; |
+ [selectors addObjectsFromArray:kDeleteActions]; |
+ [selectors addObjectsFromArray:kMiscActions]; |
+ |
+ for (NSString* selector in selectors) |
+ [ns_view_ doCommandBySelector:NSSelectorFromString(selector)]; |
} |
// Test firstRectForCharacterRange:actualRange for cases where query range is |