48 lines
2.3 KiB
Plaintext
48 lines
2.3 KiB
Plaintext
// 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.app;
|
|
|
|
using fuchsia.sys;
|
|
|
|
// NOTE: This is likely not the ViewProvider you are looking for! This is
|
|
// the new ViewProvider interface that will be deprecating the old one soon.
|
|
// The old ViewProvider is in fuchsia.ui.viewsv1.ViewProvider.
|
|
// TODO(SCN-589): Remove this when old ViewProvider is deleted.
|
|
//
|
|
// ViewProvider is the standard mechanism for two modules to each obtain half
|
|
// of a shared eventpair token. The shared token is a capability allowing the
|
|
// modules to ask Scenic to create a ViewHolder/View pair. The resulting
|
|
// View and ViewHolder are linked together until either one is destroyed.
|
|
//
|
|
// Modules are free to use any other mechanism to agree upon the shared
|
|
// eventpair token, and use this to create the linked ViewHolder/View.
|
|
// ViewProvider is given for the convenience of clients that don't require
|
|
// a more complex implementation.
|
|
[Discoverable]
|
|
interface ViewProvider {
|
|
// Creates a new View under the control of the ViewProvider.
|
|
//
|
|
// |token| is one half of the shared eventpair which will bind the new View
|
|
// to its associated ViewHolder. The ViewProvider will use |token| to
|
|
// create its internal View representation. The caller is expected to use
|
|
// its half to create corresponding ViewHolder object.
|
|
//
|
|
// |incoming_services| allows clients to request services from the
|
|
// ViewProvider implementation. |outgoing_services| allows clients to
|
|
// provide services of their own to the ViewProvider implementation.
|
|
//
|
|
// Clients can embed a ViewHolder (and by proxy the paired View) into their
|
|
// scene graph by using |Node.AddChild()|. The ViewHolder cannot itself
|
|
// have any children. A ViewProvider implementation can nest scene objects
|
|
// within its View by using |View.AddChild()|. The View itself
|
|
// cannot be a child of anything.
|
|
//
|
|
// Modules can use these mechanisms to establish a distributed,
|
|
// inter-process scene graph.
|
|
1: CreateView(handle<eventpair> token,
|
|
request<fuchsia.sys.ServiceProvider>? incoming_services,
|
|
fuchsia.sys.ServiceProvider? outgoing_services);
|
|
};
|