blob: d4446d5bc6858ef1f7d639c5f9250a77164df892 [file] [log] [blame] [edit]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.ui.test.scene;
using fuchsia.ui.app;
using fuchsia.ui.observation.geometry;
using fuchsia.ui.views;
using zx;
/// Controls a UI test scene. Allows a test to attach test Views to the scene
/// and add View-related instrumentation.
@discoverable
protocol Controller {
/// *** NOTE: `ViewProvider` is no longer the preferred way for a parent
/// and child view to agree on a ViewportCreationToken / ViewCreationToken
/// pair. Flatland-based clients are encouraged to use `PresentView` (below)
/// instead of `AttachClientView`.
///
/// Elicits the server to request a view using the
/// `fuchsia.ui.app.ViewProvider` handle provided, and attach it to the
/// scene.
///
/// RETURN VALUE
///
/// This method returns the KOID for the client view's `ViewRef`.
///
/// SYNCHRONIZATION
///
/// This call returns as soon as the client `ViewRef` is available. Note
/// that this signal does NOT necessarily indicate that the view has been
/// attached to the scene.
///
/// LIFE CYCLE
///
/// Clients may drop the `Controller` connection once `AttachClientView` has
/// returned.
AttachClientView(resource table {
1: view_provider client_end:fuchsia.ui.app.ViewProvider;
}) -> (struct {
view_ref_koid zx.koid;
});
/// Elicits the server to create a viewport using `viewport_creation_token`.
///
/// LIFE CYCLE
///
/// Clients may drop the `Controller` connection once `PresentClientView` has
/// returned.
@available(added=10)
PresentClientView(resource table {
@available(added=10)
1: viewport_creation_token fuchsia.ui.views.ViewportCreationToken;
});
/// Registers a `ViewTreeWatcher` on the client's behalf.
///
/// The `ViewTreeWatcher` registered on behalf of the client will currently
/// be scoped globally; we intend to restrict the scope to the client view's
/// subtree as soon as it's feasible to do so.
///
/// For more information on geometry observation, see the documentation
/// in //sdk/fidl/fuchsia.ui.observation.geometry/watcher.fidl.
RegisterViewTreeWatcher(resource struct {
watcher server_end:fuchsia.ui.observation.geometry.ViewTreeWatcher;
}) -> ();
};