[4] [[インターフェイス]]や[[例外]]が [DFN[[RUBYB[[[JavaScript]] に晒されている]@en[exposed to JavaScript]]]]とは、
[[WebIDL]] の規定するところにより[[インターフェイス]]や[[例外]]が [[JavaScript]] の[[大域環境]]に晒されることをいいます
[SRC[>>1]]。

* 仕様書

[REFS[
- [24] '''[CITE[Web IDL (Second Edition)]] ([TIME[2014-02-10 21:45:38 +09:00]] 版) <http://heycam.github.io/webidl/#Exposed>'''
- [9] [CITE[Web IDL (Second Edition)]] ([TIME[2013-08-25 07:30:46 +09:00]] 版) <http://dev.w3.org/2006/webapi/WebIDL/#dfn-expose>
- [2] [CITE[Web IDL (Second Edition)]] ([TIME[2013-09-27 04:34:45 +09:00]] 版) <http://dev.w3.org/2006/webapi/WebIDL/#es-interfaces>
- [3] [CITE[Web IDL (Second Edition)]] ([TIME[2013-09-27 04:34:45 +09:00]] 版) <http://dev.w3.org/2006/webapi/WebIDL/#es-exceptions>
]REFS]

* 説明

[5] [[WebIDL]] により記述された[[インターフェイス]]や[[例外]]は、
[[コールバックインターフェイス]]や [CODE@en[[['''['''NoInterfaceObject''']''']]]] [[拡張属性]]がついたものを除き、
対応する[[インターフェイスオブジェクト]]や[[例外インターフェイスオブジェクト]]が[[大域オブジェクト]]の[[特性]]として存在することになります。
これを [[JavaScriptに晒されている]]といいます。

[EG[
[6] 例えば [CODE(DOMi)@en[[[Node]]]] [[インターフェイス]]は、その[[インターフェイスオブジェクト]]に
[CODE(JS)@en[[[window]].[[Node]]]] のようにしてアクセスできます。 (ここで [CODE(JS)@en[[[window]]]]
は[[大域オブジェクト]]を返すものとします。)
]EG]

[7] しかしすべての[[大域オブジェクト]]にすべての[[インターフェイス]]や[[例外]]が晒されるわけではありません。
ある[[インターフェイス]]や[[例外]]が[[大域オブジェクト]]に晒されるかどうかは、
それらの存在する[[JavaScript大域環境]]により異なります。

[EG[
[8] 例えば [CODE(DOMi)@en[[[Node]]]] [[インターフェイス]]は[[文書環境]]では[[JavaScriptに晒され]]ていますが、
[[ワーカー環境]]ではそうではありません。従って、 [CODE(JS)@en[[[self]]]] が[[大域オブジェクト]]を返すとして、
[CODE(JS)@en[[[self]].[[Node]]]] は[[文書環境]]では[[インターフェイスオブジェクト]]を返しますが、
[[ワーカー環境]]では [CODE(JS)@en[[[undefined]]]] を返します。
]EG]

* [CODE(IDL)@en[Exposed]] 拡張属性 (Web IDL)

[26] [DFN[[CODE(IDL)@en[[[Exposed]]]]]] [[拡張属性]]は、
指定された対象が[[晒される]]ことになる[[ECMAScript大域環境]]を表します。

** 意味

[67] [CODE(IDL)@en[[[Exposed]]]] [[拡張属性]]は、[[露出集合]] (>>58)
を明示的に設定するものです。

** 文脈

[25] [CODE(IDL)@en[[[Exposed]]]] [[拡張属性]]は、[[インターフェイス]]、
[[部分インターフェイス定義]]、[[インターフェイスメンバー]]、
[[コンストラクター]]付きの[[辞書]]に指定できます [SRC[>>24]]。

;; [42] [[例外]]には指定できません。

[32] [CODE(IDL)@en[[[Constructor]]]] [[拡張属性]]を持たない
[CODE(IDL)@en[[[dictionary]]]] に指定しては[['''なりません''']] [SRC[>>24]]。

[39] [[部分インターフェイス定義]]に指定すると、その[[インターフェイスメンバー]]すべてに指定したのと同義となります。
([[インターフェイス]]本体に指定した時と意味が異なります。)

[31] [[部分インターフェイス定義]]とその中の[[インターフェイスメンバー]]の両方に指定しては[['''なりません''']]
[SRC[>>24]]。

;; [40] [[インターフェイス]]本体に対する指定は[[部分インターフェイス定義]]の中の[[インターフェイスメンバー]]には適用されないようです。
[[部分インターフェイス定義]]には個別に指定が必要です。

;; [46] [[部分インターフェイス定義]]に何も指定しなければ[[インターフェイス]]本体と同じと解釈するのが自然な感じがしますが...

[30] [[overload]] された[[演算]]に現れる場合は、すべての [[overload]]
において同じ[[識別子リスト]]で現れなければ[['''なりません''']] [SRC[>>24]]。

** 構文

[28] [CODE(IDL)@en[[[Exposed]]]] [[拡張属性]]には[[識別子]]1つか[[識別子リスト]]を指定しなければなりません。
[[識別子]]は[[大域名]]でなければなりません。 [SRC[>>24]]

[45] [[インターフェイスメンバー]]に [CODE(IDL)@en[[[Exposed]]]]
[[拡張属性]]を指定する場合は、その[[露出集合]]が[[インターフェイス]]の[[露出集合]]の[[部分集合]]でなければ[['''なりません''']] [SRC[>>24]]。

;; [68] [[部分インターフェイス]]に含まれる[[インターフェイスメンバー]]には
[CODE(IDL)@en[[[Exposed]]]] を指定できません (>>31) から、
[[インターフェイスメンバー]]に [CODE(IDL)@en[[[Exposed]]]]
が指定されている場合も[[インターフェイス]]本体の[[露出集合]]の[[部分集合]]であれば問題ありません。

[EG[
[69] 例えば、
[PRE(IDL code)[
[Global] interface A {};
[Global] interface B {};
[Exposed=A] interface X {
  [Exposed=B] attribute DOMString m;
};
]PRE]
... は[[インターフェイスメンバー]]の[[露出集合]]が[[インターフェイス]]の[[露出集合]]の[[部分集合]]になりませんから、[[非妥当]]です。
]EG]

[70] [[インターフェイス]]の[[露出集合]]は、その[[派生的インターフェイス群]]のすべての[[インターフェイス]]の[[露出集合]]の[[部分集合]]になっていなければ[['''なりません''']]
[SRC[>>24]]。

** 効果

[27] [CODE(IDL)@en[[[Exposed]]]] [[拡張属性]]が指定されない場合、
[[一次大域インターフェイス]]にのみ[[晒される]]ことになります [SRC[>>24]]。

[29] [CODE(IDL)@en[[[Exposed]]]] [[拡張属性]]が指定された場合、
指定された[[大域名]]で表される[[インターフェイス]]を[[実装]]する[[大域オブジェクト]]の
[[ECMAScript大域環境]]にのみ[[晒される]]ことになります [SRC[>>24]]。

* 露出集合

[58] [CODE(IDL)@en[[[Exposed]]]] [[拡張属性]]を指定することができる [[Web IDL]]
の構造それぞれについて、それが晒される対象を表す[DFN[[RUBYB[[[露出集合]]]@en[exposure set]]]]
[SRC[>>24]] が定義されます。

[59] [[露出集合]]は、当該構造を使うことができる[[大域環境]]を定義する[[インターフェイス]]の[[集合]]です
[SRC[>>24]]。

[65] [[露出集合]]は、次のように定義されています [SRC[>>24]]。

[FIG(steps)[
= [34] [CODE(IDL)@en[[[Exposed]]]] [[拡張属性]]が指定されている場合、
その[[引数]]として指定されている[[大域名]]を持つ[[インターフェイス]]すべての[[集合]]です。
= [61] 指定されていない場合、
== [35] [[インターフェイス]]と[[辞書]]については、[[一次大域インターフェイス]]のみを含む[[集合]]です。
== [63] [[部分インターフェイス]]については、対応する[[インターフェイス]]の[[露出集合]]と同じです。
== [38] [[インターフェイスメンバー]]については、それが含まれる[[インターフェイス]]や[[部分インターフェイス]]の[[露出集合]]と同じです。
]FIG]

[44] [[インターフェイス]]の[[露出集合]]は、そのすべての[[派生的インターフェイス群]]の[[露出集合]]の[[部分集合]]でなければ[['''なりません''']] [SRC[>>24]]。

[60] [[インターフェイス]]の[[露出集合]]は、そのすべての[[継承]]している[[インターフェイス]]の[[露出集合]]の[[部分集合]]でなければ[['''なりません''']] [SRC[>>24]]。

[33] [[辞書]]の[[コンストラクター]]や[[インターフェイス]]、
[[インターフェイスメンバー]] [VAR[X]] が[[ECMAScript大域環境]][VAR[環境]]に[[晒される]]のは、
次のすべてを満たす場合です [SRC[>>24]]。
[FIG(list)[
- [64] [VAR[環境]]の[F[大域オブジェクト]]が、
[VAR[X]] の[F[露出集合]]に含まれる[[インターフェイス]]を[[実装]]する[[オブジェクト]]である
- [75] 次のいずれかを満たす:
-- [76] [VAR[環境]]の[F[大域オブジェクト]]の[F[設定群オブジェクト]]が[F[保安文脈]]である
-- [77] [VAR[X]] が[[保安文脈でのみ利用可能]]では''ない''
]FIG]

;; [78] つまり、[[露出集合]]に含まれていても、 [CODE(IDL xattr)@en[SecureContext]]
が指定されているものは、 [[素のHTTP]] の[[Webページ]]では[[晒され]]ません。

;; [41] [[インターフェイスオブジェクト]]が[[大域オブジェクト]]に現れるのは、
これら[[晒される]]もののうちの一部です。

;; [66] [[辞書]]の[[露出集合]]が定義されていますが、影響があるのは[[辞書]]の[[コンストラクター]]だけです。[[辞書メンバー]]には[[露出集合]]が定義されていません。[[辞書]]自体や[[辞書メンバー]]は、
[[大域環境]]に[[晒される]]対象ではありません。

[43] [[例外]]や[[例外メンバー]]は [CODE(IDL)@en[[[Exposed]]]] [[拡張属性]]が認められておらず、
すべての[[ECMAScript大域環境]]に[[晒される]]ようです。

[79] 特殊な取り扱いのあるケースについては、[[インターフェイス]]を参照。

* 歴史

[REFS[
- [1] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-10-18 20:52:42 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#exposed-to-javascript>'''
- [10] [CITE@en[Web Applications 1.0 r8425     Update the spec to say what's exposed to workers: take 1]]
( ([TIME[2014-01-28 08:08:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8424&to=8425>
- [11] [CITE[IRC logs: freenode / #whatwg / 20140127]]
( ([TIME[2014-01-28 20:45:52 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140127>
- [12] [CITE@en[Web Applications 1.0 r8430 Try doing this a different way (MessageEvent.source exposure)]]
( ([TIME[2014-01-29 05:34:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8429&to=8430>
- [13] [CITE@en[Web Applications 1.0 r8444 Ok, go back to exposing MessageEvent.source in one form everywhere, relying on WebIDL for the rest of the logic here]]
( ([TIME[2014-01-30 11:41:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8443&to=8444>
- [14] [CITE@en[Web Applications 1.0 r8449     Forgot to expose some canvas interfaces to workers.]]
( ([TIME[2014-02-01 03:24:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8448&to=8449>
- [15] [CITE[Expose events in workers · 0f69e71 · whatwg/dom]]
( ([TIME[2014-02-01 02:21:53 +09:00]] 版))
<https://github.com/whatwg/dom/commit/0f69e7175dcae9edffa636bb213991330d225bf3>
- [16] [CITE[Expose TextDecoder and TextEncoder in workers · 6ac6218 · whatwg/encoding]]
( ([TIME[2014-02-01 23:37:48 +09:00]] 版))
<https://github.com/whatwg/encoding/commit/6ac62184e7902a2b28b8c1b85a996ab3f04da133>
- [17] [CITE@en[Web Applications 1.0 r8467 Remove the text made redundant by '''''''''['''''''''Exposed''''''''']''''''''']]
( ([TIME[2014-02-06 04:34:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8466&to=8467>
- [18] [CITE[Align with IDL changes to make the worker story better · 4d307f0 · whatwg/xhr]]
( ([TIME[2014-02-13 06:42:52 +09:00]] 版))
<https://github.com/whatwg/xhr/commit/4d307f0a00301fbd147ed78f37428694b14cde08>
- [19] [CITE@en[Web Applications 1.0 r7851 Try to clarify use of the term 'expose' in the WebIDL sense.]]
( ([TIME[2013-04-24 07:51:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7850&to=7851>
- [20] [CITE@en[Web Applications 1.0 r8467 Remove the text made redundant by ''''''[''''''Exposed'''''']'''''']] ([TIME[2014-02-06 04:34:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=8466&to=8467>
]REFS]

[21] 当初は [[HTML Standard]] の本文によりどの[[インターフェイス]]が晒されるか定義されていましたが、
[[WebIDL]] の[[拡張属性]] [CODE[[[Exposed]]]] に置き換えられました。

[22] [CITE[Expose events in workers · 0f69e71 · whatwg/dom]]
( ([TIME[2014-04-11 22:50:24 +09:00]] 版))
<https://github.com/whatwg/dom/commit/0f69e7175dcae9edffa636bb213991330d225bf3>

[23] [CITE@en[Bug 25495 – Behavior of no '''['''Exposed''']''' on interface members is weird]] ([TIME[2014-06-25 08:13:30 +09:00]] 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=25495>

[47] [CITE@en[Bug 25495 – Behavior of no ''''''[''''''Exposed'''''']'''''' on interface members is weird]]
( ([TIME[2014-07-29 23:37:02 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=25495>

[57] [CODE(IDL)@en[[[Exposed]]]] (と [CODE(IDL)@en[[[Global]]]]
の値は [CODE[[[,]]]] 区切りで複数指定できることになっていましたが、
[[拡張属性]]同士の区切りも [CODE[[[,]]]] で構文上曖昧だったので、
複数値があるときは [CODE[[[(]]]]...[CODE[[[)]]]] で括るように2014年7月に変更されました。

[REFS[
- [48] [CITE@en[Bug 24959 – "Exposed=Window,Worker" will be parsed to 2 extended attributes]] ([TIME[2014-08-03 06:21:28 +09:00]] 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=24959>
- [49] [CITE[Fix extended attribute identifier list argument grammar. · 0527ec4 · heycam/webidl]] ([TIME[2014-08-03 06:22:37 +09:00]] 版) <https://github.com/heycam/webidl/commit/0527ec461492849d310257c50a7d2c54b4632b91>
- [55] [CITE[Remove duplicate production. · 4e2c9d9 · heycam/webidl]] ([TIME[2014-08-03 06:30:17 +09:00]] 版) <https://github.com/heycam/webidl/commit/4e2c9d9bd8e9050051d4a23bcdef036ff1559da3>
- [56] [CITE[Tweak '''['''Exposed''']''' argument grammar. · 68ebd77 · heycam/webidl]] ([TIME[2014-08-03 06:30:38 +09:00]] 版) <https://github.com/heycam/webidl/commit/68ebd7772eb5b4b2e10bd8bdee56145c77e318cf>
- [50] [CITE[Fix '''['''Exposed''']''' for URLSearchParams · 067a2cd · whatwg/url]] ([TIME[2014-08-03 06:26:20 +09:00]] 版) <https://github.com/whatwg/url/commit/067a2cd418b8655dd9cac16ae12d58590dd2a41c>
- [51] [CITE[Use the new '''['''Exposed''']''' syntax · d59c1ad · whatwg/url]] ([TIME[2014-08-03 06:26:51 +09:00]] 版) <https://github.com/whatwg/url/commit/d59c1ade1684a68b64f868de819b22459467ef96>
- [52] [CITE[Update '''['''Exposed''']''' syntax · 4863bf9 · whatwg/fetch]] ([TIME[2014-08-03 06:27:19 +09:00]] 版) <https://github.com/whatwg/fetch/commit/4863bf91ed65e42fc8b2af8c287a4774be2640a1>
- [54] [CITE[Update '''['''Exposed''']''' syntax · ccc7660 · whatwg/xhr]] ([TIME[2014-08-03 06:29:24 +09:00]] 版) <https://github.com/whatwg/xhr/commit/ccc7660a02b168d949e43c518370044c14a0ce3f>
- [53] [CITE[Nothing shall escape '''['''Exposed''']''' https://www.w3.org/Bugs/Public/show_bug.c... · 59512a7 · whatwg/xhr]] ([TIME[2014-08-03 06:28:54 +09:00]] 版) <https://github.com/whatwg/xhr/commit/59512a70107244a3810662a8d8feb1f9fa2d9042>
]REFS]

[73] [[インターフェイスメンバー]]の [CODE(IDL)@en[[[Exposed]]]]
[[拡張属性]]の解釈は若干不自然でしたが、2014年7月に自然な解釈に改められました。
[[露出集合]]という用語もこの時導入されました。

[REFS[
- [71] [CITE[Make interface members be exposed on the same globals their enclosing in... · 71a44ff · heycam/webidl]] ([TIME[2014-08-03 10:13:51 +09:00]] 版) <https://github.com/heycam/webidl/commit/71a44ff9e1dcb1f467656f71b78f77abbf9427bf>
- [72] [CITE[Make the "exposure set" contain interfaces rather than global names. · 79d79a5 · heycam/webidl]] ([TIME[2014-08-03 10:14:09 +09:00]] 版) <https://github.com/heycam/webidl/commit/79d79a574d5ecf3cc103325c87c83e199084490a>
]REFS]

[74] [CITE@en[Web Applications 1.0 r8752 WebIDL Global=/Exposed= syntax fixes, and make sure the globals are exposed to themselves]]
( ([TIME[2014-09-06 07:38:00 +09:00]] 版))
<http://html5.org/r/8752>

[36] [CITE@en[Bug 28538 – ''''''[''''''NoInterfaceObject, Exposed=(Window,Worker)'''''']'''''' makes no sense]]
([TIME[2015-04-24 12:38:53 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=28538>

[37] [CITE@en[Make it clear that an interface cannot be exposed in a global in whic… · heycam/webidl@84d64f6]] ([TIME[2015-06-01 17:32:06 +09:00]] 版) <https://github.com/heycam/webidl/commit/84d64f6e7128a846b80254926c5336f04dbafbe5>

[62] [CITE@en[Merge branch 'secure-context' into gh-pages · heycam/webidl@710b36c]]
([TIME[2016-04-13 15:28:55 +09:00]] 版)
<https://github.com/heycam/webidl/commit/710b36c501ffd130bb4e7b9af43d9be4981a6631>

[80] [CITE@en[Remove support for '''['''Constructor''']''' on dictionaries (fixes #109).]]
( ([[Ms2ger]]著, [TIME[2016-04-20 20:34:07 +09:00]]))
<https://github.com/heycam/webidl/commit/1982dc3f17002c07f93b39e22f69846478e4a9e2>

[81] [CITE@en[Correct IDL Exposed syntax]]
([[annevk]]著, [TIME[2016-07-24 17:04:12 +09:00]])
<https://github.com/whatwg/encoding/commit/41ac88bd17b4844e9894e9452acbe478f25aa075>

[82] [CITE@en[Should navigator.productSub/vendor/vendorSub be exposed to workers? · Issue #216 · whatwg/html]]
([TIME[2016-10-11 15:44:05 +09:00]])
<https://github.com/whatwg/html/issues/216>

[83] [CITE@en['''['''geometry''']''' Limit DOMMatrix's special stringifier to Window]]
([[zcorpan]]著, [TIME[2017-05-12 05:30:25 +09:00]])
<https://github.com/w3c/fxtf-drafts/commit/f5eadb4615fd10ab7c617a9826b0a21d5df6d6c8>

[84] [CITE@en[Use '''['''Exposed=Window''']''' consistently]]
([[annevk]]著, [TIME[2017-08-23 01:31:15 +09:00]])
<https://github.com/whatwg/html/commit/c441d703746c112b1ad20610b16eca9c312c9d0b>

[85] [CITE@en[Use Exposed=Window consistently by annevk · Pull Request #2955 · whatwg/html]]
([TIME[2017-08-23 18:45:15 +09:00]])
<https://github.com/whatwg/html/pull/2955>

[86] [CITE@en[Use '''['''Exposed''']''' consistently]]
([[birtles]]著, [TIME[2017-08-23 14:13:31 +09:00]])
<https://github.com/w3c/web-animations/commit/cd6775eae828630d18e2858b0443072267799691>

[87] [CITE@en['''['''css-animations-2''']''''''['''css-transitions-2''']''' Add '''['''Exposed=Window''']''' annotation…]]
([[birtles]]著, [TIME[2017-08-23 14:34:17 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/f7768bd63385f95d9f4f64a9c9e42b68492e7bcd>

[88] [CITE@en[Path2D interface has two'Exposed extended attributes, each with different values. · Issue #2978 · whatwg/html]]
([TIME[2017-08-31 14:52:21 +09:00]])
<https://github.com/whatwg/html/issues/2978>

[89] [CITE@en[Add '''['''Exposed''']''' to DOMTokenList]]
([[annevk]]著, [TIME[2017-08-22 21:22:58 +09:00]])
<https://github.com/whatwg/dom/commit/da7b3ec5d9a4cbd857f0dc6c5ef164331ae156be>

[90] [CITE@en[Add '''['''Exposed=Window''']''' to MutationObserver]]
([[annevk]]著, [TIME[2017-09-06 17:37:07 +09:00]])
<https://github.com/whatwg/dom/commit/c9544325095195c3afdf6284c29b26e84ce572aa>

[91] [CITE@en[Add '''['''Exposed=Window''']''' to MutationObserver by annevk · Pull Request #507 · whatwg/dom]]
([TIME[2017-09-07 12:06:11 +09:00]])
<https://github.com/whatwg/dom/pull/507>

[92] [CITE@en[Use '''['''Exposed=Window''']''']]
([[anssiko]]著, [TIME[2017-09-06 21:30:31 +09:00]])
<https://github.com/w3c/sensors/commit/34c9bb71d7852c7ee8087593935d7cf9cd90c12c>

[93] [CITE@en[Use '''['''Exposed=Window''']''' by anssiko · Pull Request #264 · w3c/sensors]]
([TIME[2017-09-07 12:08:08 +09:00]])
<https://github.com/w3c/sensors/pull/264>

[94] [CITE@en[Use '''['''Exposed=Window''']''' · Issue #437 · w3c/presentation-api]]
([TIME[2017-09-07 12:08:36 +09:00]])
<https://github.com/w3c/presentation-api/issues/437>

[95] [CITE@en[Use '''['''Exposed=Window''']''']]
([[anssiko]]著, [TIME[2017-09-06 22:08:10 +09:00]])
<https://github.com/w3c/manifest/commit/54de4d7bbffaea4d0dd8e552d8288101811e9ff4>

[96] [CITE@en[Use '''['''Exposed=Window''']''' by anssiko · Pull Request #608 · w3c/manifest]]
([TIME[2017-09-07 12:09:04 +09:00]])
<https://github.com/w3c/manifest/pull/608>

[97] [CITE@en[Use '''['''Exposed=Window''']''' in example too]]
([[anssiko]]著, [TIME[2017-09-06 22:24:38 +09:00]])
<https://github.com/w3c/sensors/commit/748bcc24db3276512cf9092230bf484a1711f262>

[98] [CITE@en[Use '''['''Exposed=Window''']''' even more]]
([[annevk]]著, [TIME[2017-09-06 17:34:18 +09:00]])
<https://github.com/whatwg/html/commit/f2a32c045aa7764533cda58b4452fe2bbc6652a0>

[99] [CITE@en[Use '''['''Exposed=Window''']''' even more by annevk · Pull Request #3009 · whatwg/html]]
([TIME[2017-09-08 14:44:30 +09:00]])
<https://github.com/whatwg/html/pull/3009>

[100] [CITE@en[Annotate interfaces with '''['''Exposed''']''' extended attribute (#110)]]
([[dontcallmedom]]著, [TIME[2017-09-12 17:52:43 +09:00]])
<https://github.com/w3c/wake-lock/commit/830d148121b7d38cd5f934277017ea62da998636>

[101] [CITE@en[Annotate interfaces with '''['''Exposed''']''' extended attribute by dontcallmedom · Pull Request #110 · w3c/wake-lock]]
([TIME[2017-09-13 16:31:25 +09:00]])
<https://github.com/w3c/wake-lock/pull/110>

[102] [CITE@en['''['''css-animations''']''''''['''css-conditional''']''''''['''css-font-loading''']''''''['''cssom-view''']''''''['''cssom…]]
([[zcorpan]]著, [TIME[2017-09-15 20:39:20 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/c2541c830fb6c80687b026efacdf3bfa936f102c>

[103] [CITE@en['''['''css-animations''']''''''['''css-conditional''']''''''['''css-font-loading''']''''''['''cssom-view''']''''''['''cssom''']''''''['''mediaqueries''']''' IDL: Use '''['''Exposed''']''' consistently by zcorpan · Pull Request #1749 · w3c/csswg-drafts]]
([TIME[2017-09-16 19:10:28 +09:00]])
<https://github.com/w3c/csswg-drafts/pull/1749>

[104] [CITE@en[Fix #54: Add '''['''Exposed''']''' to interfaces]]
([[garykac]]著, [TIME[2017-09-16 02:35:32 +09:00]])
<https://github.com/w3c/clipboard-apis/commit/4aef1c5273afcb8e022c10f2e4469e971c9ec082>

[105] [CITE@en[Add '''['''Exposed''']''' to all interfaces · Issue #54 · w3c/clipboard-apis]]
([TIME[2017-09-16 19:11:20 +09:00]])
<https://github.com/w3c/clipboard-apis/issues/54>

[106] [CITE@en[Fix #159: Add '''['''Exposed''']''' to interfaces]]
([[garykac]]著, [TIME[2017-09-16 02:51:46 +09:00]])
<https://github.com/w3c/uievents/commit/1078d03d4a3539d16f22cc39dc31afb901f5a44f>

[107] [CITE@en[Add '''['''Exposed''']''' to all interfaces · Issue #159 · w3c/uievents]]
([TIME[2017-09-16 19:11:41 +09:00]])
<https://github.com/w3c/uievents/issues/159>

[108] [CITE@en[Use '''['''Exposed=Window''']''']]
([[anssiko]]著, [TIME[2017-09-06 21:57:40 +09:00]])
<https://github.com/w3c/presentation-api/commit/72cfca6063c077aff566725f332aae42c80ce7d2>

[109] [CITE@en[Use '''['''Exposed=Window''']''' · Issue #437 · w3c/presentation-api]]
([TIME[2017-09-20 12:13:38 +09:00]])
<https://github.com/w3c/presentation-api/issues/437>

[110] [CITE@en[Merge pull request #483 from dontcallmedom/exposed]]
([[aboba]]著, [TIME[2017-09-21 23:32:06 +09:00]])
<https://github.com/w3c/mediacapture-main/commit/eb543d7b95c878f5cb6b407c1c419478dc4db037>

[111] [CITE@en[Add missing '''['''Exposed''']''' extended attribute on InputDeviceInfo by dontcallmedom · Pull Request #483 · w3c/mediacapture-main]]
([TIME[2017-09-22 11:25:43 +09:00]])
<https://github.com/w3c/mediacapture-main/pull/483>

[112] [CITE@en[Please add '''['''Exposed''']''' to all interfaces · Issue #481 · w3c/mediacapture-main]]
([TIME[2017-09-22 11:25:50 +09:00]])
<https://github.com/w3c/mediacapture-main/issues/481>

[113] [CITE@en[Add '''['''Exposed=Window''']''' to Constructor (#218)]]
([[patrickhlauke]]著, [TIME[2017-09-22 17:45:04 +09:00]])
<https://github.com/w3c/pointerevents/commit/c87d19e2515b2d6654d321ee3726487abdc1774e>

[114] [CITE@en[Add '''['''Exposed=Window''']''' to Constructor by patrickhlauke · Pull Request #218 · w3c/pointerevents]]
([TIME[2017-09-24 11:45:07 +09:00]])
<https://github.com/w3c/pointerevents/pull/218>

[115] [CITE@en[Add '''['''Exposed''']''' to all interfaces · Issue #217 · w3c/pointerevents]]
([TIME[2017-09-24 11:45:20 +09:00]])
<https://github.com/w3c/pointerevents/issues/217>

[116] [CITE@en[Add '''['''Exposed=Window''']''' to Constructor (#88)]]
([[patrickhlauke]]著, [TIME[2017-09-22 17:46:08 +09:00]])
<https://github.com/w3c/touch-events/commit/b12e03f49b98725105b0b0f2aeb912bea2562933>

[117] [CITE@en[Add '''['''Exposed=Window''']''' to Constructor by patrickhlauke · Pull Request #88 · w3c/touch-events]]
([TIME[2017-09-24 11:48:47 +09:00]])
<https://github.com/w3c/touch-events/pull/88>

[118] [CITE@en[Add '''['''Exposed''']''' to all interfaces · Issue #87 · w3c/touch-events]]
([TIME[2017-09-24 11:49:05 +09:00]])
<https://github.com/w3c/touch-events/issues/87>

[119] [CITE@en[Remove unecessary exposed]]
([[rmcilroy]]著, [TIME[2017-09-25 13:54:12 +09:00]])
<https://github.com/w3c/requestidlecallback/commit/5ac76791a6cf85395711807101e5fd4b61050b34>

[120] [CITE@en[Add Exposed to interfaces. by rmcilroy · Pull Request #65 · w3c/requestidlecallback]]
([TIME[2017-09-27 10:36:03 +09:00]])
<https://github.com/w3c/requestidlecallback/pull/65>

[121] [CITE@en[Add '''['''Exposed''']''' to all interfaces · Issue #64 · w3c/requestidlecallback]]
([TIME[2017-09-27 10:36:22 +09:00]])
<https://github.com/w3c/requestidlecallback/issues/64>

[122] [CITE@en[Add '''['''Exposed=Window''']''' and use toJSON]]
([[plehegar]]著, [TIME[2017-09-26 04:26:57 +09:00]])
<https://github.com/w3c/navigation-timing/commit/906cbdad95aa79e0e41279dddd0c766b26134c08>

[123] [CITE@en[25495 – Behavior of no '''['''Exposed''']''' on interface members is weird]]
([TIME[2017-10-12 17:33:14 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=25495>

[124] [CITE@en[Add '''['''Exposed=Window''']''' extended attribute to ScreenOrientation interface (]]
([[alexshalamov]]著, [TIME[2017-11-01 05:57:26 +09:00]])
<https://github.com/w3c/screen-orientation/commit/d41c0a71ce9d299df0eaf515c43ed1b3d52a4fad>

[125] [CITE@en[Add '''['''Exposed''']''' to all interfaces · Issue #106 · w3c/screen-orientation]]
([TIME[2017-11-01 18:05:55 +09:00]])
<https://github.com/w3c/screen-orientation/issues/106>

[126] [CITE@en[Add '''['''Exposed=Window''']''' extended attribute to ScreenOrientation interface by alexshalamov · Pull Request #107 · w3c/screen-orientation]]
([TIME[2017-11-01 18:06:27 +09:00]])
<https://github.com/w3c/screen-orientation/pull/107>

[127] [CITE@en[26425 – Drop the default for '''['''Exposed''']''']]
([TIME[2017-12-08 16:13:33 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26425>

[128] [CITE@en[22646 – So if we want to say on a per-object basis whether it ought to be exposed to workers (which I think is useful) lets introduce "exposed to document environments", "exposed to worker environments", and '''['''...''']''']]
([TIME[2017-12-08 16:17:18 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22646>

[129] [CITE@en[Remove '''['''PrimaryGlobal''']''']]
([[annevk]]著, [TIME[2017-12-06 22:31:21 +09:00]])
<https://github.com/whatwg/html/commit/dff66be7bd3c2a6ce1a411f2e8c2a1ccac88fd92>

[130] [CITE@en[Remove '''['''PrimaryGlobal''']''' by annevk · Pull Request #2956 · whatwg/html]]
([TIME[2017-12-16 15:32:26 +09:00]])
<https://github.com/whatwg/html/pull/2956>

[131] [CITE@en[Make '''['''Exposed''']''' mandatory, remove '''['''PrimaryGlobal''']''' (#423)]]
([[tobie]]著, [TIME[2017-12-07 00:10:16 +09:00]])
<https://github.com/heycam/webidl/commit/d59937304702d033358b89fac5b5562c23b56096>

[132] [CITE@en[Investigate removing '''['''PrimaryGlobal''']''' and requiring '''['''Exposed''']''' · Issue #365 · heycam/webidl]]
([TIME[2017-12-16 15:45:53 +09:00]])
<https://github.com/heycam/webidl/issues/365>

[133] [CITE@en[30178 – Use '''['''Exposed''']''']]
([TIME[2017-12-16 15:49:39 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=30178>

[134] [CITE@en[26425 – Drop the default for '''['''Exposed''']''']]
([TIME[2017-12-16 15:50:19 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26425>

[135] [CITE@en[Make '''['''Exposed''']''' mandatory, remove '''['''PrimaryGlobal''']''' by tobie · Pull Request #423 · heycam/webidl]]
([TIME[2017-12-16 15:50:59 +09:00]])
<https://github.com/heycam/webidl/pull/423>

[136] [CITE@en[Fix and clarify exposed dfn (#464)]]
([[tobie]]著, [TIME[2017-12-20 07:19:28 +09:00]])
<https://github.com/heycam/webidl/commit/860ecf4949dfdd328d502babeae7b180eda02647>

[137] [CITE@en[Fix and clarify exposed dfn by tobie · Pull Request #464 · heycam/webidl]]
([TIME[2017-12-20 23:54:20 +09:00]])
<https://github.com/heycam/webidl/pull/464>

[138] [CITE@en[Add support for interface mixins]]
([[tobie]]著, [TIME[2017-10-11 16:48:12 +09:00]])
<https://github.com/heycam/webidl/commit/45e8173d40ddff8dcf81697326e094bcf8b92920>

[139] [CITE@en[25495 – Behavior of no '''['''Exposed''']''' on interface members is weird]]
([TIME[2017-12-23 15:33:24 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=25495>

[140] [CITE@en[Mark up everything with '''['''Exposed''']''' annotations as appropriate. Anythin…]]
([[tabatkins]]著, [TIME[2018-01-31 10:59:18 +09:00]])
<https://github.com/w3c/css-houdini-drafts/commit/1072db98bb375627fb01b1adb3a1418299007f17>

[141] [CITE@en['''['''typed-om''']''' Remove '''['''Exposed''']''' from the partial interfaces; it's both un…]]
([[tabatkins]]著, [TIME[2018-02-16 04:32:27 +09:00]])
<https://github.com/w3c/css-houdini-drafts/commit/a5dc251a599efe301cd9f1512dfe4dc7aa83c4af>

[142] [CITE@en['''['''css-typed-om-1''']''' Exposed value for partial interface Element makes no sense and is not valid Web IDL · Issue #658 · w3c/css-houdini-drafts]]
([TIME[2018-02-17 17:18:35 +09:00]])
<https://github.com/w3c/css-houdini-drafts/issues/658>

[143] [CITE@en[CSSFontFaceRule etc. exposed to Window]]
([[ericwilligers]]著, [TIME[2018-02-22 13:43:25 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/144108785bd098d5b18d3866222254ae7b83696e>

[144] [CITE@en['''['''css-fonts-4''']''' Missing Exposed extended attribute · Issue #2342 · w3c/csswg-drafts]]
([TIME[2018-02-23 13:11:40 +09:00]])
<https://github.com/w3c/csswg-drafts/issues/2342>

[145] [CITE@en[CSSFontFaceRule etc. exposed to Window by ewilligers · Pull Request #2344 · w3c/csswg-drafts]]
([TIME[2018-02-23 13:11:52 +09:00]])
<https://github.com/w3c/csswg-drafts/pull/2344>

[146] [CITE@en[Mark up everything with '''['''Exposed''']''' annotations as appropriate. Anythin…]]
([[tabatkins]]著, [TIME[2018-01-31 10:59:18 +09:00]])
<https://github.com/w3c/css-houdini-drafts/commit/1072db98bb375627fb01b1adb3a1418299007f17>

[147] [CITE@en['''['''css-paint-api''']''': APIs not exposed in Worklets · Issue #237 · w3c/css-houdini-drafts]]
([TIME[2018-05-08 10:33:59 +09:00]])
<https://github.com/w3c/css-houdini-drafts/issues/237>

[148] [CITE@en['''['''css-typed-om''']''' Add Exposed=PaintWorklet to API by darrnshn · Pull Request #430 · w3c/css-houdini-drafts]]
([TIME[2018-05-08 10:38:05 +09:00]])
<https://github.com/w3c/css-houdini-drafts/pull/430>

[149] [CITE@en[Fixes #345 Add '''['''Exposed''']''' to SVG interfaces]]
([[dstorey]]著, [TIME[2018-02-14 14:55:27 +09:00]])
<https://github.com/w3c/svgwg/commit/1ca313dc4ff7f05b02d8b4a81259317db2b666b8>

[150] [CITE@en[Add '''['''Exposed''']''' to all interfaces · Issue #345 · w3c/svgwg]]
([TIME[2018-05-08 21:25:36 +09:00]])
<https://github.com/w3c/svgwg/issues/345>

[151] [CITE@en[Fixes #345 Add '''['''Exposed''']''' to SVG interfaces by dstorey · Pull Request #387 · w3c/svgwg]]
([TIME[2018-05-08 21:25:42 +09:00]])
<https://github.com/w3c/svgwg/pull/387>

[152] [CITE@en[Add '''['''Exposed=Window''']''' to interfaces]]
([[ericwilligers]]著, [TIME[2018-02-22 14:05:15 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/ddfa79ddec619d09eefb02c75cade422bc4d223d>

[153] [CITE@en['''['''css-fonts-4''']''' Missing Exposed extended attribute · Issue #2342 · w3c/csswg-drafts]]
([TIME[2018-05-08 21:42:28 +09:00]])
<https://github.com/w3c/csswg-drafts/issues/2342>

[154] [CITE@en[Add '''['''Exposed=Window''']''' to interfaces by ewilligers · Pull Request #2345 · w3c/csswg-drafts]]
([TIME[2018-05-08 21:42:35 +09:00]])
<https://github.com/w3c/csswg-drafts/pull/2345>

[155] [CITE@en[Added '''['''Exposed''']''' to the SecurityPolicyViolationEvent interface (#338)]]
([[andypaicu]]著, [TIME[2018-09-20 21:46:20 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/5668a60a0b983bc32c42d4891af42d5c1a00ffbe>

[156] [CITE@en[Added '''['''Exposed''']''' to the SecurityPolicyViolationEvent interface by andypaicu · Pull Request #338 · w3c/webappsec-csp]]
([TIME[2018-10-22 01:15:54 +09:00]])
<https://github.com/w3c/webappsec-csp/pull/338>

[157] [CITE@en[Editorial: clarify the wording of an Exposed requirement]]
([[Ms2ger]]著, [TIME[2019-01-15 23:24:36 +09:00]])
<https://github.com/heycam/webidl/commit/fb6e4cd4d45eeb616872a476bfed44d7adcb3774>

[158] [CITE@en[Poorly worded normative requirement could be improved · Issue #548 · heycam/webidl]]
([TIME[2019-06-03 20:20:05 +09:00]])
<https://github.com/heycam/webidl/issues/548>

[159] [CITE@en[Editorial: Clarify the wording of an Exposed requirement. by Ms2ger · Pull Request #615 · heycam/webidl]]
([TIME[2019-06-03 20:20:18 +09:00]])
<https://github.com/heycam/webidl/pull/615>

[160] [CITE@en[Editorial: cross-reference the "exposed" IDL concept]]
([[Ms2ger]]著, [TIME[2019-08-06 23:58:00 +09:00]])
<https://github.com/whatwg/html/commit/dfe50f72c4ee08b57081d8f2ea66bac5ecb31183>

[161] [CITE@en[Editorial: Xref the 'exposed' IDL concept by Ms2ger · Pull Request #4819 · whatwg/html]]
([TIME[2020-01-12 16:38:50 +09:00]])
<https://github.com/whatwg/html/pull/4819>

[162] [CITE@en[Is an interface named I exposed in realm R · Issue #518 · heycam/webidl]]
([TIME[2020-01-12 16:39:01 +09:00]])
<https://github.com/heycam/webidl/issues/518>

[163] [CITE@en[Add explicit '''['''Exposed''']''' + dictionary default value (#407)]]
([[saschanaz]]著, [TIME[2019-08-22 20:36:08 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/90a9bc886234d056286f84dd6c9fb0c482fd460f>

[164] [CITE@en[Add explicit '''['''Exposed''']''' + dictionary default value by saschanaz · Pull Request #407 · w3c/webappsec-csp]]
([TIME[2020-01-12 16:51:39 +09:00]])
<https://github.com/w3c/webappsec-csp/pull/407>

[165] [CITE@en[Add async_iterable support]]
([[Ms2ger]]著, [TIME[2019-04-29 19:52:51 +09:00]])
<https://github.com/heycam/webidl/commit/d6caf50f9e21b467dfe54ee37b443f96c09f7333>

[166] [CITE@en[Stop using extended attributes for constructors]]
([[Ms2ger]]著, [TIME[2019-03-26 23:26:37 +09:00]])
<https://github.com/heycam/webidl/commit/91ca6ebb4d4fca9703309e19256bbc5f5dd77e3c>