| Index: storage/browser/fileapi/plugin_private_file_system_backend.cc
|
| diff --git a/storage/browser/fileapi/plugin_private_file_system_backend.cc b/storage/browser/fileapi/plugin_private_file_system_backend.cc
|
| index 06e9aefb3f1f49a0db1f66b796b502854e998cfb..323c90f9b28bf9d382343533becdbd12a1387dd3 100644
|
| --- a/storage/browser/fileapi/plugin_private_file_system_backend.cc
|
| +++ b/storage/browser/fileapi/plugin_private_file_system_backend.cc
|
| @@ -266,8 +266,61 @@ int64_t PluginPrivateFileSystemBackend::GetOriginUsageOnFileTaskRunner(
|
| FileSystemContext* context,
|
| const GURL& origin_url,
|
| FileSystemType type) {
|
| - // We don't track usage on this filesystem.
|
| - return 0;
|
| + DCHECK(file_task_runner_->RunsTasksOnCurrentThread());
|
| +
|
| + if (!CanHandleType(type))
|
| + return 0;
|
| +
|
| + int64_t total_size;
|
| + base::Time last_modified_time;
|
| + GetOriginDetailsOnFileTaskRunner(context, origin_url, &total_size,
|
| + &last_modified_time);
|
| + return total_size;
|
| +}
|
| +
|
| +void PluginPrivateFileSystemBackend::GetOriginDetailsOnFileTaskRunner(
|
| + FileSystemContext* context,
|
| + const GURL& origin_url,
|
| + int64_t* total_size,
|
| + base::Time* last_modified_time) {
|
| + DCHECK(file_task_runner_->RunsTasksOnCurrentThread());
|
| +
|
| + *total_size = 0;
|
| + *last_modified_time = base::Time::UnixEpoch();
|
| + std::string fsid =
|
| + storage::IsolatedContext::GetInstance()->RegisterFileSystemForVirtualPath(
|
| + storage::kFileSystemTypePluginPrivate, "pluginprivate",
|
| + base::FilePath());
|
| + DCHECK(storage::ValidateIsolatedFileSystemId(fsid));
|
| +
|
| + std::string root = storage::GetIsolatedFileSystemRootURIString(
|
| + origin_url, fsid, "pluginprivate");
|
| +
|
| + std::unique_ptr<FileSystemOperationContext> operation_context(
|
| + new FileSystemOperationContext(context));
|
| +
|
| + std::vector<std::string> supported_plugins = {
|
| + "application_x-ppapi-widevine-cdm", // Widevine
|
| + "application_x-ppapi-clearkey-cdm", // ClearKey
|
| + };
|
| +
|
| + for (const auto& plugin : supported_plugins) {
|
| + if (OpenFileSystemOnFileTaskRunner(
|
| + obfuscated_file_util(), plugin_map_, origin_url, fsid, plugin,
|
| + storage::OPEN_FILE_SYSTEM_FAIL_IF_NONEXISTENT) ==
|
| + base::File::FILE_OK) {
|
| + std::unique_ptr<FileSystemFileUtil::AbstractFileEnumerator> enumerator(
|
| + obfuscated_file_util()->CreateFileEnumerator(
|
| + operation_context.get(), context->CrackURL(GURL(root)), true));
|
| +
|
| + base::FilePath current;
|
| + while (!(current = enumerator->Next()).empty()) {
|
| + *total_size += enumerator->Size();
|
| + if (enumerator->LastModifiedTime() > *last_modified_time)
|
| + *last_modified_time = enumerator->LastModifiedTime();
|
| + }
|
| + }
|
| + }
|
| }
|
|
|
| scoped_refptr<QuotaReservation>
|
|
|