| // Copyright 2017 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.modular; |
| |
| // Debug service provider interface that provides the ability to listen to |
| // the internal state of the suggestion service. |
| [Discoverable] |
| protocol SuggestionDebug { |
| WatchAskProposals(AskProposalListener listener); |
| WatchInterruptionProposals(InterruptionProposalListener listener); |
| WatchNextProposals(NextProposalListener listener); |
| |
| // Waits until Suggestion Engine has reached a steady state such that no |
| // further activity will occur unless acted upon from the outside. |
| WaitUntilIdle() -> (); |
| // Calls |async::Loop::RunUntilIdle()|, which processes all immediately |
| // available messages. Unlike |WaitUntilIdle|, this does not wait for |
| // long-running delayed tasks. |
| RunUntilIdle() -> (); |
| }; |
| |
| protocol AskProposalListener { |
| // Receives the current ask query and ranked proposals |
| OnAskStart(string query, vector<ProposalSummary> proposals); |
| // Receives notification of query completion or dismissal. |
| // |selected_proposal| is null if query was dismissed |
| OnProposalSelected(ProposalSummary? selected_proposal); |
| }; |
| |
| protocol InterruptionProposalListener { |
| // Receives updates to the current proposal list and rankings |
| OnInterrupt(ProposalSummary interruption_proposal); |
| }; |
| |
| protocol NextProposalListener { |
| // Receives updates to the current proposal list and rankings |
| OnNextUpdate(vector<ProposalSummary> proposals); |
| }; |
| |
| // This is necessary because a Proposal is not Clone-able, as CustomAction |
| // can contain an InterfaceHandle. |
| struct ProposalSummary { |
| string id; |
| string publisher_url; |
| SuggestionDisplay display; |
| }; |