自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weolar的专栏

扫地僧

  • 博客(589)
  • 资源 (3)
  • 收藏
  • 关注

原创 2020.9.23日报:终于把chromium84支持npapi了

搞了两个多星期,踩了无数大坑以后,终于把chromium84支持npapi了。chromium很坑爹的把共享内存映射的base类删了,然后插件进程发送网络请求也变的超级复杂。很是坑爹。不过通过这么一搞,倒是又对chromium熟悉不少。...

2020-09-23 00:48:40 990 2

原创 最新版chromium 76如何支持xp

我知道,当我写下这个标题的时候,肯定一大波人会过来嘲讽:都什么年代了,还XP?道理我都懂,但据我咨询了腾讯同事一些内部数据,XP在中国依然百之十几个点的占有率。里面最多的就是政企单位。这些电脑配置不好,比较古老了,而且关键是很多配套的软件只有xp版本。让他们升级系统?想法很好,但谁出钱找那些配套工具的厂商呢,更何况很多年久失修的软件的厂商可能早就倒闭不见了,人都找不到。哈哈,其实我说了这...

2019-07-10 15:24:33 3604 5

原创 miniblink API文档

新文档地址:https://weolar.github.io/miniblink/doc-main.htm  

2018-05-26 00:55:56 14971 7

原创 Cef经典N大问题

1、cef启动、退出的时候怎么崩溃了答:如果是启动时崩溃,请看资源目录是否文件都齐全.退出的话见https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_Close.md如果是centos6.4 内核上跑CEF启动时候崩溃,原因是不支持一个uid有关的东西。启动时增加参数--disable-setuid-sandbox就OK了2、...

2016-11-25 17:35:33 24647 10

原创 搞了个miniblink的github站点

见https://weolar.github.io/miniblink/

2016-07-19 14:31:24 2961

原创 炫酷的miniblink demo已上传,基于bracket

因为最近这些版本不是太稳定,加上又从Webkit里挪了一些功能,所以就不说盛大发布了,先放个试玩版,然后每天迭代开发,争取早日稳定。用法:可以跑cefclient,也可以改名成wke.dll,然后丢到你们的wke的工程里去跑跑

2016-05-18 21:48:07 19892 8

原创 miniblink 的bug收集帖子

应广大网友的热情反馈,只好提前把miniblink 0.0.1 版放出来,果然一堆小问题。特此开个贴子收集下bug,以及解决情况

2016-05-14 21:02:30 2622 13

原创 2202.6.28日报:miniv8实现URLSearchParams

2022-06-28 17:54:12 165

原创 22.6.25日报:修复quickjs版本miniblink的几个小bug

2022-06-26 09:38:12 107

原创 22.6.20日报:修复指纹浏览器的几个bug

指纹浏览器源码

2022-06-22 16:21:29 141

原创 2022.6.9日报:正确处理webbrowser控件的键盘消息

webbrowser控件无法响应百度首页那个下拉框。网上查了下,说是要在消息循环里响应IOleInPlaceActiveObject::TranslateAccelerator照做了以后,发现某些网页的textarea,例如Javascript在线解压缩 - 在线工具​​​​​​按向下键,光标会下移动两行…于是我用SetWindowLongPtr,hook了ie的窗口消息响应函数,然后把WM_KEYDOWN给禁用了。这样做了以后,光标确实不会移动两行,但向...

2022-06-09 11:56:12 85

原创 2022.6.7日报:quickjs版miniblink逐步完善

1,给quickjs增加一个JS_CloneValue的api。这是为了模仿v8里面用到很多的v8::Object::Clone一开始,我是直接用JS_CopyDataProperties,但发现这个不会拷贝我设置了各种setter、getter之类的。所以我就再加一个JS_CloneDataProperties,通过遍历JSObject::shape来实现。2,给quickjs增加index callback。这是对应v8里的IndexedPropertyHandlerConfiguration操作。在b

2022-06-07 10:54:36 133

原创 2022.5.16日报:mb的打印机问题

1,最近发现,有的打印机比较奇葩,他那个physicalSizeDeviceUnits比printableAreaDeviceUnits要打一些。也就是物理打印区域比可打印区域大一些。这时候,传递给pdfium生成的dc需要调整一下,pdf的大小要适配可打印区域。一般是伸缩到可打印区域,或者干脆生成的时候安装可打印区域大小生成。...

2022-05-16 12:28:21 88

原创 2022.4.26:chrome100支持xp,堆栈大小问题

1,新版本v8确实恐怖,一上来就需要大堆栈,至少4M起步。动态申请大堆栈的地方,是chrome\app\chrome_exe_main_win.cc的入口里。这里用到了技巧,就是用ConvertThreadToFiberEx可以申请大内存。在v8的StackGuard::ThreadLocal::Initialize( ParseInfo::SetPerThreadState)里,会直接用当前堆栈地址GetCurrentStackPosition减去一个常量值,就成了堆栈溢出的检测值。(题外话,

2022-04-26 16:03:45 243 1

原创 2022.4.8日报:修复URLSearchParams崩溃

测试代码:const a = Object.create(null);var xx = new URLSearchParams(a);const n = xx.toString();崩溃原因是这个URLSearchParams是我从57版本弄回来的。49是没实现这个接口的。而57版本的constructor回调,判断传入参数无法字符串化后,是直接返回的。此时抛异常的时机是在ExceptionState的析构函数里。而49版本抛异常是要手动调用exceptionState.throwIfNeede

2022-04-08 23:40:11 118

原创 2022.3.23日报:_open_osfhandle、_get_osfhandle不能跨模块调用(调试ASAR功能里发现的)

1,今天在修改一个mini-electron的bug,就是mini-electron加载asar有时候提示文件UV_EBADF。原因是asar的Archive::Archive函数,会调用_open_osfhandle获取fd,然后传到nodejs的static void Read(const FunctionCallbackInfo<Value>& args)里,再用_get_osfhandle获取fd对应的windows句柄。然而这里有个问题,就是_open_osfh

2022-03-23 11:00:19 168

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

1,electron方面,重点研究了那个node隔离机制。其实就是const mainWindow = new BrowserWindow({ webPreferences: { contextIsolation: true }})这个其实就是利用chromium里很早很早就有的context隔离机制。早在chromium30几版本的时候,chromium为了让extension可以操作dom,又不希望污染dom的context,就搞出了隔离机制。具体来说,其实非常简单。

2022-02-20 22:30:56 665

原创 2022.1.9日报:修复input placeholder导致位置不准的问题

1,测试代码如下:<html lang="en"> <head> <meta charset="UTF-8"> <title>新建标签页</title> <link href="css/chunk-vendors.c98dfc91.css" rel="stylesheet"> <link href="css/browser.6f94aa46.css" rel="stylesheet

2022-01-09 10:57:18 623

原创 2022.1.6日报:增强browerview

1,继续完善mini-electron的browserview功能。2,v875版本遇到了一个bug,不知道是不是这个版本独有的。就是ant design这库(官网可重现这个bug),在装饰器装饰lazyUpdataPosition的时候用到了Object.getOwnPropertyDescriptor的返回值有问题。第一次是错的,第二次才对。3,修复pdf保存、打印时候的一些崩溃...

2022-01-06 10:05:19 724

原创 2021.12.29日报:重新开始撸mini-electron

1,mini-electron增加browserview控件2,增加audio context3,pdf样式美化

2021-12-29 11:25:53 1173 1

原创 2021.12.12日报:非ComplexPath下,skia显示黑体字有问题

测试代码是这样:<FONT style="FONT-SIZE: 12pt" face="黑体"><STRONG><SPAN>&nbsp; </SPAN></STRONG></FONT><br/>然后如果不开启ComplexPath,skia会显示空格变成一个方框,不知道是不是skia的bug。跟了一下,主要是Font::buildGlyphBuffer这里建立的glyph和ComplexPath不同。..

2021-12-12 18:31:44 703

原创 2021.12.9日报:v875的gc机制小结

最近被v875的gc搞蒙了。做个总结。1,v8::Persistent<T>的机制改了。如果用SetWeak设置了回收回调,那么如果在UnifiedHeapController::AdvanceTracing里不RegisterEmbedderReference的话,js如果也没引用,就会触发这个回收回调。57好像不会有这问题。这个变动,导致了一系列问题。例如document.getElementById("test").addEventListener这种方式添加的监听器,就直接被回收

2021-12-09 12:03:43 1128

原创 2021.11.6日报:跟进v8 的gc流程的一些笔记

1,v875的v8::PersistentHandleVisitor是可以把句柄全遍历出来的,但要想保持这些句柄长久不被gc回收,要在v8::EmbedderHeapTracer的AdvanceTracing里调用tracer->RegisterEmbedderReference。在v8::PersistentHandleVisitor里调用RegisterEmbedderReference是无效的。这个我研究了很久v8才知道。2,v8::EmbedderHeapTracer::RegisterV

2021-11-06 15:12:16 636

原创 2021.11.1日报,mb57切换到v875版本。

1,研究用vs编译v875的时候遇到了两个小问题。新版本v8,基本上没考虑过vs来编译。现在遇到了:(1)v8有部分代码是py预编译生成的。而在编译x86和x64的时候,居然这个预编译的代码还稍微有点不一样。具体是在gen\v8\torque-generated\builtins-array-from-dsl-gen.ccgen\v8\torque-generated\builtins-base-from-dsl-gen.ccgen\v8\torque-generated\built

2021-11-01 09:29:13 354

原创 2021.10.9日报:修复mb57的devtools问题

1,可以调用并获取flash npapi的返回值。之前没获取到,是因为_NPN_EVAL_xxx函数没实现完整。flash会在这里把_flash_temp_ = '111' 3之类的脚本,

2021-10-09 23:17:34 93 1

原创 2021.8.18日报:让v8忽略js的脚本错误继续执行

1,修复cssText获取节点的值不对的问题。原因是E:\mycode\minichrome53\third_party\WebKit\Source\build\scripts\make_css_property_names.py这里面我上次

2021-08-18 21:03:09 137

原创 2021.8.11日报:让v8跳过各种错误

1、现在碰到一个蛋疼的需求,就是有很多沙雕网页,js代码写的非常飘逸。而某些环境下,浏览器又必须得忽略这些错误。举个例子:var commonCookie = undefined;commonCookie.getCookie("userToken");console.log('finish');这种代码,必须得跳过前面的js错误,执行到console.log('finish');其他的js错误还有很多。除了运行时错误,还有编译错误。研究了一番后,我发现没有通用的解决方案。我是一.

2021-08-11 17:43:19 330

原创 2021.8.3日报:修改chrome设定页

1,chrome的设置页,里面比如自动填充项目里的“自动登录”的这个开关,我找了半天也没找到js是在哪设置的。后来灵机一动,也有可能这玩意是结合他那个js模板库来实现的,因为这个html的模版里有个pref的属性。所以我去pref_service->Set之类的下个断点,果然命中了。具体的主进程调用堆栈如下:extensions::SettingsPrivateEventRouter::OnPreferenceChangedPrefChangeRegistrar::OnPreferenceC

2021-08-04 10:35:05 669

原创 2021.8.1日报

1,现在实现了v8可以忽略部分js错误。例如:var data = undefined;data.src.test();data.getChildren();data.getChildren = function (){};这几句js代码,可以忽略完错误继续往下执行。2,修复了指纹浏览器里OscillatorNode Hash没有成功的问题。测试用例:https://privacycheck.sec.lrz.de/active/fp_ac/fp_audiocontext.html#star

2021-08-02 08:06:15 448

原创 2021.7.30日报:mb57修复字体等问题

1,字体有几个点要注意修改:third_party\WebKit\Source\platform\fonts\win\FontCacheSkiaWin.cpp的FontCache::FontCache s_useSubpixelPositioning 要为false FontCache::FontCache 的fontManager = SkFontMgr_New_GDI(); third_party\WebKit\Source\platform\fonts\win\FontPlatformData

2021-07-30 13:11:33 539

原创 21.7.26日报:指纹浏览器基本搞定

最近一直在搞指纹浏览器。目前实现了:2021.7.26更新: * name项增加定义颜色功能 * 浏览器地址栏左侧调用自定义名称。 * 自定义浏览器图标,我们在user-data目录下生成ico图片,浏览器启动的时候调用这个图标。 * 地理位置询问、允许、禁止。 * 增加默认加载crx功能。 * 自定义计算机名称和网卡(MAC)地址。(以前不相信,但是目前有证据证明google可以通过浏览器获得计算机名称, 产生强关联) * 媒体设备ID掩盖。...

2021-07-26 11:54:14 1046 3

原创 2021.7.5日报:npapi的小bug、实现chromium的socks5代理

1,发现要实现npapi的话,必须实现--disable-gpu-compositing命令行的效果。不然不知道为啥,np插件的窗口挂的父窗口上会什么都显示不了2,chromium真是恶心,不知道为啥就是不实现socks5的用户名+密码功能。https://bugs.chromium.org/p/chromium/issues/detail?id=256785 我看有人8年前就提这个要求了,就是一直不给实现。没想通这小功能为啥不支持。这链接里的人,求爷爷告奶奶似得,谷歌就是不实现。真是恶心。3、

2021-07-05 21:50:56 797

原创 2021.6.15日报:搞定chromium里集成mb的难点了

上周有好几天都在做这个事情。目前有碰到几个问题:1,如何把绘制内容融合进去?答:把mb的绘制的bitmap放到cc::Canvas里。这样不管是否开启硬件加速,都没问题了

2021-06-15 22:04:05 621 2

原创 2021.6.2日报:onchange的小tips

<input onchange='xxxx(xx,)'这种 node.dll!v8::ScriptCompiler::CompileUnboundInternal(v8::Isolate * v8_isolate, v8::ScriptCompiler::Source * source, v8::ScriptCompiler::CompileOptions options, bool is_module) 行 2095 C++ 已加载符号。 node.dll!v...

2021-06-02 22:31:49 330

原创 2021.5.14日报:优化V8性能

1,用js计算9皇后问题,发现mb的性能很低。一番调试后发现是1月29号的* 开启block_concurrent_recompilation修复https://chowsangsang.tmall.com的崩溃这个提交导致的。但现在奇怪的是,就算关闭这个block_concurrent_recompilation,https://chowsangsang.tmall.com也没崩溃。2,打算优化一下mini-electron。这东西的需要还是蛮大的。...

2021-05-14 17:00:39 656

原创 2021.5.10日报:blink的gc问题

上次说那个GC问题,没想到还有后续。当时我那样改了以后,居然还是偶尔会被非正常gc掉。这就奇怪了。仔细研究了下57版本的gc,发现确实和49不一样了。57是给blink的每个引入v8的变量,搞了个基类:ActiveScriptWrappableBase再到V8PerIsolateData管理了所有的ActiveScriptWrappableBase实例。1然后在UnifiedHeapController::EnterFinalPause(这是个gc的某一阶段),blink遍历所有Acti

2021-05-10 10:23:31 408

原创 2021.5.6日报:修复mb v8 7.5的GC的bug

现在虽然把mb的v8版本升级到了7.5.但这玩意目前发现有个重大的小问题:https://element.eleme.cn/#/zh-CN/component/button这里面的按钮,过了几分钟就点不动了。也就是没响应消息了。调试了一番后,发现是如下这段代码就可以重现:<script> var timerFunc; //var port1; function flushCallbacks () { console.log("flushCallbacks");...

2021-05-06 15:54:05 545

原创 2021.5.3日报:vs编译node addon

1,编译node addon本身很简单。主要是有几个小坑。一个是需要v8.h和v8.lib要和electron版本匹配。另外我编译的时候,发现electron的lib居然vs识别不了。我只能直接手写了个空的exe工程,里面把v8等接口导出,然后把生成的动态加载lib给node addon工程用。这个空工程要注意的是,名字要是electron.exe 。如果是node.exe 也行。只是要做好延迟加载的工作。2,G:\electron_5_0_3\src\third_party\electron_

2021-05-03 11:12:19 566

原创 2021.5.2日报:修复mb启动白屏问题、增加nodejs功能

1,mb的白屏问题,是当年从webkit扣的代码里面的这个setSharedTimerFireInterval函数,没仔细看清楚。这函数会调用GetQueueStatus,判断如果没有QS_PAINT | QS_MOUSEBUTTON | QS_KEY | QS_RAWINPUT这几个状态才会继续进行。但启动的时候,如果是某些游戏,会有QS_RAWINPUT消息。然后导致mb的心跳线程创建不了。2,给node.dll增加了nodejs能力。以前这些能力是在外层mb.dll做的。3,修复npapi

2021-05-02 08:40:20 405

原创 2021.4.25日报:修复npapi的白屏问题,以及demo.finebi.com的字体问题

1,在给chrome加上npapi能力的时候,发现有窗口模式下,会出现绘制不完整的情况。验证发现是chrome新版本给Chrome_RenderWidgetHostHWND这层窗口设置了WM_EX_TRANSPARENT属性。原来现在这层窗口其实是不放置图像的,图像都统一由CC层绘制到主窗口。这个Chrome_RenderWidgetHostHWND貌似是给画中画使用的。有WM_EX_TRANSPARENT这个属性的窗口,其实是个透明的。而子窗口绘制在上面后,会出现各种奇怪的效果。后来想到的办法

2021-04-25 23:43:29 200

miniblink浏览器控件

Miniblink是一个追求极致小巧的浏览器内核项目,全世界第三大流行的浏览器内核控件。 其基于chromium最新版内核,去除了chromium所有多余的部件,只保留最基本的排版引擎blink。 Miniblink保持了10M左右的极简大小,是所有同类产品最小的体积,同时支持windows xp、npapi。

2019-02-13

ntfs源码(可编译工程)

ntfs的可编译的代码。我基于nt4改造的。相信搞文件系统的会相当有用吧?

2009-08-14

超强英语造句机

我花了整整一天的时间才做好!界面很华丽,最重要的是能把中文单词翻译成一些长句! 本地打开工具页面,输入句子进行翻译,支持中英文互译; 翻译时不刷新不提交页面,便于集成到其他页面; 支持在浏览器中选中文本后点击右键菜单进行即时翻译,中英文互译; 翻译支持词、句,建议用来翻译句子,如果是词还是用金山词霸更方便点; 几乎是零资源占用,翻译花费时间和网速成正比,最快只需半秒;

2007-04-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除