Commit 263b5b10 authored by Gauthier Ambard's avatar Gauthier Ambard Committed by Commit Bot

Add VoiceSearch and QRCode to ToolbarCoordinator

This CL makes ToolbarCoordinator conforms to QRScannerResultLoading and
VoiceSearchControllerDelegate protocols.

Bug: 784911
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Change-Id: I4383e36a97304c7e79b22ee8c5de968d19678744
Reviewed-on: https://chromium-review.googlesource.com/774282
Commit-Queue: Gauthier Ambard <gambard@chromium.org>
Reviewed-by: default avatarOlivier Robin <olivierrobin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#517515}
parent 4a300484
...@@ -18,8 +18,11 @@ source_set("toolbar") { ...@@ -18,8 +18,11 @@ source_set("toolbar") {
":toolbar_ui", ":toolbar_ui",
"//base", "//base",
"//components/google/core/browser", "//components/google/core/browser",
"//components/search_engines",
"//ios/chrome/browser", "//ios/chrome/browser",
"//ios/chrome/browser/autocomplete",
"//ios/chrome/browser/browser_state", "//ios/chrome/browser/browser_state",
"//ios/chrome/browser/search_engines",
"//ios/chrome/browser/ui", "//ios/chrome/browser/ui",
"//ios/chrome/browser/ui/broadcaster", "//ios/chrome/browser/ui/broadcaster",
"//ios/chrome/browser/ui/browser_list", "//ios/chrome/browser/ui/browser_list",
...@@ -29,9 +32,11 @@ source_set("toolbar") { ...@@ -29,9 +32,11 @@ source_set("toolbar") {
"//ios/chrome/browser/ui/history_popup/requirements", "//ios/chrome/browser/ui/history_popup/requirements",
"//ios/chrome/browser/ui/omnibox", "//ios/chrome/browser/ui/omnibox",
"//ios/chrome/browser/ui/omnibox:omnibox_internal", "//ios/chrome/browser/ui/omnibox:omnibox_internal",
"//ios/chrome/browser/ui/qr_scanner/requirements",
"//ios/chrome/browser/ui/toolbar/public", "//ios/chrome/browser/ui/toolbar/public",
"//ios/chrome/browser/ui/tools_menu:configuration", "//ios/chrome/browser/ui/tools_menu:configuration",
"//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list",
"//ios/public/provider/chrome/browser/voice",
"//ios/third_party/material_components_ios", "//ios/third_party/material_components_ios",
"//ios/web", "//ios/web",
] ]
......
...@@ -7,7 +7,9 @@ ...@@ -7,7 +7,9 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.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/omnibox_focuser.h"
#include "ios/public/provider/chrome/browser/voice/voice_search_controller_delegate.h"
@protocol ApplicationCommands; @protocol ApplicationCommands;
@protocol BrowserCommands; @protocol BrowserCommands;
...@@ -22,7 +24,9 @@ class WebState; ...@@ -22,7 +24,9 @@ class WebState;
} }
// Coordinator to run a toolbar -- a UI element housing controls. // Coordinator to run a toolbar -- a UI element housing controls.
@interface ToolbarCoordinator : NSObject<OmniboxFocuser> @interface ToolbarCoordinator : NSObject<OmniboxFocuser,
QRScannerResultLoading,
VoiceSearchControllerDelegate>
// Weak reference to ChromeBrowserState; // Weak reference to ChromeBrowserState;
@property(nonatomic, assign) ios::ChromeBrowserState* browserState; @property(nonatomic, assign) ios::ChromeBrowserState* browserState;
......
...@@ -12,8 +12,11 @@ ...@@ -12,8 +12,11 @@
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
#include "components/google/core/browser/google_util.h" #include "components/google/core/browser/google_util.h"
#include "components/omnibox/browser/omnibox_edit_model.h" #include "components/omnibox/browser/omnibox_edit_model.h"
#include "components/search_engines/util.h"
#include "ios/chrome/browser/autocomplete/autocomplete_scheme_classifier_impl.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/chrome_url_constants.h" #include "ios/chrome/browser/chrome_url_constants.h"
#include "ios/chrome/browser/search_engines/template_url_service_factory.h"
#include "ios/chrome/browser/ui/omnibox/location_bar_controller.h" #include "ios/chrome/browser/ui/omnibox/location_bar_controller.h"
#include "ios/chrome/browser/ui/omnibox/location_bar_controller_impl.h" #include "ios/chrome/browser/ui/omnibox/location_bar_controller_impl.h"
#include "ios/chrome/browser/ui/omnibox/location_bar_delegate.h" #include "ios/chrome/browser/ui/omnibox/location_bar_delegate.h"
...@@ -240,4 +243,56 @@ ...@@ -240,4 +243,56 @@
self.viewController.view.hidden = NO; self.viewController.view.hidden = NO;
} }
#pragma mark - VoiceSearchControllerDelegate
- (void)receiveVoiceSearchResult:(NSString*)result {
DCHECK(result);
[self loadURLForQuery:result];
}
#pragma mark - QRScannerResultLoading
- (void)receiveQRScannerResult:(NSString*)result loadImmediately:(BOOL)load {
DCHECK(result);
if (load) {
[self loadURLForQuery:result];
} else {
[self focusOmnibox];
[_locationBarView.textField insertTextWhileEditing:result];
// The call to |setText| shouldn't be needed, but without it the "Go" button
// of the keyboard is disabled.
[_locationBarView.textField setText:result];
// Notify the accessibility system to start reading the new contents of the
// Omnibox.
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
_locationBarView.textField);
}
}
#pragma mark - Private
// Navigate to |query| from omnibox.
- (void)loadURLForQuery:(NSString*)query {
GURL searchURL;
metrics::OmniboxInputType type = AutocompleteInput::Parse(
base::SysNSStringToUTF16(query), std::string(),
AutocompleteSchemeClassifierImpl(), nullptr, nullptr, &searchURL);
if (type != metrics::OmniboxInputType::URL || !searchURL.is_valid()) {
searchURL = GetDefaultSearchURLForSearchTerms(
ios::TemplateURLServiceFactory::GetForBrowserState(self.browserState),
base::SysNSStringToUTF16(query));
}
if (searchURL.is_valid()) {
// It is necessary to include PAGE_TRANSITION_FROM_ADDRESS_BAR in the
// transition type is so that query-in-the-omnibox is triggered for the
// URL.
ui::PageTransition transition = ui::PageTransitionFromInt(
ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR);
[self.URLLoader loadURL:GURL(searchURL)
referrer:web::Referrer()
transition:transition
rendererInitiated:NO];
}
}
@end @end
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
#pragma mark - VoiceSearchControllerDelegate #pragma mark - VoiceSearchControllerDelegate
- (void)receiveVoiceSearchResult:(NSString*)voiceResult { - (void)receiveVoiceSearchResult:(NSString*)voiceResult {
return; [self.toolbarCoordinator receiveVoiceSearchResult:voiceResult];
} }
#pragma mark - ActivityServicePositioner #pragma mark - ActivityServicePositioner
...@@ -186,7 +186,8 @@ ...@@ -186,7 +186,8 @@
- (void)receiveQRScannerResult:(NSString*)qrScannerResult - (void)receiveQRScannerResult:(NSString*)qrScannerResult
loadImmediately:(BOOL)load { loadImmediately:(BOOL)load {
return; [self.toolbarCoordinator receiveQRScannerResult:qrScannerResult
loadImmediately:load];
} }
#pragma mark - BubbleViewAnchorPointProvider #pragma mark - BubbleViewAnchorPointProvider
......
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