OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h" | 5 #include "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h" |
6 | 6 |
7 #include <Carbon/Carbon.h> // kVK_Return | 7 #include <Carbon/Carbon.h> // kVK_Return |
8 | 8 |
9 #include "base/mac/foundation_util.h" | 9 #include "base/mac/foundation_util.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
928 } | 928 } |
929 | 929 |
930 void OmniboxViewMac::OnMouseDown(NSInteger button_number) { | 930 void OmniboxViewMac::OnMouseDown(NSInteger button_number) { |
931 // Restore caret visibility whenever the user clicks in the the omnibox. This | 931 // Restore caret visibility whenever the user clicks in the the omnibox. This |
932 // is not always covered by OnSetFocus() because when clicking while the | 932 // is not always covered by OnSetFocus() because when clicking while the |
933 // omnibox has invisible focus does not trigger a new OnSetFocus() call. | 933 // omnibox has invisible focus does not trigger a new OnSetFocus() call. |
934 if (button_number == 0 || button_number == 1) | 934 if (button_number == 0 || button_number == 1) |
935 model()->SetCaretVisibility(true); | 935 model()->SetCaretVisibility(true); |
936 } | 936 } |
937 | 937 |
938 bool OmniboxViewMac::ShouldSelectAllOnMouseDown() { | |
939 return !controller()->GetToolbarModel()->WouldPerformSearchTermReplacement( | |
940 false); | |
941 } | |
942 | |
943 bool OmniboxViewMac::CanCopy() { | 938 bool OmniboxViewMac::CanCopy() { |
944 const NSRange selection = GetSelectedRange(); | 939 const NSRange selection = GetSelectedRange(); |
945 return selection.length > 0; | 940 return selection.length > 0; |
946 } | 941 } |
947 | 942 |
948 base::scoped_nsobject<NSPasteboardItem> OmniboxViewMac::CreatePasteboardItem() { | 943 base::scoped_nsobject<NSPasteboardItem> OmniboxViewMac::CreatePasteboardItem() { |
949 DCHECK(CanCopy()); | 944 DCHECK(CanCopy()); |
950 | 945 |
951 const NSRange selection = GetSelectedRange(); | 946 const NSRange selection = GetSelectedRange(); |
952 base::string16 text = base::SysNSStringToUTF16( | 947 base::string16 text = base::SysNSStringToUTF16( |
953 [[field_ stringValue] substringWithRange:selection]); | 948 [[field_ stringValue] substringWithRange:selection]); |
954 | 949 |
955 // Copy the URL unless this is the search URL and it's being replaced by the | 950 // Copy the URL. |
956 // Extended Instant API. | |
957 GURL url; | 951 GURL url; |
958 bool write_url = false; | 952 bool write_url = false; |
959 if (!controller()->GetToolbarModel()->WouldPerformSearchTermReplacement( | 953 model()->AdjustTextForCopy(selection.location, IsSelectAll(), &text, &url, |
960 false)) { | 954 &write_url); |
961 model()->AdjustTextForCopy(selection.location, IsSelectAll(), &text, &url, | |
962 &write_url); | |
963 } | |
964 | 955 |
965 if (IsSelectAll()) | 956 if (IsSelectAll()) |
966 UMA_HISTOGRAM_COUNTS(OmniboxEditModel::kCutOrCopyAllTextHistogram, 1); | 957 UMA_HISTOGRAM_COUNTS(OmniboxEditModel::kCutOrCopyAllTextHistogram, 1); |
967 | 958 |
968 NSString* nstext = base::SysUTF16ToNSString(text); | 959 NSString* nstext = base::SysUTF16ToNSString(text); |
969 if (write_url) { | 960 if (write_url) { |
970 return ui::ClipboardUtil::PasteboardItemFromUrl( | 961 return ui::ClipboardUtil::PasteboardItemFromUrl( |
971 base::SysUTF8ToNSString(url.spec()), nstext); | 962 base::SysUTF8ToNSString(url.spec()), nstext); |
972 } else { | 963 } else { |
973 return ui::ClipboardUtil::PasteboardItemFromString(nstext); | 964 return ui::ClipboardUtil::PasteboardItemFromString(nstext); |
974 } | 965 } |
975 } | 966 } |
976 | 967 |
977 void OmniboxViewMac::CopyToPasteboard(NSPasteboard* pboard) { | 968 void OmniboxViewMac::CopyToPasteboard(NSPasteboard* pboard) { |
978 [pboard clearContents]; | 969 [pboard clearContents]; |
979 base::scoped_nsobject<NSPasteboardItem> item(CreatePasteboardItem()); | 970 base::scoped_nsobject<NSPasteboardItem> item(CreatePasteboardItem()); |
980 [pboard writeObjects:@[ item.get() ]]; | 971 [pboard writeObjects:@[ item.get() ]]; |
981 } | 972 } |
982 | 973 |
983 void OmniboxViewMac::ShowURL() { | |
984 DCHECK(ShouldEnableShowURL()); | |
985 OmniboxView::ShowURL(); | |
Peter Kasting
2016/08/13 05:03:44
Remember to eventually rip out the other call chai
Marc Treib
2016/08/16 12:00:17
Yup, follow-up on the way!
| |
986 } | |
987 | |
988 void OmniboxViewMac::OnPaste() { | 974 void OmniboxViewMac::OnPaste() { |
989 // This code currently expects |field_| to be focused. | 975 // This code currently expects |field_| to be focused. |
990 DCHECK([field_ currentEditor]); | 976 DCHECK([field_ currentEditor]); |
991 | 977 |
992 base::string16 text = GetClipboardText(); | 978 base::string16 text = GetClipboardText(); |
993 if (text.empty()) { | 979 if (text.empty()) { |
994 return; | 980 return; |
995 } | 981 } |
996 NSString* s = base::SysUTF16ToNSString(text); | 982 NSString* s = base::SysUTF16ToNSString(text); |
997 | 983 |
(...skipping 12 matching lines...) Expand all Loading... | |
1010 // Force a Paste operation to trigger the text_changed code in | 996 // Force a Paste operation to trigger the text_changed code in |
1011 // OnAfterPossibleChange(), even if identical contents are pasted | 997 // OnAfterPossibleChange(), even if identical contents are pasted |
1012 // into the text box. | 998 // into the text box. |
1013 state_before_change_.text.clear(); | 999 state_before_change_.text.clear(); |
1014 | 1000 |
1015 [editor replaceCharactersInRange:selectedRange withString:s]; | 1001 [editor replaceCharactersInRange:selectedRange withString:s]; |
1016 [editor didChangeText]; | 1002 [editor didChangeText]; |
1017 } | 1003 } |
1018 } | 1004 } |
1019 | 1005 |
1020 // TODO(dominich): Move to OmniboxView base class? Currently this is defined on | |
1021 // the AutocompleteTextFieldObserver but the logic is shared between all | |
1022 // platforms. Some refactor might be necessary to simplify this. Or at least | |
1023 // this method could call the OmniboxView version. | |
1024 bool OmniboxViewMac::ShouldEnableShowURL() { | |
1025 return controller()->GetToolbarModel()->WouldReplaceURL(); | |
1026 } | |
1027 | |
1028 bool OmniboxViewMac::CanPasteAndGo() { | 1006 bool OmniboxViewMac::CanPasteAndGo() { |
1029 return model()->CanPasteAndGo(GetClipboardText()); | 1007 return model()->CanPasteAndGo(GetClipboardText()); |
1030 } | 1008 } |
1031 | 1009 |
1032 int OmniboxViewMac::GetPasteActionStringId() { | 1010 int OmniboxViewMac::GetPasteActionStringId() { |
1033 base::string16 text(GetClipboardText()); | 1011 base::string16 text(GetClipboardText()); |
1034 DCHECK(model()->CanPasteAndGo(text)); | 1012 DCHECK(model()->CanPasteAndGo(text)); |
1035 return model()->IsPasteAndSearch(text) ? | 1013 return model()->IsPasteAndSearch(text) ? |
1036 IDS_PASTE_AND_SEARCH : IDS_PASTE_AND_GO; | 1014 IDS_PASTE_AND_SEARCH : IDS_PASTE_AND_GO; |
1037 } | 1015 } |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1162 display_text); | 1140 display_text); |
1163 NSDictionary* notification_info = @{ | 1141 NSDictionary* notification_info = @{ |
1164 NSAccessibilityAnnouncementKey : announcement, | 1142 NSAccessibilityAnnouncementKey : announcement, |
1165 NSAccessibilityPriorityKey : @(NSAccessibilityPriorityHigh) | 1143 NSAccessibilityPriorityKey : @(NSAccessibilityPriorityHigh) |
1166 }; | 1144 }; |
1167 NSAccessibilityPostNotificationWithUserInfo( | 1145 NSAccessibilityPostNotificationWithUserInfo( |
1168 [field_ window], | 1146 [field_ window], |
1169 NSAccessibilityAnnouncementRequestedNotification, | 1147 NSAccessibilityAnnouncementRequestedNotification, |
1170 notification_info); | 1148 notification_info); |
1171 } | 1149 } |
OLD | NEW |