1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // Copyright 2021 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 CHROMECAST_RENDERER_ASSISTANT_BINDINGS_H_
- #define CHROMECAST_RENDERER_ASSISTANT_BINDINGS_H_
- #include <string>
- #include <vector>
- #include "base/memory/weak_ptr.h"
- #include "base/timer/timer.h"
- #include "chromecast/common/mojom/assistant_messenger.mojom.h"
- #include "chromecast/renderer/native_bindings_helper.h"
- #include "mojo/public/cpp/bindings/receiver.h"
- #include "mojo/public/cpp/bindings/remote.h"
- namespace chromecast {
- namespace shell {
- // When enabled, these bindings can be used to open a message channel with the
- // Assistant. These bindings are only enabled for a small set of first-party
- // apps.
- class AssistantBindings : public CastBinding,
- public chromecast::mojom::AssistantMessageClient {
- public:
- AssistantBindings(content::RenderFrame* frame,
- const base::Value& feature_config);
- ~AssistantBindings() override;
- AssistantBindings(const AssistantBindings&) = delete;
- AssistantBindings& operator=(const AssistantBindings&) = delete;
- private:
- friend class ::chromecast::CastBinding;
- // chromecast::mojom::AssistantMessageClient implementation:
- void OnMessage(base::Value message) override;
- // CastBinding implementation:
- void Install(v8::Local<v8::Object> cast_platform,
- v8::Isolate* isolate) override;
- // Binding methods
- void SetAssistantMessageHandler(
- v8::Local<v8::Function> assistant_message_handler);
- void SendAssistantRequest(const std::string& request);
- void ReconnectMessagePipe();
- void OnAssistantConnectionError();
- void FlushV8ToAssistantQueue();
- const mojo::Remote<chromecast::mojom::AssistantMessageService>&
- GetMojoInterface();
- base::RepeatingTimer reconnect_assistant_timer_;
- mojo::Remote<chromecast::mojom::AssistantMessageService> assistant_;
- base::Value feature_config_;
- mojo::Receiver<chromecast::mojom::AssistantMessageClient>
- message_client_binding_;
- mojo::Remote<chromecast::mojom::AssistantMessagePipe> message_pipe_;
- std::vector<std::string> v8_to_assistant_queue_;
- v8::UniquePersistent<v8::Function> assistant_message_handler_;
- base::WeakPtr<AssistantBindings> weak_this_;
- base::WeakPtrFactory<AssistantBindings> weak_factory_;
- };
- } // namespace shell
- } // namespace chromecast
- #endif // CHROMECAST_RENDERER_ASSISTANT_BINDINGS_H_
|