前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2022.2.20日报:过年这几周研究了electron和linux

2022.2.20日报:过年这几周研究了electron和linux

作者头像
龙泉寺扫地僧
发布2022-05-10 12:48:53
6960
发布2022-05-10 12:48:53
举报
文章被收录于专栏:盟主来了盟主来了

1,electron方面,重点研究了那个node隔离机制。其实就是

代码语言:javascript
复制
const mainWindow = new BrowserWindow({
  webPreferences: {
    contextIsolation: true
  }
})

这个其实就是利用chromium里很早很早就有的context隔离机制。

早在chromium30几版本的时候,chromium为了让extension可以操作dom,又不希望污染dom的context,就搞出了隔离机制。

具体来说,其实非常简单。就是electron::ElectronRenderFrameObserver::CreateIsolatedWorldContext -》

blink::WebLocalFrameImpl::ExecuteScriptInIsolatedWorld。

主要就是这个blink::WebLocalFrameImpl::ExecuteScriptInIsolatedWorld,如果参数isolate不为0,则会创建一个新的lsolate。值得注意的是,这个lsolate不是v8::lsolate。当时我被这个搞混淆了。

另外,这个electron::ElectronRenderFrameObserver::CreateIsolatedWorldContext一般都是在

LocalWindowProxy::Initialize里执行的,而调用了上面那个blink::WebLocalFrameImpl::ExecuteScriptInIsolatedWorld,也同样会进入LocalWindowProxy::Initialize。

这就导致LocalWindowProxy::Initialize这个函数可能会重入。

另外,LocalWindowProxy::Initialize就算不调用CreateIsolatedWorldContext,也会被调用两次(如果调用了CreateIsolatedWorldContext,就会不诶调用4次)。猜测可能第一次是初始化extension。

2,修复了https://e24f54ae35274e2b99bb4ac9302a52c7-paimai.dspaipai.com/login?type=individual 

https://e24f54ae35274e2b99bb4ac9302a52c7-paimai.dspaipai.com/login?type=individual的崩溃。这是blob机制在miniblink没实现完整导致的。这个网页的send xhr blob类型,会获取一个大的blob,里面包含2张图片。这网页会切分这个blob,分离出两张图片出来用。miniblink没处理好这种情况。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档