/[suikacvs]/markup/html/html5/spec-ja/workers-non-normative.ja.html.u8
Suika

Contents of /markup/html/html5/spec-ja/workers-non-normative.ja.html.u8

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.22 - (hide annotations) (download)
Wed Aug 6 06:16:37 2008 UTC (17 years, 11 months ago) by wakaba
Branch: MAIN
Changes since 1.21: +378 -288 lines
*** empty log message ***

1 wakaba 1.1
2     <html lang=en-US-x-hixie>
3     <head>
4     <title>Web Workers</title>
5     <link href="http://www.whatwg.org/style/specification" rel=stylesheet>
6     <!-- Japanese-translation-only style rules -->
7     <style>
8 wakaba 1.14 em, i {
9     font-style: normal;
10 wakaba 1.1 text-decoration: underline;
11     }
12 wakaba 1.14
13     .note, .warning {
14     font-style: normal;
15     }
16     p.note:before {
17     content: '注意: ';
18     }
19     p.warning:before {
20     content: '\26A0 警告! ';
21     }
22    
23 wakaba 1.1 ins.ja-note {
24     background-color: #EEFFFF;
25     color: black;
26     }
27 wakaba 1.16 span.ja-translation {
28     border-style: none !important;
29     }
30 wakaba 1.18
31     /* From Web Workers <style>, modified for Japanese texts */
32     p > span.ja-translation > span:not([title=""]):not([class="big-issue"]),
33     li > span.ja-translation > span:not([title=""]):not([class="big-issue"]) {
34     border-bottom: solid #99CC99;
35     }
36    
37 wakaba 1.1 </style>
38     <link href="http://www.whatwg.org/images/icon" rel=icon>
39    
40 wakaba 1.16 <style>
41     p > span:not([title=""]):not([class="big-issue"]), li > span:not([title=""]):not([class="big-issue"]) { border-bottom: solid #99CC99; }
42     </style>
43    
44 wakaba 1.1 <body class=draft>
45     <div class=head>
46     <p><span class=ja-translation lang=ja><a class=logo href="http://www.whatwg.org/" rel=home><img lang=en alt=WHATWG
47     src="http://www.whatwg.org/images/logo"></a></span></p>
48    
49     <h1 id=web-workers>Web Workers</h1>
50    
51     <h2 class="no-num no-toc" id=draft><span class=ja-translation lang=ja>勧告案<ins class=ja-note>の非公式和訳</ins> &mdash;
52 wakaba 1.22 <ins class=ja-note>(原文出版日)</ins> 2008年8月6日</span></h2>
53 wakaba 1.1
54     <p><span class=ja-translation lang=ja>みなさんにも作業にご参加いただけます。 <a
55     href="http://www.whatwg.org/mailing-list">作業部会の議論用メイリング・リストに参加してください。</a></span></p>
56    
57     <p><span class=ja-translation lang=ja><strong>Web デザイナー!</strong> みなさんのための <a
58     href="http://blog.whatwg.org/faq/" lang=en>FAQ</a>、<a
59     href="http://forums.whatwg.org/">掲示板</a>、<a
60     href="http://www.whatwg.org/mailing-list#help">ヘルプ用メイリング・リスト</a>があります!
61    
62     </span><p>
63    
64     <!-- Japanese-translation-only notes -->
65 wakaba 1.3 <ins class=ja-note style="display: block" lang=ja>
66 wakaba 1.1 <p>この文書は、 WHATWG HTML5 仕様書の日本語訳です。
67     HTML5 の正式な仕様書は英語版だけであり、
68     この日本語訳はあくまで参考としてご利用ください。
69    
70 wakaba 1.3 <p lang=en>This document is a Japanese translation of
71 wakaba 1.1 the WHATWG HTML5 specification. Note that the only normative specification
72     for the HTML5 is the original English version and this Japanese
73     translation is non‐normative.
74 wakaba 1.3
75     <p>日本語訳は <a href="edit/" rel=edit>Web 界面</a>を使って編集できます。
76     編集結果はおよそ3時間おきに反映されます。
77     また、原文の変更には毎日自動的に追随しています。
78    
79 wakaba 1.8 <p lang=en>The Japanese text can be edited using the <a href="edit/" rel=edit>Web
80 wakaba 1.3 interface</a>. Any modifications will be reflected to this translation
81     in about three hours. Note that any changes to the original specification
82     will automatically be incorporated to this translation every day.
83 wakaba 1.1 </ins>
84    
85     <p><span><!-- dummy --></span></p>
86    
87     <dl>
88     <dt><span class=ja-translation lang=ja><ins class=ja-note>原文の</ins>この版</span><dd><a
89 wakaba 1.13 href="http://www.whatwg.org/specs/web-workers/current-work/">http://whatwg.org/ww</a>
90 wakaba 1.1
91     <dt><span class=ja-translation lang=ja><ins class=ja-note>原文の</ins>改版履歴:</span><dd><span class=ja-translation lang=ja><span lang=en>Twitter</span> メッセージ (編集上の変更以外): <a
92 wakaba 1.20 href="http://twitter.com/WHATWG">http://twitter.com/WHATWG</a></span><dd><span class=ja-translation lang=ja>Commit-Watchers メイリング・リスト: <a
93     href="http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org">http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org</a></span><dd><span class=ja-translation lang=ja>対話的 <span lang=en>Web</span> 界面: <a href="http://html5.org/tools/web-workers-tracker">http://html5.org/tools/web-workers-tracker</a></span><dd><span class=ja-translation lang=ja><span lang=en>Subversion</span> 界面: <a href="http://svn.whatwg.org/webworkers/">http://svn.whatwg.org/webworkers/</a></span><dt><span class=ja-translation lang=ja>問題:</span><dd><span class=ja-translation lang=ja>フィードバックの送信先: <a
94 wakaba 1.1 href="http://www.whatwg.org/mailing-list">[email protected]</a></span><dd><span class=ja-translation lang=ja>フィードバックの閲覧・投票: <a
95     href="http://www.whatwg.org/issues/">http://www.whatwg.org/issues/</a></span><dt><span class=ja-translation lang=ja>編集者:</span><dd>Ian Hickson, Google, [email protected]
96     </dl>
97    
98     <p class=copyright>&copy; Copyright 2004-2008 Apple Computer, Inc.,
99     Mozilla Foundation, and Opera Software ASA.</p>
100    
101     <p class=copyright>You are granted a license to use, reproduce and create
102     derivative works of this document.</p>
103     </div>
104    
105     <hr>
106    
107     <h2 class="no-num no-toc" id=abstract><span class=ja-translation lang=ja>概要</span></h2>
108    
109 wakaba 1.14 <p><span class=ja-translation lang=ja>この仕様書は、 Web アプリケーションで、主たる頁とは並列に、
110     背景労働者スクリプトを走らせるための API を定義します。
111     これにより、メッセージ・パッシングによるスレッド的操作を協調機構として利用できるようになります。</span><h2 class="no-num no-toc" id=status><span class=ja-translation lang=ja>この文書の状態</span></h2>
112 wakaba 1.1
113     <p><span class=ja-translation lang=ja><strong>この文書は作業中です!</strong>
114     この文書は、コメントへの対応や通常の開発の過程として、
115     毎時毎分とは言い過ぎですが毎日のペースで変更されています。
116     コメントは非常に歓迎していますので、
117     <a href="mailto:[email protected]">[email protected]</a>
118     へお送りください。よろしくお願いします。</span><p><span class=ja-translation lang=ja>現在の焦点は、第1案の開発です。</span><p><span class=ja-translation lang=ja>実装者は、この仕様書が安定していないことに注意するべきです。
119     <strong>実装者は議論に参加しておかないと、
120     仕様がその実装とは非互換に変更されてしまうかもしれません。</strong>
121     この仕様書がいずれ実装呼び掛けの段階に達するのよりも前にこの仕様を実装したい販売者は、
122 wakaba 1.7 <a href="http://www.whatwg.org/mailing-list">WHATWG メイリング・リスト</a>に参加し、
123 wakaba 1.1 議論に加わるべきです。</span><p><span class=ja-translation lang=ja>この仕様書は <a
124     href="http://www.w3.org/html/wg">W3C HTML WG</a>
125     によっても出版されています。2つの仕様書の目次以降は同一です。</span><h2 class="no-num no-toc" id=contents><span class=ja-translation lang=ja>目次
126     </span></h2>
127     <!--begin-toc-->
128    
129     <ul class=toc>
130     <li><a href="#introduction"><span class=secno>1. </span>Introduction</a>
131     <ul class=toc>
132 wakaba 1.9 <li><a href="#tutorial"><span class=secno>1.1 </span>Tutorial</a>
133 wakaba 1.1
134 wakaba 1.16 <li><a href="#conformance"><span class=secno>1.2 </span>Conformance
135 wakaba 1.1 requirements</a>
136     <ul class=toc>
137 wakaba 1.16 <li><a href="#dependencies"><span class=secno>1.2.1
138 wakaba 1.1 </span>Dependencies</a>
139     </ul>
140    
141 wakaba 1.16 <li><a href="#terminology"><span class=secno>1.3 </span>Terminology</a>
142 wakaba 1.9 </ul>
143    
144 wakaba 1.13 <li><a href="#infrastructure"><span class=secno>2.
145     </span>Infrastructure</a>
146 wakaba 1.9 <ul class=toc>
147 wakaba 1.22 <li><a href="#the-workerglobalscope"><span class=secno>2.1 </span>The
148     <code>WorkerGlobalScope</code> interface</a>
149 wakaba 1.9
150 wakaba 1.16 <li><a href="#base-urls"><span class=secno>2.2 </span>Base URLs and
151     origins of workers</a>
152    
153     <li><a href="#the-queue"><span class=secno>2.3 </span>The queue of
154 wakaba 1.9 events</a>
155    
156 wakaba 1.16 <li><a href="#the-workers"><span class=secno>2.4 </span>The worker's
157 wakaba 1.11 ports</a>
158    
159 wakaba 1.16 <li><a href="#processing"><span class=secno>2.5 </span>Processing
160 wakaba 1.9 model</a>
161 wakaba 1.13
162 wakaba 1.16 <li><a href="#creating"><span class=secno>2.6 </span>Creating
163 wakaba 1.13 workers</a>
164 wakaba 1.9 </ul>
165    
166 wakaba 1.13 <li><a href="#apis-available"><span class=secno>3. </span>APIs available
167     to workers</a>
168 wakaba 1.22 <ul class=toc>
169     <li><a href="#importing"><span class=secno>3.1 </span>Importing scripts
170     and libraries</a>
171    
172     <li><a href="#apis-defined"><span class=secno>3.2 </span>APIs defined in
173     other specifications</a>
174    
175     <li><a href="#interface"><span class=secno>3.3 </span>Interface objects
176     and constructors</a>
177     </ul>
178 wakaba 1.1
179     <li class=no-num><a href="#references">References</a>
180    
181     <li class=no-num><a href="#acknowledgements">Acknowledgements</a>
182     </ul>
183     <!--end-toc-->
184    
185     <hr>
186    
187 wakaba 1.3 <h2 id=introduction><span class=ja-translation lang=ja><span class=secno>1. </span>はじめに</span></h2>
188 wakaba 1.1
189 wakaba 1.12 <h3 id=tutorial><span class=ja-translation lang=ja><span class=secno>1.1 </span>解説</span></h3>
190 wakaba 1.1
191 wakaba 1.9 <p><span class=ja-translation lang=ja><em>この節は規定の一部ではありません。</em></span><p class=big-issue>This section is missing.
192    
193 wakaba 1.16 <h3 id=conformance><span class=ja-translation lang=ja><span class=secno>1.2 </span>適合性要件</span></h3>
194 wakaba 1.1
195     <p><span class=ja-translation lang=ja>この仕様書のすべての図、例、注意書きは、
196     規定の一部ではないと明記された節すべてと同様に、
197     規定の一部ではありません。
198     この仕様書のそれ以外のすべては規定の一部です。</span><p><span class=ja-translation lang=ja>この文書の規定の部分にあるキーワード「<em class=rfc2119 title="MUST">しなければなりません</em>」、
199     「<em class=rfc2119 title="MUST NOT">してはなりません</em>」、
200     「<em class=rfc2119 title="REQUIRED">必須です</em>」、「<em class=rfc2119 title="SHOULD">するべきです</em>」、
201     「<em class=rfc2119 title="SHOULD NOT">するべきではありません</em>」、
202     「<em class=rfc2119 title="RECOMMENDED">推奨します</em>」、「<em class=rfc2119 title="MAY">して構いません</em>」、
203     「<em class=rfc2119 title="OPTIONAL">任意です</em>」は、 RFC 2119 で説明されているように解釈します。
204     可読性の観点から、この仕様書<ins class=ja-note>の原文</ins>では、
205     これらの語<ins class=ja-note>の原語</ins>はすべて大文字では表記しません。
206     <a href="#refsRFC2119">[RFC2119]</a></span></p>
207     <!-- XXX but they should be
208     marked up -->
209    
210     <p><span class=ja-translation lang=ja>算法の一部として<ins class=ja-note>動作の指示の形で (原文では</ins>命令形で<ins class=ja-note>) </ins>記述された要件
211     (例えば「先頭の間隔文字をすべて除去します」や「偽を返し、これらの段階を停止します」)
212     は、算法の紹介で使われたキーワード (<em class=rfc2119 title="MUST">しなければなりません</em>、
213     <em class=rfc2119 title="SHOULD">するべきです</em>、<em class=rfc2119 title="MAY">して構いません</em>など) の意味により解釈します。</span><p><span class=ja-translation lang=ja>いくつかの適合性要件は属性やメソッドやオブジェクトの要件として説明されています。
214     そのような要件は、利用者エージェントに関する要件として解釈します。</span><p><span class=ja-translation lang=ja>算法や特定の段階として説明されている適合性要件は、
215     最終的な結果が等価である限り、任意の方法で実装して<em class=rfc2119 title="MAY">構いません</em>。
216     (特に、この仕様書で定義されている算法は追うのを簡単にしており、
217     高性能であることを目指してはいません。)</span><p><span class=ja-translation lang=ja>この仕様書で定義される適合性の級は、利用者エージェントのみです。</span><p><span class=ja-translation lang=ja>利用者エージェントは、サービス拒否攻撃を防ぐため、
218     記憶容量を使い尽くすことを防ぐため、
219     あるいは環境特有の制限に対応するためなどの目的で、
220 wakaba 1.16 別段の制約のない入力に対して実装特有の制限を設けて<em class=rfc2119 title="MAY">構いません</em>。</span><h4 id=dependencies><span class=ja-translation lang=ja><span class=secno>1.2.1 </span>依存性</span></h4>
221 wakaba 1.1
222     <p><span class=ja-translation lang=ja>この仕様書は他のいくつかの下位仕様書に依存しています。</span><dl>
223     <dt>HTML5
224    
225     <dd>
226     <p><span class=ja-translation lang=ja>HTML5 の多くの基礎的な概念をこの仕様書で使用します。
227     <a href="#refsHTML5">[HTML5]</a></span></p>
228    
229     <dt>ECMAScript
230    
231     <dd>
232     <p><span class=ja-translation lang=ja>この仕様書はスクリプト言語として JavaScript
233     を使うことを想定しています。 <a href="#refsJS">[JS]</a></span></p>
234    
235     <dt>WebIDL
236    
237     <dd>
238 wakaba 1.21 <p><span class=ja-translation lang=ja>この仕様書の IDL ブロックは WebIDL 仕様書における意味を用います。 <a href="#refsWebIDL">[WebIDL]</a></span></p>
239 wakaba 1.1 </dl>
240    
241 wakaba 1.16 <h3 id=terminology><span class=ja-translation lang=ja><span class=secno>1.3 </span>用語</span></h3>
242 wakaba 1.1
243     <p><span class=ja-translation lang=ja>簡単のため、<em>示す</em>、<em>表示する</em>、
244     <em>可視</em>などの用語を文書が利用者に対してレンダリングされる方法に言及する時に使うことがあります。
245     これらの語は視覚媒体を暗示することを意図していません。
246 wakaba 1.10 これらの語は他の媒体にも等価な方法で適用されると考えなければ<em class=rfc2119 title="MUST">なりません</em>。</span><p><span class=ja-translation lang=ja>「<code title="">Foo</code> オブジェクト」という構文 (<code title="">Foo</code>
247     は実際には界面) を時々使いますが、より正確な「界面 <code title="">Foo</code>
248     を実装しているオブジェクト」の代わりに用いています。</span><p><span class=ja-translation lang=ja>DOM という語は、 Web アプリケーションでスクリプトに利用可能とされている API
249 wakaba 1.1 の集合を指して用い、必ずしも DOM 中核仕様書で定義されている実際の
250     <code>Document</code> オブジェクトその他の <code>Node</code>
251     オブジェクトの存在を暗示してはいません。<a
252     href="#refsDOM3CORE">[DOM3CORE]</a></span><p><span class=ja-translation lang=ja>DOM 属性は、その値が (例えば著者のスクリプトにより) 取り出される時<em>取得される</em>といい、
253     新しい値がその属性に割り当てられる時<em>設定される</em>といいます。</span><p><span class=ja-translation lang=ja>DOM オブジェクトが<dfn id=live>生きている</dfn>という場合、
254     そのオブジェクトを返す属性は常に同じオブジェクトを返さなければ<em class=rfc2119 title="MUST">ならない</em>
255     (毎回新しいオブジェクトを返すのではなく) 上に、
256     そのオブジェクトの属性やメソッドがそのオブジェクトの裏にある実際のデータのスナップ写真ではなく、
257 wakaba 1.21 データそのものに対して操作されなければ<em class=rfc2119 title="MUST">ならない</em>ことを意味します。
258    
259    
260    
261    
262    
263    
264     </span><h2 id=infrastructure><span class=ja-translation lang=ja><span class=secno>2. </span>基盤</span></h2>
265 wakaba 1.9
266 wakaba 1.22 <h3 id=the-workerglobalscope><span class=ja-translation lang=ja><span class=secno>2.1 </span><code><a href="#workerglobalscope">WorkerGlobalScope</a></code> 界面</span></h3>
267 wakaba 1.9
268     <pre
269 wakaba 1.22 class=idl>[NoInterfaceObject] interface <dfn id=workerglobalscope>WorkerGlobalScope</dfn> {
270     // core worker features
271     readonly attribute <a href="#workerglobalscope">WorkerGlobalScope</a> <a href="#self" title=dom-WorkerGlobalScope-self>self</a>;
272     readonly attribute DOMString <a href="#url" title=dom-WorkerGlobalScope-URL>URL</a>;
273     readonly attribute DOMString <a href="#name" title=dom-WorkerGlobalScope-name>name</a>;
274     readonly attribute boolean <a href="#closing" title=dom-WorkerGlobalScope-closing>closing</a>;
275     void <a href="#close" title=dom-WorkerGlobalScope-close>close</a>();
276    
277     // other APIs
278     readonly attribute WorkerUtils <a href="#utils" title=dom-WorkerGlobalScope-utils>utils</a>;
279 wakaba 1.11
280     // event handler attributes
281 wakaba 1.22 attribute <span>EventListener</span> <a href="#onconnect" title=handler-WorkerGlobalScope-onconnect>onconnect</a>;
282     attribute <span>EventListener</span> <a href="#onunload" title=handler-WorkerGlobalScope-onunload>onunload</a>;
283 wakaba 1.9 };</pre>
284    
285 wakaba 1.22 <p>The <dfn id=self
286     title=dom-WorkerGlobalScope-self><code>self</code></dfn> attribute must
287     return the <code><a href="#workerglobalscope">WorkerGlobalScope</a></code>
288     object itself.
289    
290     <p>The <dfn id=url title=dom-WorkerGlobalScope-URL><code>URL</code></dfn>
291     attribute must return the value it was assigned when the <code><a
292     href="#workerglobalscope">WorkerGlobalScope</a></code> object was created
293     by the "<a href="#run-a">run a worker</a>" algorithm. It gives the
294     <span>absolute URL</span> of the script that was used to initialize the
295     worker.
296    
297     <p>The <dfn id=name
298     title=dom-WorkerGlobalScope-name><code>name</code></dfn> attribute must
299     return the value it was assigned when the <code><a
300     href="#workerglobalscope">WorkerGlobalScope</a></code> object was created
301     by the "<a href="#run-a">run a worker</a>" algorithm. If it has a value
302     that isn't the empty string, its value represents the name that can be
303     used to obtain a reference to the worker using the <code
304     title=dom-WorkerFactory-createNamedWorker><a
305     href="#createnamedworker">createNamedWorker()</a></code> method.
306    
307     <p>The <dfn id=closing
308     title=dom-WorkerGlobalScope-closing><code>closing</code></dfn> attribute
309     must return false until it is set to true by one of the algorithms in the
310 wakaba 1.16 processing model section below.
311 wakaba 1.9
312 wakaba 1.22 <p>The following are the <span>event handler DOM attributes</span> that
313     must be supported by objects implementing the <code><a
314     href="#workerglobalscope">WorkerGlobalScope</a></code> interface:
315    
316     <dl>
317 wakaba 1.16 <dt><dfn id=onconnect
318 wakaba 1.22 title=handler-WorkerGlobalScope-onconnect><code>onconnect</code></dfn>
319 wakaba 1.11
320     <dd>
321 wakaba 1.22 <p><span class=ja-translation lang=ja><code title=event-WorkerGlobalScope-connect>connect</code> 事象が当該 <code><a href="#workerglobalscope">WorkerGlobalScope</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
322 wakaba 1.12 呼び出されなければなりません。</span><dt><dfn id=onunload
323 wakaba 1.22 title=handler-WorkerGlobalScope-onunload><code>onunload</code></dfn>
324 wakaba 1.11
325     <dd>
326 wakaba 1.22 <p><span class=ja-translation lang=ja><code title=event-unload>unload</code> 事象が当該 <code><a href="#workerglobalscope">WorkerGlobalScope</a></code> オブジェクトを対象としているか、泡立って当該オブジェクトを通過する時に、
327 wakaba 1.12 呼び出されなければなりません。</span></dl>
328 wakaba 1.11
329 wakaba 1.22 <p>The <dfn id=utils
330     title=dom-WorkerGlobalScope-utils><code>utils</code></dfn> attribute must
331     return the <code><a href="#workerutils">WorkerUtils</a></code> object
332     created for the <code><a
333     href="#workerglobalscope">WorkerGlobalScope</a></code> object when the
334     worker was created.
335    
336 wakaba 1.18 <h3 id=base-urls><span class=ja-translation lang=ja><span class=secno>2.2 </span>労働者の基底 URL と起源</span></h3>
337 wakaba 1.16
338 wakaba 1.22 <p>The <span>base URL</span> of a <span>URL</span> passed to an API in a
339     worker is the <span>absolute URL</span> given by the value of the <code
340     title=dom-WorkerGlobalScope-URL><a href="#url">URL</a></code> attribute of
341     the worker's <code><a
342     href="#workerglobalscope">WorkerGlobalScope</a></code> object.
343    
344     <p>Both the <span>origin</span> and <span>effective script origin</span> of
345     scripts running in workers are the <span>origin</span> of the
346     <span>absolute URL</span> given by the value of the <code
347     title=dom-WorkerGlobalScope-URL><a href="#url">URL</a></code> attribute of
348     the worker's <code><a
349     href="#workerglobalscope">WorkerGlobalScope</a></code> object.
350    
351     <h3 id=the-queue><span class=ja-translation lang=ja><span class=secno>2.3 </span>事象の待ち行列</span></h3>
352    
353     <p>Each <code><a href="#workerglobalscope">WorkerGlobalScope</a></code>
354     object is asssociated with a <dfn id=queue>queue of events</dfn>, which is
355     initially empty.
356 wakaba 1.9
357 wakaba 1.22 <p><span class=ja-translation lang=ja>待ち行列中の事象は、 DOM 事象か小休止呼び戻しのいずれかです。</span><p><span class=ja-translation lang=ja>労働者中で呼び出しまたは発送されるすべての非同期の呼び戻しと事象は、
358 wakaba 1.17 労働者の待ち行列に追加されなければなりません。
359 wakaba 1.12 ただし、実際の呼び戻しの呼び出しや事象の発送は、後述の「<a
360 wakaba 1.22 href="#run-a">労働者を走らせる</a>」処理モデルに従い処理されます。</span><p>Once the <code><a
361     href="#workerglobalscope">WorkerGlobalScope</a></code>'s <code
362     title=dom-WorkerGlobalScope-closing><a href="#closing">closing</a></code>
363     attribute is set to true, the queue must discard anything else that would
364     be added to it. Effectively, once the <code
365     title=dom-WorkerGlobalScope-closing><a href="#closing">closing</a></code>
366     attribute is true, timers stop firing, notifications for all pending
367     asynchronous operations are dropped, etc.
368    
369     <h3 id=the-workers><span class=ja-translation lang=ja><span class=secno>2.4 </span>労働者のポート</span></h3>
370 wakaba 1.11
371 wakaba 1.14 <p><span class=ja-translation lang=ja>労働者は、メッセージ通信路とその <code>MessagePort</code>
372 wakaba 1.22 オブジェクトを通じて、他の労働者や閲覧文脈と通信します。</span><p>Each <code><a href="#workerglobalscope">WorkerGlobalScope</a></code>
373     <var title="">worker</var> has a list of <dfn id=the-workers0>the worker's
374     ports</dfn>, which consists of all the <code>MessagePort</code> objects
375     that are entangled with another port and that have one (but only one) port
376     owned by <var title="">worker</var>. This list includes all the
377     <code>MessagePort</code> objects that are in events pending in the <a
378     href="#queue">queue of events</a>.
379 wakaba 1.16
380     <hr>
381    
382 wakaba 1.22 <p>A worker is said to be a <dfn id=front-line>front-line worker</dfn> if
383     at least one of the <a href="#the-workers0">the worker's ports</a> has an
384     entangled <code>MessagePort</code> owned by a <code>Window</code> object.
385    
386     <p><span class=ja-translation lang=ja>労働者は、次のいずれかの場合、<dfn id=needed>必要な労働者</dfn>であるといいます。</span><ul>
387     <li><span class=ja-translation lang=ja><a href="#front-line">前線労働者</a>である場合。</span><li>at least one of the <a href="#the-workers0">the worker's ports</a> has
388     an entangled <code>MessagePort</code> owned by a <code><a
389     href="#workerglobalscope">WorkerGlobalScope</a></code> object that is
390     itself a <a href="#needed">needed worker</a>.
391     </ul>
392    
393     <hr>
394    
395     <p>A worker is said to be an <dfn id=active>active front-line worker</dfn>
396     if at least one of the <a href="#the-workers0">the worker's ports</a> has
397     both an <code title=dom-MessagePort-active>active</code> attribute whose
398     value is true and an entangled <code>MessagePort</code> whose owner is a
399     <code>Window</code> object.
400    
401     <p><span class=ja-translation lang=ja>労働者は、次のいずれかの場合、<dfn id=active0>活性で必要な労働者</dfn>であるといいます。</span><ul>
402     <li><span class=ja-translation lang=ja><a href="#active">活性前線労働者</a>である場合。</span><li>at least one of the <a href="#the-workers0">the worker's ports</a> has
403     an entangled <code>MessagePort</code> owned by a <code><a
404     href="#workerglobalscope">WorkerGlobalScope</a></code> object that is
405     itself an <a href="#active0">active needed worker</a>.
406     </ul>
407 wakaba 1.16
408     <h3 id=processing><span class=ja-translation lang=ja><span class=secno>2.5 </span>処理モデル</span></h3>
409 wakaba 1.12
410     <p><span class=ja-translation lang=ja>利用者エージェントが、<span>URL</span> <var
411     title="">url</var>、閲覧文脈 <var title="">owner browsing
412     context</var>、<code>Document</code> <var title="">owner
413     document</var> のスクリプトに対する、 <var
414 wakaba 1.14 title="">name</var> と名付けられた<dfn id=run-a>労働者を走らせる</dfn>、
415 wakaba 1.12 という時には、利用者エージェントは、次の段階を、完全に分離された並列実行環境で実行しなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
416     <li>
417     <p><span class=ja-translation lang=ja><var title="">url</var> で識別される資源を取って来ようと試みます。</span></p>
418    
419 wakaba 1.14 <p><span class=ja-translation lang=ja>この試みが失敗した場合、これらの段階を停止し、この段階を呼び出した算法が定義する<a
420     href="#worker" title="worker creation failed">誤り取扱段階</a>を呼び出します。</span></p>
421 wakaba 1.12
422     <p><span class=ja-translation lang=ja>この試みが成功した場合、 <var title="">script</var>
423     を得られた資源とします。</span></p>
424    
425     <p class=note><span class=ja-translation lang=ja><code>script</code> 要素と同様に、スクリプトの MIME 型は無視します。
426     <code>script</code> 要素とは異なり、
427     型を上書きする方法はありません。スクリプトは常に JavaScript
428     と仮定します。</span></p>
429 wakaba 1.11 <!-- XXX people will complain about
430     this. I guess we might want to examine the MIME type... -->
431    
432    
433     <li>
434 wakaba 1.22 <p>Create a new <code><a
435     href="#workerglobalscope">WorkerGlobalScope</a></code> object, <var
436     title="">worker</var>.</p>
437    
438     <li>
439     <p>Set the <code title=dom-WorkerGlobalScope-URL><a
440     href="#url">URL</a></code> attribute of <var title="">worker</var> to
441     the value of <var title="">url</var>.</p>
442 wakaba 1.9
443     <li>
444 wakaba 1.22 <p>Set the <code title=dom-WorkerGlobalScope-name><a
445     href="#name">name</a></code> attribute of <var title="">worker</var> to
446     the value of <var title="">name</var>.</p>
447 wakaba 1.13
448     <li>
449 wakaba 1.22 <p>Create a new <code><a href="#workerutils">WorkerUtils</a></code>
450     object for the <code title=dom-WorkerGlobalScope-utils><a
451     href="#utils">utils</a></code> attribute of <var title="">worker</var>.
452 wakaba 1.9
453     <li>
454 wakaba 1.18 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト実行文脈を (ひいては大域オブジェクトをも)
455     <var
456     title="">worker</var> とします。</span></p>
457 wakaba 1.9
458     <li>
459 wakaba 1.12 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト閲覧文脈を <var title="">owner browsing context</var>
460     とします。</span></p>
461 wakaba 1.9
462     <li>
463 wakaba 1.12 <p><span class=ja-translation lang=ja><var title="">script</var> のスクリプト文書文脈を <var title="">owner document</var>
464     とします。</span></p>
465 wakaba 1.9
466     <li>
467 wakaba 1.18 <p><span class=ja-translation lang=ja>この段階を呼び出す算法が定義する<a href="#success" title="worker creation
468     succeeded">成功段階</a>を呼び出します。</span></p>
469    
470 wakaba 1.22 <p class=note>This will usually add an event to the <a
471     href="#queue">queue of events</a>. If it does, that event will have a
472     <code>MessagePort</code> and thus the list of <a
473     href="#the-workers0">the worker's ports</a> will not be empty. If it
474     doesn't, then the next step will set the <var title="">worker</var>
475     object's <code title=dom-WorkerGlobalScope-closing><a
476     href="#closing">closing</a></code> attribute to true.</p>
477    
478     <li>
479     <p>Start monitoring <var title="">worker</var>, such that as soon as the
480     worker stops being a <a href="#needed">needed worker</a>, the <var
481     title="">worker</var> object's <code
482     title=dom-WorkerGlobalScope-closing><a
483     href="#closing">closing</a></code> attribute is set to true.</p>
484    
485     <li>
486     <p>Start monitoring <var title="">worker</var>, such that whenever the
487     <var title="">worker</var> object's <code
488     title=dom-WorkerGlobalScope-closing><a
489     href="#closing">closing</a></code> attribute is false and the worker is
490     not an <a href="#active0">active needed worker</a>, the user agent
491     suspends execution of script in that worker until such time as either
492     the <code title=dom-WorkerGlobalScope-closing><a
493     href="#closing">closing</a></code> attribute switches to true or the
494     worker becomes an <a href="#active0">active needed worker</a>.</p>
495 wakaba 1.11
496     <li>
497 wakaba 1.14 <p><span class=ja-translation lang=ja><var title="">script</var> を、返るか、例外の捕獲に失敗するか、後述の「<a href="#kill-a">労働者を殺す</a>」算法により早々に停止させられるかのいずれかまで走らせます。</span></p>
498 wakaba 1.11
499 wakaba 1.14 <p class=note><span class=ja-translation lang=ja>スクリプトが「<a href="#kill-a">労働者を殺す</a>」算法で停止させられる場合には、
500     その同じ算法が、次の段階で、<a href="#queue">事象の待ち行列</a>には唯一
501     <code title=message-unload>unload</code> 事象だけが含まれるようにします。
502     しかし、この事象が無視された場合には、これは、ポートがごみ収集される際に真となります。</span></p>
503 wakaba 1.9
504     <li>
505 wakaba 1.22 <p><i>Event loop</i>: Wait until either there is an event in the <a
506     href="#queue">queue of events</a> associated with <var
507     title="">worker</var> or the <var title="">worker</var> object's <code
508     title=dom-WorkerGlobalScope-closing><a
509     href="#closing">closing</a></code> attribute is set to true.</p>
510 wakaba 1.9
511     <li>
512 wakaba 1.14 <p><span class=ja-translation lang=ja><a href="#queue">事象の待ち行列</a>中で最古の事象か呼び戻しがあれば、
513     これを発送します。この事象の取扱いや呼び戻しの実行は、後述の「<a href="#kill-a">労働者を殺す</a>」
514     算法により、早々に停止させられるかもしれません。</span></p>
515 wakaba 1.9
516     <li>
517 wakaba 1.22 <p>If there are any more events in the <a href="#queue">queue of
518     events</a> or if the <var title="">worker</var> object's <code
519     title=dom-WorkerGlobalScope-closing><a
520     href="#closing">closing</a></code> attribute is set to false, then jump
521     back to the step above labeled <i>event loop</i>.</p>
522 wakaba 1.9
523     <li>
524 wakaba 1.14 <p class=big-issue><span class=ja-translation lang=ja>タイマー、休憩、 XMLHttpRequest、データベース取引、その他を殺さなければ<em class=rfc2119 title="MUST">なりません</em>。
525     ポートを非活性化し、ほどかなければ<em class=rfc2119 title="MUST">なりません</em> (unload を送りません)。</span></p>
526 wakaba 1.9 </ol>
527    
528     <hr>
529    
530 wakaba 1.14 <p><span class=ja-translation lang=ja>利用者エージェントが<dfn id=kill-a>労働者を殺す</dfn>という時には、
531     利用者エージェントは、次の段階を労働者の主たるループ (先に定義した「<a
532     href="#run-a">労働者を走らせる</a>」処理モデル) と並列に走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
533     <li>
534 wakaba 1.22 <p>Create an <code>Event</code> object with the event name <code
535     title=event-unload>unload</code>, which does not bubble and is not
536     cancelable, and add it to the worker's <code><a
537     href="#workerglobalscope">WorkerGlobalScope</a></code> object's <a
538     href="#queue">queue of events</a>, targetted at the <code><a
539     href="#workerglobalscope">WorkerGlobalScope</a></code> object itself.
540    
541     <li>
542     <p>Set the worker's <code><a
543     href="#workerglobalscope">WorkerGlobalScope</a></code> object's <code
544     title=dom-WorkerGlobalScope-closing><a
545     href="#closing">closing</a></code> attribute to true.
546    
547     <li>
548 wakaba 1.14 <p><span class=ja-translation lang=ja>利用者エージェント定義の時間、待ちます。先に定義した「<a href="#run-a">労働者を走らせる</a>」
549     処理モデルが <code title=event-unload>unload</code>
550     事象に登録された事象聴取器を即座に走らせ始める場合には、この時間は零である<em class=rfc2119 title="SHOULD NOT">べきではありません</em>。
551     というのは、予期せず停止させる時に浄化するために <code
552     title=event-unload>unload</code> 事象を使えるようにするのが目的だからです。</span><li>
553     <p><span class=ja-translation lang=ja><a href="#queue">事象の待ち行列</a>中にこの算法が追加した
554     <code title=event-unload>unload</code>
555     事象以外の事象が存在する場合には、それらを発送せずに捨てます。</span><li>
556     <p><span class=ja-translation lang=ja>この算法が追加した <code title=event-unload>unload</code>
557     事象がまだ発送されていなければ、現在労働者中で走っているスクリプトを停止します。</span><li>
558     <p><span class=ja-translation lang=ja>利用者エージェント定義の時間、待ちます。</span><li>
559     <p><span class=ja-translation lang=ja>現在労働者中で走っているスクリプト (スクリプトが走っているとすると、
560     これは <code
561     title=event-unload>unload</code>
562     事象の取扱器です。) を停止します。</span></ol>
563 wakaba 1.9
564 wakaba 1.22 <p>User agents may invoke the "<a href="#kill-a">kill a worker</a>"
565     processing model on a worker at any time, e.g. in response to user
566     requests, in response to CPU quota management, or when a worker stops
567     being a <a href="#needed">needed worker</a> if the worker continues
568     executing even after its <code title=dom-WorkerGlobalScope-closing><a
569     href="#closing">closing</a></code> attribute was set to true.
570 wakaba 1.16
571 wakaba 1.11 <hr>
572    
573 wakaba 1.22 <p>When a script invokes the <dfn id=close
574     title=dom-WorkerGlobalScope-close><code>close()</code></dfn> method on a
575     <code><a href="#workerglobalscope">WorkerGlobalScope</a></code> object,
576     the user agent must run the following steps:
577    
578     <ol>
579     <li>
580     <p>Create an <code>Event</code> object with the event name <code
581     title=event-unload>unload</code>, which does not bubble and is not
582     cancelable, and add it to the <code><a
583     href="#workerglobalscope">WorkerGlobalScope</a></code> object's <a
584     href="#queue">queue of events</a>, targetted at the <code><a
585     href="#workerglobalscope">WorkerGlobalScope</a></code> object itself.
586    
587     <li>
588     <p>Set the worker's <code><a
589     href="#workerglobalscope">WorkerGlobalScope</a></code> object's <code
590     title=dom-WorkerGlobalScope-closing><a
591     href="#closing">closing</a></code> attribute to true.
592    
593     <li>
594     <p>For each <code>MessagePort</code> object that is entangled with
595     another port and that has one (but only one) port whose owner is the
596     <code><a href="#workerglobalscope">WorkerGlobalScope</a></code> object
597     on which the method was invoked, run the following substeps:</p>
598 wakaba 1.11
599     <ol>
600     <li>
601 wakaba 1.15 <p><span class=ja-translation lang=ja>2つのポートをほどきます。</span><li>
602     <p><span class=ja-translation lang=ja>両ポートの <code title=dom-MessagePort-active>active</code>
603     属性を偽に設定します。</span><li>
604 wakaba 1.22 <p>At the next available opportunity, after any scripts have finished
605     executing<!-- XXX queue -->, <span>fire a simple event</span> called
606     <code title=event-unload>unload</code> at the other port (the one
607     whose owner is not the <code><a
608     href="#workerglobalscope">WorkerGlobalScope</a></code> object on which
609     the <code title=dom-WorkerGlobalScope-close><a
610     href="#close">close()</a></code> method was called).
611     </ol>
612 wakaba 1.11 </ol>
613    
614 wakaba 1.16 <h3 id=creating><span class=ja-translation lang=ja><span class=secno>2.6 </span>労働者の作成</span></h3>
615 wakaba 1.9
616     <pre
617 wakaba 1.22 class=idl>[NoInterfaceObject] interface <dfn id=workerfactory>WorkerFactory</dfn> {
618     <span>MessagePort</span> <a href="#createworker" title=dom-WorkerFactory-createWorker>createWorker</a>(in DOMString scriptURL);
619     <span>MessagePort</span> <a href="#createnamedworker" title=dom-WorkerFactory-createNamedWorker>createNamedWorker</a>(in DOMString name, in DOMString scriptURL);
620 wakaba 1.9 };</pre>
621    
622 wakaba 1.22 <p>Objects that implement the <code>Window</code> and <code><a
623     href="#workerutils">WorkerUtils</a></code> interfaces must also implement
624     the <code><a href="#workerfactory">WorkerFactory</a></code> interface.
625    
626     <hr>
627 wakaba 1.13
628 wakaba 1.22 <p><span class=ja-translation lang=ja>利用者エージェントは、 <dfn id=createworker title=dom-WorkerFactory-createWorker><code>createWorker(<var title="">scriptURL</var>)</code></dfn> メソッドが呼び出された時、
629 wakaba 1.15 次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
630 wakaba 1.13 <li>
631 wakaba 1.15 <p><span class=ja-translation lang=ja><var
632     title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
633     <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
634     例外を投げます。</span><li>
635     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
636     保安性例外を投げます。</span><li>
637     <p><span class=ja-translation lang=ja>得られた絶対 URL から、名前が空文字列である<a href="#create">労働者を作成</a>します。</span><li>
638     <p><span class=ja-translation lang=ja><a
639     href="#create">労働者を作成</a>する算法が返した
640     <code>MessagePort</code> オブジェクトを返します。</span></ol>
641 wakaba 1.11
642     <hr>
643    
644 wakaba 1.22 <p><span class=ja-translation lang=ja>利用者エージェントは、 <dfn id=createnamedworker title=dom-WorkerFactory-createNamedWorker><code>createNamedWorker(<var title="">name</var>, <var title="">scriptURL</var>)</code></dfn> メソッドが呼び出された時、
645 wakaba 1.15 次の段階を走らせなければ<em class=rfc2119 title="MUST">なりません</em>。</span><ol>
646 wakaba 1.13 <li>
647 wakaba 1.15 <p><span class=ja-translation lang=ja><var
648     title="">scriptURL</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
649     <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
650     例外を投げます。</span><li>
651     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
652     保安性例外を投げます。</span><li>
653     <p><span class=ja-translation lang=ja><var title="">name</var> 引数が空文字列の場合、得られた絶対 URL から、
654     名前が空文字列である<a
655     href="#create">労働者を作成</a>し、<a
656     href="#create">労働者を作成</a>する算法が返した <code>MessagePort</code>
657     オブジェクトを返します。そして、これらの段階を停止します。</span><li>
658 wakaba 1.22 <p>If there exists a worker whose <code
659     title=dom-WorkerGlobalScope-closing><a
660     href="#closing">closing</a></code> attribute is false, whose <code
661     title=dom-WorkerGlobalScope-name><a href="#name">name</a></code>
662     attribute is exactly equal to the <var title="">name</var> argument, and
663     whose <code title=dom-WorkerGlobalScope-URL><a
664     href="#url">URL</a></code> attribute has the <span>same origin</span> as
665     the resulting <span>absolute URL</span>, then run these substeps:</p>
666 wakaba 1.13
667     <ol>
668     <li>
669 wakaba 1.22 <p>If that worker's <code title=dom-WorkerGlobalScope-URL><a
670     href="#url">URL</a></code> attribute is not exactly equal to the
671     resulting <span>absolute URL</span>, then throw a
672     <code>URL_MISMATCH_ERR</code> exception and abort these steps. <span
673     class=big-issue>code 19</span>
674    
675     <li>
676 wakaba 1.15 <p><span class=ja-translation lang=ja>メソッドを呼び出したスクリプトのスクリプト実行文脈が所有する新しい <code>MessagePort</code>
677     オブジェクトを作成します。</span><li>
678     <p><span class=ja-translation lang=ja>そのポートを返します。</span><li>
679 wakaba 1.19 <p><span class=ja-translation lang=ja>非同期に、この既存の労働者を新しく作成されたポートに<a href="#connect" title="connect to a
680     worker">接続</a>します。</span></ol>
681 wakaba 1.15
682     <p><span class=ja-translation lang=ja>そうでない場合、得られた絶対 URL から、名前が <var
683     title="">name</var> 引数の値である<a href="#create">労働者を作成</a>し、
684     <a href="#create">労働者を作成</a>する算法が返した <code>MessagePort</code>
685     オブジェクトを返します。</span></p>
686 wakaba 1.11 </ol>
687    
688     <hr>
689    
690 wakaba 1.15 <p><span class=ja-translation lang=ja>メソッド呼び出しの文脈において、 URL <var title="">url</var> から名前 <var
691     title="">name</var> の<dfn id=create>労働者を作成</dfn>する段階は、次の通りです。</span><ol>
692     <li>
693     <p><span class=ja-translation lang=ja>メソッドを呼び出したスクリプトのスクリプト実行文脈が所有する新しい <code>MessagePort</code>
694     オブジェクトを作成します。</span><li>
695     <p><span class=ja-translation lang=ja>そのポートを返します。</span><li>
696     <p><span class=ja-translation lang=ja>並列実行文脈において (つまり、別のスレッドやプロセスや同様の構造において)、 <var title="">owner browsing
697     context</var> をメソッドを呼び出したスクリプトのスクリプト閲覧文脈、 <var title="">owner
698     document</var> をメソッドを呼び出したスクリプトのスクリプト文書文脈として、
699     URL
700     <var
701     title="">url</var> のスクリプトのための <var
702     title="">name</var> という名前の<a href="#run-a">労働者を走らせます</a>。</span></p>
703    
704 wakaba 1.19 <p><span class=ja-translation lang=ja>その算法が<dfn id=success title="worker
705     creation succeeded">成功段階</dfn>の段階を呼び出す場合は、
706     この新しい労働者に、新しく作成されたポートと共に<a href="#connect"
707     title="connect to a worker">接続</a>します。</span></p>
708 wakaba 1.15
709     <p><span class=ja-translation lang=ja>そうでない場合、<dfn id=worker>労働者作成が失敗</dfn>した場合、次の利用可能な機会、
710     何らかのスクリプトが実行し終えた後に、新しく作成されたポートで
711     <code title=event-error>error</code>
712     と呼ばれる単純事象を発火します。</span></p>
713 wakaba 1.11 </ol>
714    
715     <hr>
716    
717 wakaba 1.19 <p><span class=ja-translation lang=ja>与えられた <code>MessagePort</code> オブジェクト <var title="">port</var>
718     により<dfn id=connect>労働者に接続</dfn>する段階は、次の通りです。</span><ol>
719 wakaba 1.13 <li>
720 wakaba 1.22 <p>If <var title="">port</var> would have been garbage collected, or if
721     the <span>active document</span> of the owner of <var
722     title="">port</var> is no longer the same <code>Document</code> object
723     as when <var title="">port</var> was created, then do nothing. Abort
724     these steps. If the worker was just created, it'll get killed
725     immediately.</p>
726    
727     <li>
728     <p><span>Create a new <code>MessagePort</code> object</span> owned by the
729     <code><a href="#workerglobalscope">WorkerGlobalScope</a></code> of the
730     worker.
731 wakaba 1.13
732     <li>
733 wakaba 1.15 <p><span class=ja-translation lang=ja>この新しく作成されたポートとこれらの段階に渡されたポート <var
734     title="">port</var> を絡めます。</span><li>
735     <p><span class=ja-translation lang=ja>両ポートの
736     <code title=dom-MessagePort-active>active</code>
737     属性を真に設定します。</span><li>
738     <p><span class=ja-translation lang=ja>次の利用可能な機会、何らかのスクリプトが実行し終えた後に、
739     <var title="">port</var> において <code title=event-load>load</code>
740     と呼ばれる単純事象を発火します。</span><li>
741 wakaba 1.22 <p>Create an event that uses the <code>MessageEvent</code> interface,
742     with the name <code title=event-connect>connect</code>, which does not
743     bubble, is cancelable, has no default action, has a <code
744     title=dom-MessageEvent-data>data</code> attribute whose value is the
745     empty string and has a <code
746     title=dom-MessageEvent-messagePort>messagePort</code> attribute whose
747     value is the newly created port, and add it to the worker's <code><a
748     href="#workerglobalscope">WorkerGlobalScope</a></code> object's <a
749     href="#queue">queue of events</a>, targetted at the <code><a
750     href="#workerglobalscope">WorkerGlobalScope</a></code> object itself.
751     </ol>
752 wakaba 1.15
753     <h2 id=apis-available><span class=ja-translation lang=ja><span class=secno>3. </span>労働者が利用可能な API</span></h2>
754    
755 wakaba 1.22 <pre
756     class=idl>[NoInterfaceObject] interface <dfn id=workerutils>WorkerUtils</dfn> {
757     boolean <a href="#importscript" title=dom-WorkerGlobalScope-importScript>importScript</a>(in DOMString url);
758     readonly attribute <span>Storage</span> <a href="#localstorage" title=dom-localStorage>localStorage</a>;
759     <span>Database</span> <a href="#opendatabase" title=dom-opendatabase>openDatabase</a>(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize);
760     void <a href="#shownotification" title=dom-showNotification>showNotification</a>(in DOMString title, in DOMString subtitle, in DOMString description);
761     void <a href="#shownotification" title=dom-showNotification>showNotification</a>(in DOMString title, in DOMString subtitle, in DOMString description, in VoidCallback onclick);
762     };</pre>
763 wakaba 1.16
764 wakaba 1.22 <p>Objects that implement the <code><a
765     href="#workerutils">WorkerUtils</a></code> interface must also implement
766     the following interfaces:
767    
768     <ul>
769     <li><span class=ja-translation lang=ja><code>WindowTimers</code> 界面</span><li><span class=ja-translation lang=ja><code>EventTarget</code> 界面</span><li>The <code><a href="#workerfactory">WorkerFactory</a></code> interface,
770     as noted earlier in this specification
771     </ul>
772 wakaba 1.16
773     <p class=big-issue>Need to define a sync database API.
774    
775     <p class=big-issue>May need to define a browser sniffing API (like
776     window.navigator).</p>
777     <!-- XXX ApplicationCache -->
778     <!-- XXX a way to set cookies on the URL for the script -->
779     <!-- XXX debugging: void log(in DOMString s); // log to console -->
780     <!-- XXX debugging: onerror -->
781    
782     <hr>
783    
784 wakaba 1.19 <p><span class=ja-translation lang=ja>DOM API (<code>Node</code> オブジェクト、 <code>Document</code>
785 wakaba 1.22 オブジェクト、その他) は、この版のこの仕様書では労働者に利用可能ではありません。</span><h3 id=importing><span class=secno>3.1 </span>Importing scripts and
786     libraries</h3>
787    
788     <p>When a script invokes the <dfn id=importscript
789     title=dom-WorkerGlobalScope-importScript><code>importScript(<var
790     title="">url</var>)</code></dfn> method on a <code><a
791     href="#workerglobalscope">WorkerGlobalScope</a></code> object, the user
792     agent must run the following steps:
793    
794     <ol>
795     <li>
796     <p><span class=ja-translation lang=ja><var title="">url</var> 引数を<span title="resolve a url">解決</span>します。</span><li>
797     <p><span class=ja-translation lang=ja>これが失敗した場合、 <code>SYNTAX_ERR</code>
798     例外を投げます。</span><li>
799     <p><span class=ja-translation lang=ja>得られた絶対 URL の起源がメソッドを呼び出したスクリプトの起源と<span title="same origin">同じ</span>でない場合、
800     保安性例外を投げます。</span><li>
801     <p><span class=ja-translation lang=ja>得られた<span>絶対 URL</span> で識別される資源を<span>取って来</span><!-- XXX -->ようとします。</span></p>
802    
803     <p><span class=ja-translation lang=ja>この試みが失敗した場合、偽を返し、これらの段階を停止します。</span></p>
804    
805     <p><span class=ja-translation lang=ja>この試みが成功した場合、 <var title="">script</var>
806     を得られた資源とします。</span></p>
807    
808     <p class=note><span class=ja-translation lang=ja>はじめのスクリプトと同様に、ここでのスクリプトも、 MIME 型に関わらず常に JavaScript
809     であると仮定します。</span></p>
810     <!-- XXX -->
811    
812     <li>
813     <p><span class=ja-translation lang=ja><var title="">script</var> の<span>スクリプト実行文脈</span>、
814     <span>スクリプト閲覧文脈</span>、<span>スクリプト文書文脈</span>を、
815     この労働者についての<a href="#run-a">労働者を走らせる</a>処理モデルで実行されたスクリプトについてのものと同じとします。</span></p>
816    
817     <li>
818     <p>Run <var title="">script</var> until it either returns, fails to catch
819     an exception, or gets prematurely aborted by the "<a href="#kill-a">kill
820     a worker</a>" algorithm above.</p>
821    
822     <p>If an exception was raised or if the script was prematurely aborted,
823     then abort these steps, letting the exception or aborting continue to be
824     processed by the script that called the <code
825     title=dom-WorkerGlobalScope-importScript><a
826     href="#importscript">importScript()</a></code> method.</p>
827    
828     <p><span class=ja-translation lang=ja>そうでない場合、真を返します。</span></p>
829     </ol>
830    
831     <h3 id=apis-defined><span class=secno>3.2 </span>APIs defined in other
832     specifications</h3>
833    
834     <p>The <dfn id=localstorage
835     title=dom-localStorage><code>localStorage</code></dfn>, <dfn
836     id=opendatabase title=dom-opendatabase><code>openDatabase()</code></dfn>
837     must act as defined for the APIs with the same names on the
838     <code>Window</code> object in the HTML5 specification, with the exception
839     that where the API would use the <span>origin</span> of the <span>active
840     document</span> of the <span>browsing context</span> of the
841     <code>Window</code> object on which the method was supposedly invoked, it
842     must instead use the <span>origin</span> of the script that invoked the
843     method. <a href="#refsHTML5">[HTML5]</a>
844    
845     <p>The <dfn id=shownotification
846     title=dom-showNotification><code>showNotification()</code></dfn> methods
847     must act as defined for the APIs with the same names on the
848     <code>Window</code> object in the HTML5 specification. <a
849     href="#refsHTML5">[HTML5]</a>
850    
851     <h3 id=interface><span class=secno>3.3 </span>Interface objects and
852     constructors</h3>
853    
854     <p>There must be no interface objects and constructors available in the
855     global scope of scripts whose <span>script execution context</span> is a
856     <code><a href="#workerglobalscope">WorkerGlobalScope</a></code> object
857     except for the following:
858    
859     <ul>
860     <li>
861     <p><span class=ja-translation lang=ja>XMLHttpRequest 仕様書で定義されている
862     <code>XMLHttpRequest</code> とすべての界面オブジェクトと構築器、
863     ただし<span>文書応答実体本体</span>は常に null でなければ<em class=rfc2119 title="MUST">なりません</em>。 <a
864     href="#refsXHR">[XHR]</a></span><li>
865     <p><span class=ja-translation lang=ja><code>WebSocket</code> 界面オブジェクトと構築器</span><li>
866     <p><span class=ja-translation lang=ja><code>MessageChannel</code> 界面オブジェクトと構築器</span></ul>
867    
868     <h2 class=no-num id=references><span class=ja-translation lang=ja>参考文献</span></h2>
869 wakaba 1.1
870     <p class=big-issue><span class=ja-translation lang=ja>この章は将来の仕様案で執筆します。</span><h2 class=no-num id=acknowledgements><span class=ja-translation lang=ja>謝辞</span></h2>
871     <!-- ACKS -->
872    
873 wakaba 1.22 <p><span class=ja-translation lang=ja>Aaron Boodman, Jonas Sicking, Maciej Stachowiak, Mike Smith, Philip Taylor の有用かつ重要なコメントに感謝します。</span><p><span class=ja-translation lang=ja>Gears チームの方々にも非常に感謝します。
874 wakaba 1.14 Gears チームの方々はこの技術を開拓し、その経験はこの仕様書にも多大な影響を与えています。
875     </span>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24