blob: 90bef95732acad8b57d405f19c2a5d31880dd4c5 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_CHROME_BROWSER_OMNIBOX_MODEL_AUTOCOMPLETE_CONTROLLER_OBSERVER_BRIDGE_H_
#define IOS_CHROME_BROWSER_OMNIBOX_MODEL_AUTOCOMPLETE_CONTROLLER_OBSERVER_BRIDGE_H_
#import <Foundation/Foundation.h>
#import "components/omnibox/browser/autocomplete_controller.h"
// Objective-C observer for AutocompleteController.
@protocol AutocompleteControllerObserver <NSObject>
@optional
- (void)autocompleteController:(AutocompleteController*)controller
didStartWithInput:(const AutocompleteInput&)input;
- (void)autocompleteController:(AutocompleteController*)controller
didUpdateResultChangingDefaultMatch:(BOOL)defaultMatchChanged;
- (void)autocompleteController:(AutocompleteController*)controller
didMLScore:(const AutocompleteResult&)result;
- (void)autocompleteControllerDidTriggerStopTimer:
(const AutocompleteInput&)input;
@end
// Bridge class to allow C++ AutocompleteController to call Objective-C
// AutocompleteControllerObserver.
class AutocompleteControllerObserverBridge
: public AutocompleteController::Observer {
public:
AutocompleteControllerObserverBridge(
id<AutocompleteControllerObserver> observer);
~AutocompleteControllerObserverBridge() override;
AutocompleteControllerObserverBridge(
const AutocompleteControllerObserverBridge&) = delete;
AutocompleteControllerObserverBridge& operator=(
const AutocompleteControllerObserverBridge&) = delete;
// AutocompleteController::Observer.
void OnStart(AutocompleteController* controller,
const AutocompleteInput& input) override;
void OnResultChanged(AutocompleteController* controller,
bool default_match_changed) override;
void OnMlScored(AutocompleteController* controller,
const AutocompleteResult& result) override;
void OnAutocompleteStopTimerTriggered(
const AutocompleteInput& input) override;
private:
__weak id<AutocompleteControllerObserver> observer_ = nil;
};
#endif // IOS_CHROME_BROWSER_OMNIBOX_MODEL_AUTOCOMPLETE_CONTROLLER_OBSERVER_BRIDGE_H_