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方式"。

  • 相关阅读:
    [OpenGL]用OpenGL制作动画
    主管喜欢什么样的程序员
    windows下使用git管理代码,其中出现的问题的解决办法
    iOS7隐藏状态栏 status Bar
    [微信开发_02]环境搭建
    Matlab PCA 算法
    Git学习之msysGit环境支持
    Git学习之Git 暂存区
    Git学习之Git检出
    STL——(3)string容器
  • 原文地址:https://www.cnblogs.com/code-4-fun/p/4702213.html
Copyright © 2011-2022 走看看