// 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. module mojo_bindings_test.mojom; // NOTE: This import exists to exercise automatic dependency loading in // generated JS modules. import "content/test/data/mojo_bindings_web_test_types.test-mojom"; // An interface whose definition covers various types of message signatures in // order to exercise the lite JS mojom bindings. interface TestMessageTarget { enum NestedEnum { kFoo, kBar, }; // Zero arguments, no reply. Poke(); // Zero-argument request, zero-argument reply. Ping() => (); // Request and reply both with arguments. Repeat(string? message, array? numbers) => (string? message, array? numbers); Echo(NestedEnum nested) => (NestedEnum nested); Deconstruct(TestStruct test_struct) => (int32 x, int32 y, // Using TestStruct.StructEnum causes a compile failure. Use // int32 instead. // TODO(crbug.com/40102018): Change |z| to TestStruct.StructEnum. int32 z); Flatten(array values) => (array values); FlattenUnions(array unions) => (array x, array s); RequestSubinterface(pending_receiver receiver, pending_remote client); }; interface Subinterface { Push(int32 value); Flush(); }; interface SubinterfaceClient { DidFlush(array values); }; struct StructVersionTest { string a; string b; [MinVersion=1] string? c; [MinVersion=2] string? d; }; interface InterfaceVersionTest { Foo(int32 x, [MinVersion=1] int32 y) => (int32 z, [MinVersion=1] int32 w); }; interface Counter { // Three different varieties of observer addition to exercise sending remotes // and receiving receivers. AddObserver1(pending_associated_remote observer); // `unused` is mainly to ensure we correctly encode calls with // associated interfaces alongside other parameters. AddObserver2( pending_associated_remote observer, int32 unused); AddNewObserver() => (pending_associated_receiver receiver); RemoveAllObservers(); // Three different varieties of cloning to exercise sending receivers and // receiving remotes. Clone1(pending_associated_receiver receiver); Clone2(pending_associated_receiver receiver, int32 unused); CloneToNewRemote() => (pending_associated_remote remote); // Increments the counter, notifies all observers, then replies. Because // observers are associated with this interface, they are therefore guaranteed // to observe an increment before the caller observes its corresponding reply. Increment() => (int32 count); }; interface CounterObserver { OnCountChanged(int32 count); OnCloneDisconnected(); };