| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_CONTROLLER_EMITTER_H_ |
| #define COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_CONTROLLER_EMITTER_H_ |
| |
| #include "build/build_config.h" |
| #include "components/keyed_service/core/keyed_service.h" |
| #include "components/omnibox/browser/autocomplete_controller.h" |
| #include "components/omnibox/browser/autocomplete_controller_delegate.h" |
| |
| #if !defined(OS_IOS) |
| #include "content/public/browser/browser_context.h" |
| #endif // !defined(OS_IOS) |
| |
| // Collects logs of all autocomplete queries and responses for a given profile |
| // and notifies observers (chrome://omnibox debug page). |
| class OmniboxControllerEmitter : public KeyedService { |
| public: |
| class Observer : public base::CheckedObserver { |
| public: |
| // Invoked when new autocomplete queries are made from the omnibox |
| // controller or when those queries' results change. |
| virtual void OnOmniboxQuery(AutocompleteController* controller) = 0; |
| virtual void OnOmniboxResultChanged(bool default_match_changed, |
| AutocompleteController* controller) = 0; |
| }; |
| |
| #if !defined(OS_IOS) |
| static OmniboxControllerEmitter* GetForBrowserContext( |
| content::BrowserContext* browser_context); |
| #endif // !defined(OS_IOS) |
| |
| OmniboxControllerEmitter(); |
| ~OmniboxControllerEmitter() override; |
| |
| // Add/remove observer. |
| void AddObserver(Observer* observer); |
| void RemoveObserver(Observer* observer); |
| |
| // Notifies registered observers when new autocomplete queries are made from |
| // the omnibox controller or when those queries' results change. |
| void NotifyOmniboxQuery(AutocompleteController* controller); |
| void NotifyOmniboxResultChanged(bool default_match_changed, |
| AutocompleteController* controller); |
| |
| private: |
| base::ObserverList<Observer> observers_; |
| |
| DISALLOW_COPY_AND_ASSIGN(OmniboxControllerEmitter); |
| }; |
| |
| #endif // COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_CONTROLLER_EMITTER_H_ |