Index: chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor.mm |
diff --git a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor.mm b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor.mm |
index deb9b2d6ef362d65c0bd8b97d6b8273cd378325a..7eb7606405741d554dc1c2869515367ac0c2881f 100644 |
--- a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor.mm |
+++ b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field_editor.mm |
@@ -96,6 +96,13 @@ BOOL ThePasteboardIsTooDamnBig() { |
[self delete:nil]; |
} |
+- (void)copyURL:(id)sender { |
+ AutocompleteTextFieldObserver* observer = [self observer]; |
+ DCHECK(observer); |
+ if (observer->CanCopy()) |
+ observer->CopyURLToPasteboard([NSPasteboard generalPasteboard]); |
+} |
+ |
// This class assumes that the delegate is an AutocompleteTextField. |
// Enforce that assumption. |
- (AutocompleteTextField*)delegate { |
@@ -208,6 +215,17 @@ BOOL ThePasteboardIsTooDamnBig() { |
[menu addItemWithTitle:l10n_util::GetNSStringWithFixup(IDS_COPY) |
action:@selector(copy:) |
keyEquivalent:@""]; |
+ |
+ if ([self isEditable]) { |
+ // Copy URL if the URL has been replaced by the Extended Instant API. |
+ AutocompleteTextFieldObserver* observer = [self observer]; |
dhollowa
2012/09/11 20:25:34
|observer| is not used here except in DCHECK.
dominich
2012/09/12 15:23:09
Done.
|
+ DCHECK(observer); |
+ NSString* label = l10n_util::GetNSStringWithFixup(IDS_COPY_URL_MAC); |
+ [menu addItemWithTitle:label |
+ action:@selector(copyURL:) |
+ keyEquivalent:@""]; |
+ } |
+ |
[menu addItemWithTitle:l10n_util::GetNSStringWithFixup(IDS_PASTE) |
action:@selector(paste:) |
keyEquivalent:@""]; |
@@ -218,24 +236,21 @@ BOOL ThePasteboardIsTooDamnBig() { |
// Paste and go/search. |
AutocompleteTextFieldObserver* observer = [self observer]; |
DCHECK(observer); |
- if (observer && observer->CanPasteAndGo()) { |
- const int string_id = observer->GetPasteActionStringId(); |
- NSString* label = l10n_util::GetNSStringWithFixup(string_id); |
- |
- // TODO(rohitrao): If the clipboard is empty, should we show a |
- // greyed-out "Paste and Go" or nothing at all? |
- if ([label length]) { |
- [menu addItemWithTitle:label |
- action:@selector(pasteAndGo:) |
- keyEquivalent:@""]; |
- } |
- } |
+ const int string_id = observer->GetPasteActionStringId(); |
+ NSString* label = l10n_util::GetNSStringWithFixup(string_id); |
- NSString* label = l10n_util::GetNSStringWithFixup(IDS_EDIT_SEARCH_ENGINES); |
- DCHECK([label length]); |
if ([label length]) { |
+ [menu addItemWithTitle:label |
+ action:@selector(pasteAndGo:) |
+ keyEquivalent:@""]; |
+ } |
+ |
+ NSString* search_engine_label = |
+ l10n_util::GetNSStringWithFixup(IDS_EDIT_SEARCH_ENGINES); |
+ DCHECK([search_engine_label length]); |
+ if ([search_engine_label length]) { |
dhollowa
2012/09/11 20:25:34
nit: No need to test for same thing as DCHECK.
Peter Kasting
2012/09/11 21:52:59
Nit: Also, be consistent in this function about wh
dominich
2012/09/12 15:23:09
Done.
dominich
2012/09/12 15:23:09
Done.
|
[menu addItem:[NSMenuItem separatorItem]]; |
- NSMenuItem* item = [menu addItemWithTitle:label |
+ NSMenuItem* item = [menu addItemWithTitle:search_engine_label |
action:@selector(commandDispatch:) |
keyEquivalent:@""]; |
[item setTag:IDC_EDIT_SEARCH_ENGINES]; |
@@ -471,6 +486,18 @@ BOOL ThePasteboardIsTooDamnBig() { |
- (BOOL)validateMenuItem:(NSMenuItem*)item { |
if ([item action] == @selector(copyToFindPboard:)) |
return [self selectedRange].length > 0; |
+ if ([item action] == @selector(pasteAndGo:)) { |
+ // TODO(rohitrao): If the clipboard is empty, should we show a |
+ // greyed-out "Paste and Go" or nothing at all? |
Peter Kasting
2012/09/11 21:52:59
Nit: Shouldn't this TODO go away?
dominich
2012/09/12 15:23:09
No. I'm not checking the contents of the clipboard
|
+ AutocompleteTextFieldObserver* observer = [self observer]; |
+ DCHECK(observer); |
+ return observer->CanPasteAndGo(); |
+ } |
+ if ([item action] == @selector(copyURL:)) { |
+ AutocompleteTextFieldObserver* observer = [self observer]; |
+ DCHECK(observer); |
+ return observer->ShouldAddCopyURL(); |
+ } |
return [super validateMenuItem:item]; |
} |