// Copyright 2019 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.input;

using fuchsia.ui.views;

/// A method of obtaining global pointer events, regardless of view focus.
/// DEPRECATED: Do not add new uses of this protocol.
@available(removed=9)
closed protocol PointerCaptureListener {
    strict OnPointerEvent(struct {
        event PointerEvent;
    }) -> ();
};

/// Injects a listener protocol, along with a ViewRef that defines the coordinate space of the
/// captured pointer events.
/// DEPRECATED: Do not add new uses of this protocol.
@discoverable
@available(removed=9)
closed protocol PointerCaptureListenerRegistry {
    strict RegisterListener(resource struct {
        listener client_end:PointerCaptureListener;
        view_ref fuchsia.ui.views.ViewRef;
    }) -> (struct {
        success bool;
    });
};
