// 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); };