* 仕様書

[REFS[
- [1] [CITE@en[Service Workers Nightly]] ([TIME[2017-03-02 15:00:14 +09:00]]) <https://w3c.github.io/ServiceWorker/#navigator-service-worker-controller>
- [9] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-10-14 21:54:07 +09:00]] 版) <https://html.spec.whatwg.org/#environment-settings-object>
- [12] [CITE@en[Service Workers Nightly]] ([TIME[2017-03-02 15:00:14 +09:00]]) <https://w3c.github.io/ServiceWorker/#service-worker-container-event-handlers>
]REFS]

* 活性サービスワーカー

[8] [[環境]]は、[DFN[[F[[RUBYB[[[活性サービスワーカー]]]@en[active service worker]]]]]]を持ちます。
値は [CODE[null]] または[[環境]]を[[制御]]する[[サービスワーカー]]です。 [SRC[>>9]]

;; 初期値は[[環境設定群オブジェクト]]を参照。

* [CODE(DOMe)@en[controllerchange]]

[13] [CODE(DOMi)@en[ServiceWorkerContainer]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[oncontrollerchange]]]] [[IDL属性]]は、
[CODE(DOMe)@en[controllerchange]] [[イベント]]の[[イベントハンドラー]]です [SRC[>>12]]。

* 処理

[2] [CODE(DOMi)@en[ServiceWorkerContainer]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[controller]]]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>1]]。

[FIG(steps)[
= [3] [VAR[ワーカー]]を、[[文脈オブジェクト]]の[F[サービスワーカークライアント]]の[F[活性サービスワーカー]]に設定します。
= [4] [VAR[ワーカー]]が [CODE[null]] の場合、
== [5] [CODE[null]] を返します。
= [6] それ以外の場合、
== [7] [VAR[ワーカー]]を表す [CODE(DOMi)@en[ServiceWorker]] を返します。
]FIG]

;; [10] 同じ[VAR[ワーカー]]であれば、常に同じ [CODE(DOMi)@en[ServiceWorker]]
[[オブジェクト]]を返します [SRC[>>2]]。

[11] [[サービスワーカー]]を使っていない場合は [CODE[null]] となります。
[[スーパーリロード]]の場合も [CODE[null]] となります [SRC[>>2]]。