| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_ANDROID_CONTEXTUALSEARCH_UNHANDLED_TAP_NOTIFIER_IMPL_H_ |
| #define CHROME_BROWSER_ANDROID_CONTEXTUALSEARCH_UNHANDLED_TAP_NOTIFIER_IMPL_H_ |
| |
| #include "chrome/browser/android/contextualsearch/unhandled_tap_web_contents_observer.h" |
| #include "mojo/public/cpp/bindings/pending_receiver.h" |
| #include "third_party/blink/public/mojom/unhandled_tap_notifier/unhandled_tap_notifier.mojom.h" |
| |
| namespace contextual_search { |
| |
| // Implements a Mojo service endpoint for the mojo unhandled-tap notifier |
| // message. |
| // TODO(donnd): remove this as part of removal of all JS APIs for Contextual |
| // Search since their primary need was for translations which are now handled |
| // directly within the Bar. |
| class UnhandledTapNotifierImpl : public blink::mojom::UnhandledTapNotifier { |
| public: |
| // Creates an implementation that will scale tap locations by the given |
| // |scale_factor| (when needed) and call the given |callback| when Mojo |
| // ShowUnhandledTapUIIfNeeded messages are received for the |
| // unhandled_tap_notifier service. |
| explicit UnhandledTapNotifierImpl(UnhandledTapCallback callback); |
| |
| UnhandledTapNotifierImpl(const UnhandledTapNotifierImpl&) = delete; |
| UnhandledTapNotifierImpl& operator=(const UnhandledTapNotifierImpl&) = delete; |
| |
| ~UnhandledTapNotifierImpl() override; |
| |
| // Mojo UnhandledTapNotifier implementation. |
| void ShowUnhandledTapUIIfNeeded( |
| blink::mojom::UnhandledTapInfoPtr unhandled_tap_info) override; |
| |
| private: |
| // Callback to call when an unhandled tap notification takes place. |
| UnhandledTapCallback unhandled_tap_callback_; |
| }; |
| |
| // static |
| void CreateUnhandledTapNotifierImpl( |
| UnhandledTapCallback callback, |
| mojo::PendingReceiver<blink::mojom::UnhandledTapNotifier> receiver); |
| |
| } // namespace contextual_search |
| |
| #endif // CHROME_BROWSER_ANDROID_CONTEXTUALSEARCH_UNHANDLED_TAP_NOTIFIER_IMPL_H_ |