blob: 53b39df2f1c1c19f6de6c7fae46c8147de686f93 [file] [log] [blame]
// Copyright 2017 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 media.mojom;
import "mojo/public/mojom/base/file.mojom";
// Provides a way to organize persistent per-origin/per-cdm-type data
// in the browser's file system.
interface CdmStorage {
enum Status {
kSuccess, // File was successfully opened.
kInUse, // File is already open by another client.
kFailure // Unable to open file.
};
// Opens the file specified by |file_name|. Can be called multiple times for
// different files, or for the same file if the first one has been closed.
// If successful, kSuccess will be returned, and |cdm_file| should be used to
// access the file. |cdm_file| should be closed when access to the file is no
// longer needed. On failure, |status| <> kSuccess and |cdm_file| is null.
// - If the file is already opened, kInUse will be returned in |status|.
// - |file_name| must not contain forward slash ('/') or backslash ('\'),
// and must not start with an underscore ('_'). If this happens,
// |status| == kFailure is returned.
Open(string file_name)
=> (Status status, pending_associated_remote<CdmFile>? cdm_file);
};
// Provides a way to access the contents of the file opened. When the connection
// to this object is broken, it is assumed that the file has been closed and
// that no more operations will be performed on it. Only 1 Read() or Write()
// operation should be in flight at any time.
interface CdmFile {
enum Status {
kSuccess, // Operation succeeded.
kFailure // Operation failed.
};
// Reads the contents of the file and return them in |data|. Returns
// kSuccess and the file contents if successful. Errors reading the file will
// return kFailure. If the opened file does not exist, Read() will return
// kSuccess and |data| will be the empty array.
Read() => (Status status, array<uint8> data);
// Updates the contents of the existing file with |data|. If the
// write operation is successful, then kSuccess is returned, otherwise
// kFailure is returned. If |data| is empty, then the file is deleted to
// save space. The contents of the file are unknown if Write()
// fails.
Write(array<uint8> data) => (Status status);
};