インストール

インストール

[3] サービスワーカー登録 (service worker registration)

仕様書

状態

[8] サービスワーカー登録は、次の状態を持ちます。

適用範囲URL
サービスワーカー登録適用範囲URLごとに1つ存在します。
インストール中ワーカー
待機中ワーカー
活性ワーカー
last update check time
初期値は null >>2
キャッシュ利用
ブール型。初期値は
uninstalling flag
初期値は未設定>>2
タスクキュー群
NavigationPreloadManager
navigation preload enabled flag
navigation preload header value
ジョブキュー

ServiceWorkerContainer インターフェイス register メソッド

[22] ServiceWorkerContainer インターフェイスregister メソッドは、 次の引数を持ちます。

スクリプトURL
USVString >>25
オプション群
辞書 RegistrationOptions (省略可能) >>25

[24] 辞書 RegistrationOptions は、次のメンバーを持ちます >>25

[23] このメソッドは、 NewObject です >>25

[26] 次のようにしなければなりません >>21

  1. [28] 約束を、約束に設定します。
  2. [29] クライアントを、文脈オブジェクトサービスワーカークライアントに設定します。
  3. [30] URLを、スクリプトURL文脈オブジェクト関連設定群オブジェクトAPI基底URLに対して構文解析した結果に設定します。
  4. [31] オプション群scope存在するなら、
    1. [32] 適用範囲URLを、オプション群scope文脈オブジェクト関連設定群オブジェクトAPI基底URLに対して構文解析した結果に設定します。
  5. [33] それ以外の場合、
    1. [27] 適用範囲URLを、 null に設定します。
  6. [34] 登録開始します。
    適用範囲URL
    適用範囲URL
    スクリプトURL
    URL
    約束
    約束
    クライアント
    クライアント
    参照元
    クライアント作成URL
    ワーカー型
    オプション群type
    キャッシュ利用
    オプション群useCache
  7. [35] 約束を返します。

ServiceWorkerContainer インターフェイス getRegistration メソッド

[36] ServiceWorkerContainer インターフェイスgetRegistration メソッドは、 次のようにしなければなりません >>37

  1. [38] クライアントURLを、省略可能な第1引数を USVString と解釈した結果に設定します。 既定値空文字列とします。 >>25
  2. [39] クライアントを、文脈オブジェクトサービスワーカークライアントに設定します。
  3. [40] URLを、クライアントURL文脈オブジェクト関連設定群オブジェクトAPI基底URLに対して構文解析した結果に設定します。
  4. [41] URL失敗の場合、
    1. [42] TypeError拒絶した約束を返し、ここで停止します。
  5. [43] URL起源クライアント起源同じ起源でない場合、
    1. [44] SecurityError 例外拒絶した約束を返し、ここで停止します。
  6. [45] 約束を、新しい約束に設定します。
  7. [46] 並列の処理を開始します。
  8. [47] 約束を返します。

[48] 並列の処理は、次のようにします >>37

  1. [49] 登録を、URL についてのサービスワーカー登録の一致の結果に設定します。
  2. [50] 登録null 以外の場合、
    1. [51] 約束を、登録を表す ServiceWorkerRegistration解決します。
  3. [52] それ以外の場合、
    1. [53] 約束を、未定義解決します。

ServiceWorkerContainer インターフェイス getRegistrations メソッド

[55] ServiceWorkerContainer インターフェイスgetRegistrations メソッドは、 次のようにしなければなりません >>54

  1. [56] クライアントを、文脈オブジェクトサービスワーカークライアントに設定します。
  2. [57] 約束を、新しい約束に設定します。
  3. [58] 並列の処理を開始します。
  4. [59] 約束を返します

[60] 並列の処理は、次のようにします >>54

  1. [61] 配列を、新しい配列に設定します。
  2. [62] scope to registration map の各 (キー, ) について、
    1. [63] キー構文解析した結果の起源クライアント起源同じ起源で、 uninstalling flagなら、
      1. [64] 配列に、
        と関連付けられた ServiceWorkerRegistration を追加します。
  3. [65] 約束を、配列解決します。

処理

作成

[85] ジョブジョブ型登録 (register) 更新 (update) >>86 は、サービスワーカーの作成処理を表しています。

[67] 登録開始 (Start Register) は、 適用範囲URLスクリプトURL約束クライアント参照元ワーカー型キャッシュ利用について、 次のようにしなければなりません >>66

  1. [70] 次のいずれかの場合:
    1. [68] 約束を、TypeError拒絶します。
    2. [69] ここで停止します。
  2. [74] 適用範囲URLnull の場合、
    1. [75] 適用範囲URLを、スクリプトURLディレクトリーURLに設定します。
  3. [76] 次のいずれかの場合:
    1. [83] 約束を、 TypeError拒絶します。
    2. [77] ここで停止します。
  4. [82] ジョブを、ジョブ作成の結果に設定します。
    ジョブ型
    登録
    適用範囲URL
    適用範囲URL
    スクリプトURL
    スクリプトURL
    約束
    約束
    クライアント
    クライアント
  5. [87] ジョブを次の通り設定します。
    ワーカー型
    ワーカー型
    キャッシュ利用
    キャッシュ利用
    参照元
    参照元
  6. [78] Schedule Job を実行します。
    ジョブ
    ジョブ
    ジョブキュー
    利用者エージェント適用範囲URLからジョブキューへの写像適用範囲URLの値

[88] 登録開始により追加されたジョブは、 適当なタイミングで登録を呼び出します。

[125] ソフト更新 (Soft Update) は、 登録force bypass cache flagについて次のようにします >>124

  1. [162] 最新ワーカーを、登録についての最新ワーカーの取得の結果に設定します。
  2. [157] 最新ワーカーnull の場合、
    1. [158] ここで停止します。
  3. [160] ジョブを、ジョブ作成の結果に設定します。
    ジョブ型
    更新
    適用範囲URL
    登録適用範囲URL
    スクリプトURL
    最新ワーカースクリプトURL
    約束
    null
    クライアント
    null
  4. [159] ジョブワーカー型を、最新ワーカーに設定します。
  5. [161] ジョブforce bypass cache flag を、 force bypass cache flag に設定します。
  6. [165] ジョブキューを、利用者エージェント適用範囲URLからジョブキューへの写像ジョブ適用範囲URLの値に設定します。
  7. [163] ジョブジョブキューについて Schedule Job を実行します。

[164] handle fetchhandle functional event から呼び出されます。

[155] 利用者エージェントは、更新を検査したい時にいつでもこの手順を呼び出すことができます >>124。 また、開発者ツールからの呼び出しなどデバッグを補助するために force bypass cache flag を使うことができます >>124

[167] ソフト更新により追加されたジョブは、 適当なタイミングで更新を呼び出します。

スクリプトの取得と実行

[90] 登録 (Register) は、 ジョブジョブジョブキュージョブキューを次のようにします >>89

  1. [91] 次のいずれかの場合:
    1. [92] ジョブSecurityError 例外についてジョブ約束の拒絶を呼び出します。
    2. [93] ジョブジョブキューについてジョブ終了を呼び出します。
    3. [94] ここで停止します。
  2. [98] 登録を、ジョブ適用範囲URLについて登録を取得した結果に設定します。
  3. [99] 登録null 以外の場合、
    1. [100] 登録uninstalling flagの場合、
      1. [101] 登録uninstalling flag を、に設定します。
    2. [102] 最新ワーカーを、登録について最新ワーカーを取得した結果に設定します。
    3. [103] 次のすべてを満たす場合:
      1. [107] ジョブ登録ServiceWorkerRegistration についてジョブ約束の解決をします。
      2. [108] ジョブジョブキューについてジョブ終了を呼び出します。
      3. [109] ここで停止します。
  4. [110] それ以外の場合、
    1. [111] ジョブ適用範囲URLジョブキャッシュ利用について登録の設定をします。
  5. [112] ジョブジョブキューについて更新します。

[115] ジョブを走らせる処理から呼び出されます。


[114] 更新 (Update) は、 ジョブジョブキューを次のようにします >>113

  1. [116] 登録を、ジョブ適用範囲URLについて登録を取得した結果に設定します。
  2. [117] 登録null か、 登録uninstalling flagの場合、
    1. [118] ジョブTypeErrorジョブ約束を拒絶します。
    2. [119] ジョブジョブキューについてジョブ終了します。
  3. [120] 最新ワーカーを、登録について最新ワーカーを取得した結果に設定します。
  4. [121] ジョブジョブ型更新で、 最新ワーカースクリプトURLジョブスクリプトURL素片識別子除外フラグを設定して等価ない場合、
    1. [122] ジョブTypeErrorジョブ約束を拒絶します。
    2. [123] ジョブジョブキューについてジョブ終了します。
  5. [126] ジョブワーカー型により、
    classic
    古典ワーカースクリプトのfetchを実行します。
    URL
    ジョブスクリプトURL
    fetchクライアント設定群
    ジョブクライアント
    終点
    serviceworker
    スクリプト設定群オブジェクト
    このサービスワーカー用に作られる環境設定群オブジェクト
    fetchの実行
    サービスワーカー用の処理 (登録ジョブ最新ワーカーを参照します。 HTTPS状態参照元ポリシーを設定することがあります。)
    続きの処理
    >>127
    module
    モジュールワーカースクリプトグラフのfetchを実行します。
    URL
    ジョブスクリプトURL
    fetchクライアント設定群オブジェクト
    ジョブクライアント
    終点
    serviceworker
    credentialsモード
    omit
    モジュール写像設定群オブジェクト
    このサービスワーカー用に作られる環境設定群オブジェクト
    fetchの実行
    サービスワーカー用の処理 (登録ジョブ最新ワーカーを参照します。 HTTPS状態参照元ポリシーを設定することがあります。)
    続きの処理
    >>127

[127] スクリプトについての続きの処理は、次のようにします >>113

  1. [129] スクリプトnull の場合、
    1. [128] ジョブTypeError についてジョブ約束を拒絶します。
    2. [130] 最新ワーカーnull の場合、
      1. [131] 登録について登録を消去します。
      2. [132] ジョブジョブキューについてジョブ終了します。
      3. [133] ここで停止します。
  2. [134] 次のすべてを満たす場合:
    1. [140] ジョブ登録ServiceWorkerRegistration についてジョブ約束を解決します。
    2. [141] ジョブジョブキューについてジョブ終了します。
    3. [142] ここで停止します。
  3. [143] ワーカーを、新しいサービスワーカーに設定します。
    [144] サービスワーカー
    識別子
    新しい固有の不透明文字列
    スクリプトURL
    ジョブスクリプトURL
    スクリプト資源
    スクリプト
    ジョブワーカー型
  4. [145] ワーカースクリプト資源HTTPS状態を、HTTPS状態に設定します。
  5. [146] ワーカースクリプト資源参照元ポリシーを、参照元ポリシーに設定します。
  6. [147] 結果を、サービスワーカーを走らせる処理を実行した結果に設定します。
    ワーカー
    ワーカー
    force bypass cache for importscripts flag
    ジョブforce bypass cache for importscripts flag
  7. [148] 結果失敗の場合、
    1. [149] ジョブTypeError についてジョブ約束を拒絶します。
    2. [150] 最新ワーカーnull の場合、
      1. [151] 登録について登録を消去します。
    3. [152] ジョブジョブキューについてジョブ終了します。
    4. [153] ここで停止します。
  8. [154] ジョブワーカー登録ジョブキューについてインストールします。

[156] 更新は、ジョブを走らせる処理の他に、 登録からも呼び出されます。


[169] インストール (Install) は、 ジョブワーカー登録ジョブキューを次のようにします >>168

  1. [170] 失敗を、に設定します。
  2. [198] 完了時を、すべて終わったら実行に設定します。
  3. [171] 最新ワーカーを、登録最新ワーカーの取得の結果に設定します。
  4. [172] 登録installingワーカーについて登録状態更新します。
  5. [173] 登録インストール中ワーカーインストール中完了時についてワーカー状態の更新を実行します。
  6. [174] ジョブ登録ServiceWorkerRegistration についてジョブ約束の解決をします。
  7. [175] タスクをキューに追加します。
    処理
    タスク源
    ?
  8. [178] インストール中ワーカーを、登録インストール中ワーカーに設定します。
  9. [179] インストール中ワーカージョブforce bypass cache flag について、サービスワーカーを走らせる処理を実行します。
  10. [180] タスクをキューに追加します。
    処理
    >>197
    捨てる処理
    失敗の時の処理 (>>182)
    タスク源
    ?

[197] タスクは、次のようにします >>168

  1. [181] イベントを発火します。
    インターフェイス
    InstallEvent
    イベント型
    install
    対象
    インストール中ワーカー大域オブジェクト
    pending promises count0 になった時の処理
    失敗の時の処理 (>>182)
    サービスワーカーの終端で中断された場合、 並列に、失敗の時の処理 (>>182) をします。
  2. [189] 登録インストール中ワーカーimported scripts updated flag を、に設定します。
  3. [190] 登録待機中ワーカーnull でない場合、
    1. [191] 登録待機中ワーカーについて、サービスワーカーの終端を実行します。
    2. [192] 登録待機中ワーカー、「冗長」、完了時について、 ワーカー状態の更新を実行します。
  4. [193] 登録waiting登録インストール中ワーカーについて、 登録状態の更新を実行します。
  5. [194] 登録installingnullについて、 登録状態の更新を実行します。
  6. [195] 登録待機中ワーカー、「インストール済み」、完了時について、 ワーカー状態の更新を実行します。
  7. [196] ジョブジョブキューについてジョブ終了を実行します。
  8. [199] 完了時について完了時に登録について活性化挑戦します。

[182] 失敗の時の処理は、次のようにします >>168

  1. [183] 失敗を、に設定します。
  2. [184] 登録インストール中ワーカーと「冗長」について、 ワーカー状態の更新を実行します。
  3. [185] installingnull について登録状態の更新を実行します。
  4. [186] 最新ワーカーnull の場合、
    1. [187] 登録について登録消去を実行します。
  5. [188] ジョブジョブキューについてジョブ終了を実行します。

登録解除

[166] ジョブジョブ型登録解除 (unregister) >>86

管理

[9] 利用者エージェントは、scope to registration map を持ちます。 これは順序付き写像であって、 キー適用範囲URLで、サービスワーカー登録です。 >>84, >>2

[5] 適用範囲URLが同じサービスワーカー登録が既にあれば、新しいもので置き換えられます。 >>2

[4] 利用者エージェントは、適用範囲URLが異なる限り、 同じ起源の複数のサービスワーカー登録を有効化して構いません。 >>2

[20] scope to registration map 追加時に ready の処理

選択

[11] サービスワーカークライアントクライアントは、 要求の処理に当たり、 サービスワーカー登録を次のように選択 (select) します >>12

  1. [13] 要求URL局所ないなら、
    1. [14] クライアント利用者エージェントscope to registration map からサービスワーカー登録一致した結果を返します。
  2. [15] それ以外の場合、
    1. [16] クライアント有責閲覧文脈入れ子閲覧文脈の場合、
      1. [18] クライアント親閲覧文脈の環境のサービスワーカー登録を (あれば) 返します。
    2. [19] クライアントワーカークライアントなら、
      1. [17] クライアントワーカーの文書群のいずれかの環境のサービスワーカー登録を (あれば) 返します。
サービスワーカー登録の一致

文脈

[6] サービスワーカーは、containing service worker registration を持ちます。値はサービスワーカー登録です。 >>1

[7] サービスワーカーcontaining service worker registrationは、 そのサービスワーカーを含むものです。 >>1