当前位置: 首页 > news >正文

Chromium 中chrome.system.storage扩展接口定义c++

一、chrome.system.storage

您可以使用 chrome.system.storage API 查询存储设备信息,并在连接和分离可移动存储设备时收到通知。

权限

system.storage

类型

EjectDeviceResultCode

枚举

"success"
移除命令成功执行 - 应用可以提示用户移除设备。

"in_use"
设备正被其他应用使用。移除失败;在其他应用完成对设备的操作之前,用户不得移除设备。

"no_such_device"
没有已知的此类设备。

"failure"
移除命令失败。

StorageAvailableCapacityInfo

属性
  • availableCapacity

    number

    存储设备的可用容量(以字节为单位)。

  • id

    字符串

    getAvailableCapacity 函数参数 id 的 id

StorageUnitInfo

属性
  • 容量

    number

    存储空间总量(以字节为单位)。

  • id

    字符串

    唯一标识存储设备的临时 ID。此 ID 在单个应用的同一运行时内保持不变。它不是应用的不同运行之间或不同应用之间的永久性标识符。

  • name

    字符串

    存储单元的名称。

  • 类型

    StorageUnitType

    存储单元的媒体类型。

StorageUnitType

枚举

"fixed"
存储具有固定介质,例如或 SSD。

"removable"
存储空间可移动,例如U 盘。

"unknown"
存储类型未知。

方法

ejectDevice()

<ph type="x-smartling-placeholder"></ph> 承诺

chrome.system.storage.ejectDevice(id: string,callback?: function,
)

弹出可移动存储设备。

参数
  • id

    字符串

  • callback

    函数(可选)

    callback 参数如下所示:

    (result: EjectDeviceResultCode) => void

chrome.system.storage  |  API  |  Chrome for Developers

二、chrome.system.storage api接口定义c++:

1、system_storage.idl

extensions\common\api\system_storage.idl

// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.// Use the <code>chrome.system.storage</code> API to query storage device
// information and be notified when a removable storage device is attached and
// detached.
namespace system.storage {enum StorageUnitType {// The storage has fixed media, e.g. hard disk or SSD.fixed,// The storage is removable, e.g. USB flash drive.removable,// The storage type is unknown.unknown};dictionary StorageUnitInfo {// The transient ID that uniquely identifies the storage device.// This ID will be persistent within the same run of a single application.// It will not be a persistent identifier between different runs of an// application, or between different applications.DOMString id;// The name of the storage unit.DOMString name;// The media type of the storage unit.StorageUnitType type;// The total amount of the storage space, in bytes.double capacity;};dictionary StorageAvailableCapacityInfo {// A copied |id| of getAvailableCapacity function parameter |id|.DOMString id;// The available capacity of the storage device, in bytes.double availableCapacity;};[inline_doc] enum EjectDeviceResultCode {// The ejection command is successful -- the application can prompt the user// to remove the device.success,// The device is in use by another application. The ejection did not// succeed; the user should not remove the device until the other// application is done with the device.in_use,// There is no such device known.no_such_device,// The ejection command failed.failure};callback EjectDeviceCallback = void (EjectDeviceResultCode result);callback StorageInfoCallback = void (StorageUnitInfo[] info);callback GetAvailableCapacityCallback = void (StorageAvailableCapacityInfo info);interface Functions {// Get the storage information from the system. The argument passed to the// callback is an array of StorageUnitInfo objects.[supportsPromises] static void getInfo(StorageInfoCallback callback);// Ejects a removable storage device.[supportsPromises] static void ejectDevice(DOMString id,EjectDeviceCallback callback);// Get the available capacity of a specified |id| storage device.// The |id| is the transient device ID from StorageUnitInfo.[supportsPromises] static void getAvailableCapacity(DOMString id,GetAvailableCapacityCallback callback);};interface Events {// Fired when a new removable storage is attached to the system.static void onAttached(StorageUnitInfo info);// Fired when a removable storage is detached from the system.static void onDetached(DOMString id);};};

2、system_storage.idl 自动生成c++文件:

out\Debug\gen\extensions\common\api\system_storage.cc

out\Debug\gen\extensions\common\api\system_storage.h

3、chrome.system.storage api c++定义

extensions\browser\api\system_storage\system_storage_api.h

extensions\browser\api\system_storage\system_storage_api.cc

namespace extensions {// Implementation of the systeminfo.storage.get API. It is an asynchronous
// call relative to browser UI thread.
class SystemStorageGetInfoFunction : public ExtensionFunction {public:DECLARE_EXTENSION_FUNCTION("system.storage.getInfo", SYSTEM_STORAGE_GETINFO)SystemStorageGetInfoFunction() = default;private:~SystemStorageGetInfoFunction() override = default;// ExtensionFunction:ResponseAction Run() override;void OnGetStorageInfoCompleted(bool success);
};class SystemStorageEjectDeviceFunction : public ExtensionFunction {public:DECLARE_EXTENSION_FUNCTION("system.storage.ejectDevice",SYSTEM_STORAGE_EJECTDEVICE)protected:~SystemStorageEjectDeviceFunction() override = default;// ExtensionFunction:ResponseAction Run() override;private:void OnStorageMonitorInit(const std::string& transient_device_id);// Eject device request handler.void HandleResponse(storage_monitor::StorageMonitor::EjectStatus status);
};class SystemStorageGetAvailableCapacityFunction : public ExtensionFunction {public:DECLARE_EXTENSION_FUNCTION("system.storage.getAvailableCapacity",SYSTEM_STORAGE_GETAVAILABLECAPACITY)SystemStorageGetAvailableCapacityFunction();private:void OnStorageMonitorInit(const std::string& transient_id);void OnQueryCompleted(const std::string& transient_id,double available_capacity);~SystemStorageGetAvailableCapacityFunction() override;// ExtensionFunction:ResponseAction Run() override;scoped_refptr<base::SequencedTaskRunner> query_runner_;
};}  // namespace extensions

http://www.lryc.cn/news/480879.html

相关文章:

  • 【Qt聊天室客户端】登录窗口
  • 如何显示模型特征权重占比图【数据分析】
  • Ubuntu24安装MySQL
  • 微服务架构面试内容整理-Eureka
  • qt QErrorMessage详解
  • SpringBoot 将多个Excel打包下载
  • 分页存储小总结
  • Star-CCM+应用篇之动力电池温度场仿真操作流程与方法
  • Spring Boot应用开发:从入门到精通
  • 【JAVA项目】基于jspm的【医院病历管理系统】
  • Python中的常见配置文件写法
  • 语义分割实战——基于PSPnet神经网络动物马分割系统源码
  • Python+Appium编写脚本
  • RK3288 android7.1 适配 ilitek i2c接口TP
  • C++ 越来越像函数式编程了!
  • maven工程结构说明
  • 【GESP】C++一级真题练习(202312)luogu-B3921,小杨的考试
  • 游戏中Dubbo类的RPC设计时的注意要点
  • ARXML汽车可扩展标记性语言规范讲解
  • Hadoop(HDFS)
  • 机器学习系列----梯度下降算法
  • AI大模型:软件开发的未来之路
  • 指标+AI+BI:构建数据分析新范式丨2024袋鼠云秋季发布会回顾
  • 2024年第四届“网鼎杯”网络安全比赛---朱雀组Crypto- WriteUp
  • 关于Markdown的一点疑问,为什么很多人说markdown比word好用?
  • NoSQL大数据存储技术测试(1)绪论
  • Linux命令学习,git命令
  • 【AI大模型】Transformer中的编码器详解,小白必看!!
  • PostgreSQL 字段按逗号分隔成多条数据的技巧与实践 ️
  • 设计模式学习总结(一)