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") {
":toolbar_ui",
"//base",
"//components/google/core/browser",
"//components/search_engines",
"//ios/chrome/browser",
"//ios/chrome/browser/autocomplete",
"//ios/chrome/browser/browser_state",
"//ios/chrome/browser/search_engines",
"//ios/chrome/browser/ui",
"//ios/chrome/browser/ui/broadcaster",
"//ios/chrome/browser/ui/browser_list",
......@@ -29,9 +32,11 @@ source_set("toolbar") {
"//ios/chrome/browser/ui/history_popup/requirements",
"//ios/chrome/browser/ui/omnibox",
"//ios/chrome/browser/ui/omnibox:omnibox_internal",
"//ios/chrome/browser/ui/qr_scanner/requirements",
"//ios/chrome/browser/ui/toolbar/public",
"//ios/chrome/browser/ui/tools_menu:configuration",
"//ios/chrome/browser/web_state_list",
"//ios/public/provider/chrome/browser/voice",
"//ios/third_party/material_components_ios",
"//ios/web",
]
......
......@@ -7,7 +7,9 @@
#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"
#include "ios/public/provider/chrome/browser/voice/voice_search_controller_delegate.h"
@protocol ApplicationCommands;
@protocol BrowserCommands;
......@@ -22,7 +24,9 @@ class WebState;
}
// Coordinator to run a toolbar -- a UI element housing controls.
@interface ToolbarCoordinator : NSObject<OmniboxFocuser>
@interface ToolbarCoordinator : NSObject<OmniboxFocuser,
QRScannerResultLoading,
VoiceSearchControllerDelegate>
// Weak reference to ChromeBrowserState;
@property(nonatomic, assign) ios::ChromeBrowserState* browserState;
......
......@@ -12,8 +12,11 @@
#include "base/strings/sys_string_conversions.h"
#include "components/google/core/browser/google_util.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/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_impl.h"
#include "ios/chrome/browser/ui/omnibox/location_bar_delegate.h"
......@@ -240,4 +243,56 @@
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
......@@ -153,7 +153,7 @@
#pragma mark - VoiceSearchControllerDelegate
- (void)receiveVoiceSearchResult:(NSString*)voiceResult {
return;
[self.toolbarCoordinator receiveVoiceSearchResult:voiceResult];
}
#pragma mark - ActivityServicePositioner
......@@ -186,7 +186,8 @@
- (void)receiveQRScannerResult:(NSString*)qrScannerResult
loadImmediately:(BOOL)load {
return;
[self.toolbarCoordinator receiveQRScannerResult:qrScannerResult
loadImmediately:load];
}
#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