// 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.context;

using fuchsia.testing.harness;

/// RealmFactory creates test realm for UI related tests, and give the realm
/// proxy to test suite so that test suite can access protocols in test realm.
@discoverable
open protocol RealmFactory {
    flexible CreateRealm(resource table {
        1: realm_server server_end:fuchsia.testing.harness.RealmProxy;
        2: display_rotation uint32;
        3: device_pixel_ratio float32;
    }) -> () error fuchsia.testing.harness.OperationError;
};
