zoukankan      html  css  js  c++  java
  • (FFOS Gecko & Gaia) OTA

      OTA的入口在settings app中,settings -> Device Information -> System Updates。这里可以设置update check周期,也可以check now主动检测更新。我们按照check now的流程来分析。

      代码位置:gaia/apps/settings/js/panels/about/update_check.js

    1. 监听CheckNow click event:

    init: function uc_init(elements) {
      this._elements = elements;
    
      this._loadLastUpdated();
    
      this._elements.checkUpdateNow.addEventListener('click',
        this._checkForUpdates.bind(this));
    },

    2. Do check

    _checkForUpdates: function uc__checkForUpdates() {
      if (!navigator.onLine) {
        alert(this._('no-network-when-update'));
        return;
      }
    
      this._elements.updateStatus.classList.add('checking', 'visible');
    
      /* remove whatever was there before */
      this._elements.systemStatus.textContent = '';
    
      for (var setting in this._checkStatus) {
        this._checkStatus[setting].cb =
          this._onUpdateStatus.bind(this, setting);
        this._settings.addObserver(setting, this._checkStatus[setting].cb);
      }
    
      this._settings.createLock().set({
        'gaia.system.checkForUpdates': true
      });
    }

      这里并没有做什么真正check的工作,而是通过_settings将'gaia.system.checkForUpdates'设置为true,这个_settings就是window.navigator.mozSettings。那么为什么不直接进行check的工作呢?并不是因为settings作为一个content process没有权限,而是希望复用gecko中针对于desktop browser已经有的updater组件。

      这种通过window.navigator.mozSettings来进行modules之间通信的方式,请参考"(FFOS Gecko & Gaia) IPC - 一种“猥琐的”IPC方式"。

  • 相关阅读:
    Codeforces Round #717 (Div. 2)
    Codeforces Round #716 (Div. 2)
    atCoder Regular Contest 117
    Codeforces Round #715 (Div. 2)
    牛客挑战赛49
    从零开始搭建webpack应用
    扫盲:npm
    MYSQL安装
    Int和integer区别
    关于JDK配置以及DOS窗口执行指令
  • 原文地址:https://www.cnblogs.com/code-4-fun/p/4702213.html
Copyright © 2011-2022 走看看