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

Unified Diff: ui/views/cocoa/bridged_native_widget_unittest.mm

Issue 2019233003: MacViews: Fix crash caused due to nil TextInputClient. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address nits. Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/cocoa/bridged_content_view.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ui/views/cocoa/bridged_content_view.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698