在 Chromium 嵌入式框架中使用文件系统访问 API

Use File System Access API in Chromium Embedded Framework

提问人:SimonMonkey 提问时间:1/26/2022 更新时间:1/26/2022 访问量:596

问:

我的程序使用 CEF(Chromium Embedded Framework)来实现一个简单的浏览器组件。我想使用 CEF 中的文件系统访问 API 来读取和写入本地文件,但出现了一些问题。https://mburakerman.github.io/file-system-access-api-demo/ 是我用来试验文件系统访问 API 的测试页面。我一开始用的是Chrome,Chrome表现良好,可以正常读取和写入本地文件。然后我编译了 CEF(verstion is 96)项目并使用 cefclient 来测试 CEF 是否也运行良好,但它不能。 CEF 可以正确读取本地文件,但是当我单击“保存更改”按钮时,没有响应,它也无法写入我之前选择的本地文件。之后,我运行了 Chromium 和 CEF 的源代码来比较文件系统访问 API 的差异。当我要编写本地文件时,Chromium 和 CEF 的代码运行到与下图所示相同的位置。Chromium 和 CEF 在写入本地文件时运行到相同的位置他们都输入了 DoRequestPermission 函数。很奇怪的是,Chromium 的current_status是“ASK”,而 CEF 是“DENIED”。CEF的current_status值然后我检查了堆栈,它显示文件的状态在消息调度时已初始化,但我找不到状态初始化的位置。使用文件系统访问 API 时 CEF 的堆栈在这里输入图像描述,我想知道为什么 Chromium 中的状态是“ASK”。它是否使用某些特定的命令行或其他方法?

Chromium 消息 chromium-embedded local-files file-system-access-api

评论

0赞 Dyllon Gagnier 2/24/2022
您能否检查请求是否被记录为由用户触发?我遇到的一件事是,除非 Chromium 认为请求是用户触发的,否则您不能请求新的文件句柄或请求对现有文件句柄的权限。也就是说,您不能只在启动时请求它,也不能在启动时使用 setTimeout 代码来请求权限。CEF 可能没有正确跟踪这一点或其他什么。
0赞 SimonMonkey 10/15/2022
对不起,我刚刚看到了你的评论,谢谢~

答: 暂无答案