// Copyright 2020 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.views;

/// A collection of error codes related to |ViewRefInstalled|.
type ViewRefInstalledError = strict enum {
    /// The ViewRef being watched is invalid, or has become invalid.
    INVALID_VIEW_REF = 1;
};

/// A method of enabling ViewRef holders to determine if a ViewRef has been
/// "installed" in the view tree: the time it is first connected, transitively,
/// to the root view.  Typically, after installation, view focus may be
/// transferred to that ViewRef.
///
/// Note: It's important to distinguish between a ViewRef's installed status and
///       current connected-to-view-tree status.  The former undergoes a state
///       change once, from "no" to "yes".  The latter may change continuously,
///       depending on view tree topology.  As such, "installed" cannot imply
///       "currently connected to view tree"; even a hypothetical
///       "ViewRefConnected" protocol is fundamentally racy.
@discoverable
closed protocol ViewRefInstalled {
    /// Sets up a callback to fire when the requested |view_ref| is installed.
    /// - If |view_ref| has not already been installed, the |Watch| response
    ///   will fire when it is.
    /// - If |view_ref| has already been installed, the |Watch| response will
    ///   fire immediately.
    /// - If |view_ref| is invalid, or becomes invalid (perhaps because the view
    ///   was destroyed), the |Watch| call returns with an error.  The error is
    ///   not guaranteed to be immediate, but a ViewRef holder can itself
    ///   determine ViewRef validity by listening for ZX_EVENTPAIR_PEER_CLOSED.
    ///
    /// Flow control: The caller is allowed multiple |Watch| calls on multiple
    /// ViewRefs. There is at most one response per call back to the client.
    ///
    /// Note: Prior to installation, this |Watch| call is kept alive as long as
    ///       the ViewRef is valid.
    strict Watch(resource struct {
        view_ref ViewRef;
    }) -> () error ViewRefInstalledError;
};
