随笔分类 -  FFOS Gecko

摘要:写这么长的分析,写到后面就比较懒了,呵呵。 这一系列的分析,只是分析了一个比较完整的主要流程,很多细节并没有分析。总体感觉这些代码写的还是比较乱的,可能很大原因是JS的灵活性和desktop browser模块的服用吧。 TODO: 画一张比较完成的流程图。 阅读全文
posted @ 2015-08-05 18:13 coding4范儿 阅读(125) 评论(0) 推荐(0)
摘要:这篇分析已经是尾声了,在UpdatePrompt中,调用了UpdateService的applyOsUpdate函数。1. UpdateService.applyOsUpdate 这个函数很简单,就是获取到update.zip以后,调用recovery service去完成更新。 apply... 阅读全文
posted @ 2015-08-05 18:10 coding4范儿 阅读(233) 评论(0) 推荐(0)
摘要:当download完成时,又回到了UpdatePrompt,因为此时需要提示user下载完成,确认apply。1. UpdatePrompt.showUpdateDownloaded showUpdateDownloaded: function UP_showUpdateDownloaded(... 阅读全文
posted @ 2015-08-05 18:04 coding4范儿 阅读(384) 评论(0) 推荐(0)
摘要:前面分析了这么多,还没有真正的走到download流程。这篇就去了解真正的downloader。1. UpdateService.downloadUpdate 看来这正的worker就是最后new出来的Downloader。downloadUpdate: function AUS_downlo... 阅读全文
posted @ 2015-08-05 17:44 coding4范儿 阅读(604) 评论(0) 推荐(0)
摘要:UpdatePrompt接收Gaia返回的'update-available-result'消息,进行下一步处理。1. UpdatePrompt.handleEvent handleEvent: function UP_handleEvent(evt) { if (evt.type !=... 阅读全文
posted @ 2015-08-05 14:23 coding4范儿 阅读(482) 评论(0) 推荐(0)
摘要:SystemApp中的UpdateManager作为gaia和gecko的通信桥梁,会接收gecko中UpdatePrompt发送的'update-available'事件。1. UpdateManager.handleEventvar detail = evt.detail;if (detai... 阅读全文
posted @ 2015-08-05 14:07 coding4范儿 阅读(633) 评论(0) 推荐(0)
摘要:当通过Checker检测到update以后,会通知UpdatePrompt中的updateCheckListener。1.UpdateCheckListener.onCheckCompleteonCheckComplete: function UCL_onCheckComplete(reques... 阅读全文
posted @ 2015-08-05 11:11 coding4范儿 阅读(376) 评论(0) 推荐(0)
摘要:虽然代码分析了很多,但是还没有真正做check的工作,下面就来找到真正的checker。 代码位置:gecko/toolkit/mozapps/update/nsUpdateService.js。参考之前的(FFOS Gecko & Gaia) OTA - 代码模块总览,nsUpdateSer... 阅读全文
posted @ 2015-08-05 10:45 coding4范儿 阅读(364) 评论(0) 推荐(0)
摘要:代码位置:gecko/b2g/components/UpdatePrompt.js SystemApp发出'force-update-check'事件,也就从gaia进入到了gecko层。1. 首先大概介绍一下UpdatePrompt.js。 (a)UpdatePrompt.js里包含了2个... 阅读全文
posted @ 2015-08-05 09:31 coding4范儿 阅读(316) 评论(0) 推荐(0)
摘要:代码位置:gaia/apps/system/js/update_manager.js1. update_manager.js向全局的window对象导出了一个对象UpdateManager,其他的js module可以直接访问UpdateManager。exports.UpdateManager... 阅读全文
posted @ 2015-08-04 18:18 coding4范儿 阅读(277) 评论(0) 推荐(0)
摘要:OTA的入口在settings app中,settings -> Device Information -> System Updates。这里可以设置update check周期,也可以check now主动检测更新。我们按照check now的流程来分析。 代码位置:gaia/apps/s... 阅读全文
posted @ 2015-08-04 15:44 coding4范儿 阅读(325) 评论(0) 推荐(0)
摘要:OTA整体框架里会涉及以下代码,从gaia到gecko都有,而且由于历史原因,复用了desktop browser的一些模块,还有一些冗余代码,分析时走了不少弯路。1. Gaia部分 (a)gaia/apps/settings/js/panels/about/update_check.js ... 阅读全文
posted @ 2015-08-04 11:10 coding4范儿 阅读(423) 评论(0) 推荐(0)
摘要:代码模块总览(FFOS Gecko & Gaia) OTA - 入口(FFOS Gecko & Gaia) OTA - 转移至System App(FFOS Gecko & Gaia) OTA - 进入Gecko层(FFOS Gecko & Gaia) OTA - Do real check(FFO... 阅读全文
posted @ 2015-08-04 11:10 coding4范儿 阅读(142) 评论(0) 推荐(0)
摘要:这几天在分析b2g中OTA部分的代码,记录一下settings与system app的IPC方式。 说是“猥琐的”IPC方式,只是因为我没见过,呵呵,不过请教了同事,这种方式在b2g中还是比较常见的。 简单的说,这种IPC方式是通过系统的preference来实现的,某一个preferenc... 阅读全文
posted @ 2015-08-03 09:27 coding4范儿 阅读(238) 评论(0) 推荐(0)
摘要:TODO:gecko/toolkit/mozapps/update/UpdateTelemetry.jsm 阅读全文
posted @ 2015-07-28 14:55 coding4范儿 阅读(129) 评论(0) 推荐(0)
摘要:1. JavaScript Component (1) add a CustomComponent.manifest# The {classID} here must match the classID in CustomComponent.jscomponent {e6b866e3-41b2-4... 阅读全文
posted @ 2015-07-21 10:58 coding4范儿 阅读(282) 评论(0) 推荐(0)
摘要:1. Using a service in C++nsCOMPtr servManager;nsresult rv = NS_GetServiceManager(getter_AddRefs(servManager));if (NS_FAILED(rv)) { // get ServiceManag... 阅读全文
posted @ 2015-07-20 16:11 coding4范儿 阅读(180) 评论(0) 推荐(0)
摘要:NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS is used for classes that have JS references or a mix of JS and C++ references to report. This participant... 阅读全文
posted @ 2015-07-17 18:21 coding4范儿 阅读(109) 评论(0) 推荐(0)
摘要:Mozilla FireFox Gecko内核源代码解析(1.nsParser) 阅读全文
posted @ 2015-07-17 18:17 coding4范儿 阅读(123) 评论(0) 推荐(0)
摘要:MOZ_FINAL:http://whereswalden.com/2011/11/26/introducing-moz_final-prevent-inheriting-from-a-class-or-prevent-overriding-a-virtual-function/MOZ_OVERRI... 阅读全文
posted @ 2015-07-17 18:13 coding4范儿 阅读(167) 评论(0) 推荐(0)