Index: ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm |
diff --git a/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm b/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm |
index ba6ae8de275f17080ee428288b0bbbeba5c91462..d37b9d4ee1d5644c1c673d8123beafa094041053 100644 |
--- a/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm |
+++ b/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm |
@@ -29,6 +29,7 @@ |
#include "ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.h" |
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
#include "ios/chrome/browser/chrome_url_constants.h" |
+#include "ios/chrome/browser/experimental_flags.h" |
#include "ios/chrome/browser/reading_list/reading_list_model_factory.h" |
#include "ios/chrome/browser/search_engines/template_url_service_factory.h" |
#import "ios/chrome/browser/tabs/tab.h" |
@@ -47,6 +48,8 @@ |
#import "ios/chrome/browser/ui/reversed_animation.h" |
#include "ios/chrome/browser/ui/rtl_geometry.h" |
#import "ios/chrome/browser/ui/toolbar/keyboard_accessory_view.h" |
+#import "ios/chrome/browser/ui/toolbar/keyboard_accessory_view_protocol.h" |
+#import "ios/chrome/browser/ui/toolbar/new_keyboard_accessory_view.h" |
#import "ios/chrome/browser/ui/toolbar/toolbar_controller+protected.h" |
#import "ios/chrome/browser/ui/toolbar/toolbar_controller.h" |
#import "ios/chrome/browser/ui/toolbar/toolbar_model_ios.h" |
@@ -242,7 +245,7 @@ @interface WebToolbarController ()<LocationBarDelegate, |
UIButton* _voiceSearchButton; |
OmniboxTextFieldIOS* _omniBox; |
UIButton* _cancelButton; |
- KeyboardAccessoryView* _keyBoardAccessoryView; |
+ UIView<KeyboardAccessoryViewProtocol>* _keyboardAccessoryView; |
// Progress bar used to show what fraction of the page has loaded. |
MDCProgressView* _determinateProgressView; |
UIImageView* _omniboxBackground; |
@@ -875,10 +878,10 @@ - (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection { |
[self updateToolbarState]; |
// Update keyboard accessory views. |
- auto mode = _keyBoardAccessoryView.mode; |
- _keyBoardAccessoryView = nil; |
+ auto mode = _keyboardAccessoryView.mode; |
+ _keyboardAccessoryView = nil; |
[_omniBox setInputAccessoryView:[self keyboardAccessoryView]]; |
- _keyBoardAccessoryView.mode = mode; |
+ _keyboardAccessoryView.mode = mode; |
if ([_omniBox isFirstResponder]) { |
[_omniBox reloadInputViews]; |
} |
@@ -1261,7 +1264,7 @@ - (void)locationBarHasBecomeFirstResponder { |
[self.delegate locationBarDidBecomeFirstResponder:self]; |
[self animateMaterialOmnibox]; |
- _keyBoardAccessoryView.mode = VOICE_SEARCH; |
+ _keyboardAccessoryView.mode = VOICE_SEARCH; |
// Record the appropriate user action for focusing the omnibox. |
web::WebState* webState = [self.delegate currentWebState]; |
@@ -1299,13 +1302,13 @@ - (void)locationBarChanged { |
// If the voice search button is visible but about to be hidden (i.e. |
// the omnibox is no longer empty) then this is the first omnibox text so |
// record a user action. |
- if (_keyBoardAccessoryView.mode == VOICE_SEARCH && editingAndNotEmpty) { |
+ if (_keyboardAccessoryView.mode == VOICE_SEARCH && editingAndNotEmpty) { |
base::RecordAction(UserMetricsAction("MobileFirstTextInOmnibox")); |
} |
if (editingAndNotEmpty) { |
- _keyBoardAccessoryView.mode = KEY_SHORTCUTS; |
+ _keyboardAccessoryView.mode = KEY_SHORTCUTS; |
} else { |
- _keyBoardAccessoryView.mode = VOICE_SEARCH; |
+ _keyboardAccessoryView.mode = VOICE_SEARCH; |
} |
} |
@@ -1464,7 +1467,7 @@ - (void)keyboardAccessoryVoiceSearchTouchDown { |
if (ios::GetChromeBrowserProvider() |
->GetVoiceSearchProvider() |
->IsVoiceSearchEnabled()) { |
- [self preloadVoiceSearch:_keyBoardAccessoryView]; |
+ [self preloadVoiceSearch:_keyboardAccessoryView]; |
} |
} |
@@ -1475,12 +1478,18 @@ - (void)keyboardAccessoryVoiceSearchTouchUpInside { |
base::RecordAction(UserMetricsAction("MobileCustomRowVoiceSearch")); |
GenericChromeCommand* command = |
[[GenericChromeCommand alloc] initWithTag:IDC_VOICE_SEARCH]; |
- [_keyBoardAccessoryView chromeExecuteCommand:command]; |
+ [_keyboardAccessoryView chromeExecuteCommand:command]; |
} else { |
- _keyBoardAccessoryView.mode = KEY_SHORTCUTS; |
+ _keyboardAccessoryView.mode = KEY_SHORTCUTS; |
} |
} |
+- (void)keyboardAccessoryCameraSearchTouchUpInside { |
+ GenericChromeCommand* command = |
+ [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_QR_SCANNER]; |
+ [_keyboardAccessoryView chromeExecuteCommand:command]; |
+} |
+ |
- (void)keyPressed:(NSString*)title { |
NSString* text = [self updateTextForDotCom:title]; |
[_omniBox insertTextWhileEditing:text]; |
@@ -1842,18 +1851,28 @@ - (void)loadURLForQuery:(NSString*)query { |
} |
- (UIView*)keyboardAccessoryView { |
- if (!_keyBoardAccessoryView) { |
- NSArray<NSString*>* buttonTitles = |
- [NSArray arrayWithObjects:@":", @".", @"-", @"/", kDotComTLD, nil]; |
- _keyBoardAccessoryView = |
- [[KeyboardAccessoryView alloc] initWithButtons:buttonTitles |
- delegate:self]; |
- [_keyBoardAccessoryView |
+ if (!_keyboardAccessoryView) { |
+ if (experimental_flags::IsKeyboardAccessoryViewWithCameraSearchEnabled()) { |
+ // The '.' shortcut is left out because the new keyboard accessory view |
+ // has less free space for the shortcut buttons, and the '.' is already |
+ // present in the standard iOS keyboard. |
+ NSArray<NSString*>* buttonTitles = @[ @":", @"-", @"/", kDotComTLD ]; |
+ _keyboardAccessoryView = |
+ [[NewKeyboardAccessoryView alloc] initWithButtons:buttonTitles |
+ delegate:self]; |
+ } else { |
+ NSArray<NSString*>* buttonTitles = |
+ @[ @":", @".", @"-", @"/", kDotComTLD ]; |
+ _keyboardAccessoryView = |
+ [[KeyboardAccessoryView alloc] initWithButtons:buttonTitles |
+ delegate:self]; |
+ } |
+ [_keyboardAccessoryView |
setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; |
_hardwareKeyboardWatcher = [[HardwareKeyboardWatcher alloc] |
- initWithAccessoryView:_keyBoardAccessoryView]; |
+ initWithAccessoryView:_keyboardAccessoryView]; |
} |
- return _keyBoardAccessoryView; |
+ return _keyboardAccessoryView; |
} |
- (void)preloadVoiceSearch:(id)sender { |