// Copyright 2018 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;

union Command {
    CreateViewCmd create_view;
    CreateViewHolderCmd create_view_holder;

    AddChildViewCmd add_child_view;
    RemoveChildViewCmd remove_child_view;
};

struct CreateViewCmd {
    uint32 id;
    handle<eventpair> token;
};

struct CreateViewHolderCmd {
    uint32 id;
    handle<eventpair> token;
};

struct AddChildViewCmd {
    uint32 view_id;
    uint32 view_holder_id;
};

struct RemoveChildViewCmd {
    uint32 view_id;
    uint32 view_holder_id;
};
