// Copyright 2016 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.policy;

using fuchsia.ui.gfx;
using fuchsia.ui.views;

/// The Presenter service provides a way for applications to ask that a view be
/// added to a view tree, leaving any window management concerns up to the
/// discretion of the presenter implementation.
[Discoverable]
protocol Presenter {
    /// Request that the View's contents be displayed on the screen as a
    /// `Presentation`.
    PresentView(fuchsia.ui.views.ViewHolderToken view_holder_token, request<Presentation>? presentation_request);

    /// Sets new default renderer params and forces them on for the duration of the
    /// presenter's lifetime. Only applies to any subsequent calls to Present().
    /// Used for testing.
    HACK_SetRendererParams(bool enable_clipping, vector<fuchsia.ui.gfx.RendererParam> params);
};
