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
相关文章:
Chromium 中chrome.system.storage扩展接口定义c++
一、chrome.system.storage 您可以使用 chrome.system.storage API 查询存储设备信息,并在连接和分离可移动存储设备时收到通知。 权限 system.storage 类型 EjectDeviceResultCode 枚举 "success" 移除命令成功执行 - 应用可以提示用户移除设备。…...
【Qt聊天室客户端】登录窗口
1. 验证码 具体实现 登录界面中创建验证码图片空间,并添加到布局管理器中 主要功能概述(创建一个verifycodewidget类专门实现验证码操作) 详细代码 // 头文件#ifndef VERIFYCODEWIDGET_H #define VERIFYCODEWIDGET_H#include <QWidget>…...
如何显示模型特征权重占比图【数据分析】
可视化模型的特征权重 1、流程 1、导入库: numpy:用于处理数组和矩阵。 matplotlib.pyplot:用于绘图。 sklearn.datasets:用于加载数据集。 sklearn.ensemble.RandomForestClassifier:用于训练随机森林模型。2、加载数据集: 使用load_iris函数加载Iris数据集。3、训练模…...
Ubuntu24安装MySQL
下载deb包: 先更新系统包: sudo apt update sudo apt update -y下载mysql: wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb 安装deb包: sudo dpkg -i mysql-apt-config_0.8.17-1_all.deb目前mysql还没有正式支持Ubun…...
微服务架构面试内容整理-Eureka
Spring Cloud Netflix 是一个为构建基于 Spring Cloud 的微服务应用提供的解决方案,利用 Netflix 的开源组件来实现常见的分布式系统功能。以下是 Spring Cloud Netflix 的一些主要组件和特点: 服务注册与发现:Eureka 是一个 RESTful 服务,用于注册和发现微服务。服务实例在…...
qt QErrorMessage详解
1、概述 QErrorMessage是Qt框架中用于显示错误消息的一个对话框类。它提供了一个简单的模态对话框,用于向用户显示错误或警告消息。QErrorMessage通常用于应用程序中,当需要向用户报告错误但不希望中断当前操作时。它提供了一个标准的错误消息界面&…...
SpringBoot 将多个Excel打包下载
在Spring Boot应用中,如果你需要将多个Excel文件打包成一个ZIP文件并提供下载,你可以使用一些Java库来帮助完成这个任务。这里我将展示如何使用Apache POI来生成Excel文件,以及使用Java.util.zip来创建ZIP文件,并通过Spring Boot的…...
分页存储小总结
知识点: 什么是分页存储? 将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个“页框”(页框页帧内存块物理块物理页面)。每个页框有一个编号,即“页框号”(…...
Star-CCM+应用篇之动力电池温度场仿真操作流程与方法
1 动力电池温度场仿真项目 电池包内模组温度分布、电芯温度分布、温升速率、充电时间等。 2 动力电池温度场仿真分析流程图 图1 电池包热流场分析流程 3 动力电池温度场仿真参数需求 类别...
Spring Boot应用开发:从入门到精通
Spring Boot应用开发:从入门到精通 Spring Boot是Spring框架的一个子项目,旨在简化Spring应用的初始搭建和开发过程。通过自动配置和约定大于配置的原则,Spring Boot使开发者能够快速构建独立的、生产级别的Spring应用。本文将深入探讨Sprin…...
【JAVA项目】基于jspm的【医院病历管理系统】
技术简介:采用jsp技术、MySQL等技术实现。 系统简介:通过标签分类管理等方式,实现管理员;个人中心、医院公告管理、用户管理、科室信息管理、医生管理、出诊信息管理、预约时间段管理、预约挂号管理、门诊病历管理、就诊评价管理、…...
Python中的常见配置文件写法
在软件开发过程中,开发者常常需要利用一些固定的参数或常量。对于这些相对恒定且频繁使用的元素,一种常见的做法是将它们集中存储在一个特定的文件中,以避免在多个模块代码中重复定义,从而维护核心代码的清晰度和整洁性。 具体而…...
语义分割实战——基于PSPnet神经网络动物马分割系统源码
第一步:准备数据 动物马分割数据,总共有328张图片,里面的像素值为0和1,所以看起来全部是黑的,不影响使用 第二步:搭建模型 psp模块的样式如下,其psp的核心重点是采用了步长不同,po…...
Python+Appium编写脚本
一、环境配置 1、安装JDK,版本1.8以上 2、安装Python,版本3.x以上,用来解释python 3、安装node.js,版本^14.17.0 || ^16.13.0 || >18.0.0,用来安装Appimu Server 4、安装npm,版本>8,用…...
RK3288 android7.1 适配 ilitek i2c接口TP
一,Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器,如 ILI6480、ILI9341 等,采用 I2C 接口。 这些控制器能够支持多点触控,并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时&am…...
C++ 越来越像函数式编程了!
C 越来越像函数式编程了 大家好,欢迎来到今天的博客话题。今天我们要聊的是 C 这门老牌的强类型语言是如何一步一步向函数式编程靠拢的。从最早的函数指针,到函数对象(Functor),再到 std::function 和 std::bind&…...
maven工程结构说明
1、maven工程文件目录 |-- pom.xml # Maven 项目管理文件 |-- src # 放项目源文件|-- main # 项目主要代码| |-- java # Java 源代码目录| | -- com/example/myapp…...
【GESP】C++一级真题练习(202312)luogu-B3921,小杨的考试
GESP一级真题练习。为2023年12月一级认证真题。逻辑计算问题。 题目题解详见:【GESP】C一级真题练习(202312)luogu-B3921,小杨的考试 | OneCoder 【GESP】C一级真题练习(202312)luogu-B3921,小杨的考试 | OneCoderGESP一级真题练习。为2023…...
游戏中Dubbo类的RPC设计时的注意要点
一.消费方 1.需要使用到动态代理,代理指定的接口,这样子接口被调用时,就可以拿到:"类名 方法名参数返回值" 这些类型。 2.既然是rpc,那么接口被调用时,肯定在动态代理中会进行网络消息的发送&a…...
ARXML汽车可扩展标记性语言规范讲解
ARXML: Automotive Extensible Markup Language (汽车可扩展标记语言) xmlns: Xml name space (xml 命名空间) xsd: Xml Schema Definition (xml 架构定义) 1、XML与HTML的区别,可扩展。 可扩展,主要是…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
