blob: d6868b4b5cf817f19c1e5f191e09430e3fec07fe [file] [log] [blame]
// 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;
import "mojo/public/interfaces/network/url_response.mojom";
// This service allows client to efficiently cache and retrieve url response
// content on disk. In particular, it allows the shell and content handlers to
// efficiently cache and retrieve mojo applications.
// TODO(qsr): At the moment, the url response disk cache only handles ETag. If
// either the cached version or the given response do not contain
// ETags, the entry will be invalidated. It should be extended to
// handle all the other http cache mechanisms for better performance
// with http servers that do not support ETags.
interface URLResponseDiskCache {
// Given a URLResponse, returns a pair of paths. |file_path| is a file
// containing the body of the response. |cache_dir_path| is a directory that
// the applicaton can use to store content. This service guarantee that
// |cache_dir_path| will be emptied when |file_path| content changes. For
// example, a content handler that is backed by a VM that compiles files
// could have the VM use this directory to cache the compiled files.
GetFile(mojo.URLResponse response) =>
(array<uint8>? file_path, array<uint8>? cache_dir_path);
// Given a URLResponse that is expected to have a zipped body, returns a
// pair of paths. |extracted_dir_path| is a directory containing the unzipped
// body of the response. |cache_dir_path| is a directory that the applicaton
// can use to store content. This service guarantee that |cache_dir_path|
// will be emptied when |extracted_dir_path| content changes.
GetExtractedContent(mojo.URLResponse response) =>
(array<uint8>? extracted_dir_path, array<uint8>? cache_dir_path);
};