blob: d91a56fcfff843726e350111396ac8f9f3ca3af7 [file] [log] [blame]
// Copyright 2019 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.
using fuchsia.math;
using fuchsia.mem;
using zx;
/// Provides data useful to attach in feedback reports (crash, user feedback or bug reports).
protocol DataProvider {
/// Returns all the feedback data except the screenshot, which is provided
/// separately.
GetData() -> (Data data) error zx.status;
/// Returns an image of the current view encoded in the provided `encoding`.
/// `screenshot` may be null if the encoding is not supported, the device
/// does not have a display, or there is not enough memory to allocate the
/// screenshot image.
/// The screenshot is provided separately from the rest of the data as
/// callers might want to block on it before changing the view.
GetScreenshot(ImageEncoding encoding) -> (Screenshot? screenshot);
/// Data to attach to feedback reports.
/// Clients typically upload the data straight to servers without expecting some
/// particular fields. So the data comes in the form of arbitrary key-value pairs
/// that clients can directly forward to the servers.
table Data {
/// A vector of key-value string pairs. Keys are guaranteed to be unique.
1: vector<Annotation>:MAX_NUM_ANNOTATIONS_PROVIDED annotations;
/// A bundle of Attachments objects stored as an Attachment itself, e.g., it
/// could be a ZIP archive bundling a vector of Attachment objects.
3: Attachment attachment_bundle;
// Deprecated.
2: reserved;
/// The encoding used for the image.
/// Today, only PNG is supported, but in the future the screenshot could be
/// returned in other encodings if need arises.
enum ImageEncoding {
PNG = 0;
/// An encoded image of the screen.
struct Screenshot {
fuchsia.mem.Buffer image;
// While all encoded images contain their dimensions in their headers, some
// clients still expect to receive the width and height separately, so we
// also provide it separately so clients don't need to decode `image`.
fuchsia.math.Size dimensions_in_px;