Index: chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor_unittest.mm |
diff --git a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor_unittest.mm b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor_unittest.mm |
index fefc8a0ac491e1558d4674c50f6b5c5570510c00..f3b50ce39d9f13c9feeb815d8b67cfd6dd72455b 100644 |
--- a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor_unittest.mm |
+++ b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor_unittest.mm |
@@ -202,6 +202,14 @@ TEST_F(AutocompleteTextFieldEditorObserverTest, Copy) { |
[editor_ copy:nil]; |
} |
+// Test that -copyURL: is correctly delegated to the observer. |
+TEST_F(AutocompleteTextFieldEditorObserverTest, CopyURL) { |
+ EXPECT_CALL(field_observer_, CanCopy()).WillOnce(Return(true)); |
+ EXPECT_CALL(field_observer_, |
+ CopyURLToPasteboard(A<NSPasteboard*>())).Times(1); |
+ [editor_ copyURL:nil]; |
+} |
+ |
// Test that -cut: is correctly delegated to the observer and clears |
// the text field. |
TEST_F(AutocompleteTextFieldEditorObserverTest, Cut) { |
@@ -234,18 +242,17 @@ TEST_F(AutocompleteTextFieldEditorObserverTest, PasteAndGo) { |
// Test that the menu is constructed correctly when CanPasteAndGo(). |
TEST_F(AutocompleteTextFieldEditorObserverTest, CanPasteAndGoMenu) { |
- EXPECT_CALL(field_observer_, CanPasteAndGo()) |
- .WillOnce(Return(true)); |
- EXPECT_CALL(field_observer_, GetPasteActionStringId()) |
- .WillOnce(Return(IDS_PASTE_AND_GO)); |
+ EXPECT_CALL(field_observer_, GetPasteActionStringId()). |
+ WillOnce(Return(IDS_PASTE_AND_GO)); |
NSMenu* menu = [editor_ menuForEvent:nil]; |
NSArray* items = [menu itemArray]; |
- ASSERT_EQ([items count], 6U); |
+ ASSERT_EQ([items count], 7U); |
// TODO(shess): Check the titles, too? |
NSUInteger i = 0; // Use an index to make future changes easier. |
EXPECT_EQ([[items objectAtIndex:i++] action], @selector(cut:)); |
EXPECT_EQ([[items objectAtIndex:i++] action], @selector(copy:)); |
+ EXPECT_EQ([[items objectAtIndex:i++] action], @selector(copyURL:)); |
EXPECT_EQ([[items objectAtIndex:i++] action], @selector(paste:)); |
EXPECT_EQ([[items objectAtIndex:i++] action], @selector(pasteAndGo:)); |
EXPECT_TRUE([[items objectAtIndex:i++] isSeparatorItem]); |
@@ -257,17 +264,19 @@ TEST_F(AutocompleteTextFieldEditorObserverTest, CanPasteAndGoMenu) { |
// Test that the menu is constructed correctly when !CanPasteAndGo(). |
TEST_F(AutocompleteTextFieldEditorObserverTest, CannotPasteAndGoMenu) { |
- EXPECT_CALL(field_observer_, CanPasteAndGo()) |
- .WillOnce(Return(false)); |
+ EXPECT_CALL(field_observer_, GetPasteActionStringId()). |
+ WillOnce(Return(IDS_PASTE_AND_GO)); |
NSMenu* menu = [editor_ menuForEvent:nil]; |
NSArray* items = [menu itemArray]; |
- ASSERT_EQ([items count], 5U); |
+ ASSERT_EQ([items count], 7U); |
// TODO(shess): Check the titles, too? |
NSUInteger i = 0; // Use an index to make future changes easier. |
EXPECT_EQ([[items objectAtIndex:i++] action], @selector(cut:)); |
EXPECT_EQ([[items objectAtIndex:i++] action], @selector(copy:)); |
+ EXPECT_EQ([[items objectAtIndex:i++] action], @selector(copyURL:)); |
EXPECT_EQ([[items objectAtIndex:i++] action], @selector(paste:)); |
+ EXPECT_EQ([[items objectAtIndex:i++] action], @selector(pasteAndGo:)); |
EXPECT_TRUE([[items objectAtIndex:i++] isSeparatorItem]); |
EXPECT_EQ([[items objectAtIndex:i] action], @selector(commandDispatch:)); |
@@ -281,11 +290,8 @@ TEST_F(AutocompleteTextFieldEditorObserverTest, CanPasteAndGoMenuNotEditable) { |
[field_ setEditable:NO]; |
[editor_ setEditable:NO]; |
- // Never call these when not editable. |
- EXPECT_CALL(field_observer_, CanPasteAndGo()) |
- .Times(0); |
- EXPECT_CALL(field_observer_, GetPasteActionStringId()) |
- .Times(0); |
+ // Never call this when not editable. |
+ EXPECT_CALL(field_observer_, GetPasteActionStringId()).Times(0); |
NSMenu* menu = [editor_ menuForEvent:nil]; |
NSArray* items = [menu itemArray]; |
@@ -297,4 +303,99 @@ TEST_F(AutocompleteTextFieldEditorObserverTest, CanPasteAndGoMenuNotEditable) { |
EXPECT_EQ([[items objectAtIndex:i++] action], @selector(paste:)); |
} |
+// Test that the menu is constructed correctly when ShouldEnableCopyURL() |
+// returns true. |
+TEST_F(AutocompleteTextFieldEditorObserverTest, ShouldEnableCopyURLMenu) { |
+ EXPECT_CALL(field_observer_, GetPasteActionStringId()). |
+ WillOnce(Return(IDS_PASTE_AND_GO)); |
+ |
+ NSMenu* menu = [editor_ menuForEvent:nil]; |
+ NSArray* items = [menu itemArray]; |
+ ASSERT_EQ([items count], 7U); |
+ // TODO(shess): Check the titles, too? |
+ NSUInteger i = 0; // Use an index to make future changes easier. |
+ EXPECT_EQ([[items objectAtIndex:i++] action], @selector(cut:)); |
+ EXPECT_EQ([[items objectAtIndex:i++] action], @selector(copy:)); |
+ EXPECT_EQ([[items objectAtIndex:i++] action], @selector(copyURL:)); |
+ EXPECT_EQ([[items objectAtIndex:i++] action], @selector(paste:)); |
+ EXPECT_EQ([[items objectAtIndex:i++] action], @selector(pasteAndGo:)); |
+ EXPECT_TRUE([[items objectAtIndex:i++] isSeparatorItem]); |
+ |
+ EXPECT_EQ([[items objectAtIndex:i] action], @selector(commandDispatch:)); |
+ EXPECT_EQ([[items objectAtIndex:i] tag], IDC_EDIT_SEARCH_ENGINES); |
+} |
+ |
+// Test that the menu validation works as expected when CanPasteAndGo(). |
+TEST_F(AutocompleteTextFieldEditorObserverTest, CanPasteAndGoValidate) { |
+ EXPECT_CALL(field_observer_, GetPasteActionStringId()) |
+ .WillOnce(Return(IDS_PASTE_AND_GO)); |
+ EXPECT_CALL(field_observer_, CanPasteAndGo()).WillOnce(Return(true)); |
+ |
+ NSMenu* menu = [editor_ menuForEvent:nil]; |
+ NSArray* items = [menu itemArray]; |
+ ASSERT_EQ([items count], 7U); |
+ for (NSUInteger i = 0; i < [items count]; ++i) { |
+ NSMenuItem* item = [items objectAtIndex:i]; |
+ if ([item action] == @selector(pasteAndGo:)) { |
+ EXPECT_TRUE([editor_ validateMenuItem:item]); |
+ break; |
+ } |
+ } |
+} |
+ |
+// Test that the menu validation works as expected when !CanPasteAndGo(). |
+TEST_F(AutocompleteTextFieldEditorObserverTest, CannotPasteAndGoValidate) { |
+ EXPECT_CALL(field_observer_, GetPasteActionStringId()) |
+ .WillOnce(Return(IDS_PASTE_AND_GO)); |
+ EXPECT_CALL(field_observer_, CanPasteAndGo()).WillOnce(Return(false)); |
+ |
+ NSMenu* menu = [editor_ menuForEvent:nil]; |
+ NSArray* items = [menu itemArray]; |
+ ASSERT_EQ([items count], 7U); |
+ for (NSUInteger i = 0; i < [items count]; ++i) { |
+ NSMenuItem* item = [items objectAtIndex:i]; |
+ if ([item action] == @selector(pasteAndGo:)) { |
+ EXPECT_FALSE([editor_ validateMenuItem:item]); |
+ break; |
+ } |
+ } |
+} |
+ |
+// Test that the menu validation works as expected when ShouldEnableCopyURL(). |
+TEST_F(AutocompleteTextFieldEditorObserverTest, ShouldEnableCopyURLValidate) { |
+ EXPECT_CALL(field_observer_, GetPasteActionStringId()) |
+ .WillOnce(Return(IDS_PASTE_AND_GO)); |
+ EXPECT_CALL(field_observer_, ShouldEnableCopyURL()).WillOnce(Return(true)); |
+ |
+ NSMenu* menu = [editor_ menuForEvent:nil]; |
+ NSArray* items = [menu itemArray]; |
+ ASSERT_EQ([items count], 7U); |
+ for (NSUInteger i = 0; i < [items count]; ++i) { |
+ NSMenuItem* item = [items objectAtIndex:i]; |
+ if ([item action] == @selector(copyURL:)) { |
+ EXPECT_TRUE([editor_ validateMenuItem:item]); |
+ break; |
+ } |
+ } |
+} |
+ |
+// Test that the menu validation works as expected when !ShouldEnableCopyURL(). |
+TEST_F(AutocompleteTextFieldEditorObserverTest, |
+ ShouldNotEnableCopyURLValidate) { |
+ EXPECT_CALL(field_observer_, GetPasteActionStringId()) |
+ .WillOnce(Return(IDS_PASTE_AND_GO)); |
+ EXPECT_CALL(field_observer_, ShouldEnableCopyURL()).WillOnce(Return(false)); |
+ |
+ NSMenu* menu = [editor_ menuForEvent:nil]; |
+ NSArray* items = [menu itemArray]; |
+ ASSERT_EQ([items count], 7U); |
+ for (NSUInteger i = 0; i < [items count]; ++i) { |
+ NSMenuItem* item = [items objectAtIndex:i]; |
+ if ([item action] == @selector(copyURL:)) { |
+ EXPECT_FALSE([editor_ validateMenuItem:item]); |
+ break; |
+ } |
+ } |
+} |
+ |
} // namespace |