// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module chromecast.mojom;
import "third_party/blink/public/mojom/messaging/message_port_descriptor.mojom";
// Provides Cast platform API binding scripts and methods for connecting those
// scripts with Cast service backends.
interface ApiBindings {
// Gets the list of bindings to early-inject into the page at load time.
// The returned ApiBindings must be evaluated in order.
GetAll() => (array<ApiBinding> bindings);
// Should be invoked when a connecting a named MessagePort to a native
// bindings backend.
// |port_name| is a string-based ID. It is used to locate corresponding
// native bindings backend.
// |port| is one end of a paired message channel. It can be deserilized
// to bind a blink::WebMessagePort to perform bi-directional communication.
Connect(string port_name, blink.mojom.MessagePortDescriptor port);
};
struct ApiBinding {
// Script to execute before the load of a web document. |script| uses
// UTF-8 encoding.
string script;
};