blob: 7ea68a95b68b56e4c88603965e951a04268276f0 [file] [log] [blame]
// Copyright 2016 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.
module blimp.engine.mojom;
// Exposes BlobChannel data producer methods to the renderer processes.
// The renderer can use this service to push bulk data such as images to
// the client.
interface BlobChannel {
// Gets the list of cached BlobIDs and their replication status in the
// browser process' BlobCache. The replication status is represented
// as a boolean which, when true, indicates that the blob has been
// sent to the client.
// TODO(kmarshall): Add a delegate receiver to process cache invalidation
// events from the browser as they occur.
GetCachedBlobIds() => (map<string, bool> cache_state);
// Stores the blob |id| in the BlobCache.
// Because the IPC channel is a shared resource and payloads can be quite
// large, we use shared memory to reduce channel contention and associated
// latency with other components/features.
//
// The buffer is released when the callee discards the handle for |data|.
PutBlob(string id, handle<shared_buffer> data, uint32 size);
// Requests that the BlobChannel push the blob |id| over the wire.
// The request will be ignored if the BlobChannel knows that
// the client already has the data.
DeliverBlob(string id);
};