bindings_manager_fuchsia.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef CHROMECAST_BINDINGS_BINDINGS_MANAGER_FUCHSIA_H_
  5. #define CHROMECAST_BINDINGS_BINDINGS_MANAGER_FUCHSIA_H_
  6. #include <fuchsia/mem/cpp/fidl.h>
  7. #include <list>
  8. #include <map>
  9. #include <string>
  10. #include "chromecast/bindings/bindings_manager.h"
  11. #include "fuchsia_web/runners/cast/fidl/fidl/chromium/cast/cpp/fidl.h"
  12. namespace chromecast {
  13. namespace bindings {
  14. // Implements the BindingsManager as a ApiBindings FIDL service.
  15. class BindingsManagerFuchsia : public chromium::cast::ApiBindings,
  16. public BindingsManager {
  17. public:
  18. BindingsManagerFuchsia();
  19. BindingsManagerFuchsia(const BindingsManagerFuchsia&) = delete;
  20. BindingsManagerFuchsia& operator=(const BindingsManagerFuchsia&) = delete;
  21. ~BindingsManagerFuchsia() override;
  22. // BindingsManager implementation:
  23. void AddBinding(base::StringPiece binding_name,
  24. base::StringPiece binding_script) override;
  25. protected:
  26. // chromium::cast::ApiBindings implementation:
  27. void GetAll(GetAllCallback callback) override;
  28. void Connect(
  29. std::string port_name,
  30. fidl::InterfaceHandle<::fuchsia::web::MessagePort> message_port) override;
  31. private:
  32. // Stores all bindings, keyed on the string-based IDs provided by the
  33. // ApiBindings interface. Bindings are stored in the order they are added
  34. // because evaluation order matters when one depends on another.
  35. std::list<std::pair<std::string, fuchsia::mem::Buffer>> bindings_;
  36. };
  37. } // namespace bindings
  38. } // namespace chromecast
  39. #endif // CHROMECAST_BINDINGS_BINDINGS_MANAGER_FUCHSIA_H_