12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // Copyright 2019 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_BINDINGS_BINDINGS_MANAGER_FUCHSIA_H_
- #define CHROMECAST_BINDINGS_BINDINGS_MANAGER_FUCHSIA_H_
- #include <fuchsia/mem/cpp/fidl.h>
- #include <list>
- #include <map>
- #include <string>
- #include "chromecast/bindings/bindings_manager.h"
- #include "fuchsia_web/runners/cast/fidl/fidl/chromium/cast/cpp/fidl.h"
- namespace chromecast {
- namespace bindings {
- // Implements the BindingsManager as a ApiBindings FIDL service.
- class BindingsManagerFuchsia : public chromium::cast::ApiBindings,
- public BindingsManager {
- public:
- BindingsManagerFuchsia();
- BindingsManagerFuchsia(const BindingsManagerFuchsia&) = delete;
- BindingsManagerFuchsia& operator=(const BindingsManagerFuchsia&) = delete;
- ~BindingsManagerFuchsia() override;
- // BindingsManager implementation:
- void AddBinding(base::StringPiece binding_name,
- base::StringPiece binding_script) override;
- protected:
- // chromium::cast::ApiBindings implementation:
- void GetAll(GetAllCallback callback) override;
- void Connect(
- std::string port_name,
- fidl::InterfaceHandle<::fuchsia::web::MessagePort> message_port) override;
- private:
- // Stores all bindings, keyed on the string-based IDs provided by the
- // ApiBindings interface. Bindings are stored in the order they are added
- // because evaluation order matters when one depends on another.
- std::list<std::pair<std::string, fuchsia::mem::Buffer>> bindings_;
- };
- } // namespace bindings
- } // namespace chromecast
- #endif // CHROMECAST_BINDINGS_BINDINGS_MANAGER_FUCHSIA_H_
|