Commit 44698886 authored by Gauthier Ambard's avatar Gauthier Ambard Committed by Commit Bot

Log and cancel omnibox edit when button is pressed

When any button of the toolbar is pressed, the event should be logged.
Also if the omnibox is being edited, the edit mode should be removed.
This CL adds a method to add those actions to all buttons.

Bug: 795257
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Change-Id: If6b34153b6f2fcaa7fa9037f26a7f0a15ab75da2
Reviewed-on: https://chromium-review.googlesource.com/829315Reviewed-by: default avatarOlivier Robin <olivierrobin@chromium.org>
Commit-Queue: Gauthier Ambard <gambard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524682}
parent a8268b02
......@@ -64,6 +64,7 @@ source_set("content_suggestions") {
"//ios/chrome/browser/ui/overscroll_actions",
"//ios/chrome/browser/ui/reading_list",
"//ios/chrome/browser/ui/toolbar",
"//ios/chrome/browser/ui/toolbar/clean:toolbar_ui",
"//ios/chrome/browser/web_state_list",
"//ios/chrome/common/app_group",
"//ios/public/provider/chrome/browser",
......
......@@ -18,7 +18,7 @@
#import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h"
#import "ios/chrome/browser/ui/ntp/new_tab_page_header_constants.h"
#import "ios/chrome/browser/ui/ntp/new_tab_page_header_view.h"
#import "ios/chrome/browser/ui/toolbar/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/clean/omnibox_focuser.h"
#import "ios/chrome/browser/ui/uikit_ui_util.h"
#import "ios/chrome/browser/ui/url_loader.h"
#import "ios/chrome/browser/ui/util/constraints_ui_util.h"
......
......@@ -34,6 +34,7 @@ source_set("ntp_header") {
"//ios/chrome/browser/ui/favicon:favicon_ui",
"//ios/chrome/browser/ui/toolbar",
"//ios/chrome/browser/ui/toolbar:resource_macros",
"//ios/chrome/browser/ui/toolbar/clean:toolbar_ui",
"//ios/chrome/browser/ui/toolbar/public",
"//ios/chrome/browser/ui/toolbar/public:toolbar_base_feature",
"//ios/chrome/common",
......
......@@ -12,7 +12,7 @@
#import "ios/chrome/browser/ui/commands/application_commands.h"
#import "ios/chrome/browser/ui/commands/browser_commands.h"
#import "ios/chrome/browser/ui/rtl_geometry.h"
#import "ios/chrome/browser/ui/toolbar/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/clean/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/public/toolbar_controller_constants.h"
#import "ios/chrome/browser/ui/toolbar/toolbar_controller+protected.h"
#include "ios/chrome/browser/ui/toolbar/toolbar_resource_macros.h"
......
......@@ -11,7 +11,6 @@ source_set("toolbar") {
"legacy_toolbar_view.mm",
"new_tab_button.h",
"new_tab_button.mm",
"omnibox_focuser.h",
"toolbar_adapter.h",
"toolbar_adapter.mm",
"toolbar_controller+protected.h",
......
......@@ -55,6 +55,7 @@ source_set("toolbar") {
source_set("toolbar_ui") {
sources = [
"omnibox_focuser.h",
"toolbar_button_updater.h",
"toolbar_button_updater.mm",
"toolbar_consumer.h",
......
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_CHROME_BROWSER_UI_TOOLBAR_OMNIBOX_FOCUSER_H_
#define IOS_CHROME_BROWSER_UI_TOOLBAR_OMNIBOX_FOCUSER_H_
#ifndef IOS_CHROME_BROWSER_UI_TOOLBAR_CLEAN_OMNIBOX_FOCUSER_H_
#define IOS_CHROME_BROWSER_UI_TOOLBAR_CLEAN_OMNIBOX_FOCUSER_H_
#import <Foundation/Foundation.h>
......@@ -22,4 +22,4 @@
- (void)onFakeboxAnimationComplete;
@end
#endif // IOS_CHROME_BROWSER_UI_TOOLBAR_OMNIBOX_FOCUSER_H_
#endif // IOS_CHROME_BROWSER_UI_TOOLBAR_CLEAN_OMNIBOX_FOCUSER_H_
......@@ -8,7 +8,7 @@
#import <UIKit/UIKit.h>
#include "ios/chrome/browser/ui/qr_scanner/requirements/qr_scanner_result_loading.h"
#import "ios/chrome/browser/ui/toolbar/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/clean/omnibox_focuser.h"
#import "ios/chrome/browser/ui/tools_menu/public/tools_menu_presentation_provider.h"
#include "ios/public/provider/chrome/browser/voice/voice_search_controller_delegate.h"
......
......@@ -180,7 +180,8 @@
self.toolbarViewController =
[[ToolbarViewController alloc] initWithDispatcher:self.dispatcher
buttonFactory:factory
buttonUpdater:self.buttonUpdater];
buttonUpdater:self.buttonUpdater
omniboxFocuser:self];
self.toolbarViewController.locationBarView = self.locationBarView;
self.toolbarViewController.dispatcher = self.dispatcher;
......
......@@ -14,6 +14,7 @@
@protocol ApplicationCommands;
@protocol BrowserCommands;
@protocol OmniboxFocuser;
@class ToolbarButtonFactory;
@class ToolbarButtonUpdater;
@class ToolbarToolsMenuButton;
......@@ -30,6 +31,7 @@
(id<ApplicationCommands, BrowserCommands>)dispatcher
buttonFactory:(ToolbarButtonFactory*)buttonFactory
buttonUpdater:(ToolbarButtonUpdater*)buttonUpdater
omniboxFocuser:(id<OmniboxFocuser>)omniboxFocuser
NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;
......@@ -45,6 +47,8 @@
@property(nonatomic, strong, readonly) ToolbarToolsMenuButton* toolsMenuButton;
// Whether the toolbar is in the expanded state or not.
@property(nonatomic, assign) BOOL expanded;
// Omnibox focuser.
@property(nonatomic, weak) id<OmniboxFocuser> omniboxFocuser;
// Adds the toolbar expanded state animations to |animator|, and changes the
// toolbar constraints in preparation for the animation.
......
......@@ -5,6 +5,7 @@
#import "ios/chrome/browser/ui/toolbar/clean/toolbar_view_controller.h"
#import "base/mac/foundation_util.h"
#include "base/metrics/user_metrics.h"
#import "ios/chrome/browser/ui/bubble/bubble_util.h"
#import "ios/chrome/browser/ui/commands/application_commands.h"
#import "ios/chrome/browser/ui/commands/browser_commands.h"
......@@ -12,6 +13,7 @@
#import "ios/chrome/browser/ui/commands/start_voice_search_command.h"
#import "ios/chrome/browser/ui/fullscreen/fullscreen_scroll_end_animator.h"
#include "ios/chrome/browser/ui/rtl_geometry.h"
#import "ios/chrome/browser/ui/toolbar/clean/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/clean/toolbar_button.h"
#import "ios/chrome/browser/ui/toolbar/clean/toolbar_button_factory.h"
#import "ios/chrome/browser/ui/toolbar/clean/toolbar_button_updater.h"
......@@ -137,18 +139,21 @@
@synthesize trailingFakeSafeAreaConstraint = _trailingFakeSafeAreaConstraint;
@synthesize leadingSafeAreaConstraint = _leadingSafeAreaConstraint;
@synthesize trailingSafeAreaConstraint = _trailingSafeAreaConstraint;
@synthesize omniboxFocuser = _omniboxFocuser;
#pragma mark - Public
- (instancetype)initWithDispatcher:
(id<ApplicationCommands, BrowserCommands>)dispatcher
buttonFactory:(ToolbarButtonFactory*)buttonFactory
buttonUpdater:(ToolbarButtonUpdater*)buttonUpdater {
buttonUpdater:(ToolbarButtonUpdater*)buttonUpdater
omniboxFocuser:(id<OmniboxFocuser>)omniboxFocuser {
_dispatcher = dispatcher;
self = [super initWithNibName:nil bundle:nil];
if (self) {
_buttonFactory = buttonFactory;
_buttonUpdater = buttonUpdater;
_omniboxFocuser = omniboxFocuser;
[self setUpToolbarButtons];
[self setUpLocationBarContainer];
[self setUpProgressBar];
......@@ -607,6 +612,7 @@
initWithTarget:self
action:@selector(handleLongPress:)];
[self.backButton addGestureRecognizer:backHistoryLongPress];
[self addStandardActionsForButton:self.backButton];
// Forward button.
self.forwardButton = [self.buttonFactory forwardToolbarButton];
......@@ -628,6 +634,7 @@
initWithTarget:self
action:@selector(handleLongPress:)];
[self.forwardButton addGestureRecognizer:forwardHistoryLongPress];
[self addStandardActionsForButton:self.forwardButton];
// Tab switcher Strip button.
self.tabSwitchStripButton =
......@@ -640,6 +647,7 @@
[self.tabSwitchStripButton addTarget:self.dispatcher
action:@selector(displayTabSwitcher)
forControlEvents:UIControlEventTouchUpInside];
[self addStandardActionsForButton:self.tabSwitchStripButton];
// Tools menu button.
self.toolsMenuButton = [self.buttonFactory toolsMenuToolbarButton];
......@@ -651,6 +659,7 @@
[self.toolsMenuButton addTarget:self.dispatcher
action:@selector(showToolsMenu)
forControlEvents:UIControlEventTouchUpInside];
[self addStandardActionsForButton:self.toolsMenuButton];
// Share button.
self.shareButton = [self.buttonFactory shareToolbarButton];
......@@ -662,6 +671,7 @@
[self.shareButton addTarget:self.dispatcher
action:@selector(sharePage)
forControlEvents:UIControlEventTouchUpInside];
[self addStandardActionsForButton:self.shareButton];
// Reload button.
self.reloadButton = [self.buttonFactory reloadToolbarButton];
......@@ -672,6 +682,7 @@
[self.reloadButton addTarget:self.dispatcher
action:@selector(reload)
forControlEvents:UIControlEventTouchUpInside];
[self addStandardActionsForButton:self.reloadButton];
// Stop button.
self.stopButton = [self.buttonFactory stopToolbarButton];
......@@ -682,6 +693,7 @@
[self.stopButton addTarget:self.dispatcher
action:@selector(stopLoading)
forControlEvents:UIControlEventTouchUpInside];
[self addStandardActionsForButton:self.stopButton];
// Voice Search button.
self.voiceSearchButton = [self.buttonFactory voiceSearchButton];
......@@ -691,6 +703,7 @@
addObject:[self.voiceSearchButton.widthAnchor
constraintEqualToConstant:kToolbarButtonWidth]];
self.voiceSearchButton.enabled = NO;
[self addStandardActionsForButton:self.voiceSearchButton];
// Bookmark button.
self.bookmarkButton = [self.buttonFactory bookmarkToolbarButton];
......@@ -701,6 +714,7 @@
[self.bookmarkButton addTarget:self.dispatcher
action:@selector(bookmarkPage)
forControlEvents:UIControlEventTouchUpInside];
[self addStandardActionsForButton:self.bookmarkButton];
// Contract button.
self.contractButton = [self.buttonFactory contractToolbarButton];
......@@ -1152,4 +1166,40 @@
return IsIPadIdiom() ? kLeadingMarginIPad : 0;
}
// Registers the actions which will be triggered when tapping the button.
- (void)addStandardActionsForButton:(UIButton*)button {
if (button != self.toolsMenuButton) {
[button addTarget:self.omniboxFocuser
action:@selector(cancelOmniboxEdit)
forControlEvents:UIControlEventTouchUpInside];
}
[button addTarget:self
action:@selector(recordUserMetrics:)
forControlEvents:UIControlEventTouchUpInside];
}
// Records the use of a button.
- (IBAction)recordUserMetrics:(id)sender {
if (sender == self.backButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarBack"));
} else if (sender == self.forwardButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarForward"));
} else if (sender == self.reloadButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarReload"));
} else if (sender == self.stopButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarStop"));
} else if (sender == self.voiceSearchButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarVoiceSearch"));
} else if (sender == self.bookmarkButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarToggleBookmark"));
} else if (sender == self.toolsMenuButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarShowMenu"));
} else if (sender == self.tabSwitchStripButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarShowStackView"));
} else if (sender == self.shareButton) {
base::RecordAction(base::UserMetricsAction("MobileToolbarShareMenu"));
} else {
NOTREACHED();
}
}
@end
......@@ -12,7 +12,7 @@
#import "ios/chrome/browser/ui/fullscreen/fullscreen_ui_element.h"
#import "ios/chrome/browser/ui/ntp/incognito_view_controller_delegate.h"
#import "ios/chrome/browser/ui/side_swipe/side_swipe_toolbar_interacting.h"
#import "ios/chrome/browser/ui/toolbar/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/clean/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/public/abstract_web_toolbar.h"
#import "ios/chrome/browser/ui/toolbar/toolbar_snapshot_providing.h"
#import "ios/chrome/browser/ui/tools_menu/public/tools_menu_presentation_provider.h"
......
......@@ -11,8 +11,8 @@
#import "ios/chrome/browser/ui/fullscreen/fullscreen_controller_factory.h"
#import "ios/chrome/browser/ui/fullscreen/fullscreen_features.h"
#import "ios/chrome/browser/ui/fullscreen/fullscreen_ui_updater.h"
#import "ios/chrome/browser/ui/toolbar/clean/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/clean/toolbar_button_updater.h"
#import "ios/chrome/browser/ui/toolbar/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/web_toolbar_controller.h"
#import "ios/chrome/browser/ui/tools_menu/public/tools_menu_constants.h"
#import "ios/chrome/browser/ui/tools_menu/tools_menu_coordinator.h"
......
......@@ -9,7 +9,7 @@
#include "ios/chrome/browser/ui/omnibox/omnibox_popup_positioner.h"
#include "ios/chrome/browser/ui/qr_scanner/requirements/qr_scanner_result_loading.h"
#import "ios/chrome/browser/ui/toolbar/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/clean/omnibox_focuser.h"
#import "ios/chrome/browser/ui/toolbar/public/abstract_web_toolbar.h"
#import "ios/chrome/browser/ui/toolbar/toolbar_controller.h"
#include "ios/public/provider/chrome/browser/voice/voice_search_controller_delegate.h"
......
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