| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| [DartPackage="mojo_services"] |
| module mojo; |
| |
| struct Photo { |
| // A string to uniquely identify an instance of a |Photo|. This can be used |
| // to de-duplicate photos over multiple runs on the camera roll. |
| string unique_id; |
| |
| // Stream to read contents of the photo from. |
| handle<data_pipe_consumer> content; |
| }; |
| |
| // |CameraRollService| provides access to the device's camera roll. |
| // The camera roll is exposed as a snapshot of all photos available as a list. |
| // The head of the list (element with index 0) is a photo with the latest |
| // timestamp and subsequent elements are in decreasing order of timestamp. |
| [ServiceName="mojo::CameraRollService"] |
| interface CameraRollService { |
| // Updates the snapshot of all photos available. Photos might have been added |
| // or removed after the service was started or |Update| was called. |
| Update(); |
| // Get the number of photos available in the current snapshot. |
| GetCount() => (uint32 num_photos); |
| // Get the photo from the current snapshot at |index|. null will be returned |
| // if such an index is out-of-bounds. |
| GetPhoto(uint32 index) => (Photo? photo); |
| }; |
| |
| // |CameraService| provides access to the device's camera video stream. |
| [ServiceName="mojo::CameraService"] |
| interface CameraService { |
| // Returns the most recent frame captured by the device's camera |
| // in preview mode. |
| GetLatestFrame() => (handle<data_pipe_consumer>? content); |
| }; |