mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 22:36:09 +03:00
57 lines
2.6 KiB
Plaintext
57 lines
2.6 KiB
Plaintext
// 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| for read only. Writing to the file
|
|
// is done using a temporary file created with the CdmFile interface returned.
|
|
// 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,
|
|
// |file_for_reading| can be used to read the contents, and |cdm_file| should
|
|
// be closed when access to the file is no longer needed (i.e. file closed).
|
|
// On failure, |status| <> kSuccess and |file_for_reading| and |cdm_file|
|
|
// are 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,
|
|
mojo_base.mojom.File? file_for_reading,
|
|
associated CdmFile? cdm_file);
|
|
};
|
|
|
|
// Provides a way to keep track 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.
|
|
//
|
|
// This interface is also used to be able to write to the file. Due to sandbox
|
|
// restrictions on some platforms (crbug.com/774762), setting the length of the
|
|
// file explicitly is not allowed in sandboxed processes. To get around this
|
|
// (and avoid file corruption issues), writing is done by opening a new file,
|
|
// letting the client write to it, and then replace the original file after
|
|
// writing.
|
|
interface CdmFile {
|
|
// Open a new file that can be written to. This file will be in the same
|
|
// directory as the original file. If successful, returns |file_for_writing|
|
|
// which can be written to.
|
|
OpenFileForWriting() => (mojo_base.mojom.File? file_for_writing);
|
|
|
|
// Closes the file opened for writing and replaces the original file.
|
|
// Returns a new file descriptor that should be used to read the original
|
|
// file from now on.
|
|
CommitWrite() => (mojo_base.mojom.File? updated_file_for_reading);
|
|
};
|