Commit accb327f authored by Javier Ernesto Flores Robles's avatar Javier Ernesto Flores Robles Committed by Commit Bot

[iOS][VoiceSearch] Call the right selector in the delegate

crrev.com/c/1742139 introduced a regression while fixing the jumping
icons bug. While this fixes the new bug, the ability to preload the
voice search when pressing down the mic button has been removed. This
is removed from iPhones for consistency, because UIBarButtonItem
supports only one action, and UIButton can't be used in iPads as
described in the original CL.

The a11y ID was renamed to something unique. Previously there where
2 views with the same ID at the same time.

An internal follow up CL contains the regression test.

Bug: 996260, 984905
Change-Id: I07ac763a92b0a462cefe1b1a6dd4119357c77ea7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1768323Reviewed-by: default avatarKurt Horimoto <kkhorimoto@chromium.org>
Reviewed-by: default avatarMark Cogan <marq@chromium.org>
Commit-Queue: Javier Ernesto Flores Robles <javierrobles@chromium.org>
Cr-Commit-Position: refs/heads/master@{#691573}
parent 6f03093b
......@@ -15,9 +15,6 @@
// Delegate protocol for the KeyboardAccessoryView.
@protocol ToolbarAssistiveKeyboardDelegate
// Notifies the delegate that the Voice Search button was pressed.
- (void)keyboardAccessoryVoiceSearchTouchDown:(UIView*)view;
// Notifies the delegate that a touch up occurred in the Voice Search button.
- (void)keyboardAccessoryVoiceSearchTouchUpInside:(UIView*)view;
......
......@@ -26,18 +26,11 @@
#pragma mark - Public
- (void)keyboardAccessoryVoiceSearchTouchDown:(UIView*)view {
if (ios::GetChromeBrowserProvider()
->GetVoiceSearchProvider()
->IsVoiceSearchEnabled()) {
[self.dispatcher preloadVoiceSearch];
}
}
- (void)keyboardAccessoryVoiceSearchTouchUpInside:(UIView*)view {
if (ios::GetChromeBrowserProvider()
->GetVoiceSearchProvider()
->IsVoiceSearchEnabled()) {
[self.dispatcher preloadVoiceSearch];
base::RecordAction(base::UserMetricsAction("MobileCustomRowVoiceSearch"));
// Since the keyboard accessory view is in a different window than the main
// UIViewController upon which Voice Search will be presented, the guide
......
......@@ -7,6 +7,9 @@
#import <UIKit/UIKit.h>
// The accessibility identifier for the Voice Search button.
extern NSString* const kVoiceSearchInputAccessoryViewID;
@protocol ToolbarAssistiveKeyboardDelegate;
// Returns the leading buttons of the assistive view.
......
......@@ -9,11 +9,16 @@
#import "ios/chrome/browser/ui/util/uikit_ui_util.h"
#include "ios/chrome/grit/ios_strings.h"
#include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/l10n/l10n_util_mac.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
NSString* const kVoiceSearchInputAccessoryViewID =
@"kVoiceSearchInputAccessoryViewID";
namespace {
UIButton* ButtonWithIcon(NSString* iconName) {
......@@ -38,12 +43,10 @@ NSArray<UIButton*>* ToolbarAssistiveKeyboardLeadingButtons(
id<ToolbarAssistiveKeyboardDelegate> delegate) {
UIButton* voiceSearchButton =
ButtonWithIcon(@"keyboard_accessory_voice_search");
[voiceSearchButton addTarget:delegate
action:@selector(keyboardAccessoryVoiceSearchTouchDown:)
forControlEvents:UIControlEventTouchDown];
SetA11yLabelAndUiAutomationName(voiceSearchButton,
IDS_IOS_KEYBOARD_ACCESSORY_VIEW_VOICE_SEARCH,
@"Voice Search");
NSString* accessibilityLabel =
l10n_util::GetNSString(IDS_IOS_KEYBOARD_ACCESSORY_VIEW_VOICE_SEARCH);
voiceSearchButton.accessibilityLabel = accessibilityLabel;
voiceSearchButton.accessibilityIdentifier = kVoiceSearchInputAccessoryViewID;
[voiceSearchButton
addTarget:delegate
action:@selector(keyboardAccessoryVoiceSearchTouchUpInside:)
......
......@@ -10,6 +10,8 @@
#import "ios/chrome/browser/ui/toolbar/keyboard_assist/toolbar_ui_bar_button_item.h"
#import "ios/chrome/browser/ui/util/uikit_ui_util.h"
#include "ios/chrome/grit/ios_strings.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/l10n/l10n_util_mac.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
......@@ -24,10 +26,11 @@ NSArray<UIBarButtonItemGroup*>* ToolbarAssistiveKeyboardLeadingBarButtonGroups(
initWithImage:voiceSearchIcon
style:UIBarButtonItemStylePlain
target:delegate
action:@selector(keyboardAccessoryVoiceSearchTouchDown:)];
SetA11yLabelAndUiAutomationName(voiceSearchItem,
IDS_IOS_KEYBOARD_ACCESSORY_VIEW_VOICE_SEARCH,
@"Voice Search");
action:@selector(keyboardAccessoryVoiceSearchTouchUpInside:)];
NSString* accessibilityLabel =
l10n_util::GetNSString(IDS_IOS_KEYBOARD_ACCESSORY_VIEW_VOICE_SEARCH);
voiceSearchItem.accessibilityLabel = accessibilityLabel;
voiceSearchItem.accessibilityIdentifier = kVoiceSearchInputAccessoryViewID;
UIImage* cameraIcon = [[UIImage imageNamed:@"keyboard_accessory_qr_scanner"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
......
......@@ -256,6 +256,7 @@ source_set("test_support") {
"//ios/chrome/browser/ui/tab_grid/grid:grid_ui_constants",
"//ios/chrome/browser/ui/table_view/cells",
"//ios/chrome/browser/ui/toolbar/buttons",
"//ios/chrome/browser/ui/toolbar/keyboard_assist",
"//ios/chrome/browser/ui/toolbar/public",
"//ios/chrome/browser/ui/util",
"//ios/chrome/test/app:test_support",
......@@ -356,6 +357,7 @@ source_set("eg_app_support+eg2") {
"//ios/chrome/browser/ui/static_content",
"//ios/chrome/browser/ui/tab_grid:tab_grid_ui_constants",
"//ios/chrome/browser/ui/tab_grid/grid:grid_ui_constants",
"//ios/chrome/browser/ui/toolbar/keyboard_assist",
"//ios/chrome/browser/ui/toolbar/public",
"//ios/chrome/browser/ui/util",
"//ios/chrome/test/app:test_support",
......
......@@ -225,6 +225,9 @@ id<GREYMatcher> PaymentRequestErrorView();
// Returns matcher for the voice search button on the main Settings screen.
id<GREYMatcher> VoiceSearchButton();
// Returns matcher for the voice search button on the omnibox input accessory.
id<GREYMatcher> VoiceSearchInputAccessoryButton();
// Returns matcher for the settings main menu view.
id<GREYMatcher> SettingsCollectionView();
......
......@@ -285,6 +285,10 @@ id<GREYMatcher> VoiceSearchButton() {
return [ChromeMatchersAppInterface voiceSearchButton];
}
id<GREYMatcher> VoiceSearchInputAccessoryButton() {
return [ChromeMatchersAppInterface voiceSearchInputAccessoryButton];
}
id<GREYMatcher> SettingsCollectionView() {
return [ChromeMatchersAppInterface settingsCollectionView];
}
......
......@@ -229,6 +229,9 @@
// Returns matcher for the voice search button on the main Settings screen.
+ (id<GREYMatcher>)voiceSearchButton;
// Returns matcher for the voice search button on the omnibox input accessory.
+ (id<GREYMatcher>)voiceSearchInputAccessoryButton;
// Returns matcher for the settings main menu view.
+ (id<GREYMatcher>)settingsCollectionView;
......
......@@ -35,6 +35,7 @@
#import "ios/chrome/browser/ui/static_content/static_html_view_controller.h"
#import "ios/chrome/browser/ui/tab_grid/grid/grid_constants.h"
#import "ios/chrome/browser/ui/tab_grid/tab_grid_constants.h"
#import "ios/chrome/browser/ui/toolbar/keyboard_assist/toolbar_assistive_keyboard_views_utils.h"
#import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h"
#import "ios/chrome/browser/ui/util/ui_util.h"
#import "ios/chrome/browser/ui/util/uikit_ui_util.h"
......@@ -516,6 +517,10 @@ UIView* SubviewWithAccessibilityIdentifier(NSString* accessibility_id,
grey_accessibilityTrait(UIAccessibilityTraitButton), nil);
}
+ (id<GREYMatcher>)voiceSearchInputAccessoryButton {
return grey_accessibilityID(kVoiceSearchInputAccessoryViewID);
}
+ (id<GREYMatcher>)settingsCollectionView {
return grey_accessibilityID(kSettingsTableViewId);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment