diff options
Diffstat (limited to 'files/ja/mozilla')
474 files changed, 0 insertions, 63090 deletions
diff --git a/files/ja/mozilla/add-ons/add-on_debugger/index.html b/files/ja/mozilla/add-ons/add-on_debugger/index.html deleted file mode 100644 index e2147f4582..0000000000 --- a/files/ja/mozilla/add-ons/add-on_debugger/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: アドオンデバッガ -slug: Mozilla/Add-ons/Add-on_Debugger -translation_of: 'https://extensionworkshop.com/documentation/develop/debugging/' ---- -<div class="geckoVersionNote"> -<p>The Add-on Debugger is new in Firefox 31.</p> -</div> - -<p>Starting in Firefox 31, the Add-on Debugger lets you run the <a href="/en-US/docs/Tools/Debugger">JavaScript Debugger</a> in the context of an add-on.</p> - -<p>From Firefox 32 onwards you can also use the<a href="/en-US/docs/Tools/Web_Console"> Console</a>, to see logged messages and evaluate JavaScript in the add-on's context, and<a href="/en-US/docs/Tools/Scratchpad"> Scratchpad</a>, to conveniently evaluate multiline JavaScript in the add-on context and save it to a file.</p> - -<p>The Add-on Debugger is only available for <a href="/en-US/Add-ons/Bootstrapped_extensions">restartless</a> and <a href="/en-US/Add-ons/SDK">SDK-based add-ons</a>. It's still experimental: if you find bugs, we'd love it if you <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox&component=Developer%20Tools%3A%20Debugger&blocked=addon-dbg">filed them in Bugzilla</a>.</p> - -<p>For a quick introduction to the Add-on Debugger, see this screencast:</p> - -<p>{{EmbedYouTube("KU3Xsck7qy0")}}</p> - -<h2 id="Opening_the_Add-on_Debugger">Opening the Add-on Debugger</h2> - -<p>To enable the Add-on Debugger you need to check the "Enable chrome and addon debugging" and "Enable remote debugging" settings in Firefox.</p> - -<p>To do this, select "Toggle Tools" from the Web Developer menu in Firefox, open the <a href="/en-US/docs/Tools/Tools_Toolbox#Settings">Developer Tools Settings</a>, and check "Enable chrome and addon debugging" and "Enable remote debugging".</p> - -<p>Now open the Add-on Manager. Next to the entry for your add-on you will see a button labeled "Debug". Click this button to launch the debugger.</p> - -<p>Next you'll see a dialog asking you to accept an incoming connection. Click "OK", and the debugger will start in a separate window. Note that sometimes the debugger window is hidden by the main Firefox window.</p> - -<p>{{EmbedYouTube("DvNpUVJcG_E")}}</p> - -<h2 id="Using_the_Add-on_Debugger">Using the Add-on Debugger</h2> - -<p>The Add-on Debugger looks and behaves very much like the <a href="/en-US/docs/Tools/Browser_Toolbox">Browser Toolbox</a>, except that while the scope of the Browser Toolbox is the whole browser, the Add-on Debugger is focused on a specific add-on. Like the Browser Toolbox, a toolbar along the top lets you switch between a number of different tools. In Firefox 31 there's only one such tool, the JavaScript Debugger, but with Firefox 32 you also get the Console and Scratchpad.</p> - -<h3 id="The_JavaScript_Debugger">The JavaScript Debugger</h3> - -<p>This behaves just like the normal <a href="/en-US/docs/Tools/Debugger">JavaScript Debugger</a>, except its scope is the add-on rather than a web page. On the left-hand side it lists JavaScript sources:</p> - -<ul> - <li>at the top is <code>bootstrap.js</code>: either the one you've written if your add-on is a manually written <a href="/en-US/Add-ons/Bootstrapped_extensions">bootstrapped add-on</a>, or the one included by the SDK if your add-on is an SDK add-on.</li> - <li>next, if your add-on is an SDK add-on, you'll find your add-on's <code>main.js</code>, any <a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK#Local_Modules">local modules</a> shipping with your add-on, and any content scripts that are currently loaded</li> - <li>next, all the SDK modules used directly or indirectly by your add-on</li> -</ul> - -<h4 id="Content_scripts">Content scripts</h4> - -<p>Content scripts are only listed if they are currently loaded. Also, if you set a breakpoint in a content script, it will not be active for instances of the content script which are loaded after the breakpoint is set.</p> - -<p>For example, suppose you have an add-on that attaches a content script to every tab the user loads. The content script adds a click handler to the page. As soon as you open a tab, this content script will be listed in the debugger. If you then set a breakpoint in the content script's click handler, then execution will pause whenever you click the page. But if you open a new tab, there are now two instances of the content script, and the breakpoint will not be enabled for the second instance You'll need to set a new breakpoint now if you want to it work for the second instance.</p> - -<p>We're investigating improvements to this in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1016046">bug 1016046</a>.</p> - -<h3 id="The_Console">The Console</h3> - -<p>The Console behaves just like the <a href="/en-US/docs/Tools/Web_Console">Web Console</a>, but its scope is the add-on rather than the web page.</p> - -<p>However, note that it actually runs in the context of the add-on's <code>bootstrap.js</code>, which may not be what you expect if your add-on uses the SDK: you won't see any objects defined in your add-on's <code>main.js</code>, and you won't see <code>require()</code> either. This issue is being tracked as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1005193">bug 1005193</a>.</p> - -<p>You can execute Console statements in the context of <code>main.js</code> while execution is paused inside <code>main.js</code>.</p> - -<h3 id="The_Scratchpad">The Scratchpad</h3> - -<p>The Scratchpad behaves just like the normal <a href="/en-US/docs/Tools/Scratchpad">Scratchpad</a>, but its scope is the add-on rather than the web page.</p> - -<p>Like the Console, the add-on Scratchpad runs in the context of the add-on's <code>bootstrap.js</code> even if the add-on uses the SDK, and as with the Console you can execute Scratchpad code in the context of <code>main.js</code> while execution is paused inside <code>main.js</code>.do</p> diff --git a/files/ja/mozilla/add-ons/add-on_guidelines/index.html b/files/ja/mozilla/add-ons/add-on_guidelines/index.html deleted file mode 100644 index f86dd2e18c..0000000000 --- a/files/ja/mozilla/add-ons/add-on_guidelines/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: アドオン ガイドライン -slug: Mozilla/Add-ons/Add-on_guidelines -tags: - - Add-ons - - アドオン -translation_of: 'https://extensionworkshop.com/documentation/publish/add-on-policies/' ---- -<div class="warning"> -<p>この文書はもはや無効です。現在のアドオンポリシー集については、 <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/AMO/Policy/Reviews">レビューポリシーの文書</a> をご覧ください。</p> -</div> - -<p>これらのアドオンガイドラインは、優れたユーザエクスペリエンスを確保する一方で、オープンかつ多様なアドオン開発者のコミュニティの育成をするために作成されました。ホストされている場所に関わらず、すべてのアドオンおよびアドオンの更新に適用されます。同様に、アドオンを使用せずに Firefox の設定をカスタマイズするインストーラにも適用されます。<a class="external text" href="https://addons.mozilla.org/" rel="nofollow">AMO</a> にホストされているアドオンは、<a href="https://addons.mozilla.org/developers/docs/policies" title="https://addons.mozilla.org/developers/docs/policies">追加のポリシー</a> に従う必要があります。</p> - -<h2 id="Be_Transparent(透明性)">Be Transparent(透明性)</h2> - -<ul> - <li>アドオンは、アドオン Web インストールシステムを使用してインストールするか、<a class="external text" href="https://blog.mozilla.org/addons/2011/08/11/strengthening-user-control-of-add-ons/" rel="nofollow">インストールのオプトインダイアログ</a> で許可されなくてはいけません。 - - <ul> - <li>インストールしているものをユーザが知り、予期しない変更によって不快な驚きを与えないようにしてください。また、それが不要になった時に何を削除するかをユーザに知らせてください。</li> - <li>アプリケーションのインストーラによってインストールされたアドオンは、<a class="external text" href="/docs/Adding_Extensions_using_the_Windows_Registry" rel="nofollow">Windows のレジストリを使用</a> するか、グローバルなインストール方法と同等とし、Firefox にオプトイン画面が表示されなければなりません。オプトイン画面は、追加情報のオーバーレイや画像で覆い隠すなど、いかなる方法でも改変されてはなりません。</li> - </ul> - </li> - <li>アドオンは、いつでもアドオンマネージャからアンインストールまたは無効化できなければなりません。 - <ul> - <li>Windows のレジストリを使用してグローバルにインストールされたアドオンやグローバルの extension ディレクトリにインストールされたアドオンは、アンインストールできません (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=640775" rel="nofollow">bug 640775</a>) が、無効化して同じ効果を得られます。</li> - </ul> - </li> - <li>アドオンは、そのライフタイム期間 (作成されてから破棄されるまで) のすべてにおいて、<a class="external text" href="/docs/Install_manifests#id" rel="nofollow">単一のユニークな ID</a> を使用しなければなりません。 - <ul> - <li>同じ ID を複数の製品で使用したり、複数の ID を 1 つの製品で使用することは、自動更新で問題を引き起こし、ブロックリストの干渉を起こします。アドオンは所有者の変更によって ID が変更されることがあります。これは一般的にメールアドレスのような形式を使用します (例: personasplus@mozilla.com)。</li> - </ul> - </li> - <li>アドオンは、ブランド名や商標、その他のユーザを欺く用語を使用してはなりません。 Mozilla の商標を使用する場合、<a class="external text" href="https://www.mozilla.org/foundation/trademarks/policy/" rel="nofollow">Mozilla の商標ポリシー</a> に従わなくてはなりません。</li> - <li>アドオンは、その意図している目的と有効な機能および更新によって導入される新しい機能を明確に伝えるべきです。 - <ul> - <li>私たちは、製品の収益化を選択したアドオン開発者を理解しサポートしますが、ユーザのブラウザ体験に代価を求めるものであってはなりません。アドオンが、広告やアフィリエイトコード、スポンサー付きの検索結果、または類似のものを Web ページに挿入する場合、このアドオンのインストール時に、このことをユーザに承知させておくべきです。同様に、一部の機能を有料にする、または試用期間後に支払いを必要とする場合は、ユーザにこのことを承知させておくべきです。</li> - </ul> - </li> -</ul> - -<h2 id="Be_Respectful_to_Users(ユーザへの敬意)">Be Respectful to Users(ユーザへの敬意)</h2> - -<ul> - <li>アドオンは、アンインストールされた時に、導入されたコード、実行可能な機能、アプリケーションの設定変更をすべて削除しなければなりません。 - <ul> - <li>通常のアンインストール処理でアドオンをアンインストールすることで、一般的に満たされます。このガイドラインは主に、ホームページ設定や既定の検索 URL、ネットワーク設定など、諸々の設定を変更するものに適用されます。これらの設定は、アドオンがアンインストールされた時に以前の設定が復元されるべきです。ほとんどのアドオンは、<a class="external text" href="/docs/Building_an_Extension#Defaults_Files" rel="nofollow">既定の設定ファイル</a> を通して変更を行うことで、容易にこれを達成できます。</li> - </ul> - </li> - <li>アドオンは、ユーザの選択を尊重し、予期しない変更を行ったりユーザの能力を制限して変更を戻してはなりません。 - <ul> - <li>例えば、ユーザは一般的に、アドオンが Firefox のホームページ設定を変更することを期待していません。このような追加の変更を行う場合は、ユーザに確認してオプトインすることが推奨されます。</li> - <li>設定の変更が困難になったり元に戻すことが不可能な変更は禁止です。設定を変更してユーザや他のアドオン、インストーラをブロックすることも許可されていません。</li> - </ul> - </li> - <li>アドオンは、ユーザの個人情報がどのように使用されるかを明確にするべきです。 - <ul> - <li>アドオンがユーザデータをインターネット経由で送信する場合は、できるだけ簡潔で読みやすいプライバシーポリシーを提供すべきです。</li> - </ul> - </li> - <li>アドオンの開発者は、開発者への問い合わせ方法を提供するべきです。 - <ul> - <li>開発者はユーザのためのサポートチャンネルを提供する必要はありませんが、推奨されています。すべてのアドオン開発者は、問い合わせ用の公開のメールアドレスを持ち、ブロックリスト入りするようなガイドライン違反など、緊急の場合に備えて問い合わせられるようにするべきです。</li> - </ul> - </li> -</ul> - -<h2 id="Be_Safe(安全性)">Be Safe(安全性)</h2> - -<ul> - <li>アドオンは、ユーザのデータやシステム、オンライン ID を損なってはなりません。</li> - <li>アドオンは、ユーザのプライベートデータを安全でない手段で送信したり、不要な第三者に開示したりしてはなりません。 - <ul> - <li>プライベートデータは、常に安全な接続を通して送信されるべきです。これには、訪れたサイトの URL やブックマークなどのブラウジングデータも含まれます。</li> - <li>ユーザエージェント文字列にテキストを追加したりカスタムヘッダを追加することによってブラウザが簡単に指紋を残せるようにすることは、セキュリティに関わるため避けるべきです。</li> - </ul> - </li> - <li>アドオンは、アプリケーションやシステムの脆弱性を創出または露呈させてはなりません。 - <ul> - <li>セキュリティのバグは見つかるものですが、一度発見されたものはすぐに修正される必要があります。人気のアドオンにセキュリティの脆弱性があると、悪意のハッカーの標的になります。このような場合、私たちは開発者からの応答を待たずに、アドオンをすぐにブロックリストへ移動します。</li> - </ul> - </li> - <li>アドオンは、アプリケーションやブロックリストの更新システムに手を加えてはなりません。</li> - <li>アドオンは、プライベートブラウジングモード (PBM) 中は、ブラウジングデータを保存するべきではありません。 - <ul> - <li>PBM は、ブラウジング中にデータを <em>ローカル</em> に保存しないようにする機能であり、データを送信しない機能ではないことを強調しておくべきでしょう。PBM について学ぶには、<a class="external text" href="http://ehsanakhgari.org/tag/privatebrowsing" rel="nofollow">Ehsan のブログ投稿</a> をお読みください。</li> - </ul> - </li> -</ul> - -<h2 id="Be_Stable(安定性)">Be Stable(安定性)</h2> - -<ul> - <li>アドオンは、ハングアップやクラッシュの原因となるべきではありません。</li> - <li>アドオンは、アプリケーションの中心機能を壊したり無効にしてはなりません。 - <ul> - <li>これには、タブブラウジング、プライベートブラウジングモード、ロケーションバーなどの機能が含まれます。これを行わなければならない特別なアドオンは除きます。</li> - </ul> - </li> - <li>アドオンは、メモリリークの原因となったり不必要に大量のメモリーを消費するべきではありません。</li> - <li>アドオンは、アプリケーションやシステムの動作を著しく遅くするべきではありません。</li> - <li>アドオンは、通常のアプリケーションの使用に影響するほどのネットワークリソースを消費するべきではありません。 - <ul> - <li>ユーザが承知せずに大量のデータをダウンロードすることは、通常のブラウジングを妨害し、ネットワーク利用に制限のあるユーザに想定外の通信料金が請求される可能性があります (モバイル通信などの従量課金サービスなど)。</li> - </ul> - </li> -</ul> - -<h2 id="例外">例外</h2> - -<ul> - <li>アドオンは、その意図した目的があり、悪意を持ったもの (セキュリティの脆弱性を悪用するものなど) でなければ、ガイドラインを破ることができます。</li> - <li>職場や学校、キオスク、その他の場所の管理者によって配備されたアドオンは、ほとんどのガイドラインから免除されます。</li> - <li>Firefox の実行中に有効なアドオンがアンインストールされる間は、その後片付けをするコードのみが実行できます。他の状況でアドオンがアンインストールされる場合は、アドオン自身が後片付けを試みることを必要としません。アドオン無しで Firefox の設定を変更するアプリケーションのインストーラは、アンインストール時にその変更を元に戻すべきです。</li> - <li>アドオンは、自身が無効の場合に Firefox に影響しないプライベートな設定を残しておくことができます。こうしておくことで、アドオンが後で再インストールされた時に、以前のアドオンの設定が失われません。</li> -</ul> - -<p>他の例外も追加される可能性があります。</p> - -<h2 id="実施">実施</h2> - -<p>上記のガイドラインに従わないアドオンは、その違反の大きさにより、ブロックリスト入りの対象になる可能性があります。「してはならない」「しなければならない」(<em>must</em>) という制限されたガイドラインは特に重要です。これに違反したものは、すなわちブロックリスト入りの対象になります。</p> - -<p>Mozilla のアドオンチームは、アドオンの開発者との連絡に最善を尽くし、ブロックする前に、問題修正のために妥当な期間を提供します。アドオンに悪意が見られたり、その開発者と連絡が取れない、応答が無い、または違反を繰り返す場合は、即座にブロックリスト入りになります。</p> - -<p>ガイドライン違反は、<a class="external text" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Tech%20Evangelism&component=Add-ons" rel="nofollow">Bugzilla 経由で報告</a> してください (Bugzilla の Tech Evangelism > Add-ons カテゴリ)。質問は、<a class="external text" href="irc://irc.mozilla.org/addons" rel="nofollow">#addons IRC チャンネル</a> に投稿できます。</p> - -<p>これらのガイドラインは将来変更される可能性があります。すべての更新事項は、 <a class="external text" href="https://blog.mozilla.org/addons/" rel="nofollow">Add-ons ブログ</a> でアナウンスされます。</p> diff --git a/files/ja/mozilla/add-ons/add-on_manager/addonauthor/index.html b/files/ja/mozilla/add-ons/add-on_manager/addonauthor/index.html deleted file mode 100644 index 03d58b8a15..0000000000 --- a/files/ja/mozilla/add-ons/add-on_manager/addonauthor/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: AddonAuthor -slug: Mozilla/Add-ons/Add-on_Manager/AddonAuthor -tags: - - Add-on Manager - - Add-ons -translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager/AddonAuthor ---- -<p>作成者、開発者、貢献者、アドオンの翻訳者を表します。</p> - - -<h2 id="Attributes" name="Attributes">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>name</code></td> - <td><code>string</code></td> - <td>人名</td> - </tr> - <tr> - <td><code>url</code> {{optional_inline}}</td> - <td><code>string</code></td> - <td><code>name</code> 属性で指定した人物の詳細が記載された URL</td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/add-ons/add-on_manager/addonscreenshot/index.html b/files/ja/mozilla/add-ons/add-on_manager/addonscreenshot/index.html deleted file mode 100644 index b3a81b55e5..0000000000 --- a/files/ja/mozilla/add-ons/add-on_manager/addonscreenshot/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: AddonScreenshot -slug: Mozilla/Add-ons/Add-on_Manager/AddonScreenshot -tags: - - Add-on Manager - - Add-ons -translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager/AddonScreenshot ---- -<p>アドオンのスクリーンショット</p> -<h2 id="Attributes" name="Attributes">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>url</code></td> - <td><code>string</code></td> - <td>スクリーンショットの URL</td> - </tr> - <tr> - <td><code>thumbnailURL</code> {{optional_inline}}</td> - <td><code>string</code></td> - <td>スクリーンショットのサムネイルの URL</td> - </tr> - <tr> - <td><code>caption</code> {{optional_inline}}</td> - <td><code>string</code></td> - <td>スクリーンショットのキャプション</td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/add-ons/add-on_manager/code_samples/index.html b/files/ja/mozilla/add-ons/add-on_manager/code_samples/index.html deleted file mode 100644 index 0cc6c7b6ee..0000000000 --- a/files/ja/mozilla/add-ons/add-on_manager/code_samples/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: コードの実例 -slug: Mozilla/Add-ons/Add-on_Manager/Code_Samples -tags: - - Add-on Manager - - Add-ons -translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager/Code_Samples ---- -<h2 id="Getting_the_directory_where_your_addon_is_located" name="Getting_the_directory_where_your_addon_is_located">アドオンが格納されているディレクトリの取得</h2> - -<p>あなたのアドオンがインストールされているディレクトリを確認する必要がある場合、次の様なトリックを用います。コード中の <var>YOUREXTENSIONID</var> はあなたのアドオンの ID で置き換えてください。</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>"); - -<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getAddonByID()" title="AddonManager.getAddonByID()">getAddonByID</a></code>("YOUREXTENSIONID", function(addon) { - var addonLocation = addon.<code><a href="/ja/Add-ons/Add-on_Manager/Addon#getResourceURI()" title="Addon.getResourceURI()">getResourceURI</a></code>("").QueryInterface(Components.interfaces.{{ Interface( "nsIFileURL" ) }}).file.path; -}); -</pre> - -<h2 id="Accessing_file_and_version_information" name="Accessing_file_and_version_information">ファイルとバージョン情報へのアクセス</h2> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>"); - -<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getAddonByID()" title="AddonManager.getAddonByID()">getAddonByID</a></code>("my-addon@foo.com", function(addon) { - alert("My extension's version is " + addon.version); - alert("Did I remember to include that file.txt file in my XPI? " + - addon.<code><a href="/ja/Add-ons/Add-on_Manager/Addon#hasResource()" title="Addon.hasResource()">hasResource</a></code>("file.txt") ? "YES!" : "No"); - alert("Let's pretend I did, it's available from the URL " + addon.<code><a href="/ja/Add-ons/Add-on_Manager/Addon#getResourceURI()" title="Addon.getResourceURI()">getResourceURI</a></code>("file.txt").spec); -}); -</pre> - -<h2 id="Uninstall_an_addon" name="Uninstall_an_addon">アドオンの削除</h2> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>"); - -<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getAddonByID()" title="AddonManager.getAddonByID()">getAddonByID</a></code>("youraddon@youraddon.com", function(addon) { - addon.<code><a href="/ja/Add-ons/Add-on_Manager/Addon#uninstall()" title="Addon.uninstall()">uninstall</a></code>(); -}); -</pre> - -<h2 id="Disable_an_addon" name="Disable_an_addon">アドオンの無効化</h2> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>"); -<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getAddonByID()" title="AddonManager.getAddonByID()">getAddonByID</a></code>("youraddon@youraddon.com", function(addon) { - if (addon.isActive) addon.userDisabled = addon.isActive; -}); -</pre> - -<h2 id="Listening_for_addon_uninstall" name="Listening_for_addon_uninstall">アドオンのアンインストールのリスニング</h2> - - -<p>以下の例では、アドオンのアンインストール時にクリーンアップを実行する profile-before-change メッセージを取得する際に確認することができる変数 "beingUninstalled" を設定しています。</p> - - -<pre class="brush: js">var beingUninstalled; - -let listener = { - onUninstalling: function(addon) { - if (addon.id == "youraddon@youraddon.com") { - beingUninstalled = true; - } - }, - onOperationCancelled: function(addon) { - if (addon.id == "youraddon@youraddon.com") { - beingUninstalled = (addon.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#Pending_operations" title="AddonManager.pendingOperations">pendingOperations</a></code> & AddonManager.PENDING_UNINSTALL) != 0; - } - } -} - -try { - Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>"); - - <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#addAddonListener()" title="AddonManager.addAddonListener()">addAddonListener</a></code>(listener); -} catch (ex) {} -</pre> diff --git a/files/ja/mozilla/add-ons/add-on_manager/index.html b/files/ja/mozilla/add-ons/add-on_manager/index.html deleted file mode 100644 index 292d5b739b..0000000000 --- a/files/ja/mozilla/add-ons/add-on_manager/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Add-on Manager -slug: Mozilla/Add-ons/Add-on_Manager -tags: - - Add-on Manager - - Add-ons - - NeedsEditorialReview - - NeedsTechnicalReview - - NeedsTranslation - - TopicStub -translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager ---- -<p>{{ gecko_minversion_header("2.0") }}</p> - -<p>The Add-on Manager is responsible for managing all of the add-ons installed in the application. Through its APIs information about all installed add-ons can be retrieved and new add-ons can be installed. The APIs are designed to be generic and support many different types of add-ons.</p> - -<p>Many functions in the Add-on Manager interface operate asynchronously returning results through callbacks passed to the functions. The callbacks may be called immediately while the initial function is still executing or shortly after depending on when the requested data becomes available.</p> - -<h2 id="Accessing_installed_add-ons">Accessing installed add-ons</h2> - -<p>Information about installed add-ons can be retrieved through the main <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code> API. All of its functions are asynchronous meaning that a callback function must be passed to receive the <code><a href="/ja/Add-ons/Add-on_Manager/Addon" title="Addon">Addon</a></code> instances. The callback may well only be called after the API function returns. For example:</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -AddonManager.getAllAddons(function(aAddons) { - // Here aAddons is an array of <code><a href="/ja/Add-ons/Add-on_Manager/Addon" title="Addon">Addon</a></code> objects -}); -// This code will execute before the code inside the callback -</pre> - -<p>Notifications about changes to installed add-ons are dispatched to any registered <code><a href="/ja/Add-ons/Add-on_Manager/AddonListener" title="AddonListener">AddonListener</a></code>s. They must be registered through the <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#addAddonListener()" title="AddonManager.addAddonListener()">addAddonListener()</a></code> method.</p> - -<h2 id="Installing_new_add-ons">Installing new add-ons</h2> - -<p>New add-ons can be installed by using the <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getInstallForFile()" title="AddonManager.getInstallForFile()">getInstallForFile()</a></code> or <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getInstallForURL()" title="AddonManager.getInstallForURL()">getInstallForURL()</a></code> methods on the <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code> object. These will pass an <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code> instance to the callback which can then be used to install the add-on:</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -AddonManager.getInstallForURL("http://www.foo.com/test.xpi", function(aInstall) { - // aInstall is an instance of <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code> - aInstall.install(); -}, "application/x-xpinstall"); -</pre> - -<p>The progress of <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code>s can be monitored using an <code><a href="/ja/Add-ons/Add-on_Manager/InstallListener" title="InstallListener">InstallListener</a></code>. A listener can be registered either for a specific install using the <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall#addListener()" title="AddonInstall.addListener()">addListener()</a></code> method or for all installs using the <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#addInstallListener()" title="AddonManager.addInstallListener()">addInstallListener()</a></code> method.</p> - -<h2 id="Finding_updates">Finding updates</h2> - -<p>Add-ons can be checked for updates using the <code><a href="/ja/Add-ons/Add-on_Manager/Addon#findUpdates()" title="Addon.findUpdates()">findUpdates()</a></code> method. It must be passed an <code><a href="/ja/Add-ons/Add-on_Manager/UpdateListener" title="UpdateListener">UpdateListener</a></code> to receive information about compatibility information and new update information. Any available update is returned as an <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code> which is ready to be downloaded and installed.</p> - -<p>{{ h1_gecko_minversion("Detecting add-on changes", "7.0") }}</p> - -<p>You can also get lists of add-ons that, at startup, were changed in various ways. The <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getStartupChanges()" title="AddonManager.getStartupChanges()">getStartupChanges()</a></code> method lets you find out which add-ons were installed, removed, updated, enabled, or disabled at application startup.</p> - -<p>For example, to take a look at the add-ons that were disabled at startup:</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm"); - -let addonIDs = AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_DISABLED); -if (addonIDs.length > 0) { - // addonIDs is now an array of the add-on IDs that have been disabled -alert("Note: " + addonIDs.length + " add-ons have been disabled."); -} -</pre> - -<h2 id="See_also">See also</h2> - -<p>{{ ListSubpages() }}</p> diff --git a/files/ja/mozilla/add-ons/amo/index.html b/files/ja/mozilla/add-ons/amo/index.html deleted file mode 100644 index 3f6d8b219f..0000000000 --- a/files/ja/mozilla/add-ons/amo/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: AMO -slug: Mozilla/Add-ons/AMO -translation_of: Mozilla/Add-ons/AMO ---- -<p> </p> - -<p><a href="https://addons.mozilla.org/en-US/firefox/">addons.mozilla.org</a> をドキュメント化しているページ:</p> - -<p>{{Listsubpages("/ja/Add-ons/AMO", 10)}}</p> - -<p> </p> diff --git a/files/ja/mozilla/add-ons/amo/policy/index.html b/files/ja/mozilla/add-ons/amo/policy/index.html deleted file mode 100644 index ce6a579e34..0000000000 --- a/files/ja/mozilla/add-ons/amo/policy/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: AMO ポリシー -slug: Mozilla/Add-ons/AMO/Policy -tags: - - AMO - - Add-ons - - Firefox - - Policies -translation_of: Mozilla/Add-ons/AMO/Policy ---- -<p>{{AddonSidebar}}</p> - -<p>Mozilla はユーザーと開発者に対して、すばらしいアドオン体験を保証することにコミットします。アドオンを登録する前に、下記のポリシーを良く読んでください。</p> - -<dl> - <dt><a href="/ja/docs/Mozilla/Add-ons/AMO/Policy/Agreement">Firefox アドオン配布契約</a></dt> - <dd>この契約は、2016年1月5日から有効になります。</dd> - <dt><a href="/ja/docs/Mozilla/Add-ons/AMO/Policy/Reviews">アドオンポリシー</a></dt> - <dd>アドオンは Firefox のコア機能を拡張し、ユーザーが Web エクスペリエンスを変更したりパーソナライズしたりできるようにします。信頼に基づいて構築された健全なアドオンエコシステムは、開発者が成功し、ユーザーが Firefox を自分のものにしても安全に感じるために不可欠です。</dd> - <dd>これらの理由から、Mozilla はすべてのアドオンが許容される慣習に関するアドオンポリシーに従うことを要求しています。これらのポリシーは、法的な助言として機能することを意図したものではなく、アドオンのプライバシーポリシーに含める包括的な用語のリストとして機能することも意図していません。</dd> - <dt><a href="https://developer.mozilla.org/Mozilla/Add-ons/AMO/Policy/Featured">Featured Add-ons</a></dt> - <dd>注目のアドオンがどのように注目されるようになり、そのプロセスに何が関与しているのか。</dd> - <dd><strong><a href="https://developer.mozilla.org/ja/Add-ons#Contact_us">我々に連絡する</a></strong> - <p>このポリシーやあなたのアドオンに関して連絡を取る方法。</p> - </dd> -</dl> diff --git a/files/ja/mozilla/add-ons/creating_custom_firefox_extensions_with_the_mozilla_build_system/index.html b/files/ja/mozilla/add-ons/creating_custom_firefox_extensions_with_the_mozilla_build_system/index.html deleted file mode 100644 index 2a8d3507c7..0000000000 --- a/files/ja/mozilla/add-ons/creating_custom_firefox_extensions_with_the_mozilla_build_system/index.html +++ /dev/null @@ -1,518 +0,0 @@ ---- -title: Mozilla ビルドシステムによるカスタム Firefox 拡張機能の作成 -slug: >- - Mozilla/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System -tags: - - Mozilla 開発 - - XPCOM - - アドオン - - ガイド - - ビルドドキュメンテーション - - 拡張機能 -translation_of: >- - Archive/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System ---- -<div class="blockIndicator warning"> -<p>Support for extensions using XUL/XPCOM or the Add-on SDK was removed in Firefox 57, released November 2017. As there is no supported version of Firefox enabling these technologies, this page will be removed by December 2020.</p> -</div> - -<p>{{LegacyAddonsNotice}}{{AddonSidebar}}</p> - -<p>Firefox 用の拡張機能を作成するための情報は<a href="/en/Extensions">豊富</a>にあります。しかし現時点でこれら全てのドキュメントは、あなたが <a href="/en/XUL" title="en/XUL">XUL</a> または <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> のみを用いて拡張機能を作成することを想定しています。複雑な拡張機能を作成するためには、これらを実現するための C++ で作成されたコンポーネントを利用する必要が出てくることでしょう。あなたの作成する拡張機能に C++ によるコンポーネントを含めなければならないケースは次のとおりです。</p> - -<ul> - <li>JavaScript のコードよりも高いパフォーマンスが要求される場合。</li> - <li>C または C++ で書かれたサードパーティ製のライブラリを利用する場合。</li> - <li><a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> (例: <a href="/en/NSPR" title="en/NSPR">NSPR</a>) によって公開されていない Mozilla のインタフェースを利用する場合。</li> -</ul> - -<ul> -</ul> - -<div class="note"><strong>Note:</strong> Gecko の JIT による最新の JavaScript エンジンと <a href="/en/js-ctypes/js-ctypes_reference" title="js-ctypes reference">js-ctypes</a> により、より多くの拡張機能は JavaScript のみで記載できます。ネイティブな C++ コードをあなたの拡張機能で利用することを決断する前に、他の選択肢を十分検討してください。バイナリのコンポーネントの場合 Firefox のメジャーリリースの度に再コンパイルが必要となり面倒です。</div> - -<p>この記事では上記に記載したような条件の下、大規模で複雑な Firefox 拡張を作成するための開発環境をセットアップする方法について述べます。なお、 Mozilla 用の C++ コンポーネントを作成するために Mozilla をビルドする必要は無く、 Mozilla ビルドシステムを利用すればよいことを強調しておきます。あなたが単に <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> コンポーネント等の作成方法について調べているのであれば、本記事の内容はおそらく過剰であり、それよりも<a class="external" href="http://www.iosart.com/firefox/xpcom/">こちらのガイド</a>を見るべきでしょう。言い換えると、あなたが個人またはチームでの開発経験者であり、かつ大規模で複雑な拡張機能を作成しようとしているのであれば、本記事に書かれている手法を検討することで、うまく作業を進めることができるでしょう。</p> - -<p>メモ: ここでは Firefox でのみこれらの手法の動作確認をしましたが、これらは追加の変更を加えずとも、おそらく大体の Gecko ベースのプラットフォーム (Thunderbird や Seamonkey など) で動作するでしょう。</p> - -<h3 id="バンビ、モジラに会う">バンビ、モジラに会う</h3> - -<p>臆病者の話ではありません。とりわけ最初のステップは、非常に大規模―そう、途方もなく―である Mozilla プロジェクトのビルドの話へと巻き込みます。多くの賢い開発者は、一度はそのビルドに挑戦し、精神異常の瀬戸際を経験してきました。もしあなたが C++ 開発者を経験していないなら、あなたを悩ませたくありませんので、 JavaScript を利用することをおすすめします。</p> - -<h4 id="Windows_環境">Windows 環境</h4> - -<p>私は<a href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites" title="En/Developer_Guide/Build_Instructions/Windows_Prerequisites">このガイド</a>を見て初めて Mozilla のビルドを実施しました。なぜかは思い出せませんが、幾度となくスタックしてしまい、これらの一連の事件は最初に思っていたよりも実に長い時間を掛けて終えました。多くの家具が破壊され、髪は殆ど根っこから抜け落ちました。あなたがお探しの高評価の付いた分かりやすいガイドは<a class="external" href="http://whereswalden.com/mozilla/msvcfree/">こちら</a>にあります。几帳面に各ステップを実施していけば、おそらくうまく行くでしょう。あなたがきちんと動作するビルド環境を一度得られたのであれば、ある時点からはおそらく何の努力もせずにビルドできるようになったのでしょう。多分。</p> - -<h4 id="その他のプラットフォーム">その他のプラットフォーム</h4> - -<p>Linux や MacOS などの他のプラットフォームでは、手順は幾分簡単です。ビルドに必要な全てのツール群は最初から組み込まれ利用可能な状態になっており、したがって、あなたがやるべきことは端末上でいくつかコマンドを実行するのみです。殆どの OS 向けの完全な手順は<a href="/En/Developer_Guide/Build_Instructions" title="En/Developer_Guide/Build_Instructions">こちら</a>から参照できます。</p> - -<h3 id="プロジェクトの構築">プロジェクトの構築</h3> - -<p>Mozilla には、そのビルド過程へ統合されている大量の複雑な拡張機能が含まれています。したがって、XPCOM コンポーネントの作成や登録、 JAR ファイルやマニフェストのビルド、 Firefox の <code>extension/</code> ディレクトリへの多数のファイルのインストールなどの全ての問題を解決する必要があります。すなわち、これらの問題を解決することと拡張機能をビルドするための開発環境は、切っても切れない関係であると言えます。</p> - -<p>まず最初に、あなたの拡張機能に付けるキャッチーな名前を考えてください。そして、その名前のディレクトリを <code>/mozilla/extensions/ </code>ディレクトリの下に作成します。名前には小文字のみ利用可能です。ビルドツリーの同じ階層には <code>inspector/</code>, <code>reporter/</code> などの仲間のディレクトリも確認できるはずです。</p> - -<p>ビルドを行う前に、 Mozilla ビルドシステムは <code>Makefile.in</code> と呼ばれるメイクファイルのテンプレートを元にしてビルド時に実際に利用するメイクファイルを生成するコンフィギュレーションと呼ばれる処理を実施します。実際のメイクファイルはテンプレートと類似もしくは一致していることがしばしばありますが、動的に生成されたメイクファイルを利用することで得られる柔軟性が、ビルドシステムをより強力にする要素の一つとなっています。</p> - -<h4 id="単純な_C_拡張機能の分析">単純な C++ 拡張機能の分析</h4> - -<p>ここではあなたが C++ または JavaScript の両方から利用可能な XPCOM コンポーネントを記述するために C++ を利用することを想定します。コンポーネントを作成するプロセスは、 Mozilla ビルドシステムを利用した場合、実際のところ比較的簡単です。</p> - -<p>最も単純なケースでは、コンポーネントは <code>public/</code> と <code>src/</code> の 2 つのサブディレクトリを持つ、単一のメインディレクトリから成ります。メインディレクトリと各サブディレクトリには必ず <code>Makefile.in</code> を含める必要があります (これ以降は単にこれらのファイルをメイクファイルと呼びますが、本当のところは真のメイクファイルを生成するために利用されるファイルであることを忘れないようにしてください) 。このメイクファイルは 2 つのことを宣言します。 1 つ目は、拡張機能の生成先であるサブディレクトリをリスティングしています。そのためビルドシステムは、追加のメイクファイルの検索場所を知る必要があります。 2 つ目は、ビルドシステムに対して新しい拡張機能を作成する方法 (コンポーネントのディレクトリを Firefox のバイナリのあるディレクトリへコピーする、などではなく) を指示します。拡張機能を利用する主な利点は、全てをパッケージングしてそれを他のマシンへインストールできることです。</p> - -<p>それでは、以下に基礎的なごく普通の最上位のメイクファイルを示します (拡張機能のメインディレクトリ内にある <code>Makefile.in</code>) 。</p> - -<pre>DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = myextension - -DIRS = public src - -XPI_NAME = myextension -INSTALL_EXTENSION_ID = myextension@mycompany.com -XPI_PKGNAME = myextension - -DIST_FILES = install.rdf - -include $(topsrcdir)/config/rules.mk</pre> - -<p>このメイクファイルの主な機能を表現するメイク処理の詳細な記述については <a href="/en/How_Mozilla's_build_system_works" title="en/How_Mozilla's_build_system_works">こちら</a> から確認できます。 <strong>MODULE</strong> と <strong>XPI_NAME</strong> の両方は、あなたの拡張機能の名前に設定します。これは、 XPI と同じ場所 (下記参照) へ全てのファイルを配置するために、全てのプロジェクトのメイクファイルで繰り返し記述しなければなりません。 <strong>INSTALL_EXTENSION_ID</strong> はあなたの拡張機能のユニークな ID です。これは GUID でもよいですが、上に示したような ID の方がかなり、そして見たときに思い出しやすいです。 <strong>XPI_PKGNAME</strong> は記述する必要がありませんが、もし配布に適した XPI を利用するならば、この値は自動的に XPI と同じ場所に作成されます (<code>/mozilla/$(MOZ_OBJDIR)/dist/xpi-stage/</code>) 。</p> - -<p>全ての拡張機能は、 Firefox に対してインストール方法を指示する <code>install.rdf</code> ファイルを含める必要があります。このファイルは拡張機能のメインディレクトリに配置する必要があり、以下のような見た目をしています。</p> - -<pre class="brush: xml"><?xml version="1.0"?> - -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:em="http://www.mozilla.org/2004/em-rdf#"> - <Description about="urn:mozilla:install-manifest"> - <em:id>myextension@mycompany.com</em:id> - <em:version>0.1</em:version> - - <em:targetApplication> - <!-- Firefox --> - <Description> - <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> - <em:minVersion>1.0+</em:minVersion> - <em:maxVersion>1.0+</em:maxVersion> - </Description> - </em:targetApplication> - - <!-- front-end metadata --> - <em:name>My First Extension</em:name> - <em:description>Just an example.</em:description> - <em:creator>allpeers.com</em:creator> - <em:homepageURL>http://www.allpeers.com/blog/</em:homepageURL> - </Description> -</RDF> -</pre> - -<p><code>install.rdf </code>ファイルフォーマットの詳細については<a href="/en/Install_Manifests" title="en/Install_Manifests">こちら</a>から確認できます。メイクファイルの中で <strong>DIST_FILES</strong> 変数を指定すると、ファイルを拡張機能のディレクトリと (任意の) XPI ファイルへコピーするよう <code>make</code> へ伝えることができます。</p> - -<h4 id="Public_Interfaces">Public Interfaces</h4> - -<p>The <code>public/</code> directory contains any interfaces that need to be accessed by other modules. These can be <a class="external" href="http://www.mozilla.org/scriptable/xpidl/idl-authors-guide/index.html">IDL</a> files describing <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> interfaces, which are used to generate normal C++ header files for inclusion in your source files. They can also be normal C++ header files that are to be used directly by other modules. The easiest way to accomplish the latter is to use inline implementations for all methods so you don’t have any additional linking dependencies. Otherwise you will have to link statically to your module if you use these public headers in other modules. Personally I would discourage this practice (among other things, static linking means the same code gets loaded more than once into memory, and the code won’t be available from JavaScript or other non-C++ languages) and encourage the use of XPCOM wherever possible.</p> - -<p>The makefile in the <code>public/</code> directory should follow this model:</p> - -<pre>DEPTH = ../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = myextension -XPIDL_MODULE = myextension - -XPI_NAME = myextension - -EXPORTS = \ - myHeader.h \ - $(NULL) - -XPIDLSRCS = \ - myIFirstComponent.idl \ - myISecondComponent.idl \ - $(NULL) - -include $(topsrcdir)/config/rules.mk -</pre> - -<p><strong>XPIDL_MODULE</strong> is the name of the generated XPT file that contains type information about your <a class="external" href="http://www.mozilla.org/scriptable/xpidl/idl-authors-guide/index.html">IDL</a> interfaces. If you have multiple modules, make absolutely sure that you use a different value for <strong>XPIDL_MODULE</strong> for each one. Otherwise the first module’s XPT file will be overwritten by the second and you’ll get <strong>NS_ERROR_XPC_BAD_IID</strong> errors when you try to access its IDL interfaces from your code. The files under <strong>EXPORTS</strong> are copied directly to the <code>/mozilla/$(MOZ_OBJDIR)/dist/include/</code> directory and are thus accessible from other modules (the value of <strong>MOZ_OBJDIR</strong> is defined in <code>/mozilla/.mozconfig</code>). XPIDLSRCS are run through the IDL processor, and the generated C++ headers are copied into the same include directory. In addition, an XPT (type library) file is generated and placed in the <code>components/</code> subdirectory of your extension.</p> - -<h4 id="Source_Files">Source Files</h4> - -<p>Now it’s time to create the makefile and source files in the <code>src/</code> subdirectory. If you're implementing interfaces that you've described using IDL, the easiest way to do this is to leave the <code>src/</code> directory empty and run <code>make</code> on the <code>public/</code> directory only; this will be explained shortly.</p> - -<p>Then open the generated header file for your interface from <code>/mozilla/$(MOZ_OBJDIR)/dist/include/</code>. It contains stubs for the component .H and .CPP files that you can copy and paste into your implementation files. All you have to do is fill in the implementation stubs in the C++ file and you’re good to go.</p> - -<p>Here’s an example of the makefile you need to place into your <code>src</code> directory:</p> - -<pre class="eval">DEPTH = ../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -IS_COMPONENT = 1 -<a href="/en/MODULE" title="en/MODULE">MODULE</a> = myextension -<a href="/en/LIBRARY_NAME" title="en/LIBRARY_NAME">LIBRARY_NAME</a> = myExtension -<a href="/en/USE_STATIC_LIBS" title="en/USE_STATIC_LIBS">USE_STATIC_LIBS</a> = 1 - -XPI_NAME = myextension - -<a href="/en/CPPSRCS" title="en/CPPSRCS">CPPSRCS</a> = \ - myFirstComponent.cpp \ - mySecondComponent.cpp \ - myExtension.cpp \ - $(NULL) - -include $(topsrcdir)/config/rules.mk - -<a href="/en/EXTRA_DSO_LDOPTS" title="en/EXTRA_DSO_LDOPTS">EXTRA_DSO_LDOPTS</a> += \ - $(MOZ_COMPONENT_LIBS) \ - $(NSPR_LIBS) \ - $(NULL) -</pre> - -<p>In this example, the first two files contain the implementation of the extension’s two components. The final file, <code>myExtension.cpp</code>, contains the code necessary to register these components, as described in the next section.</p> - -<h4 id="Registering_Your_Components">Registering Your Components</h4> - -<p><a href="/en/XPCOM/XPCOM_changes_in_Gecko_2.0" title="XPCOM changes in Gecko 2.0">This article </a>explains how to register XPCOM components in Gecko 2.0 and later.</p> - -<h4 id="Building_It">Building It</h4> - -<p>As mentioned above, you’ll probably want to build your extension immediately after creating your IDL files in order to generate the C++ stubs for your component implementations. I’m assuming that you’ve already built Firefox successfully. If not, return immediately to the beginning of this article and don’t come back til you have a functioning <code>firefox.exe</code>. Do not pass go. Do not collect $200.</p> - -<p>Still here? Okay, now we have to modify your <code>.mozconfig</code> (in the <code>/mozilla/</code> root directory) so that your extension is built along with Mozilla. Add the following line at the end of the file:</p> - -<pre class="brush: shell">ac_add_options --enable-extensions=default,myextension -</pre> - -<p>Now launch <code>make</code> from the Mozilla root:</p> - -<pre class="brush: shell">make -f client.mk build -</pre> - -<p>Even if you have an up-to-date Firefox build, you’ll have to wait a while for <code>make</code> to recurse over the entire Mozilla source tree looking for new stuff (on my machine, which is pretty fast, this takes a good 10-15 minutes). Eventually it will reach your extension and generate a bunch of stuff under <code>/mozilla/$(MOZ_OBJDIR)/</code>:</p> - -<ul> - <li>Exported header files and generated header files (from IDL) in <code>dist/include/</code></li> - <li>Static libraries for your modules in <code>dist/lib/</code> (in case other modules want to link statically to your stuff instead of using XPCOM).</li> - <li>XPI file in <code>dist/xpi-stage/myextension.xpi</code>.</li> - <li>Generated makefiles for your projects in <code>extensions/myextension/</code> (remember, we’re under <code>/mozilla/$(MOZ_OBJDIR)/</code>.</li> - <li>Everything else in <code><a class="link-mailto" href="mailto:dist/bin/extensions/myextension@mycompany.com" rel="freelink">dist/bin/extensions/myextension@mycompany.com</a>/</code>.</li> -</ul> - -<p>A lot of this stuff won’t get created on this first pass since <code>make</code> will gag when it doesn’t find the source files for your components. Don’t worry about this; all you need are the generated header files that contain the C++ implementation stubs. Go back and flesh out the C++ implementation of your components so that the build can complete next time. Remember that you should never, ever modify any of these generated files. Always modify the files used to generate them and rerun <code>make</code>. If you’re changing the generated files directly, you’re probably doing something wrong.</p> - -<p>The process of walking the entire Mozilla tree takes a long time. If you already have a Mozilla build, you can avoid this by creating a makefile for your extension directly. Go to the root of your $(MOZ_OBJDIR) and (from a bash-compatible shell) enter:</p> - -<pre class="eval">../build/autoconf/make-makefile extensions/myextension -</pre> - -<p>If your $(MOZ_OBJDIR) is located outside your $(TOPSRCDIR), you'll need to do:</p> - -<pre class="eval">$(TOPSRCDIR)/build/autoconf/make-makefile -t $(TOPSRCDIR) extensions/myextension -</pre> - -<p>in order for the script to know where your source is (it'll use the extension path you gave it relative to the current dir to figure out where you want your makefiles to go).</p> - -<p>This will generate the proper makefile for your extension. Whether you build the whole Mozilla tree or take this shortcut, you can build from now on by going to <code>/mozilla/$(MOZ_OBJDIR)/extensions/myextension/</code> and typing "make" on the command line. It should build your component without bothering with the rest of Mozilla. If everything works out, you’ll see your XPI file in the XPI staging area. You’ll also see the "exploded" version of the XPI (i.e. the unzipped directory structure) underneath <code>/mozilla/$(MOZ_OBJDIR)/dist/bin/extensions</code>. (If something goes wrong, figure out what, fix it and then come back here and add it to this article.)</p> - -<p>To make sure that the build really finished, launch Firefox and check that your extension is listed when you select Tools/Extensions. If you are using Firefox as your regular browser (and if you’re not, why not!?), you might be annoyed by the fact that you have to close regular Firefox before running your custom-built version. If so, try setting the <strong>MOZ_NO_REMOTE</strong> environment variable to "1" before running the development version of Firefox. You’ll also need to use a different profile for your development version:</p> - -<pre class="brush: shell">firefox -P <em>development</em> -</pre> - -<p>Where <em>development</em> is replaced with the name of the extra profile you’ve created. This will let you run both versions of Firefox simultaneously, saving you oodles of time over the course of the build/test cycle.</p> - -<h4 id="No_Place_Like_Chrome">No Place Like Chrome</h4> - -<p>Yippee-ki-yay! Now you have an extension that does, well, absolutely nothing. It’s time to do something with those groovy components that you’ve implemented and registered. The simplest way to do this is to write some <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> and <a href="/en/XUL" title="en/XUL">XUL</a> code. At this point, it would be very helpful to have a bit of experience <a href="/en/Extensions" title="en/Extensions">writing "regular" extensions</a> (i.e. without using custom C++ components). If you’ve never done this, I strongly recommend that you think of a cool idea for something simple that you’ve always wanted to tweak in Firefox and write it. Just displaying a new menu item that opens a "Hello, World!" dialog box would be already be a great exercise to get warmed up with.</p> - -<p>Assuming you know how to write XUL/JavaScript extensions, you’re aware that the most important stuff goes in the <code>chrome/</code> directory of your extension. Well, the fact that you’re also using C++ components doesn’t change that one whit. So now you need to create the normal <code>content/</code>, <code>locale/</code> and <code>skin/</code> directories in which to place your chrome files. Personally I like placing these directly under the root directory of my module, but I don’t suppose it makes any difference if you prefer putting them under a <code>chrome/</code> subdirectory or whatever. Let freedom reign!</p> - -<p>Once you’ve written the necessary chrome files (for instance, an overlay that adds a menu item to instantiate and use one of your components), you need to package them up as part of your extension. This is accomplished through the use of a <a href="/en/JAR_Manifests" title="en/JAR_Manifests">JAR Manifest</a>. For our simple extension example, this file might look something like this:</p> - -<pre>myextension.jar: -% content myextension %content/ -% locale myextension en-US %locale/en-US/ -% skin myextension classic/1.0 %skin/classic/ -% overlay chrome://browser/content/browser.xul chrome://myextension/content/MyExtensionOverlay.xul - content/MyExtensionOverlay.js (content/MyExtensionOverlay.js) - content/MyExtensionOverlay.xul (content/MyExtensionOverlay.xul) - locale/en-US/MyExtension.dtd (locale/en-US/MyExtension.dtd) - locale/en-US/MyExtension.properties (locale/en-US/MyExtension.properties) - skin/classic/MyExtension.css (skin/classic/MyExtension.css) -</pre> - -<p>Place this code in a file called <code>jar.mn</code> in the root directory of your extension, making sure that the paths in parentheses point to actual files (when interpreted relative to the root directory). You also have to make one small change to the makefile in the same directory, adding the following line:</p> - -<pre class="eval">USE_EXTENSION_MANIFEST = 1 -</pre> - -<p>This tells <code>make</code> to create a single manifest file called <code>chrome.manifest</code> instead of creating separate manifests with goofy names for each package.</p> - -<p>Now launch <code>make</code> again, and you should see a <code>chrome</code> subdirectory appear in your extension (<code>/mozilla/$(MOZ_OBJDIR)<a class="link-mailto" href="mailto:/dist/bin/extensions/myextension@mycompany.com" rel="freelink">/dist/bin/extensions/myextension@mycompany.com</a>/</code>). Note that the <code>chrome</code> directory contains a JAR (i.e. ZIP) file with all the chrome files listed in <code>jar.mn</code> as well as a complete directory structure mirroring that of the JAR file. The directory structure, however, is empty. Why? I don’t know. Don’t worry about this, the files in the JAR are the ones that are actually used.</p> - -<h4 id="Keeping_it_Complex">Keeping it Complex</h4> - -<p>If you’re developing a really complex extension with lots of <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> components, you’ll probably want to divide your code up into smaller modules.</p> - -<h5 id="Kinda_Sorta_Complex_Extensions">Kinda, Sorta Complex Extensions</h5> - -<p>For a moderately complex extension, it’s probably enough just to subdivide the code into a single level of modules. Let’s assume that you have a <code>base/</code> module that defines a bunch of basic XPCOM components and an <code>advanced/</code> module that defines some chrome as well as other components that use the basic components. Your complete directory structure will look something like this:</p> - -<ul> - <li>myextension - <ul> - <li>base - <ul> - <li>public</li> - <li>src</li> - </ul> - </li> - <li>advanced - <ul> - <li>content</li> - <li>locale - <ul> - <li>en-US</li> - <li>...other locales...</li> - </ul> - </li> - <li>public</li> - <li>skin - <ul> - <li>classic</li> - <li>...other skins...</li> - </ul> - </li> - <li>src</li> - </ul> - </li> - </ul> - </li> -</ul> - -<p>Other than that, nothing really changes. The makefiles in the <code>base/</code> and <code>advanced/</code> directories should look more or less like your original root makefile, remembering to change the <strong>DEPTH</strong> variable to account for the fact that they’ve moved a level further away from the Mozilla root. You also need to remove the <strong>DIST_FILES</strong> variable since that’s going to be in the top-level makefile. Every makefile that generates anything should define the <strong>XPI_NAME</strong> variable to make sure generated files go into your extension and not into the global <code>components/</code> directory. In fact, just define this in every makefile to be safe. You can use the same <strong>MODULE</strong> in both <code>base/</code> and <code>advanced/</code> so that all the generated include files go into the same directory, but make sure that you don’t use the same <strong>XPIDL_MODULE</strong> in the two <code>public/</code> directories or one of the component type libraries (i.e. XPT files) will overwrite the other one and all hell will break loose.</p> - -<p>Each module must also have a different value for the <strong>LIBRARY_NAME</strong> variable. This is the name of the generated dynamic library, so if we call the libraries "myBase" and "myAdvanced", we’ll end up with <code>myBase.dll</code> and <code>myAdvanced.dll</code> (on Windows, at least). And each of these modules is going to have a separate C++ file for registering components. So there will be two files that look like <code>myExtension.cpp</code> in the original example, say <code>Base.cpp</code> and <code>Advanced.cpp</code>. Finally, each module will obviously have its own <code>jar.mn</code>, though they can reference the same JAR filename and package name if you want all the chrome files to be organized in a single JAR file and package. The only file that really stays put is <code>install.rdf</code>, which still exists once and only once in the extension root directory.</p> - -<p>As for the top-level makefile, it will now look like this:</p> - -<pre>DEPTH = ../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = myextension - -DIRS = base advanced - -XPI_NAME = myextension -INSTALL_EXTENSION_ID = myextension@mycompany.com -XPI_PKGNAME = myextension - -DIST_FILES = install.rdf - -include $(topsrcdir)/config/rules.mk -</pre> - -<h5 id="Seriously_Complex_Extensions">Seriously Complex Extensions</h5> - -<p>At some point, even a single module may grow to the point where you want to divide it further into submodules. The difference between having separate modules and having a single module with separate submodules is that the submodules all share the same file for registering components (the famous <code>myExtension.cpp</code> file), and when compiled they create a single dynamic library. The decision to split a module into submodules is all about code organization; it doesn’t really affect the final product at all.</p> - -<p>To split a module into submodules, first create a subdirectory for each submodule. Then create an additional directory called <code>build/</code>. Each submodule will be configured to create a static library, and the <code>build/</code> directory will pull these libraries together to create a single dynamic component library. Confused? Here’s an example, showing just the <code>advanced/</code> subbranch of the <code>myextension/</code> directory:</p> - -<ul> - <li>advanced - <ul> - <li>build</li> - <li>intricate - <ul> - <li>public</li> - <li>src</li> - </ul> - </li> - <li>multifarious - <ul> - <li>public</li> - <li>src</li> - </ul> - </li> - <li>content</li> - <li>locale - <ul> - <li>en-US</li> - <li>...other locales...</li> - </ul> - </li> - <li>skin - <ul> - <li>classic</li> - <li>...other skins...</li> - </ul> - </li> - </ul> - </li> -</ul> - -<p>As you can see, we’ve split <code>advanced/</code> into two submodules: <code>intricate/</code> and <code>multifarious/</code>, and we’ve added an additional <code>build/</code> subdirectory. We’ve left the chrome directories directly under <code>advanced/</code>, since they aren’t tied to any specific submodule. This means that <code>jar.mn</code> will stay in the same place.</p> - -<p>The <code>intricate/</code> and <code>multifarious/</code> makefiles will look a lot like the original <code>advanced/</code> makefile, but we’ll need to tweak them a bit. As always, we have to adjust the <strong>DEPTH</strong> variable since the makefiles are deeper in the directory structure. And we should change the <strong>LIBRARY_NAME</strong> to indicate that we’re generating a static library for each submodule. By convention the "_s" suffix is used for this purpose. So let’s call them "myIntricate_s" and "myMultifarious_s". Finally, we define the variable <strong>FORCE_STATIC_LIB</strong>, resulting in a makefile that starts something like this:</p> - -<pre>DEPTH = ../../../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = myextension -LIBRARY_NAME = myIntricate_s -FORCE_STATIC_LIB = 1 -USE_STATIC_LIBS = 1 - -XPI_NAME = myextension - -...more stuff here... -</pre> - -<p>The <code>build</code> makefile pulls together the static libraries generated by the submodules and creates a single (dynamic) component library:</p> - -<pre>DEPTH = ../../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -IS_COMPONENT = 1 -MODULE = myextension -LIBRARY_NAME = myAdvanced -USE_STATIC_LIBS = 1 - -XPI_NAME = myextension - -DEFINES += XPCOM_GLUE - -SHARED_LIBRARY_LIBS = \ - $(DIST)/lib/$(LIB_PREFIX)myIntricate_s.$(LIB_SUFFIX) \ - $(DIST)/lib/$(LIB_PREFIX)myMultifarious_s.$(LIB_SUFFIX) \ - $(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \ - $(DIST)/lib/$(LIB_PREFIX)xul.$(LIB_SUFFIX) \ - $(DIST)/lib/$(LIB_PREFIX)nss3.$(LIB_SUFFIX) \ - $(NULL) - -CPPSRCS = \ - Advanced.cpp \ - $(NULL) - -include $(topsrcdir)/config/rules.mk - -LOCAL_INCLUDES += \ - -I$(srcdir)/../intricate/src \ - -I$(srcdir)/../multifarious/src \ - $(NULL) -</pre> - -<p>The makefile in the <code>advanced/</code> directory should list the <code>intricate/</code>, <code>multifarious/</code> and <code>build/</code> directories in its <strong>DIRS</strong> variable. Make sure that <code>build/</code> comes last since it can’t create the component library until the other makefiles have completed.</p> - -<h3 id="Other_Topics">Other Topics</h3> - -<h4 id="Adding_Data_Files_to_Your_Extensions">Adding Data Files to Your Extensions</h4> - -<p>In some cases, you may wish to include additional files in your extension that don’t belong in the <code>chrome/</code> subdirectory. Examples might be database files or XML schemas. This can be achieved by adding a custom step to your makefile that copies the files from the source tree into the extension’s target directory.</p> - -<h5 id="Copying_Data_Files_Into_Target_Directory">Copying Data Files Into Target Directory</h5> - -<p>Let’s say that you have some data files containing statistical information that you want to include in your extension and make available to your components. You’ve placed these files, which have the extension .TXT, into a <code>stats/</code> subdirectory under your extension directory in the source tree. The following makefile rule can be used to copy these files into the final target directory of the extension:</p> - -<pre>export:: - if test ! -d $(FINAL_TARGET)/stats; then \ - $(NSINSTALL) -D $(FINAL_TARGET)/stats; \ - fi - $(INSTALL) $(srcdir)/*.txt $(FINAL_TARGET)/stats -</pre> - -<h5 id="Accessing_Data_Files_From_Components">Accessing Data Files From Components</h5> - -<p>The trick to accessing your data files is to figure out where the home directory of your extension is. Rumor has it that at some future date, this will possible through the <code><a href="/en/XPCOM_Interface_Reference/nsIExtensionManager" title="en/XPCOM_Interface_Reference/nsIExtensionManager">nsIExtensionManager</a></code> interface or something similar. In the meantime, there is a simple and reliable hack that can be used to achieve this. In the implementation of any JavaScript XPCOM component, there is a special <strong>__LOCATION__</strong> (two leading and two trailing underscores) symbol that points to the component’s implementation file. So you can write a simple component which deduces the root directory of your extensions by extrapolating from its location.</p> - -<p><a class="external" href="http://www.builderau.com.au/program/soa/Creating_XPCOM_components_with_JavaScript/0,39024614,39206503,00.htm">This article</a> explains how to create an XPCOM component in JavaScript. You’ll need an IDL file for an interface that looks something like this:</p> - -<pre>interface myILocation : nsISupports -{ - readonly attribute nsIFile locationFile; -}; -</pre> - -<p>Place the IDL file in the <code>public/</code> directory of your project or subproject. In the <code>src/</code> directory, place the JavaScript file that implements the component. The component implementation will include the methods for retrieving the path or file for the extension’s home directory:</p> - -<pre class="brush: js">myLocation.prototype = -{ - QueryInterface: function(iid) - { - if (iid.equals(nsISupports)) - return this; - if (iid.equals(myILocation)) - return this; - - Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE; - return null; - }, - - get locationFile() - { - return __LOCATION__.parent.parent; - } -} -</pre> - -<p>This assumes that the component resides in a subdirectory of the extension directory (by convention, this directory is called <code>components/</code>). The <code>parent</code> property of <strong>__LOCATION__</strong> returns the <code>components/</code>, and the <code>parent</code> of this is the extension directory.</p> - -<p>The last step is to modify the makefile of the source directory where you placed your JavaScript file so that it is copied into the appropriate location in the extension:</p> - -<pre>export:: - $(INSTALL) $(srcdir)/*.js $(FINAL_TARGET)/components -</pre> - -<p>Now you can instantiate an instance of this component and use the <code>locationFile</code> property to get an <code><a href="/en/XPCOM_Interface_Reference/nsIFile" title="en/XPCOM_Interface_Reference/nsIFile">nsIFile</a></code> interface that points to your extension’s home directory.</p> - -<h4 id="Using_Third-Party_Libraries">Using Third-Party Libraries</h4> - -<p>For more sophisticated extensions, you may want to integrate third-party libraries that provide specialized functionality for database connectivity, image processing, networking and the like. If you want your extension to run on all Firefox platforms, you will need to have the source code for the library in question, so I assume that this is available.</p> - -<p>The most convenient approach from the perspective of the development cycle is to create a Mozilla-style makefile for the library. This works well for libraries that have a straightforward make process without extensive configuration. A good example of this is the SQLite library included in the Mozilla build tree at <code>db/sqlite</code>. By adapting the makefile in this way, the library is created as part of the standard Mozilla build process, which eliminates additional build steps. The downside is that you will need to update the modified makefile any time a new version of the library is released.</p> - -<p>For libraries that have complex configuration processes, use a non-standard compiler or have other special characteristics, it may be unfeasible to create a Mozilla-compliant makefile. In this case, I would recommend placing the entire library distribution inside the project or subproject that uses it. So if library <code>acmelib</code> is used inside the <code>multifarious/</code> subproject in the above example, it would be placed as a subdirectory underneath that subproject (at the same level as <code>public/</code> and <code>src/</code>).</p> - -<p>Of course, this means that you will have to build <code>acmelib</code> manually on all platforms before launching the Mozilla build. But at least you can then refer to include files and import libraries from your component using relative paths.</p> - -<h4 id="Building_for_Multiple_Platforms">Building for Multiple Platforms</h4> - -<p>TODO</p> - -<div class="originaldocinfo"> -<h2 id="Original_Document_Information">Original Document Information</h2> - -<ul> - <li>Author: Matthew Gertner - July 26, 2005.</li> - <li>Permission granted to migrate in Jan 2006, including permission to relicense under the CC:By-SA.</li> - <li>Original Source: <a class="external" href="http://www.allpeers.com/blog/creating-complex-firefox-extensions/" rel="freelink">http://www.allpeers.com/blog/creatin...ox-extensions/</a></li> -</ul> -</div> - -<p> </p> diff --git a/files/ja/mozilla/add-ons/firefox_for_android/index.html b/files/ja/mozilla/add-ons/firefox_for_android/index.html deleted file mode 100644 index 9adfb1d464..0000000000 --- a/files/ja/mozilla/add-ons/firefox_for_android/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Android用Firefoxのアドオン -slug: Mozilla/Add-ons/Firefox_for_Android -translation_of: Archive/Add-ons/Legacy_Firefox_for_Android ---- -<p>{{LegacyAddonsNotice}}{{AddonSidebar}}</p> - -<div class="note"> -<p>このページと、そのサブページは、古い技術を使った Android 用 Firefox のアドオン開発の方法を記しています。この技術は Firefox 57 で動作が停止します。 Android 用 Firefox のアドオン開発するのに <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> を使用可能です。</p> -</div> - -<p>既にデスクトップ版のFirefoxで動いているアドオンは<strong>修正を加えないとAndroid版で動かない</strong>ので注意してください</p> - -<ul> - <li>UIに可視的なXULはありません。なので、UIを作るためにoverlayを使用することはできません。</li> - <li><code>gBrowser</code>のようなオブジェクトや内部コードなどは存在しません。内部について学ぶにはAndroid用のFirefoxの <a class="external external-icon" href="https://dxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js" title="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js"><code>browser.js</code></a> ファイルを見てください。だいたい同じ低レイヤーな機能が存在しています。</li> - <li>ネイティブ Android UI を使用するための <code>nsIPromptService</code> や <code>nsIAlertsService</code> のようなサービスが実装されています。</li> - <li><a href="https://developer.mozilla.org/en/Extensions/Mobile/API/NativeWindow" title="en/Extensions/Mobile/NativeWindow"><code>NativeWindow</code></a> と呼ばれる、ネイティブ Android UI のパーツを操作する、シンプルなJS オブジェクトがあります。 </li> -</ul> - -<p>以下の記事はAndroid用のFirefoxの拡張機能を開発する手助けになります。加えてすべてのMozilla アプリケーションに適用できる <a class="internal" href="/ja/Add-ons" title="En/Extensions">general extension documentation</a> も参照してください。</p> - -<div class="column-container"> -<div class="column-half"> -<h3 id="チュートリアル">チュートリアル</h3> - -<dl> - <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Prerequisites">事前準備</a></dt> - <dd>アドオンを書いてデバイスに送り、直接つながっているデバイスでテストするための、あなたのデスクトップ側の設定です。</dd> - <dt><a href="https://developer.mozilla.org/ja/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE">WebIDEを使用してAndroid用Firefoxアドオンをデバッグする</a></dt> - <dd>前提条件のチュートリアルからの記事です。アドオンのデバッグやスニペットテストはWebIDEなしでは不可能です。</dd> - <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Walkthrough">Walkthrough</a></dt> - <dd>Android用のFirefoxのシンプルなアドオンを開発し、パッケージ化して、インストールします。</dd> - <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Firefox_Hub_Walkthrough">Firefox Hub Walkthrough</a></dt> - <dd>Android用のFirefoxのホームページにコンテンツを加えるFirefox Hubアドオンをどのようにして開発するかの解説です。</dd> - <dt><a href="https://developer.mozilla.org/ja/Add-ons/SDK/Tutorials/Mobile_development">Add-on SDK</a></dt> - <dd>Add-on SDKを使用したAndroid用のFirefoxのアドオンを開発する方法です。</dd> -</dl> - -<h3 id="サンプルコード">サンプルコード</h3> - -<dl> - <dt> </dt> - <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Code_snippets">Code Snippets</a></dt> - <dd>一般的なタスクのためのコードサンプル。</dd> - <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Initialization_and_Cleanup">初期化とクリーンアップ</a></dt> - <dd>アドオンを開始時に初期化したり、シャットダウン時にクリーンアップする方法の解説です。</dd> - <dt><a href="https://github.com/mozilla/firefox-for-android-addons">Firefox for Android Add-ons Github Repo</a></dt> - <dd>Android用Firefoxのアドオンを作成する手助けとなる、JS モジュールやサンプルコード、ボイラープレートリポジトリのコレクションです。</dd> -</dl> -</div> - -<div class="column-half"> -<h3 id="API_リファレンス">API リファレンス</h3> - -<dl> - <dt><a class="internal" href="/ja/Add-ons/Firefox_for_Android/API/NativeWindow">NativeWindow</a></dt> - <dd>ネイティブ Androidの UI widgetを作成します。</dd> - <dt><a href="/ja/Add-ons/Firefox_for_Android/API/BrowserApp">BrowserApp</a></dt> - <dd>ブラウザーのタブとその内容にアクセスします。</dd> - <dt><a class="internal" href="/ja/Add-ons/Firefox_for_Android/API/Prompt.jsm">Prompt.jsm</a></dt> - <dd>ネイティブ Android の dialog を表示します。</dd> - <dt><a href="/ja/Add-ons/Firefox_for_Android/API/HelperApps.jsm">HelperApps.jsm</a></dt> - <dd>システムにインストールされているネイティブアプリを照会して起動します。</dd> - <dt><a href="/ja/Add-ons/Firefox_for_Android/API/Notifications.jsm">Notifications.jsm</a></dt> - <dd>Android システム通知用の拡張プロパティを使います。</dd> - <dt><a href="/ja/Add-ons/Firefox_for_Android/API/Home.jsm">Home.jsm</a></dt> - <dd>ホームページをカスタマイズします。</dd> - <dt><a href="/ja/Add-ons/Firefox_for_Android/API/HomeProvider.jsm">HomeProvider.jsm</a></dt> - <dd>ホームページに表示するデータを保存します。</dd> - <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/API/PageActions.jsm">PageActions.jsm</a></dt> - <dd>URLバーにページ固有のアクションを表示します。</dd> - <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a></dt> - <dd>アドオンからネイティブ Java Android API をタップします。</dd> - <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/Firefox_for_Android/API/Sound.jsm">Sound.jsm</a></dt> - <dd>ブラウザーから簡単に音を鳴らします。</dd> -</dl> -</div> -</div> diff --git a/files/ja/mozilla/add-ons/overlay_extensions/index.html b/files/ja/mozilla/add-ons/overlay_extensions/index.html deleted file mode 100644 index 1598fd8ca3..0000000000 --- a/files/ja/mozilla/add-ons/overlay_extensions/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Legacyアドオン -slug: Mozilla/Add-ons/Overlay_Extensions -translation_of: Archive/Add-ons/Overlay_Extensions ---- -<p>{{AddonSidebar}}</p> - -<p>このページは下記の機能を使っているGecko-baseのアプリケーションのアドオンを開発するための方法のドキュメントへのリンクです。</p> - -<ul> - <li>インターフェースを指定するためのXUL overlays</li> - <li><code>アプリケーションやコンテンツとの対話に</code><a href="/en-US/docs/XUL/tabbrowser"><code>tabbrowser</code></a>や<a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript modules</a>のような、特権コードが使用できるAPI。</li> -</ul> - -<p>Prior to Firefox 4, and the Gecko 2 engine that powers it, this was the only way to develop extensions. This methodology has largely been superseded by <a href="/en-US/docs/Extensions/Bootstrapped_extensions">restartless extensions</a>, and the <a href="/en-US/Add-ons/SDK">Add-on SDK</a>, which is built on top of them. The privileged JavaScript APIs described here can still be used in these newer types of add-ons.</p> - -<h2 id="XUL_School">XUL School</h2> - -<p><a href="/en-US/Add-ons/Overlay_Extensions/XUL_School">XUL School</a>は体系的なアドオン開発のチュートリアルです。これはfirefoxアドオン開発のチュートリアルですが、他のおおよそのGecko-baseのアプリケーションに応用できます。</p> - -<h2 id="その他の情報">その他の情報</h2> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Mozilla/Add-ons/Setting_up_extension_development_environment">Setting up your environment</a></dt> - <dd>拡張機能を開発するための環境設定です。</dd> - <dt><a href="/en-US/docs/XUL">XUL</a></dt> - <dd>XUL extensionを使ったユーザーインターフェースを記述するチュートリアルとリファレンスです。</dd> - <dt><a href="/en-US/Mozilla/Add-ons/Code_snippets">Code snippets</a></dt> - <dd>Sample code for many of the things you'll want to do.</dd> - <dt><a href="/en-US/Mozilla/Add-ons/Installing_extensions">Installing extensions</a></dt> - <dd>How to install an extension by copying the extension files into the application's install directory.</dd> - <dt><a href="/en-US/Add-ons/Overlay_extensions/Firefox_addons_developer_guide">Firefox add-ons developer guide</a></dt> - <dd>オーバーレイextension(bootstrap extensionかな?)の開発ガイドです。</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript code modules</a></dt> - <dd>アドオン開発者の使用できるJavaScript モジュールです。</dd> - <dt><a href="/en-US/Mozilla/Add-ons/Inline_Options">Extension preferences</a></dt> - <dd>How to specify the preferences for your extension that will appear in the Add-ons Manager.</dd> - <dt><a href="/en-US/Mozilla/Add-ons/Extension_Packaging">Extension packaging</a></dt> - <dd>アドオンのパッケージングとインストールの方法です。</dd> - <dt><a href="/en-US/Mozilla/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary Firefox extensions</a></dt> - <dd>Firefoxのバイナリ拡張を作成します。</dd> -</dl> -</div> -</div> - -<p> </p> diff --git a/files/ja/mozilla/add-ons/sdk/guides/content_scripts/index.html b/files/ja/mozilla/add-ons/sdk/guides/content_scripts/index.html deleted file mode 100644 index 071cf1fb6f..0000000000 --- a/files/ja/mozilla/add-ons/sdk/guides/content_scripts/index.html +++ /dev/null @@ -1,484 +0,0 @@ ---- -title: Content Scripts -slug: Mozilla/Add-ons/SDK/Guides/Content_Scripts -translation_of: Archive/Add-ons/Add-on_SDK/Guides/Content_Scripts ---- -<article id="wikiArticle"> -<p><span class="seoSummary">アドオンの多くはウェブページへアクセスし修正する必要があります。しかしアドオンのメインのコードは直接ウェブコンテンツにアクセスできません。 代わりにアドオン SDK は <em>content scripts </em>と呼ばれる別のスクリプトからウェブコンテンツにアクセスします。このページでは content scripts の開発・実装方法を記述します。</span></p> - -<p>SDK を扱う上で content scripts はあなたを混乱させてしまうかもしれませんが、おそらくそれを使わなければなりません。下記は5つの基本原則です:</p> - -<ul> - <li>"main.js" を含むアドオンのメインコードやその他の "lib" 以下のモジュールは、SDK の<a href="/en-US/Add-ons/SDK/High-Level_APIs">高水準</a>または<a href="/en-US/Add-ons/SDK/Low-Level_APIs">低水準</a>なAPIを利用できますが、ウェブコンテンツには直接アクセスできません</li> - <li>content scripts は<a href="/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts#API_Access_for_Add-on_Code_and_Content_Scripts"> SDK の API を使用できません</a> (no access to globals <code>exports</code>, <code>require</code>) が、ウェブコンテンツに直接アクセスできます</li> - <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a> や <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs">tabs</a> のような content scripts を扱う SDK の API は、アドオンのメインコードから content scripts をウェブページにロードする機能を提供します</li> - <li>content scripts は文字列として読み込まれますが、アドオンの "data" ディレクトリ以下に別々のファイルとして保存します。jpm はデフォルトでは "data" を作らないので、 自分でディレクトリを作成し content scripts を置く必要があります</li> - <li>message-passing API でメインコードと content scripts とでお互いにコミュニケーションすることができます</li> -</ul> - -<p>This complete add-on illustrates all of these principles. Its "main.js" attaches a content script to the current tab using the <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs">tabs</a> module. In this case the content script is passed in as a string. The content script simply replaces the content of the page:</p> - -<pre class="brush: js">// main.js -var tabs = require("sdk/tabs"); -var contentScriptString = 'document.body.innerHTML = "<h1>this page has been eaten</h1>";' - -tabs.activeTab.attach({ - contentScript: contentScriptString -});</pre> - -<p>The following high-level SDK modules can use content scripts to modify web pages:</p> - -<ul> - <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a>: enables you to attach content scripts to web pages that match a specific URL pattern.</li> - <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs">tabs</a>: exports a <code>Tab</code> object for working with a browser tab. The <code>Tab</code> object includes an <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#attach(options)"><code>attach()</code></a> function to attach a content script to the tab.</li> - <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/page-worker">page-worker</a>: lets you retrieve a web page without displaying it. You can attach content scripts to the page, to access and manipulate the page's DOM.</li> - <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu">context-menu</a>: use a content script to interact with the page in which the menu is invoked.</li> -</ul> - -<p>Additionally, some SDK user interface components - panel, sidebar, frame - are specified using HTML, and use separate scripts to interact with this content. In many ways these are like content scripts, but they're not the focus of this article. To learn about how to interact with the content for a given user interface module, please see the module-specific documentation: <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel">panel</a>, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar">sidebar</a>, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_frame">frame</a>.</p> - -<p>Almost all the examples presented in this guide are available as complete, but minimal, add-ons in the <a href="https://github.com/mdn/addon-sdk-content-scripts">addon-sdk-content-scripts repository</a> on GitHub.</p> - -<h2 id="Loading_content_scripts">Loading content scripts</h2> - -<article id="wikiArticle"> -<p>You can load a single script by assigning a string to either the <code>contentScript</code> or the <code>contentScriptFile</code> option. The <code>contentScript</code> option treats the string itself as a script:</p> - -<pre class="brush: js">// main.js - -var pageMod = require("sdk/page-mod"); -var contentScriptValue = 'document.body.innerHTML = ' + - ' "<h1>Page matches ruleset</h1>";'; - -pageMod.PageMod({ - include: "*.mozilla.org", - contentScript: contentScriptValue -});</pre> - -<p>The <code>contentScriptFile</code> option treats the string as a resource:// URL pointing to a script file stored in your add-on's <code>data</code> directory. jpm doesn't make a "data" directory by default, so you must add it and put your content scripts in there.</p> - -<p>This add-on supplies a URL pointing to the file "content-script.js", located in the <code>data</code> subdirectory under the add-on's root directory:</p> - -<pre class="brush: js">// main.js - -var data = require("sdk/self").data; -var pageMod = require("sdk/page-mod"); - -pageMod.PageMod({ - include: "*.mozilla.org", - contentScriptFile: data.url("content-script.js") -});</pre> - -<pre class="brush: js">// content-script.js - -document.body.innerHTML = "<h1>Page matches ruleset</h1>";</pre> - -<div class="note"> -<p>From Firefox 34 onwards, you can use "./content-script.js" as an alias for self.data.url("content-script.js"). So you can rewrite the above main.js code like this:</p> - -<pre class="brush: js">var pageMod = require("sdk/page-mod"); - -pageMod.PageMod({ - include: "*.mozilla.org", - contentScriptFile: "./content-script.js" -}); -</pre> -</div> - -<div class="warning"> -<p>Unless your content script is extremely simple and consists only of a static string, don't use <code>contentScript</code>: if you do, you may have problems getting your add-on approved on AMO.</p> - -<p>Instead, keep the script in a separate file and load it using <code>contentScriptFile</code>. This makes your code easier to maintain, secure, debug and review.</p> -</div> - -<p>You can load multiple scripts by passing an array of strings to either <code>contentScript</code> or <code>contentScriptFile</code>:</p> - -<pre class="brush: js">// main.js - -var tabs = require("sdk/tabs"); - -tabs.on('ready', function(tab) { - tab.attach({ - contentScript: ['document.body.style.border = "5px solid red";', 'window.alert("hi");'] - }); -}); -</pre> - -<pre class="brush: js">// main.js - -var data = require("sdk/self").data; -var pageMod = require("sdk/page-mod"); - -pageMod.PageMod({ - include: "*.mozilla.org", - contentScriptFile: [data.url("jquery.min.js"), data.url("my-content-script.js")] -});</pre> - -<p>If you do this, the scripts can interact directly with each other, just like scripts loaded by the same web page.</p> - -<p>You can also use <code>contentScript</code> and <code>contentScriptFile</code> together. If you do this, scripts specified using <code>contentScriptFile</code> are loaded before those specified using <code>contentScript</code>. This enables you to load a JavaScript library like jQuery by URL, then pass in a simple script inline that can use jQuery:</p> - -<pre class="brush: js">// main.js - -var data = require("sdk/self").data; -var pageMod = require("sdk/page-mod"); - -var contentScriptString = '$("body").html("<h1>Page matches ruleset</h1>");'; - -pageMod.PageMod({ - include: "*.mozilla.org", - contentScript: contentScriptString, - contentScriptFile: data.url("jquery.js") -});</pre> - -<div class="warning"> -<p>Unless your content script is extremely simple and consists only of a static string, don't use <code>contentScript</code>: if you do, you may have problems getting your add-on approved on AMO.</p> - -<p>Instead, keep the script in a separate file and load it using <code>contentScriptFile</code>. This makes your code easier to maintain, secure, debug and review.</p> -</div> - -<h3 id="Controlling_when_to_attach_the_script">Controlling when to attach the script</h3> - -<p>The <code>contentScriptWhen</code> option specifies when the content script(s) should be loaded. It takes one of:</p> - -<ul> - <li><code>"start"</code>: load the scripts immediately after the document element for the page is inserted into the DOM. At this point the DOM content hasn't been loaded yet, so the script won't be able to interact with it.</li> - <li><code>"ready"</code>: load the scripts after the DOM for the page has been loaded: that is, at the point the <a href="https://developer.mozilla.org/en/Gecko-Specific_DOM_Events">DOMContentLoaded</a> event fires. At this point, content scripts are able to interact with the DOM content, but externally-referenced stylesheets and images may not have finished loading.</li> - <li><code>"end"</code>: load the scripts after all content (DOM, JS, CSS, images) for the page has been loaded, at the time the <a href="https://developer.mozilla.org/en/DOM/window.onload">window.onload event</a> fires.</li> -</ul> - -<p>The default value is <code>"end"</code>.</p> - -<p>Note that <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#attach(options)"><code>tab.attach()</code></a> doesn't accept contentScriptWhen, because it's generally called after the page has loaded.</p> - -<h3 id="Passing_configuration_options">Passing configuration options</h3> - -<p>The <code>contentScriptOptions</code> is a JSON object that is exposed to content scripts as a read-only value under the <code><a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/self">self</a>.options</code> property:</p> - -<pre class="brush: js">// main.js - -var tabs = require("sdk/tabs"); - -tabs.on('ready', function(tab) { - tab.attach({ - contentScript: 'window.alert(self.options.message);', - contentScriptOptions: {"message" : "hello world"} - }); -});</pre> - -<p>Any kind of jsonable value (object, array, string, etc.) can be used here.</p> - -<h2 id="Accessing_the_DOM">Accessing the DOM</h2> - -<p>Content scripts can access the DOM of a page, of course, just like any scripts that the page has loaded (page scripts). But content scripts are insulated from page scripts:</p> - -<ul> - <li>content scripts don't see any JavaScript objects added to the page by page scripts</li> - <li>if a page script has redefined the behavior of some DOM object, the content script sees the original behavior.</li> -</ul> - -<p>The same applies in reverse: page scripts can't see JavaScript objects added by content scripts.</p> - -<p>For example, consider a page that adds a variable <code>foo</code> to the <code>window</code> object using a page script:</p> - -<pre class="brush: html"><!DOCTYPE html"> -<html> - <head> - <script> - window.foo = "hello from page script" - </script> - </head> -</html></pre> - -<p>Another script loaded into the page after this script will be able to access <code>foo</code>. But a content script will not:</p> - -<pre class="brush: js">// main.js - -var tabs = require("sdk/tabs"); -var mod = require("sdk/page-mod"); -var self = require("sdk/self"); - -var pageUrl = self.data.url("page.html") - -var pageMod = mod.PageMod({ - include: pageUrl, - contentScript: "console.log(window.foo);" -}) - -tabs.open(pageUrl);</pre> - -<pre>console.log: my-addon: null -</pre> - -<p>There are good reasons for this insulation. First, it means that content scripts don't leak objects to web pages, potentially opening up security holes. Second, it means that content scripts can create objects without worrying about whether they might clash with objects added by page scripts.</p> - -<p>This insulation means that, for example, if a web page loads the jQuery library, then the content script won't be able to see the <code>jQuery</code> object added by the library - but the content script can add its own <code>jQuery</code> object, and it won't clash with the page script's version.</p> - -<h3 id="Interacting_with_page_scripts">Interacting with page scripts</h3> - -<p>Usually the insulation between content scripts and page scripts is what you want. But sometimes you might want to interact with page scripts: you might want to share objects between content scripts and page scripts or to send messages between them. If you need to do this, read about <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/Interacting_with_page_scripts">interacting with page scripts</a>.</p> - -<h3 id="Event_listeners">Event listeners</h3> - -<p>You can listen for DOM events in a content script just as you can in a normal page script, but there are two important differences:</p> - -<p>First, if you define an event listener by passing it as a string into <a href="https://developer.mozilla.org/en/DOM/element.setAttribute"><code>setAttribute()</code></a>, then the listener is evaluated in the page's context, so it will not have access to any variables defined in the content script.</p> - -<p>For example, this content script will fail with the error "theMessage is not defined":</p> - -<pre class="brush: js">var theMessage = "Hello from content script!"; -anElement.setAttribute("onclick", "alert(theMessage);");</pre> - -<p>Second, if you define an event listener by direct assignment to a <a href="/en-US/docs/Web/API/GlobalEventHandlers">global event handler</a> like <code>onclick</code>, then the assignment might be overridden by the page. For example, here's an add-on that tries to add a click handler by assignment to <code>window.onclick</code>:</p> - -<pre class="brush: js">var myScript = "window.onclick = function() {" + - " console.log('unsafewindow.onclick: ' + window.document.title);" + - "}"; - -require("sdk/page-mod").PageMod({ - include: "*", - contentScript: myScript, - contentScriptWhen: "start" -});</pre> - -<p>This will work fine on most pages, but will fail on pages which also assign to <code>onclick</code>:</p> - -<pre class="brush: html"><html> - <head> - </head> - <body> - <script> - window.onclick = function() { - window.alert("it's my click now!"); - } - </script> - </body> -</html></pre> - -<p>For these reasons, it's better to add event listeners using <a href="https://developer.mozilla.org/en/DOM/element.addEventListener"><code>addEventListener()</code></a>, defining the listener as a function:</p> - -<pre class="brush: js">var theMessage = "Hello from content script!"; - -anElement.onclick = function() { - alert(theMessage); -}; - -anotherElement.addEventListener("click", function() { - alert(theMessage); -});</pre> - -<h2 id="Communicating_with_the_add-on">Communicating with the add-on</h2> - -<p>To enable add-on scripts and content scripts to communicate with each other, each end of the conversation has access to a <code>port</code> object.</p> - -<ul> - <li>to send messages from one side to the other, use <code>port.emit()</code></li> - <li>to receive messages sent from the other side, use <code>port.on()</code></li> -</ul> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7873/content-scripting-overview.png" style="display: block; margin-left: auto; margin-right: auto;">Messages are asynchronous: that is, the sender does not wait for a reply from the recipient but just emits the message and continues processing.</p> - -<p>Here's a simple add-on that sends a message to a content script using <code>port</code>:</p> - -<pre class="brush: js">// main.js - -var tabs = require("sdk/tabs"); -var self = require("sdk/self"); - -tabs.on("ready", function(tab) { - worker = tab.attach({ - contentScriptFile: self.data.url("content-script.js") - }); - worker.port.emit("alert", "Message from the add-on"); -}); - -tabs.open("http://www.mozilla.org");</pre> - -<pre class="brush: js">// content-script.js - -self.port.on("alert", function(message) { - window.alert(message); -});</pre> - -<div class="note"> -<p>The context-menu module doesn't use the communication model described here. To learn about communicating with content scripts loaded using context-menu, see the <a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu">context-menu documentation</a>. </p> -</div> - -<h3 id="Accessing_port_in_the_content_script">Accessing <code>port</code> in the content script</h3> - -<p>In the content script the <code>port</code> object is available as a property of the global <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/self"><code>self</code></a> object. So to emit a message from a content script:</p> - -<pre class="brush: js">self.port.emit("myContentScriptMessage", myContentScriptMessagePayload);</pre> - -<p>To receive a message from the add-on code:</p> - -<pre class="brush: js">self.port.on("myAddonMessage", function(myAddonMessagePayload) { - // Handle the message -});</pre> - -<div class="note"> -<p><span>Note that the global <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/self"><code>self</code></a> object is completely different from the <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/self"><code>self</code> module</a>, which provides an API for an add-on to access its data files and ID.</span></p> -</div> - -<h3 id="Accessing_port_in_the_add-on_script">Accessing <code>port</code> in the add-on script</h3> - -<p>In the add-on code, the channel of communication between the add-on and a particular content script context is encapsulated by the <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/content_worker"><code>worker</code></a> object. So the <code>port</code> object for communicating with a content script is a property of the corresponding <code>worker</code> object.</p> - -<p>However, the worker is not exposed to add-on code in quite the same way in all modules.</p> - -<h4 id="From_page-worker">From <code>page-worker</code></h4> - -<p>The <code>page-worker</code> object integrates the worker API directly. So to receive messages from a content script associated with a <code>page-worker</code> you use <code>pageWorker.port.on()</code>:</p> - -<pre class="brush: js">// main.js - -var pageWorkers = require("sdk/page-worker"); -var self = require("sdk/self"); - -var pageWorker = require("sdk/page-worker").Page({ - contentScriptFile: self.data.url("content-script.js"), - contentURL: "http://en.wikipedia.org/wiki/Internet" -}); - -pageWorker.port.on("first-para", function(firstPara) { - console.log(firstPara); -});</pre> - -<p>To emit user-defined messages from your add-on you can just call <code>pageWorker.port.emit()</code>:</p> - -<pre class="brush: js">// main.js - -var pageWorkers = require("sdk/page-worker"); -var self = require("sdk/self"); - -pageWorker = require("sdk/page-worker").Page({ - contentScriptFile: self.data.url("content-script.js"), - contentURL: "http://en.wikipedia.org/wiki/Internet" -}); - -pageWorker.port.on("first-para", function(firstPara) { - console.log(firstPara); -}); - -pageWorker.port.emit("get-first-para");</pre> - -<pre class="brush: js">// content-script.js - -self.port.on("get-first-para", getFirstPara); - -function getFirstPara() { - var paras = document.getElementsByTagName("p"); - if (paras.length > 0) { - var firstPara = paras[0].textContent; - self.port.emit("first-para", firstPara); - } -}</pre> - -<h4 id="From_page-mod">From <code>page-mod</code></h4> - -<p>A single <code>page-mod</code> object might attach its scripts to multiple pages, each with its own context in which the content scripts are executing, so it needs a separate channel (worker) for each page.</p> - -<p>So <code>page-mod</code> does not integrate the worker API directly. Instead, each time a content script is attached to a page, the page-mod emits an <code>attach</code> event, whose listener is passed the worker for that context. By supplying a listener to <code>attach</code> you can access the <code>port</code> object for content scripts attached to that page by this page-mod:</p> - -<pre class="brush: js">// main.js - -var pageMods = require("sdk/page-mod"); -var self = require("sdk/self"); - -var pageMod = pageMods.PageMod({ - include: ['*'], - contentScriptFile: self.data.url("content-script.js"), - onAttach: startListening -}); - -function startListening(worker) { - worker.port.on('click', function(html) { - worker.port.emit('warning', 'Do not click this again'); - }); -}</pre> - -<pre class="brush: js">// content-script.js - -window.addEventListener('click', function(event) { - self.port.emit('click', event.target.toString()); - event.stopPropagation(); - event.preventDefault(); -}, false); - -self.port.on('warning', function(message) { - window.alert(message); -}); -</pre> - -<p>In the add-on above there are two messages:</p> - -<ul> - <li><code>click</code> is sent from the page-mod to the add-on, when the user clicks an element in the page</li> - <li><code>warning</code> sends a silly string back to the page-mod</li> -</ul> - -<h4 id="From_Tab.attach()">From <code>Tab.attach()</code></h4> - -<p>The <code>Tab.attach()</code> method returns the worker you can use to communicate with the content script(s) you attached.</p> - -<p>This add-on adds a button to Firefox: when the user clicks the button, the add-on attaches a content script to the active tab, sends the content script a message called "my-addon-message", and listens for a response called "my-script-response":</p> - -<pre class="brush: js">//main.js - -var tabs = require("sdk/tabs"); -var buttons = require("sdk/ui/button/action"); -var self = require("sdk/self"); - -buttons.ActionButton({ - id: "attach-script", - label: "Attach the script", - icon: "./icon-16.png", - onClick: attachScript -}); - -function attachScript() { - var worker = tabs.activeTab.attach({ - contentScriptFile: self.data.url("content-script.js") - }); - worker.port.on("my-script-response", function(response) { - console.log(response); - }); - worker.port.emit("my-addon-message", "Message from the add-on"); -} -</pre> - -<pre class="brush: js">// content-script.js - -self.port.on("my-addon-message", handleMessage); - -function handleMessage(message) { - alert(message); - self.port.emit("my-script-response", "Response from content script"); -}</pre> - -<h3 id="The_port_API">The port API</h3> - -<p>See the <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/port">reference page for the <code>port</code> object</a>.</p> -</article> - -<h3 id="The_postMessage_API">The postMessage API</h3> - -<p>Before the <code>port</code> object was added, add-on code and content scripts communicated using a different API:</p> - -<ul> - <li>the content script called <code>self.postMessage()</code> to send and <code>self.on()</code> to receive</li> - <li>the add-on script called <code>worker.postMessage()</code> to send and <code>worker.on()</code>to receive</li> -</ul> - -<p>The API is still available and <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/using_postMessage">documented</a>, but there's no reason to use it instead of the <code>port</code> API described here. The exception is the <a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu">context-menu</a> module, which still uses postMessage.</p> - -<h3 id="Content_script_to_content_script">Content script to content script</h3> - -<p>Content scripts can only communicate with each other directly if they have been loaded into the same context. For example, if a single call to <code>Tab.attach()</code> attaches two content scripts, then they can see each other directly, just as page scripts loaded by the same page can. But if you call <code>Tab.attach()</code> twice, attaching a content script each time, then these content scripts can't communicate with each other. You must then relay messages through the main add-on code using the port API.</p> - -<h2 id="Cross-domain_content_scripts">Cross-domain content scripts</h2> - -<p>By default, content scripts don't have any cross-domain privileges. In particular, they can't access content hosted in an <code>iframe</code>, if that content is served from a different domain, or make cross-domain XMLHttpRequests.</p> - -<p>However, you can enable these features for specific domains by adding them to your add-on's <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> under the <code>"cross-domain-content"</code> key, which itself lives under the <code>"permissions"</code> key. See the article on <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/Cross_Domain_Content_Scripts">cross-domain content scripts</a>.</p> -</article> diff --git a/files/ja/mozilla/add-ons/sdk/guides/index.html b/files/ja/mozilla/add-ons/sdk/guides/index.html deleted file mode 100644 index 0a6a4422d6..0000000000 --- a/files/ja/mozilla/add-ons/sdk/guides/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: ガイド -slug: Mozilla/Add-ons/SDK/Guides -translation_of: Archive/Add-ons/Add-on_SDK/Guides ---- -<p>This page lists more theoretical in-depth articles about the SDK.</p> -<hr> -<h3 id="Contributor's_guide"><a name="contributors-guide">Contributor's guide</a></h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="Guides/Getting_Started">Getting Started</a></dt> - <dd> - Learn how to contribute to the SDK: getting the code, opening/taking a bug, filing a patch, getting reviews, and getting help.</dd> - <dt> - <a href="Guides/Modules">Modules</a></dt> - <dd> - Learn about the module system used by the SDK (which is based on the CommonJS specification), how sandboxes and compartments can be used to improve security, and about the built-in SDK module loader, known as Cuddlefish.</dd> - <dt> - <a href="Guides/Classes_and_Inheritance">Classes and Inheritance</a></dt> - <dd> - Learn how classes and inheritance can be implemented in JavaScript, using constructors and prototypes, and about the helper functions provided by the SDK to simplify this.</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="Guides/Private_Properties">Private Properties</a></dt> - <dd> - Learn how private properties can be implemented in JavaScript using prefixes, closures, and WeakMaps, and how the SDK supports private properties by using namespaces (which are a generalization of WeakMaps).</dd> - <dt> - <a href="Guides/Content_Processes">Content Processes</a></dt> - <dd> - The SDK was designed to work in an environment where the code to manipulate web content runs in a different process from the main add-on code. This article highlights the main features of that design.</dd> - </dl> - </div> -</div> -<hr> -<h3 id="SDK_infrastructure"><a name="sdk-infrastructure">SDK infrastructure</a></h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="Guides/Module_structure_of_the_SDK">Module structure of the SDK</a></dt> - <dd> - The SDK, and add-ons built using it, are of composed from reusable JavaScript modules. This explains what these modules are, how to load modules, and how the SDK's module tree is structured.</dd> - <dt> - <a href="Guides/SDK_API_Lifecycle">SDK API lifecycle</a></dt> - <dd> - Definition of the lifecycle for the SDK's APIs, including the stability ratings for APIs.</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="Guides/Program_ID">Program ID</a></dt> - <dd> - The Program ID is a unique identifier for your add-on. This guide explains how it's created, what it's used for and how to define your own.</dd> - <dt> - <a href="Guides/Firefox_Compatibility">Firefox compatibility</a></dt> - <dd> - Working out which Firefox releases a given SDK release is compatible with, and dealing with compatibility problems.</dd> - </dl> - </div> -</div> -<hr> -<h3 id="SDK_idioms"><a name="sdk-idioms">SDK idioms</a></h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="Guides/Working_with_Events">Working With Events</a></dt> - <dd> - Write event-driven code using the the SDK's event emitting framework.</dd> - <dt> - <a href="Guides/Content_Scripts">Content scripts guide</a></dt> - <dd> - An overview of content scripts, including: what they are, what they can do, how to load them, how to communicate with them.</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="Guides/Two_Types_of_Scripts">Two Types of Scripts</a></dt> - <dd> - This article explains the differences between the APIs available to your main add-on code and those available to content scripts.</dd> - </dl> - </div> -</div> -<hr> -<h3 id="XUL_migration"><a name="xul-migration">XUL migration</a></h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="Guides/XUL_Migration_Guide">XUL Migration Guide</a></dt> - <dd> - Techniques to help port a XUL add-on to the SDK.</dd> - <dt> - <a href="Guides/XUL_vs_SDK">XUL versus the SDK</a></dt> - <dd> - A comparison of the strengths and weaknesses of the SDK, compared to traditional XUL-based add-ons.</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="Guides/Porting_the_Library_Detector">Porting Example</a></dt> - <dd> - A walkthrough of porting a relatively simple XUL-based add-on to the SDK.</dd> - </dl> - </div> -</div> -<p> </p> diff --git a/files/ja/mozilla/add-ons/sdk/index.html b/files/ja/mozilla/add-ons/sdk/index.html deleted file mode 100644 index d1a2754a26..0000000000 --- a/files/ja/mozilla/add-ons/sdk/index.html +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Add-on SDK -slug: Mozilla/Add-ons/SDK -translation_of: Archive/Add-ons/Add-on_SDK ---- -<p>Add-on SDKを使って、JavaScript、HTML、CSSなどのウェブ技術を用いたFirefoxのアドオンを作成することができます。SDKにはアドオンを作成するためのJavaScript APIや、アドオンの作成、実行、テスト、そしてパッケージングを行うためのツールが含まれています。</p> -<hr> -<h3 id="チュートリアル">チュートリアル</h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#getting-started">はじめに</a></dt> - <dd> - <a href="/en-US/Add-ons/SDK/Tutorials/Installation">SDKのインストール方法</a>と、アドオンの開発、テストおよびパッケージングのための<a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">cfxツールの使い方</a>について。</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#interact-with-the-browser">ブラウザと対話する</a></dt> - <dd> - <a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">ウェブページを開き</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Listen_For_Page_Load">ページが読み込まれたことを確認し</a>、 <a href="/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">開いているタブの一覧を取得</a>してみましょう。</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#development-techniques">開発のためのテクニック</a></dt> - <dd> - <a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">ユニットテスト</a>、 <a href="/en-US/Add-ons/SDK/Tutorials/Logging">ログの出力</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Creating_Reusable_Modules">再利用可能なモジュールの作成</a>、 <a href="/en-US/Add-ons/SDK/Tutorials/l10n">ローカライズ</a>、 そして<a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development">モバイル向けの開発</a>などの、アドオン開発のための一般的なテクニックについて学びましょう。</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#create-user-interfaces">ユーザーインターフェースの作成 </a></dt> - <dd> - <a href="/en-US/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">ツールバーボタン</a>、 <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">コンテキストメニュー</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">メニュー項目</a>、そして<a href="/en-US/Add-ons/SDK/Tutorials/Display_a_Popup">ダイアログ</a>などの、ユーザーインターフェースの構成要素を作成しましょう。</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials#modify-web-pages">ウェブページを変化させる</a></dt> - <dd> - <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">特性のパターンにマッチした</a><a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">U</a><a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">RL</a>のページや、<a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">特性のタブに表示されているページ</a>の内容を修正してみましょう。</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tutorials/Annotator">まとめ</a></dt> - <dd> - Annotatorアドオンを例とした、アドオン開発の概略。</dd> - </dl> - </div> -</div> -<hr> -<h3 id="ガイド">ガイド</h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Guides#contributors-guide">コントリビューターズガイド</a></dt> - <dd> - <a href="/en-US/Add-ons/SDK/Guides/Getting_Started">SDKへのコントリビュートの始め方</a>をお知らせします。また、<a href="/en-US/Add-ons/SDK/Guides/Modules">モジュール</a>や<a href="/en-US/Add-ons/SDK/Guides/Classes_and_Inheritance">クラスと継承</a>、<a href="/en-US/Add-ons/SDK/Guides/Private_Properties">プライベートプロパティ</a>、そして<a href="/en-US/Add-ons/SDK/Guides/Content_Processes">コンテンツの処理</a>などの、SDKのコードで使われている最も重要な手法についてお知らせします。</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Guides#sdk-infrastructure">SDKの下部構造</a></dt> - <dd> - SDKの根底にあるテクノロジーについて。<a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK">モジュール</a>、<a href="/en-US/Add-ons/SDK/Guides/Program_ID">プログラムID</a>、<a href="/en-US/Add-ons/SDK/Guides/Firefox_Compatibility">Firefoxの互換性</a>を定義する規則など。</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Content script</a></dt> - <dd> - <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">content scriptの扱い方</a>についての詳細なガイド。<a href="/en-US/Add-ons/SDK/Guides/Loading_content_scripts">content scriptの読み込み</a>、<a href="/en-US/Add-ons/SDK/Guides/Accessing_the_DOM">DOMへのアクセス</a>、<a href="/en-US/Add-ons/SDK/Guides/Communicating_with_other_scripts">content script同士またはほかのアドオンとのやり取りの方法</a>など。</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Guides#sdk-idioms">SDKのイディオム</a></dt> - <dd> - SDKにおける<a href="/en-US/Add-ons/SDK/Guides/Working_with_Events">イベントの扱い方</a>、および<a href="/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts">add-on scriptとcontent scriptの区別</a>について。</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">XULからのマイグレーション</a></dt> - <dd> - <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">XULで作成されたアドオンをSDKに移植する</a>ためのガイドです。 <a href="/en-US/Add-ons/SDK/Guides/XUL_vs_SDK">二つのツールセットの比較</a>や<a href="/en-US/Add-ons/SDK/Guides/Porting_the_Library_Detector">移植の実施例</a>を含みます。</dd> - </dl> - </div> -</div> -<hr> -<h3 id="リファレンス">リファレンス</h3> -<div class="column-container"> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/High-Level_APIs">高レベルAPI</a></dt> - <dd> - SDKの高レベルなAPIについてのドキュメント。</dd> - <dt> - <a href="/en-US/Add-ons/SDK/Tools">ツール</a></dt> - <dd> - アドオンの開発、テストおよびパッケージングに利用する<a href="/en-US/Add-ons/SDK/Tools/cfx">cfxツール</a>、ログの出力に利用する<a href="/en-US/Add-ons/SDK/Tools/console">console</a>オブジェクト、および<a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a>についてのドキュメント。</dd> - </dl> - </div> - <div class="column-half"> - <dl> - <dt> - <a href="/en-US/Add-ons/SDK/Low-Level_APIs">低レベルAPI</a></dt> - <dd> - SDKの低レベルなAPIについてのドキュメント。</dd> - </dl> - </div> -</div> -<p> </p> diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/display_a_popup/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/display_a_popup/index.html deleted file mode 100644 index 32e4e520f8..0000000000 --- a/files/ja/mozilla/add-ons/sdk/tutorials/display_a_popup/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: ポップアップを表示する -slug: Mozilla/Add-ons/SDK/Tutorials/Display_a_Popup -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Display_a_Popup ---- -<div class="note"> - <p>このチュートリアルを行うには <a href="/ja/docs/Mozilla/Add-ons/SDK/Tutorials/Installation">SDK をインストール</a> し、<a href="/ja/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_started"><code>cfx</code> の基本</a> について学んでいる必要があります。</p> - <p>このチュートリアルは、Firefox 29 以降で使用可能な <a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">アクションボタン</a> API を使用しています。</p> -</div> -<p>ポップアップダイアログを表示するには、<a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code></a> モジュールを使用します。パネルのコンテンツは HTML を使用して定義されます。パネル内でコンテンツのスクリプトを実行できます: パネル内で実行されるスクリプトは、アドオンのメインコードには直接アクセスできませんが、パネルのスクリプトとアドオンのコードの間でメッセージを交換できます。</p> -<p>このチュートリアルでは、クリックした際にパネルを表示する <a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">アクションボタン</a> をツールバーに追加したアドオンを作成します。パネルには、<code><textarea></code> 要素のみが含まれています: <code>return</code> キーを押すと、<code><textarea></code> 内のコンテンツがメインのアドオンコードに送信されます。メインのアドオンコードでは、<a href="/ja/docs/Mozilla/Add-ons/SDK/Tutorials/Logging">メッセージをコンソールログに表示</a> します。</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/7647/panel.png" style="display: block; margin-left: auto; margin-right: auto;">アドオンは 6 つのファイルで構成されています:</p> -<ul> - <li><code>main.js</code>: アドオンのメインコードで、ボタンとパネルを生成します</li> - <li><code>get-text.js</code>: パネルのコンテンツとインタラクティブなコンテンツスクリプトです</li> - <li><code>text-entry.html</code>: パネルのコンテンツそのもので、HTML で記述されます</li> - <li><code>icon-16.png</code>、<code>icon-32.png</code>、<code>icon-64.png</code>: 3 つの異なるサイズのボタン用アイコンです</li> -</ul> -<p>"main.js" は以下のようになっています:</p> -<pre class="brush: js">var data = require("sdk/self").data; -// Construct a panel, loading its content from the "text-entry.html" -// file in the "data" directory, and loading the "get-text.js" script -// into it. -var text_entry = require("sdk/panel").Panel({ - contentURL: data.url("text-entry.html"), - contentScriptFile: data.url("get-text.js") -}); - -// Create a button -require("sdk/ui/button/action").ActionButton({ - id: "show-panel", - label: "Show Panel", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -// Show the panel when the user clicks the button. -function handleClick(state) { - text_entry.show(); -} - -// When the panel is displayed it generated an event called -// "show": we will listen for that event and when it happens, -// send our own "show" event to the panel's script, so the -// script can prepare the panel for display. -text_entry.on("show", function() { - text_entry.port.emit("show"); -}); - -// Listen for messages called "text-entered" coming from -// the content script. The message payload is the text the user -// entered. -// In this implementation we'll just log the text to the console. -text_entry.port.on("text-entered", function (text) { - console.log(text); - text_entry.hide(); -});</pre> -<p>コンテンツスクリプト "get-text.js" は、以下のようになっています:</p> -<div> - <pre class="brush: js">// When the user hits return, send the "text-entered" -// message to main.js. -// The message payload is the contents of the edit box. -var textArea = document.getElementById("edit-box"); -textArea.addEventListener('keyup', function onkeyup(event) { - if (event.keyCode == 13) { - // Remove the newline. - text = textArea.value.replace(/(\r\n|\n|\r)/gm,""); - self.port.emit("text-entered", text); - textArea.value = ''; - } -}, false); -// Listen for the "show" event being sent from the -// main add-on code. It means that the panel's about -// to be shown. -// -// Set the focus to the text area so the user can -// just start typing. -self.port.on("show", function onShow() { - textArea.focus(); -});</pre> - <div> - </div> -</div> -<p>そして、"text-entry.html" ファイルで <code><textarea></code> 要素を定義します:</p> -<div> - <div> - <pre class="brush: html"><html> -<head> - <style type="text/css" media="all"> - textarea { - margin: 10px; - } - body { - background-color: gray; - } - </style> - </head> -<body> - <textarea rows="13" cols="33" id="edit-box"></textarea> - </body> -</html></pre> - <div> - </div> - </div> -</div> -<p>3 種類のアイコンファイルを "data" ディレクトリに保存します:</p> -<table class="standard-table"> - <tbody> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="width: 16px; height: 16px;"></td> - <td>icon-16.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="width: 32px; height: 32px;"></td> - <td>icon-32.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="width: 64px; height: 64px;"></td> - <td>icon-64.png</td> - </tr> - </tbody> -</table> -<p>試してください: "main.js" をアドオン内の <code>lib</code> ディレクトリに保存し、他の 5 つのファイルをアドオン内の<code>data</code> ディレクトリに保存してください:</p> -<pre>my-addon/ - data/ - get-text.js - icon-16.png - icon-32.png - icon-64.png - text-entry.html - lib/ - main.js -</pre> -<p>アドオンを実行し、ボタンをクリックすると、パネルが表示されます。テキストを入力し、"return" を押すと、コンソールに出力されます。</p> -<p>Firefox 30 以降では、<a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">トグルボタン</a> を使用すると、<a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_toggle#Attaching_panels_to_buttons"> ボタンからパネルを呼び出せます</a>。</p> -<h2 id="詳しく学ぶ">詳しく学ぶ</h2> -<p><code>panel</code> モジュールについてさらに学ぶには、<a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code> API リファレンス</a> をご覧ください。</p> -<p>ボタンについてさらに学ぶには、<a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">アクションボタン</a> と <a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">トグルボタン</a> API リファレンスをご覧ください。</p> diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/getting_started/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/getting_started/index.html deleted file mode 100644 index 3eb0b80ec6..0000000000 --- a/files/ja/mozilla/add-ons/sdk/tutorials/getting_started/index.html +++ /dev/null @@ -1,167 +0,0 @@ ---- -title: 入門 -slug: Mozilla/Add-ons/SDK/Tutorials/Getting_started -translation_of: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29 ---- -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">SDK を</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">使用してシンプルなアドオンの作成を始めるための手順の概略です</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">。</span></p> -<h2 id="必要条件">必要条件</h2> -<p>SDK を使用してアドオンを作成するには、まず最初に <a href="/en-US/Add-ons/SDK/Tutorials/Installation" rel="noreferrer">SDKをインストールして起動するための手順</a>に従ってください。インストールは一度だけ行えばよく、SDK の起動はコマンドプロンプトごとに行う必要があります。準備が整ったら、コマンドプロンプトを見てください。</p> -<p>Linux または Mac OS X の場合、コマンドプロンプトの先頭は SDK のルートディレクトリ名となります。</p> -<pre>(addon-sdk)~/mozilla/addon-sdk > -</pre> -<p>Windows の場合、コマンドプロンプトの先頭は SDK がインストールされたディレクトリの絶対パスとなります。</p> -<pre>(C:\Users\mozilla\sdk\addon-sdk) C:\Users\Work\sdk\addon-sdk> -</pre> -<h2 id="アドオンの初期化">アドオンの初期化</h2> -<p>コマンドプロンプトで新しいディレクトリを作成してください。SDK のルートディレクトリ以下の場所以外であれば、任意の場所に作成することができます。作成後はそのディレクトリに移動し、<span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: 1.5;">cfx init </span><span style="line-height: 1.5;">を実行してください。</span></p> -<pre>mkdir my-addon -cd my-addon -cfx init -</pre> -<p>そうした場合、以下のように出力されるでしょう。</p> -<pre>* lib directory created -* data directory created -* test directory created -* doc directory created -* README.md written -* package.json written -* test/test-main.js written -* lib/main.js written -* doc/main.md written -Your sample add-on is now ready for testing: -try "cfx test" and then "cfx run". Have fun!" -</pre> -<h2 id="アドオンを実装する">アドオンを実装する</h2> -<p>lib ディレクトリにある main.js ファイルに、アドオンのコードを書くことができます。これは前のステップで作成されたものです。main.js を開き、以下のコードを追加してください。</p> -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visit Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("http://www.mozilla.org/"); -} -</pre> -<p>コードを追加したら、ファイルを保存してください。</p> -<p>次に、以下の3つのアイコンファイルを data ディレクトリに保存してください。</p> -<table class="standard-table"> - <tbody> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="width: 16px; height: 16px;"></td> - <td>icon-16.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="width: 32px; height: 32px;"></td> - <td>icon-32.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="width: 64px; height: 64px;"></td> - <td>icon-64.png</td> - </tr> - </tbody> -</table> -<div class="note"> - <p>上記のコードは、Firefox 29 以降においてのみ使用できる<span style="line-height: 1.5;"> </span><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action" style="line-height: 1.5;">action button</a><span style="line-height: 1.5;"> モジュールを使用していることに注意してください。それ以前のバージョンの Firefox を使用する場合、アイコンがブラウザウィンドウの右下に表示されることを除けば、以下のコードを使用して同じものを実装できます。</span></p> - <pre class="brush: js">var widgets = require("sdk/widget"); -var tabs = require("sdk/tabs"); -var widget = widgets.Widget({ - id: "mozilla-link", - label: "Mozilla website", - contentURL: require("sdk/self").data.url("icon-16.png"), - onClick: function() { - tabs.open("http://www.mozilla.org/"); - } -});</pre> -</div> -<p>コマンドプロンプトに戻り、以下のコマンドを実行します。</p> -<pre>cfx run -</pre> -<p>これは、開発中のアドオンがインストールされた状態でFirefoxの新規インスタンスを実行する、 SDK のコマンドです。Firefox が起動されると、ブラウザの右上にFirefox ロゴのアイコンが表示されます。そのアイコンをクリックすると、<a href="http://www.mozilla.org/" rel="noreferrer">http://www.mozilla.org/</a> が読み込まれた新しいタブが開きます。</p> -<div class="note"> - <p>cfx run と入力したとき、以下のようなメッセージが表示される場合があります。</p> - <pre class="bz_comment_text" id="comment_text_0">A given cfx option has an inappropriate value: - ZIP does not support timestamps before 1980</pre> - <p>もし表示されたのであれば、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1005412">bug 1005412</a> に行き当たったことになります。これは、ダウンロードしたアイコンファイルに1970年のタイムスタンプが付与されていることを意味します。このバグが修正されるまでは、<a href="http://www.linfo.org/touch.html"><code>touch</code></a> コマンドを使ってタイムスタンプをアップデートすることによってバグを回避してください。</p> - <pre>touch icon-16.png</pre> -</div> -<p>このアドオンが行うことは、これで全部です。このアドオンは2つの SDK モジュールを使用しています。一つは、ボタンをブラウザに追加することができる <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> モジュール、もう一つは、基本的なタブの操作を可能にする <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> モジュールです。今回は、Firefox アイコンのボタンを作成し、それをクリックすると新しいタブで Mozilla ウェブサイトのホームページを読み込むためのハンドラを追加しました。</p> -<p><img alt="" src="https://mdn.mozillademos.org/files/7643/mozilla-button.png" style="width: 382px; height: 221px; display: block; margin-left: auto; margin-right: auto;">先述のファイルを編集してみましょう。例えば、読み込むページを変更することができます。</p> -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visit Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("https://developer.mozilla.org/"); -}</pre> -<div class="note"> - <p><span style="line-height: 1.5;">上記のコードは、Firefox 29 以降においてのみ使用できる</span><span style="line-height: 1.5;"> </span><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action" style="line-height: 1.5;">action button</a><span style="line-height: 1.5;"> モジュールを使用していることに注意してください。それ以前のバージョンの Firefox を使用する場合、アイコンがブラウザウィンドウの右下に表示されることを除けば、以下のコードを使用して同じものを実装できます。</span></p> - <pre class="brush: js">var widgets = require("sdk/widget"); -var tabs = require("sdk/tabs"); -var widget = widgets.Widget({ - id: "mozilla-link", - label: "Mozilla website", - contentURL: require("sdk/self").data.url("icon-16.png"), - onClick: function() { - tabs.open("http://developer.mozilla.org/"); - } -});</pre> -</div> -<p>コマンドプロンプトで、再び <code>cfx run</code> を実行してください。今度は <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a> が表示されます。</p> -<h2 id="アドオンをパッケージ化する">アドオンをパッケージ化する</h2> -<p>アドオンが完成して配布する準備ができたとき、XPI ファイルとしてパッケージ化する必要があります。これは Firfox アドオンとしてインストール可能なファイル形式です。XPI ファイルを独自の手段で配布するか、<a href="https://addons.mozilla.org" rel="noreferrer">https://addons.mozilla.org</a> で公開しましょう。そうすれば、ほかのユーザーがそのアドオンをダウンロードし、インストールすることできます。</p> -<p><span style="line-height: 1.5;">アドオンのディレクトリで </span><code style="font-style: normal; line-height: 1.5;">cfx xpi</code><span style="line-height: 1.5;"> コマンドを実行するだけで、</span>XPI をビルドすることができます。</p> -<pre>cfx xpi -</pre> -<p>そうした場合、以下のようなメッセージが表示されるでしょう。</p> -<pre>Exporting extension to my-addon.xpi. -</pre> -<p>アドオンが動くかどうかテストするために、あなたがインストールした Firefox に XPI ファイルをインストールしてみましょう。Firefox で Ctrl+O の組み合わせ(Mac であれば Cmd+O)でキーを入力するか、Firefox の「ファイル」メニューから「ファイルを開く」を選択します。すると、ファイル選択ダイアログが表示されます。アドオンの XPI ファイルがある場所まで移動してファイルを開き、アドオンをインストールするためのプロンプトに従ってください。</p> -<h2 id="要約">要約</h2> -<p>このチュートリアルでは、3つのコマンドを使ってアドオンの構築およびパッケージ化を行いました。</p> -<ul> - <li><code>cfx init</code> による空のアドオンのテンプレートの初期化。</li> - <li><code>cfx run</code> による、アドオンがインストールされた状態での Firefox の新規インスタンスの実行。アドオンの動作確認を可能にします。</li> - <li><code>cfx xpi</code> による、配布可能な XPI ファイルとしてのアドオンのパッケージ化。</li> -</ul> -<p>これら3つのコマンドは、SDK を用いてアドオンを開発するときに使用する主要なコマンドです。利用可能な全てのコマンドとオプションを網羅した<a href="/en-US/Add-ons/SDK/Tools/cfx" rel="noreferrer" style="line-height: 1.5;">リファレンス</a><span style="line-height: 1.5;">も用意してます。</span></p> -<p>アドオン自体のコードは、<a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> と <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> の2つのモジュールを使用しています。SDKの<a href="/en-US/Add-ons/SDK/High-Level_APIs" rel="noreferrer">高レベルなAPI</a> および <a href="/en-US/Add-ons/SDK/Low-Level_APIs" rel="noreferrer">低レベルなAPI</a> のリファレンスも用意しています。</p> -<h2 id="次のステップ">次のステップ</h2> -<p>SDKのAPIを使ってできることに慣れるためには、いくつかの<a href="/en-US/Add-ons/SDK/Tutorials" rel="noreferrer">チュートリアル</a>を進めてみてください。 </p> -<h2 id="上級テクニック">上級テクニック</h2> -<h3 id="組み込みのモジュールの上書き">組み込みのモジュールの上書き</h3> -<p>アドオンを実装するために使用する SDK モジュールは、Firefox に組み込まれているものです。アドオンを <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: 1.5;">cfx run</span><span style="line-height: 1.5;"> コマンドで実行したり、</span><code style="font-style: normal; line-height: 1.5;">cfx xpi</code><span style="line-height: 1.5;"> コマンドでパッケージ化したりする場合は、アドオンは Firefox が提供するバージョンのモジュールを使用します。</span></p> -<p>アドオン開発者としては、通常これは望ましい挙動です。しかし、SDK のモジュール自体を開発する場合には、当然それは望ましくない挙動でしょう。この場合、仮にSDKを <a href="https://github.com/mozilla/addon-sdk" rel="noreferrer">GitHub リポジトリ</a>からチェックアウトし、そのルートディレクトリで <a href="/en-US/Add-ons/SDK/Tutorials/Installation" rel="noreferrer">bin/activate</a> スクリプトを実行するものとします。</p> -<p>そのときは、"-o" オプションを渡して <code>cfx run</code> または <code>cfx xpi </code>コマンドを実行します。</p> -<pre>cfx run -o -</pre> -<p>これにより、cfx は Firefox 組み込みのモジュールではなく、SDK モジュールのローカルコピーを使用するようになります。</p> -<h3 id="cfx_を実行せずに開発する">cfx を実行せずに開発する</h3> -<p><code>cfx run</code> を呼び出すたびにブラウザが再起動されるため、アドオンを頻繁に変更する場合、開発効率をいくらか損なうことになるでしょう。それに代わるものとして、特定のポートの新しい XPI ファイルを自動的にインストールする <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/" rel="noreferrer" style="line-height: 1.5;">Extension Auto-Installer</a><span style="line-height: 1.5;"> アドオンを利用した開発があります。これにより、ブラウザを再起動する必要なく新しい変更点をテストすることができます。</span></p> -<ul> - <li>アドオンに変更を加えます</li> - <li>cfx xpi コマンドを実行します</li> - <li>特定のポートにアドオンをポストします</li> -</ul> -<p>さらに、このワークフローを簡単なスクリプトで自動化できます。例えば、以下のようなスクリプトです。</p> -<pre>while true ; do cfx xpi ; wget --post-file=codesy.xpi http://localhost:8888/ ; sleep 5 ; done -</pre> -<p>この方法を使った場合、<span style="line-height: 1.5;">アドオンを </span><code style="font-style: normal; line-height: 1.5;">cfx run</code><span style="line-height: 1.5;"> コマンドにより実行した場合と比べて、</span><span style="line-height: 1.5;">コンソールへのログ出力のレベルが異なることに注意してください。つまり、 </span><a href="/en-US/Add-ons/SDK/Tutorials/Logging" rel="noreferrer" style="line-height: 1.5;"><code>console.log()</code></a><span style="line-height: 1.5;"> が出力するメッセージを見たい場合、設定を微調整する必要があります。詳細については、</span><a href="/en-US/Add-ons/SDK/Tools/console#Logging_Levels" rel="noreferrer" style="line-height: 1.5;">ログ出力のレベル</a><span style="line-height: 1.5;">に関するドキュメントを参照してください。</span></p> diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html deleted file mode 100644 index 26fa4e6c4b..0000000000 --- a/files/ja/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Getting Started (jpm) -slug: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_(jpm) -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Getting_Started_(jpm) ---- -<p>{{AddonSidebar}}</p> - -<div class="blockIndicator warning"> -<p dir="ltr" id="docs-internal-guid-02db9a93-7fff-3bd4-b03f-ecfeb67b25c5">Support for extensions using XUL/XPCOM or the Add-on SDK was removed in Firefox 57, released November 2017. As there is no supported version of Firefox enabling these technologies, this page will be removed by December 2020.</p> -</div> - -<p>{{LegacyAddonsNotice}}</p> - -<p> </p> - -<div class="note"> -<p>Add-on SDK は開発環境の作成, 実行, テスト, アドオンのパッケージング等を行うことができるコマンドラインツールを含みます. <a href="http://nodejs.org/">Node.js </a> を元に作成された jpm と呼ばれるクライアントツールは古い cfx tool を置き換えるものです.</p> -jpm は Firefox 38 以上で使用可能です. - -<p>この記事では jpm を使ってどのように開発を行うのかを説明します.</p> -</div> - -<p><span class="seoSummary">このチュートリアルでは SDK を使ってシンプルなアドオンを作成していきます.</span></p> - -<h2 id="前提条件">前提条件</h2> - -<p>SDK を使って Firefox のアドオンを作成するには, 以下の環境が必要です:</p> - -<ul> - <li>Firefox version 38 以上. それ以前の Firefox を使用する場合, 従来の cfx tool が必要です. <a href="/en-US/Add-ons/SDK/Tutorials/Getting_started_(cfx)">getting started with cfx</a> のインストラクションを参照してください.</li> - <li>コマンドラインツール jpm. <a href="/en-US/Add-ons/SDK/Tools/jpm#Installation">installing jpm</a> のインストラクションを参照してください. 導入が終了したらコマンドプロンプトを開いてください.</li> - <li>作成したアドオンのテストのために <a href="https://www.mozilla.org/en-US/firefox/developer/">Firefox Developer Version</a> をインストールしてください.</li> -</ul> - -<h2 id="最初のアドオンの初期化">最初のアドオンの初期化</h2> - -<p>コマンドプロンプト上で, 新規ディレクトリを作成します. そのディレクトリに移動し <code>jpm init</code> , と入力し, エンターを押します:</p> - -<pre>mkdir my-addon -cd my-addon -jpm init -</pre> - -<p>作成するアドオンに関する情報を入力するように求められます: この情報はこれから作成するアドオンの <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> ファイルを 生成するために使用されます. 今回は, それぞれのプロパティをデフォルトにするため, ただ Enter を押していきます. <code>jpm init</code> に関する詳細な情報は, <a href="/en-US/Add-ons/SDK/Tools/jpm#Command_reference">jpm command reference</a> を参照してください.</p> - -<p>これらのプロパティの,値を入力, または デフォルト値に設定した後に "package.json" の完全な内容が表示され、それを受け入れるように求められます.</p> - -<h2 id="アドオンの実装">アドオンの実装</h2> - -<p>それでは, アドオンのコードを書いて行きましょう. "entry point" の値 (これは package.json の "<a href="/en-US/Add-ons/SDK/Tools/package_json#main">main</a>" にあります) を変更していない限り, アドオンの root 直下の "index.js" です. このファイルは前のステップで作成されたものです. このファイルを開き以下のコードを追加します:</p> - -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visit Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("http://www.mozilla.org/"); -} -</pre> - -<div class="note"> -<p>jpm では "entry point" のデフォルト値は "index.js" であることに注意してください. これは, アドオンの主要なファイルが "index.js" であることを意味しています. また, これはアドオンの root ディレクトリを検索します. and it is found directly in your add-on's root.</p> - -<p>cfx では, entry point はデフォルトに "main.js" になります. これは, アドオンの root 直下の "lib" ディレクトリに置かれています.</p> -</div> - -<p>ファイルをセーブします.</p> - -<p>続いて, <strong>"data"</strong> という名前のディレクトリをアドオンの root 直下に作成し,</p> - -<pre>mkdir data -</pre> - -<p>そして以下の 3 つのアイコンファイルを <strong>"data"</strong> ディレクトリに保存します:</p> - -<table class="standard-table"> - <tbody> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="height: 16px; width: 16px;"></td> - <td>icon-16.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="height: 32px; width: 32px;"></td> - <td>icon-32.png</td> - </tr> - <tr> - <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="height: 64px; width: 64px;"></td> - <td>icon-64.png</td> - </tr> - </tbody> -</table> - -<p>コマンドプロンプトに戻り, 以下のコマンドを入力します:</p> - -<pre>jpm run</pre> - -<p>この jpm コマンドは作成したアドオンをインストールした状態の新規 Firefox インスタンスを実行します.</p> - -<p>Firefox は見つからない場合や, Firefox Developer を代理のブラウザとしてインストールしている場合には, そこまでの path を渡す必要があるかもしれません. 例えば Ubuntu の場合:</p> - -<pre>jpm run -b /usr/bin/firefox</pre> - -<p>Firefox が起動すると, ブラウザの右上端に Firefox のロゴにアイコンが見えるはずです. このアイコンをクリックすると, 新しいタブが開き, <a href="http://www.mozilla.org/" rel="noreferrer">http://www.mozilla.org/</a> が読み込まれます.</p> - -<p>これでこのアドオンでやることは終了です. ここでは, 二つの SDK モジュール を使っています: <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> モジュール, これはブラウザにボタンを追加することができるモジュールです, <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> モジュール, これはタブの基本的な操作を行うことができるモジュールです. 今回のケースでは, 我々は Firefox アイコンのボタンを作成しました. また, 新規タブに Mozilla のホームページを読み込むクリックハンドラを追加しました.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7643/mozilla-button.png" style="display: block; height: 221px; margin-left: auto; margin-right: auto; width: 382px;"> このファイルを編集してみましょう. 例えば, 読み込むページを変更することができます.</p> - -<pre class="brush: js">var buttons = require('sdk/ui/button/action'); -var tabs = require("sdk/tabs"); - -var button = buttons.ActionButton({ - id: "mozilla-link", - label: "Visit Mozilla", - icon: { - "16": "./icon-16.png", - "32": "./icon-32.png", - "64": "./icon-64.png" - }, - onClick: handleClick -}); - -function handleClick(state) { - tabs.open("https://developer.mozilla.org/"); -}</pre> - -<p>コマンドプロンプトで, <code>jpm run</code> を再度実行します. この時に, ボタンをクリックすると <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a> に移動します.</p> - -<h2 id="アドオンのパッケージング">アドオンのパッケージング</h2> - -<p>アドオンを作成し終え, 配布準備をする際には, アドオンを XPI にパッケージングする必要があります. これは Firefox アドオンをインストールするためのファイルフォーマットです. XPI を自分で配布したり, 他のユーザーがアドオンをダウンロードまたは, インストールできるようにするために, <a href="https://addons.mozilla.org" rel="noreferrer">https://addons.mozilla.org</a> に 公開することが可能です.</p> - -<p>XPIをビルドするためには, <code>jpm xpi</code> コマンドをアドオンのディレクトリで実行するだけです:</p> - -<pre>jpm xpi</pre> - -<p>次のようなメッセージを見ることができます:</p> - -<pre>JPM info Successfully created xpi at /path/to/my-addon/@my-addon-0.0.1.xpi -</pre> - -<p>これが機能することをテストするために, XPI ファイルを自身がインストールしている Firefox にインストールしてみましょう. これは Firefox から Ctrl+O (Mac では Cmd+O)キーで行うことができます. もしくは, Firefox の "File" メニューから, "Open" を選択してもよいです. するとファイル選択ダイアログが開きます: "@my-addon.xpi" ファイルを選択すると アドオンインストールプロンプトが開きます.</p> - -<p>Firefoxでは, 基本的にローカルで開発されたアドオンでも署名が必要であることに注意してください. インストールが終了した後で, インストールされたアドオンのリストで disabled が示されている場合, 署名の不足を確認してください.注意してください。 開発中や, 公開する予定がない場合, 署名の無いアドオンを実行できるように <a>about:config</a> を開き, <em>xpinstall.signatures.required</em> を <em>false</em> に設定してください. この設定を全てのアドオンに適応されてしまうため, 他の場所から悪意のあるものを誤ってインストールしないように特別な注意を払ってください.</p> - -<p>アドオンを配布するために, <a href="https://addons.mozilla.org/en-US/developers/addon/submit/2"> XPI を addons.mozilla.org に提出</a> します. また自身のサーバーにアドオンを配布したい場合, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm#jpm_sign">jpm sign</a> を 実行します.</p> - -<h2 id="結論">結論</h2> - -<p>このチュートリアルでは, 3 つのコマンドを使いアドオンのビルドやパッケージングを行いました:</p> - -<ul> - <li><code>jpm init</code> 空のアドオンテンプレートを初期化する</li> - <li><code>jpm run</code> アドオンがインストールされた Firefox インスタンスを実行する. 作成したアドオンを試すことができる</li> - <li><code>jpm xpi</code> 配布用にアドオンをXPIファイルにパッケージングする</li> -</ul> - -<p>これらは, SDK アドオン開発している時に使用する 3 つの主要なコマンドです. これらがとれるオプションや利用できるすべてのコマンドをカバーした包括的な <a href="/en-US/Add-ons/SDK/Tools/jpm" rel="noreferrer">リファレンス</a> があります.</p> - -<p>アドオンコードでは 二つの SDK モジュール, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> や <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> を使用しました. SDK における 全てのAPIs, <a href="/en-US/Add-ons/SDK/High-Level_APIs" rel="noreferrer">high-level</a> や <a href="/en-US/Add-ons/SDK/Low-Level_APIs" rel="noreferrer">low-level</a> に関するレファレンスは存在します.</p> - -<h2 id="What's_next">What's next?</h2> - -<p>SDK APIs を使ってできるいくつかのことを把握するために, <a href="/en-US/Add-ons/SDK/Tutorials" rel="noreferrer">tutorials</a> に挑戦してみてください.</p> diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/index.html deleted file mode 100644 index e7be834a87..0000000000 --- a/files/ja/mozilla/add-ons/sdk/tutorials/index.html +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: チュートリアル -slug: Mozilla/Add-ons/SDK/Tutorials -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials ---- -<p>{{AddonSidebar}}</p> - -<p>SDK を使用したアドオンの開発方法を実践的に説明したページの一覧です。</p> - -<hr> -<h3 id="はじめに"><a name="getting-started">はじめに</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tools/jpm#Installation">インストール</a></dt> - <dd>Windows、OS X および Linux 上で、SDK をダウンロード、インストール、および初期化します。</dd> -</dl> - -<dl> - <dt><a href="/en-US/Add-ons/SDK/Tutorials/Troubleshooting">トラブルシューティング</a></dt> - <dd>よくある問題を解決する場合や、支援を求める場合のヒントを説明します。</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Getting_Started_(jpm)">入門</a></dt> - <dd>jpm を使用してシンプルなアドオンを作成を始めるための手順の概略です</dd> - <dt></dt> -</dl> -</div> -</div> - -<hr> -<h3 id="ユーザーインターフェイスの作成"><a name="create-user-interfaces">ユーザーインターフェイスの作成</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">ツールバーボタンの追加</a></dt> - <dd>Firefox アドオンツールバーにボタンを追加します。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">Firefoxへのメニュー項目の追加</a></dt> - <dd>Firefox のメインメニューにアイテムを追加します。</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Display_a_Popup">ポップアップの表示</a></dt> - <dd>HTML および JavaScript を使用して実装したポップアップダイアログを表示します。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">コンテキストメニュー項目の追加</a></dt> - <dd>Firefox のコンテキストメニューに項目を追加します。</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="ブラウザの操作"><a name="interact-with-the-browser">ブラウザの操作</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Open_a_Web_Page">Webページを開く</a></dt> - <dd>モジュールを用いて、新しいタブまたはウィンドウでWebページを開き、そのコンテンツにアクセスします。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Listen_for_Page_Load">ページの読み込みを確認する</a></dt> - <dd>モジュールを用いて、新しい Web ページが読み込まれたときに通知を受け取り、それらの Web ページのコンテンツにアクセスします。</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/List_Open_Tabs">開いているタブの一覧を表示する</a></dt> - <dd>tabs モジュールを用いて、現在開いているすべてのタブに対して反復処理を行い、それらのコンテンツにアクセスします。</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="Webページの変更"><a name="modify-web-pages">Webページの変更</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">URLに基づいたWebページの変更</a></dt> - <dd>URL に基づいて Web ページを検索するフィルタを作成します。フィルタに一致する URL の Web ページを読み込んだときに、フィルタ内の指定したスクリプトを実行します。</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">アクティブなWebページの変更</a></dt> - <dd>現在アクティブな Web ページに、動的にスクリプトを読み込みます。</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="開発テクニック"><a name="development-techniques">開発テクニック</a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Logging">ログの出力</a></dt> - <dd>診断を行うために、メッセージをコンソールにログとして出力します。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Creating_reusable_modules">再利用可能なモジュールの作成</a></dt> - <dd>アドオンを別個のモジュールとして体系化し、開発、デバッグ、およびメンテナンスを容易にします。 また、作成したモジュールが入った再利用可能なパッケージを作成し、他の開発者もそのモジュールを使用できるようにします。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Unit_testing">ユニットテスト</a></dt> - <dd>SDK のテストフレームワークを使用して、ユニットテストを作成し実行します。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Chrome_authority">Chrome 権限</a></dt> - <dd>この権限を使用すると、アドオンが Components オブジェクトにアクセスできるので、どんな XPCOM オブジェクトでも読み込んで使用できるようになります。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Creating_event_targets">イベントターゲットの作成</a></dt> - <dd>定義したオブジェクトがイベントを発生させられるようにします。</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Listening_for_load_and_unload">読み込みと読み込み解除の確認</a></dt> - <dd>Firefox にアドオンが読み込まれたり、読み込み解除されたりしたときに通知を受け取ります。またコマンドラインからアドオンに引数を渡します。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Using_third-party_modules_(jpm)">サードパーティーモジュールの使用</a></dt> - <dd>SDK 自体に含まれていない追加のモジュールをインストールして使用します。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/l10n">ローカライゼーション</a></dt> - <dd>ローカライズ可能なコードを作成します。</dd> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Mobile_development">モバイル開発</a></dt> - <dd>Android 用 Firefox モバイルのアドオン開発を始める手順を説明します。</dd> -</dl> - -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Mobile_development">アドオン用のデバッガー</a></dt> - <dd>アドオン内のJavaScriptのデバッグを行います。</dd> -</dl> -</div> -</div> - -<hr> -<h3 id="応用"><a name="putting-it-together">応用 </a></h3> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/ja/Add-ons/SDK/Tutorials/Annotator">アノテーターアドオン</a></dt> - <dd>より複雑なアドオンの開発作業を順を追って説明します。</dd> -</dl> -</div> -</div> diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/installation/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/installation/index.html deleted file mode 100644 index b01e14ded3..0000000000 --- a/files/ja/mozilla/add-ons/sdk/tutorials/installation/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: インストール -slug: Mozilla/Add-ons/SDK/Tutorials/Installation -translation_of: Mozilla/Add-ons/SDK/Tools/jpm#Installation ---- -<h2 id="前提条件">前提条件</h2> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">アドオン SDK を使用して開発を行うには、以下が必要です。</span></p> -<ul> - <li> - <p><a href="http://www.python.org/">Python</a> 2.5、2.6 または 2.7。<span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">Python バージョン 3.0 と 3.1 はサポートされていません。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">環境変数 PATH に Python のパスを設定してください。</span></p> - </li> - <li> - <p>Firefox</p> - </li> - <li> - <p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">SDK 本体。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">最新の安定したバージョンの SDK は、</span><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.tar.gz" style="line-height: 1.5;"><span style="line-height: 1.5;">tarball </span><span style="line-height: 19.9939994812012px; color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px;">または </span><span style="line-height: 19.9939994812012px; color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px;">zip ファイル として入手できます。あるいは、最新の開発バージョン</span></a>を <a href="https://github.com/mozilla/addon-sdk" style="line-height: 1.5;">GitHub </a>リポジトリ<a href="https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.tar.gz" style="line-height: 1.5;"><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">から入手することもできます。</span></a></p> - </li> -</ul> -<p><span style="font-size: 2.14285714285714rem; font-weight: 700; letter-spacing: -1px; line-height: 30px;">Mac OS Xでの Homebrew を使ったインストール</span></p> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">アドオン SDK を </span><a href="http://brew.sh/" style="line-height: 1.5;">Homebrew</a><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> を用いてインストールするには、</span><span style="line-height: 1.5;">以下のコマンドを実行してください。</span></p> -<pre>brew install mozilla-addon-sdk</pre> -<h2 id="Mac_OS_X_Linux_でのインストール">Mac OS X / Linux でのインストール</h2> -<p>shell や commnd prompt を用いて、任意の場所にアドオン SDK のファイルを展開し、SDK のルートディレクトリに移動してください。以下はコマンドの一例です。</p> -<pre>tar -xf addon-sdk.tar.gz -cd addon-sdk -</pre> -<p>次に、 Bash を使用している場合は以下を実行します。</p> -<pre>source bin/activate -</pre> -<p>Bash 以外を使用している場合は、以下を実行します。</p> -<pre>bash bin/activate -</pre> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">コマンドプロンプトの先頭に、SDK のルートディレクトリ名が追加されます。</span></p> -<pre>(addon-sdk)~/mozilla/addon-sdk > -</pre> -<h2 id="Windows_でのインストール">Windows でのインストール</h2> -<p>shell や commnd prompt を用いて、任意の場所にアドオン SDK のファイルを展開し、SDK のルートディレクトリに移動してください。以下はコマンドの一例です。</p> -<pre>7z.exe x addon-sdk.zip -cd addon-sdk -</pre> -<p>次に、以下を実行します。</p> -<pre>bin\activate -</pre> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">コマンドプロンプトの先頭に、SDK のルートディレクトリ名が追加されます。</span></p> -<pre>(C:\Users\mozilla\sdk\addon-sdk) C:\Users\Work\sdk\addon-sdk> -</pre> -<h2 id="SDK_仮想環境">SDK 仮想環境</h2> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">上記のようにコマンドプロンプトが変更されていれば</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">、シェルで仮想環境が起動し、アドオン SDK コマンドラインツールにアクセスできます。</span></p> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">仮想環境は</span> <code>deactivate</code> <span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">を実行していつでも終了することができます。</span></p> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">仮想環境は、そのコマンドプロンプトにおいてのみ有効です。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">コマンドプロンプトを閉じると</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">仮想環境が終了するので</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">、再び</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">仮想環境を起動するには、</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">新しいコマンドプロンプトを起動し </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">source bin/activate</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> または </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">bin¥activate</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> と入力する必要があります。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">新しいコマンドプロンプトを開くだけでは、SDK は起動されません。</span></p> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">ディスク上の異なる場所に SDK の複数のコピーを置き、切り替えて使用することもできます。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">さらには、別個のコマンドプロンプトで、それぞれの</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">コピー</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">を同時に起動することも可能です。</span></p> -<h3 id="activate_永続化"><code>activate</code> 永続化</h3> -<p><code>activate</code> が行う処理は単に、<span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">最上位レベルの </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">bin</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> ディレクトリにあるスクリプトを使用して、現在のコマンドプロンプトに関する複数の環境変数を設定することだけです。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">そこで、使用する環境でこれらの変数が永続化されるように設定すれば、新しくコマンドプロンプトを開くだけでそれらの変数が読み込まれ、仮想環境が常に使用できます。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">これにより、新しいコマンドプロンプトを開くたびに </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">activate</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> と入力する必要がなくなります。</span></p> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">ただし、コマンドプロンプトに関する変数が、新しい SDK のリリース時に変更されることがあります。設定が必要な変数を特定するために </span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">SDK の起動スクリプトを参照するのが最良の方法です</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">。</span><span style="line-height: 1.5;"> B</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">ash 環境(Linux および Mac OS X)と Windows 環境では、起動に使用するスクリプトも、それによって設定される変数も異なります。</span></p> -<h4 id="Windows">Windows</h4> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">Windows では、</span> <code>bin\activate</code> <span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">を実行すると </span><span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">activate.bat </code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">が使用されます。SDK を常に有効にするには、コマンドラインから</span><code style="font-style: normal; line-height: 1.5;"> </code><code style="font-style: normal; line-height: 1.5;">setx</code><span style="line-height: 1.5;"> </span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">ツールを使用するか、コントロール パネルを使用します。</span></p> -<h4 id="LinuxMac_OS_X">Linux/Mac OS X</h4> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">Linux および Mac OS X では、</span> <code>source bin/activate</code> により <code>activate</code> Bash スクリプトが実行されます。<span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">SDK を常に有効にするには、</span><span style="line-height: 1.5;">Linuxの場合は</span><span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">~/.bashrc</code><span style="line-height: 1.5;"> を、</span><span style="line-height: 1.5;">Mac OS Xの場合は</span><span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">~/.bashprofile </code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">を使用します。</span></p> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">あるいは、</span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">‾/bin</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> ディレクトリにある </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">cfx</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> プログラムへのシンボリックリンクを作成する方法もあります。</span></p> -<pre>ln -s PATH_TO_SDK/bin/cfx ~/bin/cfx -</pre> -<h2 id="サニティチェック">サニティチェック</h2> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">シェルプロンプトで以下を実行します。</span></p> -<pre>cfx -</pre> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">一行目には以下のように表示されるでしょう。それに続いて、多数の使用方法の情報が表示されます。</span></p> -<pre>Usage: cfx [options] [command] </pre> -<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">これが</span> <a href="/en-US/Add-ons/SDK/Tools/cfx"><code>cfx</code> コマンドラインプログラム</a> です。<code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">cfx</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> は、アドオン SDK の主要なインターフェイスで、Firefox の起動とアドオンのテスト、アドオンを配布するためのパッケージング、</span><span style="line-height: 1.5;">説明書</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">の表示、および単体テストの実行に使用します。</span></p> -<h2 id="問題が発生した場合">問題が発生した場合</h2> -<p><a href="/en-US/Add-ons/SDK/Tutorials/Troubleshooting">トラブルシューティング</a> のページを参照してください。</p> -<h2 id="次のステップ">次のステップ</h2> -<p><a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">cfx 入門</a>のチュートリアルに目を通してください。<code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">cfx</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> ツールによってアドオンを作成する方法を説明します。</span></p> diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/troubleshooting/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/troubleshooting/index.html deleted file mode 100644 index 80db0e8976..0000000000 --- a/files/ja/mozilla/add-ons/sdk/tutorials/troubleshooting/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: トラブルシューティング -slug: Mozilla/Add-ons/SDK/Tutorials/Troubleshooting -translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Troubleshooting ---- -<p>アドオン SDKを起動したり実行したりする際に問題があっても、慌てる必要はありません!問題を突き止めるにはどこから着手すれば良いのかを順番に見ていきましょう。</p> -<h2 id="Quarantine_Problem_on_Mac_OS_X">Quarantine Problem on Mac OS X</h2> -<p>On Mac OS X, you might see the following error when you try to run <code>cfx</code>:</p> -<pre>/path/to/sdk/bin/cfx: /usr/bin/env: bad interpreter: Operation not permitted -</pre> -<p>This might be because the <code>cfx</code> executable file has been placed in quarantine during download from the Internet.</p> -<p>To get it out of quarantine, use the <code>xattr -d</code> command, specifying <code>com.apple.quarantine</code> as the name of the attribute to delete, and <code>cfx</code> as the file from which to delete that attribute:</p> -<pre>xattr -d com.apple.quarantine /path/to/sdk/bin/cfx -</pre> -<h2 id="Check_Your_Python">Check Your Python</h2> -<p>The SDK's <code>cfx</code> tool runs on Python. If you're having trouble getting <code>cfx</code> to run at all, make sure you have Python correctly installed.</p> -<p>Try running the following from a command line:</p> -<pre> python --version -</pre> -<p><code>cfx</code> currently expects Python 2.5 or 2.6. Older and newer versions may or may not work.</p> -<h2 id="Check_Your_Firefox_or_XULRunner">Check Your Firefox or XULRunner</h2> -<p><code>cfx</code> searches well known locations on your system for Firefox or XULRunner. <code>cfx</code> may not have found an installation, or if you have multiple installations, <code>cfx</code> may have found the wrong one. In those cases you need to use <code>cfx</code>'s <code>--binary</code> option. See the <a href="/en-US/Add-ons/SDK/Tools/cfx">cfx Tool</a> guide for more information.</p> -<p>When you run <code>cfx</code> to test your add-on or run unit tests, it prints out the location of the Firefox or XULRunner binary that it found, so you can check its output to be sure.</p> -<h2 id="Check_Your_Text_Console">Check Your Text Console</h2> -<p>When errors are generated in the SDK's APIs and your code, they are logged to the text console. This should be the same console or shell from which you ran the <code>cfx</code> command.</p> -<h2 id="Don't_Leave_Non-SDK_Files_Lying_Around">Don't Leave Non-SDK Files Lying Around</h2> -<p>Currently the SDK does not gracefully handle files and directories that it does not expect to encounter. If there are empty directories or directories or files that are not related to the SDK inside your <code>addon-sdk</code> directory or its sub-directories, try removing them.</p> -<h2 id="Search_for_Known_Issues">Search for Known Issues</h2> -<p>Someone else might have experienced your problem, too. Other users often post problems to the <a href="http://groups.google.com/group/mozilla-labs-jetpack/topics">project mailing list</a>. You can also browse the list of <a href="https://bugzilla.mozilla.org/buglist.cgi?order=Bug%20Number&resolution=---&resolution=DUPLICATE&query_format=advanced&product=Add-on%20SDK">known issues</a> or <a href="https://bugzilla.mozilla.org/query.cgi?format=advanced&product=Add-on%20SDK">search</a> for specific keywords.</p> -<h2 id="Contact_the_Project_Team_and_User_Group">Contact the Project Team and User Group</h2> -<p>SDK users and project team members discuss problems and proposals on the <a href="http://groups.google.com/group/mozilla-labs-jetpack/topics">project mailing list</a>. Someone else may have had the same problem you do, so try searching the list. You're welcome to post a question, too.</p> -<p>You can also chat with other SDK users in <a href="http://mibbit.com/?channel=%23jetpack&server=irc.mozilla.org">#jetpack</a> on <a href="http://irc.mozilla.org/">Mozilla's IRC network</a>.</p> -<p>And if you'd like to <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Add-on%20SDK&component=General">report a bug in the SDK</a>, that's always welcome! You will need to create an account with Bugzilla, Mozilla's bug tracker.</p> -<h2 id="Run_the_SDK's_Unit_Tests">Run the SDK's Unit Tests</h2> -<p>The SDK comes with a suite of tests which ensures that its APIs work correctly. You can run it with the following command:</p> -<pre> cfx testall -</pre> -<p>Some of the tests will open Firefox windows to check APIs related to the user interface, so don't be alarmed. Please let the suite finish before resuming your work.</p> -<p>When the suite is finished, your text console should contain output that looks something like this:</p> -<pre> Testing cfx... - ............................................................. - ---------------------------------------------------------------------- - Ran 61 tests in 4.388s - -OK - Testing reading-data... - Using binary at '/Applications/Firefox.app/Contents/MacOS/firefox-bin'. - Using profile at '/var/folders/FL/FLC+17D+ERKgQe4K+HC9pE+++TI/-Tmp-/tmpu26K_5.mozrunner'. - .info: My ID is 6724fc1b-3ec4-40e2-8583-8061088b3185 - .. - 3 of 3 tests passed. - OK - Total time: 4.036381 seconds - Program terminated successfully. - Testing all available packages: nsjetpack, test-harness, api-utils, development-mode. - Using binary at '/Applications/Firefox.app/Contents/MacOS/firefox-bin'. - Using profile at '/var/folders/FL/FLC+17D+ERKgQe4K+HC9pE+++TI/-Tmp-/tmp-dzeaA.mozrunner'. - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ......................................................................... - ............................................... - -3405 of 3405 tests passed. - OK - Total time: 43.105498 seconds - Program terminated successfully. - All tests were successful. Ship it! -</pre> -<p>If you get lots of errors instead, that may be a sign that the SDK does not work properly on your system. In that case, please file a bug or send a message to the project mailing list. See the previous section for information on doing so.</p> diff --git a/files/ja/mozilla/add-ons/themes/obsolete/index.html b/files/ja/mozilla/add-ons/themes/obsolete/index.html deleted file mode 100644 index 48bf1f18f0..0000000000 --- a/files/ja/mozilla/add-ons/themes/obsolete/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Obsolete -slug: Mozilla/Add-ons/Themes/Obsolete -tags: - - Obsolete - - アドオン - - アーカイブ - - テーマ - - ルックアンドフィール -translation_of: Mozilla/Add-ons/Themes/Obsolete ---- -<p> </p> - -<p>{{AddonSidebar}}</p> - -<div class="boxed translate-rendered text-content"> -<p>このページには、これまでに更新されることはないテーマドキュメントやリソースが含まれていますが、当面は更新されたドキュメントのソースとして使用されています。</p> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Creating_a_Skin_for_Firefox">Creating a Skin for Firefox</a> - - <ul> - <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Creating_a_Skin_for_Firefox/UUID">UUID</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Creating_a_Skin_for_Firefox/contents.rdf">contents.rdf</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Creating_a_Skin_for_Firefox/install.rdf">install.rdf</a></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Theme_changes_in_Firefox_2">Theme changes in Firefox 2</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Theme_changes_in_Firefox_3">Theme changes in Firefox 3</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Theme_changes_in_Firefox_3.5">Theme changes in Firefox 3.5</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Theme_changes_in_Firefox_4">Theme changes in Firefox 4</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Building_a_Theme" title="Building a Theme">Building a Theme</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Themes/Common_Firefox_Theme_Issues_and_Solutions" title="Themes/Common_Firefox_Theme_Issues_and_Solutions">Common Theme Issues and Their Solutions</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Making_Sure_Your_Theme_Works_with_RTL_Locales" title="Making_Sure_Your_Theme_Works_with_RTL_Locales">Making Sure Your Theme Works with RTL Locales</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Creating_a_Skin_for_SeaMonkey_2.x" title="Creating_a_Skin_for_SeaMonkey_2.x">Creating a Skin for SeaMonkey 2</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li> -</ul> - -<ul> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/inspectorwidget/">InspectorWidget</a></li> - <li><a class="link-https" href="https://addons.mozilla.org/en-us/firefox/addon/force-rtl/">Force RTL</a></li> - <li><a class="link-http" href="http://www.tudobom.de/articles/yatt/" title="http://www.tudobom.de/articles/yatt/">Yet Another Theme Tutorial</a></li> -</ul> -</div> - -<p> </p> diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/export/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/export/index.html deleted file mode 100644 index 381e471807..0000000000 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/export/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: bookmarks.export() -slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/export -tags: - - API - - Add-ons - - Bookmarks - - Extensions - - Method - - Non-standard - - Reference - - WebExtensions - - export -translation_of: Archive/Add-ons/bookmarks.export ---- -<p>{{AddonSidebar()}}</p> - -<p>ブックマークを HTML ブックマークファイルにエクスポートします。</p> - -<h2 id="構文">構文</h2> - -<pre class="brush: js">browser.bookmarks.export( - function() {...} // 関数(省略可) -) -</pre> - -<h3 id="Parameters">Parameters</h3> - -<dl> - <dt><code>callback</code>{{optional_inline}}</dt> - <dd><code>function</code>.</dd> -</dl> - -<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2> - -<p>{{ CompatibilityTable() }}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>機能</th> - <th>Chrome</th> - <th>Edge</th> - <th>Firefox (Gecko)</th> - <th>Opera</th> - </tr> - <tr> - <td>基本サポート</td> - <td>{{ CompatVersionUnknown }}</td> - <td>{{ CompatUnknown }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatOpera('33') }}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>機能</th> - <th>Edge</th> - <th>Firefox OS</th> - <th>Firefox Mobile (Gecko)</th> - </tr> - <tr> - <td>基本サポート</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - </tbody> -</table> -</div> - -<p>{{WebExtExamples}}</p> - -<div class="note"><strong>謝辞</strong> - -<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p> -</div> - -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/import/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/import/index.html deleted file mode 100644 index 758b72dbfa..0000000000 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/import/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: bookmarks.import() -slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/import -tags: - - API - - Add-ons - - Bookmarks - - Extensions - - Method - - Non-standard - - Reference - - WebExtensions - - import -translation_of: Archive/Add-ons/bookmarks.import ---- -<p>{{AddonSidebar()}}</p> - -<p>ブックマークを HTML ブックマークファイルからインポートします。</p> - -<h2 id="構文">構文</h2> - -<pre class="brush: js">browser.bookmarks.import( - function() {...} // 関数(省略可) -) -</pre> - -<h3 id="引数">引数</h3> - -<dl> - <dt><code>callback</code>{{optional_inline}}</dt> - <dd><code>function</code>.</dd> -</dl> - -<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2> - -<p>{{ CompatibilityTable() }}</p> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>機能</th> - <th>Chrome</th> - <th>Edge</th> - <th>Firefox (Gecko)</th> - <th>Opera</th> - </tr> - <tr> - <td>基本サポート</td> - <td>{{ CompatVersionUnknown }}</td> - <td>{{ CompatUnknown }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatOpera('33') }}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>機能</th> - <th>Edge</th> - <th>Firefox OS</th> - <th>Firefox Mobile (Gecko)</th> - </tr> - <tr> - <td>基本サポート</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - <td>{{ CompatNo() }}</td> - </tr> - </tbody> -</table> -</div> - -<p>{{WebExtExamples}}</p> - -<div class="note"><strong>謝辞</strong> - -<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p> -</div> - -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> diff --git a/files/ja/mozilla/calendar/index.html b/files/ja/mozilla/calendar/index.html deleted file mode 100644 index 47797046ae..0000000000 --- a/files/ja/mozilla/calendar/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Calendar -slug: Mozilla/Calendar -tags: - - Calendar - - NeedsTranslation - - NeedsUpdate - - TopicStub -translation_of: Mozilla/Calendar ---- -<table> - <tbody> - <tr> - <td><img alt="Sunbird-Logo-148x155.png" class="default internal" src="/@api/deki/files/3621/=Sunbird-Logo-148x155.png" style="height: 155px; width: 148px;"></td> - <td> - <p><span class="seoSummary">The Mozilla Calendar Project is a community driven project based on the Mozilla application architecture. The Project's heart is a calendaring backend based on libical. The <a class="external" href="http://www.mozilla.org/projects/calendar/lightning/" title="http://www.mozilla.org/projects/calendar/lightning/">Lightning extension</a> is built on top of this platform and provides integrated calendaring capabilities for Mozilla Messaging's Email client <a class="internal" href="/en/Thunderbird" title="En/Thunderbird">Thunderbird</a>.</span></p> - - <p>Mozilla Calendar emphasizes free and open source technology and supports standardized technology like the ical/ics (<a class="external" href="http://tools.ietf.org/html/rfc2445" title="http://tools.ietf.org/html/rfc2445">rfc2445</a>) format and the CalDAV (<a class="external" href="http://tools.ietf.org/html/rfc4791" title="http://tools.ietf.org/html/rfc4791">rfc4791</a>) protocol, which is implemented by many freely available servers and also some commercial providers.</p> - </td> - </tr> - </tbody> -</table> - -<table class="topicpage-table"> - <tbody> - <tr> - <td style="vertical-align: top;"> - <h2 id="Development_Topics">Development Topics</h2> - - <dl> - <dt><a class="internal" href="/en/Simple_Sunbird_build" title="en/Simple Sunbird build">Building Calendar</a></dt> - <dd>Information about building Calendar with the new <a class="internal" href="/en/comm-central" title="en/comm-central">comm-central</a> repository. There is also a simple build page for <a class="internal" href="/en/Simple_Thunderbird_build#Building_Thunderbird_and_Lightning" title="en/Simple Thunderbird build#Building Thunderbird and Lightning">Thunderbird including Lightning</a> and information about <a class="internal" href="/en/How_comm-central's_build_system_works" title="en/How comm-central's build system works">how comm-central works</a>.</dd> - </dl> - - <dl> - <dt><a class="link-https" href="https://wiki.mozilla.org/Calendar:Creating_an_Extension" title="https://wiki.mozilla.org/Calendar:Creating_an_Extension">Creating a Calendar extension</a></dt> - <dd>Tutorial on creating a Calendar extension for Sunbird and Lightning.</dd> - </dl> - - <dl> - <dt><a class="internal" href="/en/Calendar/Localization" title="En/Calendar/Localization"><strong>Localization</strong></a></dt> - <dd>How to get started with translating Calendar into your language and how to build Lightning in your language. </dd> - <dt>Testing Calendar</dt> - <dd><a class="internal" href="/en/Calendar/MozMill_Testing" title="En/Calendar/MozMill Testing">CalendarUtils reference</a> for writing <a class="internal" href="/en/Mozmill_Tests" title="en/Mozmill Tests">Mozmill tests</a>, which can automatically test the UI so that regressions can be easily found.</dd> - <dt><a href="/en/Calendar/Calendar_Versions" title="en/Calendar/Calendar Versions">Calendar Versions</a></dt> - <dd>This page will tell you which Calendar version fits with which Mozilla Platform and where current development is being done.</dd> - </dl> - </td> - <td style="vertical-align: top;"> - <h2 id="Tools">Tools</h2> - - <dl> - <dt><a class="link-https" href="https://bugzilla.mozilla.org/query.cgi?format=specific&product=Calendar" title="https://bugzilla.mozilla.org/query.cgi?format=specific&product=Calendar">Bugzilla</a></dt> - <dd>The <a class="internal" href="/en/Bugzilla" title="En/Bugzilla">Bugzilla</a> database used to track issues for Mozilla projects.</dd> - <dt><a class="link-https" href="https://wiki.mozilla.org/Calendar:QA_CalDAV_Support" title="https://wiki.mozilla.org/Calendar:QA_CalDAV_Support">Calendar Servers</a></dt> - <dd>Setup your own calendar server, or check to see how well commercial products are supported.</dd> - <dt></dt> - </dl> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/chrome_registration/index.html b/files/ja/mozilla/chrome_registration/index.html deleted file mode 100644 index 1fabd9cae2..0000000000 --- a/files/ja/mozilla/chrome_registration/index.html +++ /dev/null @@ -1,360 +0,0 @@ ---- -title: Chrome Registration -slug: Mozilla/Chrome_Registration -tags: - - Toolkit API -translation_of: Mozilla/Chrome_Registration ---- -<p> </p> - -<h2 id="Chrome_.28.E3.82.AF.E3.83.AD.E3.83.A0.29_.E3.81.A8.E3.81.AF_.3F" name="Chrome_.28.E3.82.AF.E3.83.AD.E3.83.A0.29_.E3.81.A8.E3.81.AF_.3F">Chrome (クロム) とは?</h2> - -<p><a href="/ja/Chrome" title="ja/Chrome">Chrome</a> とは、アプリケーションウィンドウで、そのウィンドウのコンテンツ領域の外側にあるユーザーインターフェイス要素のセットのことです。 ツールバーやメニューバー、プログレスバー、およびウィンドウタイトルバーといった要素は、全て chrome の部分の典型的な例になります。</p> - -<p>Mozilla は拡張機能とテーマについて、ルートディレクトリに置かれた <code>chrome.manifest</code> を認識します。</p> - -<div class="geckoVersionNote"> -<p>{{ gecko_callout_heading("2.0") }}</p> - -<p>Gecko 1.9.2 およびそれ以前では、Mozilla はアプリケーションのルートから見て <code>chrome/*.manifest</code> の位置にあるマニフェストファイルも読み込みます。Gecko 2.0 {{ geckoRelease("2.0") }} 以降では、ルートに置かれた <code>chrome.manifest</code> だけがマニフェストファイルとして利用されますが、<a href="/ja/Chrome_Registration#manifest" title="ja/Chrome Registration#manifest"><code>manifest</code></a> コマンドを使う事で、任意のファイルを追加のマニフェストファイルとして読み込ませる事ができます。</p> -</div> - -<p>{{ 英語版章題("Chrome_Providers") }}</p> - -<h2 id="Chrome_.E3.83.97.E3.83.AD.E3.83.90.E3.82.A4.E3.83.80" name="Chrome_.E3.83.97.E3.83.AD.E3.83.90.E3.82.A4.E3.83.80">Chrome プロバイダ</h2> - -<p>ある種類のウィンドウ (例: ブラウザ用ウィンドウ) のための chrome の{{ 訳語("供給元", "supplier") }}を、chrome プロバイダと呼びます。 特定のウィンドウに対して、ツールバー上に表示する画像から利用するテキストを記述したファイルまで、 コンテンツとウィンドウ自身の外観のための完全な chrome のセットを供給するために、 複数のプロバイダが一緒に動作することになります。</p> - -<p>chrome プロバイダの 3 つの基本型を以下に示します。</p> - -<p>{{ 英語版章題("Content") }}</p> - -<h3 id=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.88">コンテント</h3> - -<p>ウィンドウを記述するための主要なソースファイルは、コンテントプロバイダから供給されます。 これらは Mozilla の中から参照可能な任意の種類のファイルであることが可能ですが、 典型的には、ウィンドウやダイアログを記述するために設計されている XUL ファイルになります。 また、ユーザーインターフェイスを定義する JavaScript ファイルもコンテントパッケージに含まれ、 ほとんどの XBL バインディングファイルも同様です。</p> - -<p>{{ 英語版章題("Locale") }}</p> - -<h3 id=".E3.83.AD.E3.82.B1.E3.83.BC.E3.83.AB" name=".E3.83.AD.E3.82.B1.E3.83.BC.E3.83.AB">ロケール</h3> - -<p>ローカライズ可能なアプリケーションは、全てのローカライズのための情報をロケールプロバイダに保持します。 これにより、翻訳者は別の chrome パッケージを差し込むだけで、ソースコードのそれ以外の部分を変更することなく、アプリケーションの翻訳を行うことが可能になります。 ローカライズ可能な主なファイルは、DTD ファイルと Java スタイルのプロパティファイルの 2 つになります。</p> - -<p>{{ 英語版章題("Skin") }}</p> - -<h3 id=".E3.82.B9.E3.82.AD.E3.83.B3" name=".E3.82.B9.E3.82.AD.E3.83.B3">スキン</h3> - -<p>スキンプロバイダは、chrome の視覚的な外観を記述するための、完全なファイルのセットを提供する役割を持っています。 典型的なスキンプロバイダは、CSS ファイルと画像を提供することになります。</p> - -<p>{{ 英語版章題("The Chrome Registry") }}</p> - -<h2 id="Chrome_.E3.83.AC.E3.82.B8.E3.82.B9.E3.83.88.E3.83.AA" name="Chrome_.E3.83.AC.E3.82.B8.E3.82.B9.E3.83.88.E3.83.AA">Chrome レジストリ</h2> - -<p>Gecko の実行環境は、chrome レジストリとして知られる、chrome パッケージ名から chrome パッケージのディスク上の物理的な位置へのマッピングを提供するサービスを保守しています。</p> - -<p>この chrome レジストリが、コンフィグ可能で{{ 訳語("永続的", "persistent") }}であるため、 利用者は異なった chrome プロバイダをインストールして、好みのスキンやロケールを選択することが可能になります。 これは、xpinstall と、拡張マネージャによって実現されます。</p> - -<p>利用可能な chrome の chrome レジストリの情報のために、テキストのマニフェストが使用されます。 このマニフェストは、拡張機能やテーマのルートに置かれた「chrome.manifest」であり、XULRunner アプリケーションの chrome/*.manifest に該当します。</p> - -<p>このプレインテキストの chrome マニフェストは、以下のような単純な行ベースのフォーマットになっています。 各行は個々に{{ 訳語("解釈", "parse") }}されます。 つまり、その行が chrome レジストリにとって解釈可能な場合は、その行で指定される動作を行い、 不可能な場合 chrome レジストリはその行を無視します。 (警告メッセージが実行時エラーのコンソールに出力されます)</p> - -<pre class="eval">locale パッケージ名 ロケール名 path/to/files -skin パッケージ名 テーマ名 path/to/files -</pre> - -<p></p><div class="warning">パッケージ名に大文字と小文字が両方含まれている場合、Firefox 2, ThunderBird 2, および SeaMonkey 1.1 は chrome を認識しません。もし上記の例のパッケージ名の箇所が <strong>C</strong>amel<strong>C</strong>ase<strong>P</strong>ackage のようになっている場合には、\"chrome://<strong>c</strong>amel<strong>c</strong>ase<strong>p</strong>ackage/path/to/files に対する chrome が登録されていません\" のようなエラーメッセージが表示されるでしょう。Firefox 3, ThunderBird 3, および SeaMonkey 2 は大文字と小文字を両方含むパッケージ名に対応しています。このバグは Mozilla 1.9 で修正されました。<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=132183" title="https://bugzilla.mozilla.org/show_bug.cgi?id=132183">Bug 132183</a> を参照してください。</div><p></p> - -<p>{{ 英語版章題("Manifest Instructions") }}</p> - -<h2 id=".E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E5.91.BD.E4.BB.A4_.28Instruction.29" name=".E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E5.91.BD.E4.BB.A4_.28Instruction.29">マニフェスト命令 (Instruction)</h2> - -<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3> - -<p>文字 '#' で始まる行はコメントです。 その行のそれ以降の文字は全て無視されます。</p> - -<pre class="eval"># この行はコメントです。ここには何でも書けます。 -</pre> - -<h3 id="content" name="content">manifest</h3> - -<p>{{ gecko_minversion_inline("2.0b4") }}</p> - -<pre>manifest <em>サブディレクトリ</em> <em>/foo.manifest [フラグ]</em> -</pre> - -<p>この指定は追加のマニフェストファイルを読み込みます。これはコンポーネントや chrome の登録、プラットフォーム依存の登録用の指定を別ファイルに分割する場合に便利かもしれません。</p> - -<h3 id="binary-component">binary-component</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>binary-component <em>components/mycomponent.dll</em> <em>[フラグ]</em> -</pre> - -<p>Mozilla に対して、バイナリ形式のコンポーネントを登録し利用するよう指示します。コンポーネントが ABI に依存する物である場合には、これは abi フラグと同時に使用されるべきです。<a href="/ja/XPCOM/XPCOM_changes_in_Gecko_2.0" title="ja/XPCOM/XPCOM changes in Gecko 2.0">Firefox 4 よりも前のバージョンでは</a>、components ディレクトリにあるファイルは自動的に登録されていました。</p> - -<h3 id="interfaces">interfaces</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>interfaces <em>components/mycomponent.xpt</em> <em>[フラグ]</em> -</pre> - -<p>Mozilla に対して、XPIDL によって生成された typelib ファイルからインターフェースの情報を読み込むよう指示します。<a href="/ja/XPCOM/XPCOM_changes_in_Gecko_2.0" title="ja/XPCOM/XPCOM changes in Gecko 2.0">Firefox 4 よりも前のバージョンでは</a>、components ディレクトリにあるファイルは自動的に登録されていました。</p> - -<h3 id="component">component</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>component <em>{00000000-0000-0000-0000-000000000000}</em> <em>components/mycomponent.js</em> <em>[フラグ]</em> -</pre> - -<p>Mozilla に対して、JavaScript(あるいはその他の利用可能なスクリプト言語)で記述された XPCOM コンポーネントの実装についてコンポーネントの CID の情報を与えます。クラスID {0000...} はそのコンポーネントによって実装されているクラスIDと一致しなくてはなりません。</p> - -<h3 id="contract">contract</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>contract <em>@foobar/mycontract;</em> <em>{00000000-0000-0000-0000-000000000000}</em> <em>[フラグ]</em> -</pre> - -<p>コントラクト ID(ヒューマンリーダブルな文字列)を特定の実装のクラス ID にマッピングします。一般的には、1つのコントラクト ID はその直前に書かれた component エントリと対にして記述されるでしょう。</p> - -<h3 id="category">category</h3> - -<p>{{ gecko_minversion_inline("2.0b2") }}</p> - -<pre>category <em>カテゴリ名</em> <em>エントリ名</em> <em>値</em> <em>[フラグ]</em> -</pre> - -<p>エントリを<a href="/ja/XPCOM_Interface_Reference/nsICategoryManager" title="ja/XPCOM Interface Reference/nsICategoryManager">カテゴリーマネージャ</a>に登録します。カテゴリによって、記述する内容の形式や意味は変わります。</p> - -<h3 id="content" name="content">content</h3> - -<p>この行により、コンテントパッケージが登録されます。</p> - -<pre class="eval">content <em>パッケージ名</em> <em>uri/to/files/</em> <em>[フラグ]</em> -</pre> - -<p>これによって、URI <code>chrome://<em>パッケージ名</em>/content/...</code> によって参照された場合に実際のファイルシステム上の場所を解決するための情報が登録されます。 URI は、絶対指定か、このマニフェストファイルからの相対パスを指定します。 この URI 指定は、'/' で終了している必要があることに注意してください。</p> - -<h3 id="locale" name="locale">locale</h3> - -<p>この行により、ロケールパッケージが登録されます。</p> - -<pre class="eval">locale <em>パッケージ名</em> <em>ロケール名</em> <em>uri/to/files/</em> <em>[flags]</em> -</pre> - -<p>これによって、URI <code>chrome://<em>packagename</em>/locale/...</code> によって参照されるロケールパッケージを登録します。 <em>ロケール名</em> は、「en」のように言語だけの識別子か、「en-US」のような「言語-国」の識別子になります。 もし、そのパッケージに複数のロケールが登録されている場合、 chrome レジストリは、利用者の{{ 訳語("設定", "preference") }}に最もふさわしいロケールを選択して利用することになります。</p> - -<div class="note"> -<p>{{ 訳注("日本語の場合のロケール名について") }}</p> - -<p>Firefox 1.5 以上は上位互換性を持っており、ja であろうが ja-JP であろうが問題なく動作します。 但し、*.manifest は ja/ja-JP-mac 世代の製品でしか使いませんから、contents.rdf でどうするかにかかわらず、ja を使用することを推奨します。</p> - -<p>Firefox/Thunderbird 1.5 以降での locale の選択は</p> - -<ol> - <li>general.useragenet.locale に完全一致するものがあればそれを使用</li> - <li>完全一致ではないが言語コードが一致するものがあればそれを使用</li> - <li>言語コードが一致するものがなければ en-US を使用</li> -</ol> - -<p>という規則になっているので、拡張機能側では ja でも ja-JP でも好きな方を指定して動作上問題ありません。 Firefox/Thunderbird 1.5 以降しかサポートしないのに ja-JP を指定するというのはナンセンスですので推奨しませんが、Firefox/Thunderbird 1.0.x や Seamonkey 1.0.x などもサポートするのであれば ja でも ja-JP でも構いません。</p> - -<p>※ <a class="external" href="http://forums.firehacks.org/l10n/viewtopic.php?p=4923">Mozilla L10N フォーラムの記事 </a> から引用</p> -</div> - -<h3 id="skin" name="skin">skin</h3> - -<p>この行により、スキンパッケージが登録されます。</p> - -<pre class="eval">skin <em>パッケージ名</em> <em>スキン名</em> <em>uri/to/files/</em> <em>[フラグ]</em> -</pre> - -<p>これによって、URI <code><a class="external" rel="freelink">chrome://packagename/skin/</a>...</code> によって参照されるスキンパッケージを登録します。 <em>スキン名</em> にはインストールされるスキンを識別する{{ 訳語("適当な", "opaque") }}文字列を指定します。 もし、そのパッケージに複数のスキンが登録されている場合、 chrome レジストリは、利用者の{{ 訳語("設定", "preference") }}に最もふさわしいスキンを選択して利用することになります。</p> - -<h3 id="overlay" name="overlay">overlay</h3> - -<p>XUL オーバーレイは、以下の構文で登録されます。</p> - -<pre class="eval">overlay chrome://<em>オーバーレイが適用されるURI</em> chrome://<em>適用するオーバーレイのURI</em> <em>[フラグ]</em> -</pre> - -<h3 id="style" name="style">style</h3> - -<p>スタイルオーバーレイ (chrome ページに適用するためのカスタム CSS) は、以下の構文で登録されます。</p> - -<pre class="eval">style chrome://<em>スタイルが適用されるURI</em> chrome://<em>スタイルシートのURI</em> <em>[フラグ]</em> -</pre> - -<div class="note"> -<p>この機能はChrome URIのスタイルシートについてだけ利用できることに注意してください。</p> -</div> - -<h3 id="override" name="override">override</h3> - -<p>{{ 訳語("拡張機能", "extension") }}や embedder で、アプリケーションや XULRunner が提供しているファイルをオーバーライドしたくなるケースがあります。 これは、chrome 登録マニフェストの 「override」命令で可能になります。</p> - -<pre class="eval">override chrome://<em>package</em>/<em>type</em>/<em>オーバーライドされる元のURI</em> <em>オーバーライドするURI</em> <em>[フラグ]</em> -</pre> - -<p>注: override 指定は再帰的には適用されません。(ですので、<a class="external" rel="freelink">chrome://foo/content/bar/</a> を <a class="external" rel="freelink">file:///home/john/blah/</a> でオーバーライドしても、大抵の場合は意図した通りには動作しないでしょう。</p> - -<div class="note"> -<p>Gecko 1.8.1.5(Firefox 2.0.0.5)およびそれ以前のバージョンにはバグがあり、<em>オーバーライドするURI</em> の部分に相対パスを指定できませんでした。そのため、必ず絶対URIを指定する必要がありました。{{ Bug(323455) }} を参照してください。</p> -</div> - -<h3 id="resource" name="resource">resource</h3> - -<p>{{ Fx_minversion_inline(3) }}</p> - -<p><a href="/ja/JavaScript_code_modules/Using" title="ja/JavaScript_code_modules/Using">JavaScript コードモジュール</a> を利用する場合、拡張機能やアプリケーションが<a href="/ja/Components.utils.import" title="ja/Components.utils.import">Components.utils.import</a> を使用してモジュールを読み込めるようにするために、resource プロトコルのエイリアスを作成する必要があるでしょう。エイリアスは <code>resource</code> 行を使うことによって作られます:</p> - -<pre class="eval">resource <em>エイリアス名</em> <em>uri/to/files/</em> <em>[flags]</em> -</pre> - -<p>これは <code>resource://<エイリアス名>/</code> という URI に対して、与えられたパスへのマッピングを行います。</p> - -<div class="note"> -<p>Web 上のコンテンツを resource URI から読み込むことを防ぐようなセキュリティ上の制限事項は無いことに注意が必要です。ここで何を可視化しようとしているのかについて注意を払ってください。</p> -</div> - -<p>{{ 英語版章題("Manifest Flags") }}</p> - -<h2 id=".E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.83.95.E3.83.A9.E3.82.B0" name=".E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.83.95.E3.83.A9.E3.82.B0">マニフェストフラグ</h2> - -<p>マニフェストの行は、空白区切りにより複数のフラグを持つことができ、 それらは登録行の最後に追加します。 これらのフラグは、そのパッケージの chrome に特殊な属性をマークしたり、 その行が使用される条件を制限するために使用されます。</p> - -<h3 id="application" name="application">application</h3> - -<p>{{ 訳語("拡張機能", "Extensions") }}は、複数のアプリケーションに対してインストールされる可能性があります。 特定のアプリケーションだけに適用する chrome 登録行を置きたい場合には、</p> - -<pre class="eval">application=<em>app-ID</em> -</pre> - -<p>のフラグによって、拡張機能が <em>app-ID</em> で識別されるアプリケーションに対してインストールされる場合にのみ、この命令を適用することを示します。 複数の <code>application</code> フラグを単一の行に含めても構いません。 その場合は、その中のいずれかが一致した場合に適用されることになります。</p> - -<p>これは、異なるアプリケーションに対してどのように異なるオーバーレイを適用するかを示す例です。</p> - -<pre style="white-space: pre-wrap;">overlay chrome://browser/content/browser.xul chrome://myaddon/content/ffOverlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} -overlay chrome://messenger/content/mailWindowOverlay.xul chrome://myaddon/content/tbOverlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} -overlay chrome://songbird/content/xul/layoutBaseOverlay.xul chrome://myaddon/content/sbOverlay.xul application=songbird@songbirdnest.com -</pre> - -<h3 id="appversion" name="appversion">appversion</h3> - -<p>{{ 訳語("拡張機能", "Extensions") }}は、アプリケーションの複数のバージョンに対してインストールされる可能性があります。 特定のバージョンだけに適用する chrome 登録行を置きたい場合には、</p> - -<pre class="eval">appversion=<em>version</em> -appversion<<em>version</em> -appversion<=<em>version</em> -appversion><em>version</em> -appversion>=<em>version</em> -</pre> - -<p>のフラグによって、拡張機能が識別されたバージョンのアプリケーションにインストールされる場合にのみ、この命令を適用することを示します。 複数の <code>appversion</code> フラグを単一の行に含めても構いません。 その場合は、その中のいずれかが一致した場合に適用されることになります。 なお、バージョン文字列は、<a href="/ja/Toolkit_version_format" title="ja/Toolkit_version_format">Toolkit version format</a> に従っている必要があります。</p> - -<div class="note"> -<p>Gecko 1.8.0.13 および 1.8.1.5 以前のバージョンには、比較演算子 <, > または = を使用していてバージョン文字列の中に2つ以上のアルファベットが含まれている場合についてバグがありました。バグを踏んだ場合には、エラーコンソールに <code>appversion</code> フラグを解釈できなかった旨のメッセージが表示されていました。{{ Bug(380398) }} を参照してください。</p> -</div> - -<h3 id="contentaccessible" name="contentaccessible">contentaccessible</h3> - -<p>{{ Fx_minversion_inline(3) }} chrome のリソースは、信頼されていないソースから読み込まれたページに含まれる、またはそのようなページに挿入された <img>, <script> またはその他の要素から参照できなくなりました。この制限は、信頼できないソースの中で定義された要素と、信頼された拡張機能によって追加された要素のいずれに対しても適用されます。もしそのような参照を明示的に許可する必要がある場合には、古いバージョンのFirefox と同じ結果を得るために、<code>contentaccessible</code> フラグを <code>yes</code> と指定してください。詳細は<span class="comment"> {{ bug(436989) }} を参照してください。</span></p> - -<p><code>contentaccessible</code> フラグはコンテントパッケージに対してのみ適用でき、ロケールまたはスキンの登録に対しては無視されます。しかしながら、マッチしたロケールおよびスキンのパッケージは、コンテントパッケージにも露出するでしょう。</p> - -<p><strong>注:</strong> 古いバージョンの Firefox は <code>contentaccessible</code> フラグを解釈しないため、 Firefox 3 とそれ以前のバージョンの Firefox の両方に対応するよう設計された拡張機能は、フォールバックのための指定を必要とするでしょう。例:</p> - -<pre style="white-space: pre-wrap;">content packagename chrome/path/ -content packagename chrome/path/ contentaccessible=yes -</pre> - -<p><span class="comment">これは {{ bug(292789) }} のため、</span><span class="comment">Firefox 3 RC 1 において変更されました。</span></p> - -<h3 id="os" name="os">os</h3> - -<p>{{ Fx_minversion_inline(3) }} 拡張機能(およびテーマ)は、Firefoxが動作しているオペレーティングシステムに依存した異なる機能を提供することができます。値はそのプラットフォームの <a href="/ja/OS_TARGET" title="ja/OS_TARGET">OS_TARGET</a> の値と比較されます。</p> - -<pre class="eval">os=WINNT -os=Darwin -</pre> - -<p>OSの名前のより詳しいリストは<a href="/ja/OS_TARGET" title="ja/OS_TARGET">OS_TARGET</a>を参照してください。OSの名前は大文字小文字は区別されません。</p> - -<h3 id="osversion" name="osversion">osversion</h3> - -<p>{{ Fx_minversion_inline(3) }} 拡張機能あるいはテーマは動作しているオペレーティングシステムのバージョンによって異なる挙動を示す必要に迫られることがあります。例えば、あるテーマでMac OS X 10.5(以降)用に、10.4(以前)とは異なる外観を適用したい場合はこのようになります:</p> - -<pre class="eval">osversion>=10.5 -</pre> - -<h3 id="abi" name="abi">abi</h3> - -<p>{{ Fx_minversion_inline(4) }} コンポーネントが特定の API に対してのみ互換性がある場合、この指定で ABI を記述する事ができます。例:</p> - -<pre>binary-component abi=WINNT_<code>x86-MSVC </code></pre> - -<p>より詳しい情報は <a href="/ja/XPCOM_ABI" title="ja/XPCOM ABI">XPCOM ABI</a> を参照してください。</p> - -<h3 id="platform_.28.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E5.9B.BA.E6.9C.89.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.29" name="platform_.28.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E5.9B.BA.E6.9C.89.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.29">platform (プラットフォーム固有パッケージ)</h3> - -<p>パッケージの中には、プラットフォーム固有を示すために専用のフラグでマークされているものがあります。 このようなパッケージでは、コンテント、スキン、ロケールのうちのいくつかのパートが、実行されているプラットフォームによって異なっているために、 「Windows と OS/2」、「Macintosh」、「{{ 訳語("Unix 系", "unix-lile") }}」のプラットフォームのために、3 セットの異なるファイルが含まれることになります。 例えば、ダイアログの「OK」と「キャンセル」ボタンの並び順は、プラットフォームによって異なります。 また同様にいくつかの項目の名前も異なっています。</p> - -<p>「platform」{{ 訳語("修飾子", "modifier") }}は、コンテントの登録の場合のみ{{ 訳語("解釈", "parse") }}され、ロケールとスキンの登録では行われません。 しかしながら、このフラグはパッケージの content、locale、skin のどのパートに対しても、指定されれば適用されます。</p> - -<p>そのパッケージがプラットフォーム固有であることを示すためには、 以下の例のように「platform」修飾子を「content」行のパス指定の後に置きます。</p> - -<pre class="eval">content global-platform jar:toolkit.jar!/toolkit/content/global-platform/ platform -</pre> - -<p>これを作成するマニフェストで指定すると、global-platform ディレクトリ以下には、 <code>win</code> (Windows/OS2)、 <code>mac</code> (OS9/OSX)、 <code>unix</code> (それ以外の全て) のサブディレクトリを置く必要があります。 これらのサブディレクトリ以外に置かれた任意のファイルは、全て無視されます。</p> - -<h3 id="xpcnativewrappers" name="xpcnativewrappers">xpcnativewrappers</h3> - -<p>Chrome パッケージでは、{{ 訳語("悪意のある", "malicious") }}コンテンツにアクセスした場合に、それらからパッケージのコードを自動的に保護するために、 セキュリティのメカニズムである <a href="/ja/XPCNativeWrapper" title="ja/XPCNativeWrapper">XPCNativeWrapper</a> を使用するかどうかを決めることができます。 詳細については、<a href="/ja/Safely_accessing_content_DOM_from_chrome" title="ja/Safely_accessing_content_DOM_from_chrome">chrome から コンテントの DOM に安全にアクセスする方法</a>を参照してください。</p> - -<p>このフラグは Firefox 1.5 以前では初期状態で有効となっており、Firefox 4 までの間は、 <code>xpcnativewrappers=no</code> と指定することによって手動で無効化することができました。</p> - -<div class="geckoVersionNote"> -<p>{{ gecko_callout_heading("2.0") }}</p> - -<p>このフラグは Gecko 2.0 {{ geckoRelease("2.0") }} で廃止されたため、<code>XPCNativeWrapper</code> はどのような方法によっても無効化できなくなりました。このフラグ無しで動作するようにあなたのアドオンを更新するには以下を参考にしてください:</p> - -<ul> - <li>あなたのアドオンがコンテンツ領域のオブジェクトに適用された XBL のバインディングに依存している場合(XBL のバインディングによって追加された関数を呼んだりプロパティの値を取得・設定したりするためにはそうする必要がありました)、生のオブジェクトに触るためにそのオブジェクトの <a href="/ja/wrappedJSObject" title="ja/wrappedJSObject"><code>wrappedJSObject</code></a> プロパティを参照する必要があるでしょう。</li> - <li>Web ページの中で定義された関数を呼び出したりプロパティにアクセスしたりする必要がある場合 -- 例えば、あなたのアドオンで Web ページの中で定義された JavaScript の関数を呼ぶボタンを追加したい場合。</li> -</ul> -</div> - -<p>xpcnativewrappers フラグは、コンテントパッケージのみに適用され、 ロケールとスキンの登録では識別されません。</p> - -<h2 id="Chrome_.E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.81.AE.E4.BE.8B" name="Chrome_.E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.81.AE.E4.BE.8B">Chrome マニフェストの例</h2> - -<pre class="eval" style="white-space: pre-wrap;">content necko jar:comm.jar!/content/necko/ -locale necko en-US jar:en-US.jar!/locale/en-US/necko/ -content xbl-marquee jar:comm.jar!/content/xbl-marquee/ -content pipnss jar:pipnss.jar!/content/pipnss/ -locale pipnss en-US jar:en-US.jar!/locale/en-US/pipnss/ -# Firefox-only -overlay <a class="external" rel="freelink">chrome://browser/content/pageInfo.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PageInfoOverlay.xul</a> application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} -# SeaMonkey-only -overlay <a class="external" rel="freelink">chrome://navigator/content/pageInfo.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PageInfoOverlay.xul</a> application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} -overlay <a class="external" rel="freelink">chrome://communicator/content/pref/preftree.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PrefOverlay.xul</a> -content pippki jar:pippki.jar!/content/pippki/ -locale pippki en-US jar:en-US.jar!/locale/en-US/pippki/ -content global-platform jar:toolkit.jar!/content/global-platform/ platform -skin global classic/1.0 jar:classic.jar!/skin/classic/global/ -override <a class="external" rel="freelink">chrome://global/content/netError.xhtml</a> jar:embedder.jar!/global/content/netError.xhtml -content inspector jar:inspector.jar!/content/inspector/ -</pre> - -<h2 id=".E5.8F.A4.E3.81.84_contents.rdf_.E5.BD.A2.E5.BC.8F.E3.81.AE.E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88" name=".E5.8F.A4.E3.81.84_contents.rdf_.E5.BD.A2.E5.BC.8F.E3.81.AE.E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88">古い contents.rdf 形式のマニフェスト</h2> - -<p>プレインテキスト形式のマニフェストの導入 (Firefox 1.5 と Toolkit 1.8 で実施) より前には、"contents.rdf" という名称の RDF によるマニフェストが chrome の登録のために使用されていました。 この形式は{{ 訳語("非推奨", "deprecated") }}です。 しかしながら、バージョン2より前の SeaMonkey は、プレインテキスト形式のマニフェストをまだサポートしていないため、 Firefox 1.0 に対する後方互換性の維持や、Mozilla スイート への対応が必要な拡張機能では、contents.rdf マニフェストが必要になります。</p> - -<p>{{ gecko_minversion_note("1.9.2", "<code>contents.rdf</code> 形式のマニフェストファイルは Gecko 1.9.2 以降では利用できなくなりました。この形式を使用しているアドオンであっても、既にインストールされていた物は動作し続けますが、新たにインストールすることはできません。アドオンを削除してインストールし直す際は、プレインテキスト形式のマニフェストを使うようにアドオンが修正されていることを確かめて下さい。") }}</p> - -<h2 id="Toolkit_API_.E5.85.AC.E5.BC.8F.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9" name="Toolkit_API_.E5.85.AC.E5.BC.8F.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9"><a href="/ja/Toolkit_API" title="ja/Toolkit_API">Toolkit API</a> 公式リファレンス</h2> - -<p>{{ page("en-US/docs/Toolkit_API/Official_References") }}</p> diff --git a/files/ja/mozilla/command_line_options/index.html b/files/ja/mozilla/command_line_options/index.html deleted file mode 100644 index 9ce45e21b7..0000000000 --- a/files/ja/mozilla/command_line_options/index.html +++ /dev/null @@ -1,484 +0,0 @@ ---- -title: コマンドラインオプション -slug: Mozilla/Command_Line_Options -tags: - - Add-ons - - Administration - - Command Line - - Developing Mozilla - - Extensions - - NeedsUpdate - - QA - - User_Documentation - - XULRunner -translation_of: Mozilla/Command_Line_Options ---- -<p><span class="seoSummary">コマンドラインオプションを使用して、Mozilla アプリケーションのさまざまな起動オプションを指定します。</span>例えばプロファイルマネージャーを迂回して、(複数のプロファイルを持っている場合は) 特定のプロファイルを開くために、コマンドライン設定オプションを使用することができます。また、どのコンポーネントをはじめに開くかなど、Mozilla アプリケーションをどのように起動するかも管理できますし、そのコンポーネントが起動したとき何をするかも指定することができます。<span class="seoSummary">このページでは、一般的に利用できるオプションや、それらをどのように使うかを解説します。Shift + F2 を押下すると、コマンドラインインターフェイスを開くことができます。</span></p> - -<h2 id="Syntax_Rules" name="Syntax_Rules">構文規則</h2> - -<p>始めに、すべてのオプションに適用される構文規則を説明します。</p> - -<ul> - <li>空白の入っているパラメーターをコマンドに使用する場合は、引用符で囲ってください。例: "Joel User"</li> - <li>コマンドアクションでは、大文字・小文字は関係ありません。</li> - <li>プロファイル名以外のコマンドパラメーターでは、大文字・小文字は関係ありません。</li> - <li>空白 ( ) はコマンドとパラメーターとを切り離します。</li> - <li>各メッセージオプションは、<code><var>フィールド</var>=<var>値</var></code> のように構文の後に続きます。例えば: - <ul> - <li><code>to=</code><span class="nowiki"><code>foo@nowhere.net</code></span></li> - <li><code>subject=cool page</code></li> - <li><code>attachment=www.mozilla.org</code></li> - <li><code>attachment='<span class="nowiki">file:///c:/test.txt</span>'</code></li> - <li><code>body=check this page or also in Thunderbird 52 and newer: body=c:\path\to\file.txt</code></li> - </ul> - </li> - <li>複数のメッセージオプションは、例えば <code>"<span class="nowiki">to=foo@nowhere.net,subject=cool page</span>"</code> のように、カンマ (,) で切り離します。カンマの前後に空白 ( ) を入れてはいけません。ひとつの欄に複数の値を割り当てるには、<code>"<span class="nowiki">to='foo@nowhere.net,foo@foo.de',subject=cool page</span>"</code> のように引用符 (') でくくってください。</li> -</ul> - -<h2 id="How_to_use_command_options" name="How_to_use_command_options">コマンドオプションの使い方</h2> - -<p>コマンドラインオプションは、アプリケーションを起動するコマンドの後に入力します。引数を持つコマンドもあります。引数は、コマンドラインオプションの後に入力します。省略形を持つコマンドもあります。例えば、コマンドラインオプション "-editor" は "-edit" と省略できます (使用できる省略形については後述します)。また、引数はを引用符で括らなければならない場合があります (オプションの説明で言及します)。複数のコマンドラインオプションを指定できます。通常、構文は以下のようになります:</p> - -<pre>application -option -option "argument" -option argument -</pre> - -<h3 id="Examples" name="Examples">例</h3> - -<p>以下は "-ProfileManager" コマンドを使用して、Firefox や Thunderbird のプロファイルマネージャーを開くコマンドラインオプションの例です:</p> - -<h4 id="Windows" name="Windows">Windows</h4> - -<p>Windows のスタートメニューから [ファイル名を指定して実行] を選択します。次のように入力します。</p> - -<pre>firefox -ProfileManager -</pre> - -<h4 id="Mac_OS_X" name="Mac_OS_X">Mac OS X</h4> - -<p>アプリケーションフォルダーのユーティリティに移動します。ターミナルを開いて次のように入力します。</p> - -<pre>cd /Applications/Firefox.app/Contents/MacOS -./firefox -ProfileManager -</pre> - -<p>Firefox Nightly を使用している場合は、次のように入力できます。</p> - -<pre>cd /Applications/FirefoxNightly.app/Contents/MacOS -./firefox -ProfileManager -</pre> - -<h4 id="Linux" name="Linux">Linux</h4> - -<p>ターミナルを開いて次のように入力します。</p> - -<pre>cd <em>Thunderbird</em><var> installation directory</var> -./thunderbird -ProfileManager -</pre> - -<p>上記の例は、Mozilla の Thunderbird メールクライアントで "-ProfileManager" コマンドラインオプションを呼び出しています。</p> - -<h2 id="User_Profile" name="User_Profile">ユーザープロファイル</h2> - -<h3 id="-CreateProfile_profile_name" name="-CreateProfile_profile_name"><code>-CreateProfile <var>profile_name</var></code></h3> - -<p>デフォルトのディレクトリーに新しいプロファイルを作成します。ただしアプリケーションは起動されません。プロファイルは、プロファイルマネージャーで <code><var>profile_name</var></code> と名前がつきます。<var>profile_name</var> には空白 ( ) は使えません。この操作を成功させるには実行中のアプリケーションインスタンスが存在しないか、<code>-no-remote</code> オプションを使用しなければなりません。</p> - -<pre>firefox -CreateProfile JoelUser -</pre> - -<h3 id="-CreateProfile_.22profile_name_profile_dir.22" name="-CreateProfile_.22profile_name_profile_dir.22"><code>-CreateProfile "<var>profile_name</var> <var>profile_dir</var>"</code></h3> - -<p><code><var>profile_dir</var></code> ディレクトリーに新しいプロファイルを作成します。ただしアプリケーションは起動されません。プロファイルは、プロファイルマネージャーで <code><var>profile_name</var></code> と名前がつきます。<code><var>profile_name</var></code> と <code><var>profile_dir</var></code> は引用符で囲ってください。また、1 個の空白で区切ってください (前の構文と同じく、<code>profile_name</code> に空白は使えません)。</p> - -<p>この操作を成功させるには実行中のアプリケーションインスタンスが存在しないか、<code>-no-remote</code> オプションを使用しなければなりません。</p> - -<p>注: <code><var>profile_dir</var></code> や <code><var>profile_name</var></code> というプロファイルが存在する場合はエラーになります。</p> - -<pre>firefox -CreateProfile "JoelUser c:\internet\joelusers-moz-profile" -</pre> - -<h3 id="-migration" name="-migration"><code>-migration</code></h3> - -<p>設定移行ウィザードで起動します。</p> - -<h3 id="-new-instance" name="-new-instance"><code>-new-instance</code></h3> - -<p>実行中のインスタンスの新しいウィンドウではなく、新しいインスタンスを起動します。アプリケーションの複数のコピーを同時に実行できます。</p> - -<pre>firefox -new-instance -P "Another Profile" -</pre> - -<div class="note"> -<p><strong>注記:</strong> Windows では使用できません。{{bug(855899)}} をご覧ください。</p> -</div> - -<h3 id="-no-remote" name="-no-remote"><code>-no-remote</code></h3> - -<p></p> - -<p>リモートコマンドを送受信しません。暗黙的に -new-instance も含みます。</p> - -<pre>firefox -no-remote -P "Another Profile" -</pre> - -<div class="note"><strong>注記:</strong> Firefox 9 よりすべてのプラットフォームで、オプション名が暗示することを真に意味するようになりました。すなわち、このパラメーターをつけて作成したインスタンスは、リモートコマンドを送受信しません。{{bug(650078)}} をご覧ください。これは、インスタンスが再使用されないということです。またこのパラメーターを使用すると、どのような場合でも新しいインスタンスを作成します。</div> - -<h3 id="-override_.2Fpath.2Fto.2Foverride.ini" name="-override_.2Fpath.2Fto.2Foverride.ini"><code>-override <em>/path/to/</em>override.ini</code></h3> - -<p>指定した <code>override.ini</code> ファイルを読み込んで <code>application.ini</code> ({{Source("browser/app/application.ini")}}) をオーバーライドします。これは、以下のような <code>override.ini</code> を読み込ませることで、起動時の設定移行ウィザードを表示させないようにするのに利用できます。<strong>Firefox</strong> のみ。</p> - -<pre>[XRE] -EnableProfileMigrator=0</pre> - -<h3 id="-ProfileManager_or_-P" name="-ProfileManager_or_-P"><code>-ProfileManager</code></h3> - -<p>プロファイルマネージャーを起動します。短縮形: <strong>-P</strong> でプロファイル名を指定しない。</p> - -<h3 id="-P_.22profile_name.22" name="-P_.22profile_name.22"><code>-P "<var>profile_name</var>"</code></h3> - -<p>プロファイルマネージャーを迂回して、<var>profile_name</var> と名前の付いたプロファイルでアプリケーションを立ち上げます。複数のプロファイルを使い分ける際に便利です。<var>profile_name</var> は大文字・小文字を区別します。ご注意ください。プロファイル名を指定しない場合は、代わりにプロファイルマネージャーを開きます。7.x より古いバージョンは、Linux では小文字の p は Purify モード(メモリリーク検出)での起動となるので、大文字の P を使用する必要があります。他のプラットフォームでは大文字と小文字両方が使えます。</p> - -<pre>firefox -P "Joel User" -</pre> - -<h3 id="-profile_.22.2Fpath.2Fto.2Fprofile.22" name="-profile_.22.2Fpath.2Fto.2Fprofile.22"><code>-profile "<var>profile_path</var>"</code></h3> - -<p>指定されたパスにあるプロファイルで起動します。<strong>Firefox</strong>、<strong>Thunderbird</strong>、<strong>SeaMonkey2.x</strong> のみ。</p> - -<p><code>"profile_path"</code> は、絶対パス (<code>"<var>/path/to/profile</var>"</code>) または相対パス <code>("<var>path/to/profile</var>"</code>) を使用できます。</p> - -<div class="note"><strong>注記:</strong> Firefox 4.0 より、Mac OS X ではリグレッションのため、相対パス指定をサポートしません。{{bug(673955)}} をご覧ください。</div> - - -<h2 id="Browser" name="Browser">ブラウザー</h2> - -<h3 id="-browser" name="-browser"><code>-browser</code></h3> - -<p>ブラウザーコンポーネントを起動します。<strong>Firefox</strong> と <strong>SeaMonkey</strong> のみ。</p> - -<h3 id="-foreground" name="-foreground"><code>-foreground</code></h3> - -<p>このインスタンスを、アクティブなアプリケーションにします。</p> - -<h3 id="-headless" name="-headless"><code>-headless</code></h3> - -<p>Firefox を <a href="/ja/docs/Mozilla/Firefox/Headless_mode">ヘッドレスモード</a> で実行します。これは、デバッグや自動テストといった用途に役立ちます。Linux では Firefox 55 以降、Windows および Mac OS X では Firefox 56 以降で使用できます。</p> - -<h3 id="-new-tab_URL" name="-new-tab_URL"><code>-new-tab <var>URL</var></code></h3> - -<p><var>URL</var> を新しいタブで開きます。<strong>Firefox</strong> と <strong>SeaMonkey2.x</strong> のみ。</p> - -<h3 id="-new-window_URL" name="-new-window_URL"><code>-new-window <var>URL</var></code></h3> - -<p><var>URL</var> を新しいウィンドウで開きます。<strong>Firefox</strong> と <strong>SeaMonkey2.x</strong> のみ。</p> - -<h3 id="-preferences" name="-preferences"><code>-preferences</code></h3> - -<p>オプション/環境設定ウィンドウを開きます。<strong>Firefox</strong> と <strong>SeaMonkey2.x</strong> のみ。</p> - -<h3 id="-private" name="-private"><code>-private</code></h3> - -<p>ユーザー設定に関わらなく、Firefox をプライベートウィンドウモードで開きます。<strong>Firefox 3.6</strong> 以降のみ。</p> - -<p><strong>Firefox 20</strong> 以降では、古い Ubuntu で機能しません。14.04 では機能することが確認されています。</p> - -<h3 id="-private-toggle" name="-private-toggle"><code>-private-window</code></h3> - -<p>既存の Firefox のインスタンスで、新しいプライベートウィンドウを開きます。<strong>Firefox 20</strong> 以降のみ。</p> - -<h3 id="-private-toggle_URL" name="-private-toggle_URL"><code>-private-window URL</code></h3> - -<p>URL を新しいプライベートウィンドウで開きます。すでにプライベートウィンドウを開いている場合は、既存のウィンドウで新しいタブが開きます。<strong> Firefox 29</strong> 以降のみLinux Mint 17 の <strong>Firefox 31</strong> や、Windows 7 の <strong>Firefox 48</strong> では機能しません。プライベートではないウィンドウで開きます。</p> - -<h3 id="-search_term" name="-search_term"><code>-search <var>term</var></code></h3> - -<p><var>term</var> を既定の検索エンジンで検索します。<strong>Firefox</strong> と <strong>SeaMonkey 2.1</strong> 以降のみ。</p> - -<h3 id="-setDefaultBrowser" name="-setDefaultBrowser"><code>-setDefaultBrowser</code></h3> - -<p>アプリケーションを既定のブラウザーに設定します。<strong>Firefox</strong> のみ。</p> - -<h3 id="-url_URL" name="-url_URL"><code>-url <var>URL</var></code></h3> - -<p><var>URL</var> をユーザー設定に応じて新しいタブまたはウィンドウで開きます。<code>-url</code> は省略可。空白区切りで複数の URL を指定できます。<strong>Firefox</strong> と <strong>SeaMonkey</strong> のみ。</p> - -<div class="note"><strong>注意:</strong> 複数の URL を開く場合、Firefox は常に新しいウィンドウに開きます。</div> - -<pre>firefox www.mozilla.com -firefox www.mozilla.com developer.mozilla.org</pre> - -<h2 id="Mail.2FNews" name="Mail.2FNews">メール/ニュース</h2> - -<h3 id="-addressbook" name="-addressbook"><code>-addressbook</code></h3> - -<p>アドレス帳を起動します。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p> - -<h3 id="-compose_message_options" name="-compose_message_options"><code>-compose <var>message_options</var></code></h3> - -<p>メール作成画面を起動します。<a href="#Syntax_Rules">構文規則</a> を参照してください。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p> - -<pre>thunderbird -compose "<span class="nowiki">to=foo@nowhere.net</span>"</pre> - -<h3 id="-mail" name="-mail"><code>-mail</code></h3> - -<p>メールクライアントを起動します。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p> - -<h3 id="-news_news_URL" name="-news_news_URL"><code>-news</code> <var>news_URL</var></h3> - -<p>ニュースクライアントを起動します。オプションである <var>news_URL</var> が与えられた場合、その指定されたニュースグループを開きます。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p> - -<pre>thunderbird -news <span class="nowiki">news://server/group</span> -</pre> - -<h3 id="-options" name="-options"><code>-options</code></h3> - -<p>オプション/環境設定ウィンドウを開きます。<strong>Thunderbird</strong> のみ。</p> - -<h3 id="-offline" name="-offline"><code>-offline</code></h3> - -<p>オフラインモードで起動します。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p> - -<h3 id="-setDefaultMail" name="-setDefaultMail"><code>-setDefaultMail</code></h3> - -<p>アプリケーションを既定のメールクライアントに設定します。<strong>Thunderbird</strong> のみ。</p> - -<h2 id="Calendar" name="Calendar">カレンダー</h2> - -<h3 id="-calendar" name="-calendar"><code>-calendar</code></h3> - -<p>カレンダークライアントを起動します。<strong>Sunbird</strong> のみ。</p> - -<h3 id="-showdate_date" name="-showdate_date"><code>-showdate <var>date</var></code></h3> - -<p>与えられた <var>date</var> のスケジュールを表示します。<strong>Sunbird</strong> のみ。</p> - -<pre>sunbird -showdate 08/04/2008 -</pre> - -<h3 id="-subscribe_URL_or_-url_URL" name="-subscribe_URL_or_-url_URL"><code>-subscribe <var>URL</var></code> または <code>-url <var>URL</var></code></h3> - -<p>与えられた <var>URL</var> を購読します。<strong>Sunbird</strong> のみ。</p> - -<h2 id="Other_Components" name="Other_Components">その他のコンポーネント</h2> - -<h3 id="-chat" name="-chat"><code>-chat</code></h3> - -<p>IRC クライアント <a class="link-https" href="https://addons.mozilla.org/ja/firefox/addon/16">ChatZilla</a> がインストールされている場合、ChatZilla を起動します。</p> - -<h3 id="-devtools" name="-devtools"><code>-devtools</code></h3> - -<p>内蔵の <a href="/ja/docs/Tools">開発ツール</a> を開いた状態で起動します。</p> - -<h3 id="-editor_URL_or_-edit_URL" name="-editor_URL_or_-edit_URL"><code>-editor <var>URL</var></code> または <code>-edit <var>URL</var></code></h3> - -<p>与えられた <var>URL</var> に対して、エディター (Composer) を起動します (<var>URL</var> はオプションです)。<strong>SeaMonkey</strong> のみ。</p> - -<pre>seamonkey -edit www.mozilla.org -</pre> - -<h3 id="-inspector_URL" name="-inspector_URL"><code>-inspector <var>URL</var></code></h3> - -<p><a href="/ja/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a> がインストールされている場合、DOM Inspector を起動し、与えられた <var>URL</var> を検査します (<var>URL</var> はオプションです)。</p> - -<h3 id="-jsconsole" name="-jsconsole"><code>-jsdebugger</code></h3> - -<p><a href="/ja/docs/Tools/Browser_Toolbox">ブラウザーツールボックス</a> (旧ブラウザーデバッガー) とともにアプリケーションを起動します。これは Venkman デバッガーとは異なります (-venkman オプションをご覧ください)。</p> - -<h3 id="-jsconsole" name="-jsconsole"><code>-jsconsole</code></h3> - -<p><a href="/ja/docs/Error_Console" title="Error_Console">エラーコンソール</a>、または Firefox では <a href="/ja/docs/Tools/Browser_Console">ブラウザーコンソール</a> を起動します。</p> - -<h3 id="-purgecaches" name="-purgecaches"><code>-purgecaches</code></h3> - -<p>Gecko (レイアウトエンジン) は JavaScript キャッシュを持っており、起動時にリセットされません。これを消去します。</p> - -<h3 id="-start-debugger-server_port" name="-start-debugger-server_port"><code>-start-debugger-server port</code></h3> - -<p>Firefox のみ。<code>port</code> で指定したポート番号で、デバッガーサーバーを起動します。別の Firefox のインスタンスが、開発ツールをこの Firefox のインスタンスに接続できるようにします。<a href="/ja/docs/Tools/Remote_Debugging/Debugging_Firefox_Desktop">デスクトップ版 Firefox のデバッグを行う</a> のページをご覧ください。</p> - -<p>引数 <code>port</code> は省略可能であり、省略した場合は 6000 番ポートで待ち受けます。</p> - -<h3 id="-venkman" name="-venkman"><code>-venkman</code></h3> - -<p>JavaScript デバッガー <a href="/ja/docs/Venkman" title="Venkman">Venkman</a> がインストールされている場合、Venkman を起動します。</p> - -<h2 id="XULRunner" name="XULRunner">XULRunner</h2> - -<h3 id="-app_.2Fpath.2Fto.2Fapplication.ini" name="-app_.2Fpath.2Fto.2Fapplication.ini"><code>-app <em>/path/to/</em>application.ini</code></h3> - -<p><em>path/to</em> にある <a href="/ja/docs/XULRunner" title="XULRunner">XULRunner</a> アプリケーションを新しいプロセスで起動します。 バージョン 3 以上の Firefox のみ。</p> - -<h3 id="--install-app_pathtomyapplication.(xpixulapp)" name="--install-app_pathtomyapplication.(xpixulapp)"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--install-app path/to/myapplication.(xpi|xulapp)</span></h3> - -<p>システムの path/to に、XULRunner アプリケーションをインストールします。アプリケーションはシステムの既定の場所 (program files|Applications|usr/lib) に vendorname/applicationName でインストールされます。アプリケーションは、各システムの一般的な手順でアンインストールできます。</p> - -<pre style="margin-top: 0px; margin-bottom: 1.286em; font-size: 14px;">"C:\Program Files\Mozilla XULRunner\1.8.0.4\xulrunner\xulrunner.exe" --install-app "C:\Users\Billdo\Desktop\myapplication.xpi"</pre> - -<pre><span style="font-family: courier new,andale mono,monospace; line-height: normal;">/opt/xulrunner/1.8.0.4/xulrunner/xulrunner --install-app ~/Desktop/myapplication.xulapp</span></pre> - -<pre><span style="font-family: courier new,andale mono,monospace; line-height: normal;"></span><span style="font-family: courier new,andale mono,monospace; line-height: normal;">/Library/Frameworks/XUL.framework/xulrunner-bin --install-app ~/Desktop/myapplication.xpi</span></pre> - -<h3 id="--register-global" name="--register-global"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--register-global</span></h3> - -<p>すべてのユーザー向けに、システムで XULRunner を登録します。admin / root として実行しなければなりません。</p> - -<h3 id="--register-user" name="--register-user"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--register-user</span></h3> - -<p>単独のユーザー向けに XULRunner を登録します。</p> - -<h3 id="--unregister-global" name="--unregister-global"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--unregister-global</span></h3> - -<p>すべてのユーザーで XULRunner の登録を解除します。</p> - -<h3 id="--unregister-user" name="--unregister-user"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--unregister-user</span></h3> - -<p>単独のユーザーで XULRunner の登録を解除します。</p> - -<h2 id="Chrome" name="Chrome">クローム</h2> - -<h3 id="-chrome_chrome_URL" name="-chrome_chrome_URL"><code>-chrome <var>chrome_URL</var></code></h3> - -<p>指定されたクロームを読み込みます。</p> - -<pre>firefox -chrome <a rel="freelink">chrome://inspector/content</a> -</pre> - -<h3 id="-register_chrome_URL" name="-register_chrome_URL"><code>-register <var>chrome_URL</var></code></h3> - -<p>指定されたクロームを登録します。ただしアプリケーションは起動されません。</p> - -<h2 id="Add-ons" name="Add-ons">アドオン</h2> - -<p>{{gecko_minversion_note("1.9.2", "-install-global-extension と -install-global-theme は Gecko 1.9.2 以降で削除されました。")}}</p> - -<h3 id="-install-global-extension_.2Fpath.2Fto.2Fextension" name="-install-global-extension_.2Fpath.2Fto.2Fextension"><code>-install-global-extension <var>/path/to/extension</var></code></h3> - -<p>アプリケーションディレクトリーに拡張機能をインストールします。パラメーターは拡張機能へのパスになります。コンピューターの管理者権限が必要です。</p> - -<h3 id="-install-global-theme_.2Fpath.2Fto.2Ftheme" name="-install-global-theme_.2Fpath.2Fto.2Ftheme"><code>-install-global-theme <var>/path/to/theme</var></code></h3> - -<p>上と同様に、テーマをインストールします。コンピューターの管理者権限が必要です。</p> - -<div class="note"> -<p><strong>注記:</strong> Firefox 2.0.0.7 以降、コマンドライン引数 <code>-install-global-extension</code> および <code>-install-global-theme</code> は、ローカルディスクまたはマップ済みドライブ上にあるアドオンのインストールに限って利用できます。今後、ネットワーク共有ディレクトリーからのインストールはサポートされません。</p> -</div> - -<h3 id="-safe-mode" name="-safe-mode"><code>-safe-mode</code></h3> - -<p>今回の起動に限って、すべての拡張機能を無効化した状態でアプリケーションを起動します (拡張機能は読み込まれませんが、拡張機能マネージャーのデータソースで恒久的に無効にされるわけではありません)。</p> - -<h2 id="Locale" name="Locale">ロケール</h2> - -<h3 id="-UILocale_locale" name="-UILocale_locale"><code>-UILocale <var>locale</var></code></h3> - -<p>UI ロケールとして <var>locale</var> リソースを使って起動します。</p> - -<pre>firefox -UILocale en-US -</pre> - -<h2 id="Remote_Control" name="Remote_Control">リモートコントロール</h2> - -<h3 id="-remote_remote_command" name="-remote_remote_command"><code>-remote <var>remote_command</var></code><var> {{obsolete_inline}}</var></h3> - -<div class="note"> -<p><var>この機能は Firefox 36.0 で削除、36.0.1 で復帰、さらに 39.0 で再び削除されました。</var>{{bug(1080319)}} をご覧ください。</p> -</div> - -<p>すでに作動しているアプリケーションプロセス内で <code><var>remote_command</var></code> を実行します。</p> - -<pre>firefox -remote "openURL(www.mozilla.org, new-tab)" -</pre> - -<div class="note"> -<p>このオプションは X-Window Unix プラットフォームのみで使用できます。</p> -</div> - -<h2 id="Miscellaneous" name="Miscellaneous">その他</h2> - -<h3 id="-attach-console" name="-attach-console"><code>-attach-console</code></h3> - -<p>メッセージのデバッグのために新しいウィンドウを開かず、アプリケーションを起動したウィンドウにデバッグコンソール向けのメッセージを書き込みます。Windows オペレーティングシステムのみサポートします。</p> - -<h3 id="-console" name="-console"><code>-console</code></h3> - -<p>デバッグコンソールとともにアプリケーションを起動します。Windows のみ。</p> - -<h3 id="-h_or_-help_or_-.3F" name="-h_or_-help_or_-.3F"><code>-h</code> または <code>-help</code> または <code>-?</code></h3> - -<p>利用できる全てのコマンドラインオプションの一覧を表示します。Windows では <code><span class="nowiki">|more</span></code> のようなリダイレクトと組み合わせた場合のみ機能します。ご注意ください ({{Bug(355889)}})。このオプションはコマンドラインでのみ利用可能です。</p> - -<h3 id="-osint" name="-osint"><code>-osint</code></h3> - -<p>アプリケーションに OS のシェルから起動されたことを通知します。これはアプリケーションを起動するときに、呼び出し側が OS のシェルが提供するすべての機能を提供するときを除いて指定されるべきではありません。({{Bug(384384)}})</p> - -<h3 id="-requestPending" name="-requestPending"><code>-requestPending</code></h3> - -<p>アプリケーションにコマンドライン指定されたものと同じ URL を開く Windows DDE リクエストが存在することを通知します。これはアプリケーションを起動するときに、呼び出し側が OS のシェルが提供するすべての機能を提供するときを除いて指定されるべきではありません。({{Bug(354005)}})</p> - -<h3 id="-silent" name="-silent"><code>-silent</code></h3> - -<p>デフォルトウィンドウを開きません。特定のウィンドウを開くコマンドライン引数と一緒に使うときに役に立ちますが、すでにデフォルトウィンドウが開いている場合は無効です。<strong>Firefox</strong>、<strong>Thunderbird3.x</strong>、<strong>SeaMonkey2.x</strong> のみ。</p> - -<h3 id="-tray" name="-tray"><code><strong>-tray</strong></code></h3> - -<p>システムトレイに最小化してアプリケーションを起動します。自動起動で役に立ちます。</p> - -<h3 id="-v_or_-version" name="-v_or_-version"><code>-v</code> または <code>-version</code></h3> - -<p>アプリケーションのバージョンを表示します。Windows では <code><span class="nowiki">|more</span></code> のようなリダイレクトと組み合わせた場合のみ機能します。ご注意ください ({{Bug(355889)}})。このオプションはコマンドラインでのみ利用可能です。</p> - -<h3 id="X11_options" name="X11_options">X11 オプション</h3> - -<p>以下のオプションは、Linux や他の Unix ベースシステムで X11/X.org ディスプレイおよびウィンドウシステム向けに構築および実行するアプリケーションのみで使用できます。</p> - -<h4 id="--classWM_CLASS" name="--classWM_CLASS">--class=WM_CLASS</h4> - -<p>アプリケーションが生成する X11 ウィンドウの WM_CLASS リソースクラスを設定します。</p> - -<h4 id="--displayDISPLAY" name="--displayDISPLAY">--display=DISPLAY</h4> - -<p>使用する X ディスプレイを設定します。</p> - -<h4 id="--g-fatal-warnings" name="--g-fatal-warnings">--g-fatal-warnings</h4> - -<p>すべての警告を fatal にします。</p> - -<h4 id="--sync" name="--sync">--sync</h4> - -<p>X コールを同期型にします。</p> - -<h2 id="Other_options_need_to_be_documented" name="Other_options_need_to_be_documented">文書化が必要な他のオプション</h2> - -<ul> - <li><code>-print-xpcom-dir</code></li> - <li><code>-print-xpcom-dirlist</code></li> - <li><code>-kill</code></li> - <li><code>-killAll</code></li> - <li><code>-f</code></li> - <li><code>-ftimeout</code></li> - <li><code>-fwait</code></li> - <li><code>-unsetDefaultMail</code></li> - <li>GTK options</li> -</ul> - -<h2 id="References" name="References">参考情報</h2> - -<ul> - <li><a href="/ja/docs/Chrome/Command_Line" title="Chrome/Command_Line">クローム: コマンドライン</a></li> - <li><a href="http://www-archive.mozilla.org/quality/browser/front-end/testcases/cmd-line/">コマンドライン機能のテストドキュメント</a> (mozilla.org)</li> - <li>{{Source("toolkit/xre/nsAppRunner.cpp")}}</li> - <li>{{Source("browser/components/nsBrowserContentHandler.js")}}</li> - <li>{{Source("suite/browser/nsBrowserContentHandler.js")}}</li> - <li>{{Source("mail/components/nsMailDefaultHandler.js")}}</li> - <li><a class="link-https" href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">インストーラーのコマンドラインオプション</a></li> -</ul> - -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - -<ul> - <li>Author(s): Ben Goodger, Steffen Wilberg, Seth Spitzer, Daniel Wang</li> - <li>Copyright Information: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li> -</ul> -</div> diff --git a/files/ja/mozilla/connect/index.html b/files/ja/mozilla/connect/index.html deleted file mode 100644 index eec70246f8..0000000000 --- a/files/ja/mozilla/connect/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Connect with Mozilla -slug: Mozilla/Connect -tags: - - Landing - - Mozilla -translation_of: Mozilla/Connect ---- -<p class="summary"><span id="result_box" lang="ja"><span>立ち上がり、発想し、協力して、 Web をつながっているすべてのデバイスでの体験を創造するために使われる主要なプラットフォームにしましょう。</span></span></p> - -<div class="column-container dev-program-callouts dev-program-block dev-program-first dev-program-column-wrapper"> -<div class="dev-program-callout"> -<div class="callout-link-container"> -<h2 id="Hacks_ブログ">Hacks ブログ</h2> - -<p>開かれた Web を開発する人々にとって中心となるリソースである Mozilla Hacks ブログでは、最新の Web 技術やブラウザーの機能についてのニュースや議論を提供しています。</p> - -<div class="callout-link-wrapper"><a class="callout-link ignore-external" href="https://hacks.mozilla.org/" style="white-space: normal;">すぐに読もう </a></div> -</div> -</div> - -<div class="dev-program-callout"> -<div class="callout-link-container"> -<h2 id="連絡方法">連絡方法</h2> - -<p><a href="http://mzl.la/devtools">開発ツールについてのすばらしいアイディア</a>を持っていますか。教えてください。そして、将来の機能を磨くのに役立てましょう。</p> -<a class="callout-link ignore-external" href="http://stackoverflow.com/r/mozilla" style="white-space: normal;"> </a></div> -</div> - -<div class="dev-program-callout"> -<div class="callout-link-container"> -<h2 id="MDN_を開拓しましょう">MDN を開拓しましょう</h2> - -<p>開拓するのがコードであっても文書であっても、<a href="/en-US/docs/MDN/Getting_Started">あなたが MDN をより良くするために手助けする方法</a>があります。あなたが MDN プロフィールを作成すればここで作業を見せたり、 MDN の機能を広める際に早めにアクセスしたりすることができます。</p> - -<div class="callout-link-wrapper"><a class="callout-link" href="/profile/edit" style="white-space: normal;">参加またはログイン </a></div> -</div> -</div> -</div> - -<div class="dev-program-explanation dev-program-block"> -<h2 id="Mozilla_と繋がりましょう">Mozilla と繋がりましょう</h2> - -<p>開発者は、世界中の人のためにサービスやアプリを開発しています。 The goal of Mozilla Developer Relations is to help developers to use open and standardized web technologies to succeed in achieving their goals. We offer help and other resources towards this goal, through various channels. We invite you to connect, learn, and share your knowledge.</p> - -<p>Reach out to us at devrel@mozilla.com or on the irc.mozilla.org #devrel IRC channel. We also have a newsletter keeping you informed about the latest happenings in the web scene around web apps and more. <a href="https://marketplace.firefox.com/developers/#newsletter-signup">Subscribe to the Apps & Hacks newsletter.</a></p> - -<p>We have a lot of plans and ideas for iteratively expanding our Developer Relations offerings, and we want you involved as we do so! So <a href="https://hacks.mozilla.org/">subscribe to the Hacks blog</a> and <a href="https://marketplace.firefox.com/developers/#newsletter-signup">ニュースレターを購読しましょう</a>!</p> - -<p>If you're on <a href="http://www.twitter.com/MozDevNet">Twitter</a>, <a href="http://www.twitter.com/MozDevNet">follow us</a> and hear about doc updates, jobs, contributor opportunities, and more.</p> - -<h2 id="Mozilla_に参加しましょう" style="line-height: 30px;"><strong>Mozilla に参加しましょう</strong></h2> - -<p>If you want to go beyond connecting with <strong>Mozilla</strong>, you can join <strong>Mozilla </strong>and help realize <a href="https://www.mozilla.org/mission/">Mozilla's mission of building a better Internet</a>. As a developer, you have skills to contribute in many areas, as well as the opportunity to enhance your skills. Mozilla is an open source project, so we "default to open." You can "view source" and contribute to our software development projects, like the Firefox browser for desktop and Android, Firefox OS, and Mozilla's websites. You can become part of an international community and get recognition for your efforts. Here are some of the advantages of contributing to the Mozilla project.</p> - -<h3 id="新しいことを学ぶ機会"><strong>新しいことを学ぶ機会 </strong></h3> - -<div> -<p>In writing code for an open source project, you may face problems you have not encountered before, which present learning opportunities for you. You can try out new tools and techniques in an open source project. For example, if you have never done unit testing, and cannot get permission to do so at work then coding for an open source project would be an excellent place to learn more about it. Contributing to open source gives you the opportunity to collaborate with and get to know many people around the world who have similar interests. Moreover, an open source organization like Mozilla has many contributors who can help you in solving problems you encounter. If you're just getting started contributing, you can look for "mentored" bugs, where an experienced contributor has offered to help a newcomer fix them.</p> - -<h3 id="貢献することで何が得られるのか"><strong>貢献することで何が得られるのか </strong></h3> - -<p>Exploring many things and gaining recognition in the community -- these are the intangible benefits of contributing to Mozilla. While we can't guarantee specific tangible benefits, many valued contributors receive free Mozilla gear and invitations to Mozilla-related events, and are first in line to be considered for internships. Moreover, your experience in contributing to an open source project might help you find a job. More and more employers of developers are looking at open source contributions. They like to see that you're blogging and contributing to mailing lists, and they like to see you listed as a contributor to an open source project. It may also help with the work experience section of your CV/resumé.</p> - -<h3 id="Mozilla_への貢献のしかた"><strong>Mozilla への貢献のしかた</strong></h3> - -<p>There are many project area for which you can contribute to Mozilla. You can find a current, complete list on the main Mozilla <a href="https://www.mozilla.org/contribute">Get Involved</a> page. Some areas that may interest you as a developer include:</p> - -<ul> - <li><a href="http://www.whatcanidoformozilla.org/">Coding</a></li> - <li><a href="http://www.whatcanidoformozilla.org/">Web development</a></li> - <li><a href="/en-US/Firefox_OS/Developing_Gaia">Firefox OS</a></li> - <li><a href="https://quality.mozilla.org/teams/">QA</a></li> - <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Addons">Add-ons</a></li> - <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Apps">Apps</a></li> - <li><a href="/en-US/docs/MDN/Getting_started">Developer documentation (here on MDN)</a></li> -</ul> -</div> -</div> - -<p> </p> - -<p class="dev-program-block"><img alt="マドリードでの Firefox OS workshop の開発者たち。" src="https://mdn.mozillademos.org/files/7479/PhonesUp.jpg" style="display: block; height: 359px; margin: 0px auto; max-width: 100%; width: 720px;"></p> - -<p> </p> - -<div class="column-container dev-program-block"> -<div class="column-7 dev-program-events"> -<h2 id="Mozilla_はどこ?">Mozilla はどこ?</h2> - -<p><a class="heading-link" href="https://www.mozilla.org/en-US/contribute/events/">イベントページで出席者と詳細を確認しましょう... </a></p> -</div> - -<div class="column-5"> -<h2 id="その他のリソース">その他のリソース</h2> - -<ul class="no-bullets"> - <li><a href="http://www.youtube.com/user/mozhacks">Mozilla Hacks (YouTube)</a> - - <ul> - <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqIHIUUv08hBCHq1OgPKhdo0">Firefox OS videos</a></li> - <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqLZNY22xKbTEzMfYo9PXAlm">Firefox Developer Tools videos</a></li> - </ul> - </li> - <li><strong>Twitter でフォローしてください</strong> - <ul class="no-bullets"> - <li><a href="https://twitter.com/mozdevnet">@MozDevNet</a>: MDN からのニュースとメモ</li> - <li><a href="https://twitter.com/mozhacks">@mozhacks</a>: Hacks ブログの最新情報</li> - <li><a href="https://twitter.com/mozappsdev">@mozappsdev</a>: ウェブ開発者向け</li> - <li> </li> - </ul> - </li> -</ul> -</div> -</div> diff --git a/files/ja/mozilla/debugging/index.html b/files/ja/mozilla/debugging/index.html deleted file mode 100644 index 377d49f860..0000000000 --- a/files/ja/mozilla/debugging/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: デバッグ -slug: Mozilla/Debugging -tags: - - 要更新 -translation_of: Mozilla/Debugging ---- -<p>Mozilla のような大きなプロジェクトをデバッグすることは、困難な作業であるかもしれません。幸い長年の間に Mozilla 開発者は、あなたがコードのデバッグするのを助けるための技術や特徴のみならず、考案された TIPS やテクニックも用意しました。また、あなたがデバッグする時、様々なツールが利用可能です。</p> -<p> </p> -<table class="mainpage-table"> - <tbody> - <tr> - <td colspan="2"> - <h2 id="文書のトピックス">文書のトピックス</h2> - </td> - </tr> - <tr> - <td> - <h3 id="デバッグトピックス">デバッグトピックス</h3> - <dl> - <dt> - <a class="internal" href="/ja/Debugging_memory_leaks" title="ja/Debugging memory leaks">メモリリークのデバッグ</a></dt> - <dd> - メモリリークのデバッグに役立つツールや技術について学ぶ。</dd> - <dt> - <a class="internal" href="/ja/Building_Firefox_with_Debug_Symbols" title="En/Building Firefox with Debug Symbols">デバッグシンボルを用いた Firefox のビルド</a></dt> - <dd> - デバッグに役立つデバッグシンボルを有効にした Firefox のビルド方法</dd> - <dt> - <a class="internal" href="/ja/Debugging_a_hang_on_OS_X" title="En/Debugging a hang on OS X">Mac OS X におけるハングアップのデバッグ</a></dt> - <dd> - Mac OS X のハングアップのデバッグのための参考になる TIPS</dd> - <dt> - <a href="/ja/Remote_debugging" title="en/Remote_debugging">リモートデバッグ</a></dt> - <dd> - 開発者がクラッシュを再現できないとき、たまに役立つ。</dd> - </dl> - <h3 id="良くある質問">良くある質問</h3> - <dl> - <dt> - <a class="internal" href="/ja/Debugging_Mozilla_on_Windows_FAQ" title="En/Debugging Mozilla on Windows FAQ">Windows における Mozilla のデバッグ</a></dt> - <dd> - Windows における Mozilla のデバッグについての質問(と答え)</dd> - <dt> - <a class="internal" href="/ja/Debugging_on_Mac_OS_X" title="En/Debugging on Mac OS X">Mac OS XにおけるMozillaのデバッグ</a></dt> - <dd> - Mac OS X における Mozilla のデバッグについての質問(と答え)</dd> - <dt> - <a class="internal" href="/ja/Debugging_Mozilla_with_gdb" title="En/Debugging Mozilla on Linux FAQ">gdbを用いたMozillaのデバッグ</a></dt> - <dd> - gdb は、 Mac や Linux におけるプライマリデバッガです。</dd> - </dl> - <dl> - <dt> - <a class="internal" href="/ja/Debugging_Mozilla_with_Valgrind" title="en/Debugging Mozilla with valgrind">valgrind を用いた Mozilla のデバッグ</a></dt> - <dd> - valgrind は、 Mac や Linux のためのメモリデバッガです。低速ではあるが、難しいメモリバグを見つけ出すには良い。</dd> - </dl> - </td> - <td> - <h3 id="独自技術のデバッグ">独自技術のデバッグ</h3> - <dl> - <dt> - <a class="internal" href="/ja/Debugging_JavaScript" title="En/Debugging JavaScript">JavaScript コードのデバッグ</a></dt> - <dd> - Mozilla プロジェクトのコードをデバッグすることを重要視した JavaScript のデバッグ方法。</dd> - <dt> - <a class="internal" href="/ja/Debugging_a_XULRunner_Application" title="En/Debugging a XULRunner Application">XULRunner アプリケーションのデバッグ</a></dt> - <dd> - アプリケーションの元となる <a class="internal" href="/en/XULRunner" title="En/XULRunner">XULRunner</a> のデバッグを助ける TIPS や提案。</dd> - <dt> - <a class="internal" href="/ja/Debugging_Frame_Reflow" title="En/Debugging Frame Reflow">フレームレイアウトのデバッグ</a></dt> - <dd> - フレームレイアウトのデバッグ方法を学ぶ。</dd> - <dt> - <a class="internal" href="/ja/Debugging_Table_Reflow" title="En/Debugging Table Reflow">テーブルレイアウトのデバッグ</a></dt> - <dd> - テーブルレイアウトのデバッグ方法を学ぶ。</dd> - </dl> - <h3 id="デバッグツール">デバッグツール</h3> - <dl> - <dt> - <a class="internal" href="/ja/Tools" title="En/Tools">ツール</a></dt> - <dd> - あなたがコードやウェブサイトをデバッグするのを助ける様々なツール。</dd> - </dl> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/developer_guide/using_the_vm/index.html b/files/ja/mozilla/developer_guide/using_the_vm/index.html deleted file mode 100644 index 0fb4ff7bd0..0000000000 --- a/files/ja/mozilla/developer_guide/using_the_vm/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Mozilla build用VMを使用する -slug: Mozilla/Developer_Guide/Using_the_VM -translation_of: Archive/Mozilla/Using_the_VM ---- -<p>If you ever wondered what contributing to Firefox feels like but you never had the time to read and follow through our <a href="/en-US/docs/Simple_Firefox_build">instructions to setup a build environment</a> or wanted to avoid making changes to your standard tools and configuration, then this might be for you. Mozilla provides a virtual machine (VM) which is compatible with the free <a href="https://www.virtualbox.org/wiki/Downloads">VirtualBox</a> virtualization software (as well as others, including VMWare/VMWare Fusion).</p> - -<p>This article provides simple instructions for downloading, installing, and setting up this build environment build machine; once you've finished following the steps below, you'll have a VM ready for you to modify and tweak Firefox.</p> - -<p>Hopefully this VM will especially help developers or potential developers who don't have a full C++ development environment available to them, as well as to experienced developers without the time to set up a build system following the usual instructions.</p> - -<h2 id="Installing_VirtualBox">Installing VirtualBox</h2> - -<p>Visit the <a href="https://www.virtualbox.org/wiki/Downloads">VirtualBox downloads page</a> and download the latest version of the software for your operating system.</p> - -<div class="note"> -<p><strong>Note:</strong> If you already have a virtualization product installed, such as VirtualBox, VMWare, or VMWare Fusion, you can use that instead of downloading a new copy of VirtualBox. Just make sure you have the latest version of the software. Note that Parallels Desktop does <strong>not</strong> support the OVF format.</p> -</div> - -<h2 id="VMのダウンロード">VMのダウンロード</h2> - -<p>Next, download the Firefox development environment VM.</p> - -<p><a class="download-button external ignore-external" href="http://vmimages.mozilla.net/ovf/FirefoxBuildEnv.ova" rel="noopener">Download the VM</a></p> - -<p>SHA-256: 67698e6dfe54582b4fc23221a8b8f3a9062ffa0bce11523823ccb26a8f8bce2b</p> - -<div class="note"> -<p><strong>Note:</strong> This file is about 3.6 GB, so it may take a while to download.</p> -</div> - -<h2 id="Setting_up_the_VM">Setting up the VM</h2> - -<p>After getting the virtual machines' .ova file has downloaded, double-click on it; this will start the process of importing the VM into VirtualBox. Please give the VM a minimum of 4096 MB of RAM (8192 MB or more if you can), and set it to have the same number of processors as your host computer. Building Firefox uses a lot of system resources, and you want it to build as quickly as possible.</p> - -<p><img alt="Screen shot of the Import Virtual Appliance window" src="https://mdn.mozillademos.org/files/8665/firefoxdev3.png" style="height: 447px; width: 600px;"></p> - -<p>Once you've finished importing the VM, you can perform additional customizations if you wish, or just boot the VM and wait for the Ubuntu desktop to appear. A terminal window will pop up automatically and perform some final setup activities. Once those are finished running, Sublime Text will start up, and you can get to work!</p> - -<p><img alt="Screen shot of the Sublime Text editor running in the VM" src="https://mdn.mozillademos.org/files/8667/firefoxdev1.png" style="height: 317px; width: 600px;"></p> - -<div class="note"> -<p><strong>Note:</strong> <strong>もしrootのパスワードが必要になった場合、 "firefox-dev" をパスワードとして使用することができます。</strong> If you wish to change your language and keyboard settings, follow the instructions in <a href="http://www.howtogeek.com/howto/17528/change-the-user-interface-language-in-ubuntu/">How to change the UI language in Ubuntu</a>.</p> -</div> - -<h2 id="Firefoxをビルドする">Firefoxをビルドする</h2> - -<p>VMを使用してFirefoxをビルドするためには、(sublimetextを開いた状態で上のバーから)Toolsメニューを開きBuildオプションを選びます。ビルドの処理が開始するので、お茶や美味しい食事でもして休憩しましょう。休憩の長さはあなたのコンピューターの処理速度によります。</p> - -<p>もしビルドが終了(完了)した場合、Tools内のRunオプションを選び、あなたがカスタムビルドしたfirefoxを起動させることができます。想定した動作をしているかどうか確認してみてください。</p> - -<p>デフォルトではこのVMはFirefoxのビルドに最適化された設定になっています。デバッグ用ビルドに変更することもかんたんにできます。Toolsメニューを開き、Build Systemサブメニューを開いて、"Firefox (Debug)"を選ぶだけです。次にあなたがビルドするときはデバッグ用のビルドになっているでしょう!</p> - -<p><img alt="Screen shot showing how to switch between debug; and optimized builds" src="https://mdn.mozillademos.org/files/8669/firefoxdev2.png" style="height: 317px; width: 600px;"></p> - -<h2 id="VMでcontributeする">VMでcontributeする</h2> - -<p>今後はあなたがどこにいてもVMを使ってcontributeすることができます。最新のソースコードを <a href="/en-US/docs/mozilla-central">mozilla-central</a>, 内から持ってくるには、いつものようにMercurialのコマンドを打つだけで済みます:</p> - -<pre>hg pull</pre> - -<p>そしていつもと同じように <a href="/en-US/docs/Mozilla/Developer_guide/How_to_Submit_a_Patch">作成したパッチを提出する</a> こともできます。</p> - -<h2 id="Now_what">Now what?</h2> - -<p>Now that you've successfully built Firefox in your brand-new VM, you might be wondering what to do next. A great way to start is to pick a small, easy-to-fix bug and contribute code that patches it. Imagine how awesome it is to have code you wrote shipped to half a billion users all over the world!</p> - -<p>Here are some links to help you find something you can do to make Firefox better:</p> - -<ul> - <li><a href="http://codefirefox.com/">Code Firefox Lessons</a> provides a number of video tutorials for new Firefox contributors.</li> - <li><a href="http://www.joshmatthews.net/bugsahoy/">Bugs Ahoy!</a> (a tool to help you find bugs that might interest you).</li> - <li><a href="http://firefox-dev.tools/">firefox-dev.tools</a> (a tool to help you find bugs related to the <a href="/en-US/docs/Tools">Firefox Developer Tools</a> that might interest you).</li> - <li><a href="/en-US/docs/Mozilla/Developer_guide">Developer guide</a> (documentation about developing on and for Mozilla projects).</li> - <li><a class="external" href="http://www.joshmatthews.net/bugsahoy/" title="http://www.joshmatthews.net/bugsahoy/">Mentored bugs</a> have a mentor who commits to helping you every step of the way. Generally, there should be enough information in the bug to get started. Whenever you need help, contact the mentor over Matrix, in the bug itself, or by email. When you've completed the bug, they will help you get your code into the tree.</li> - <li><a class="link-https" href="https://bugzil.la/sw:%22[good%20first%20bug]%22" title='https://bugzil.la/sw:"[good first bug]"'>"Good" first bugs</a> may be a little stale, but at some point in their lives we considered that they would be a good first step for newcomers to Mozilla. We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs.</li> - <li><a href="/en-US/docs/Mozilla/Developer_guide/How_to_Submit_a_Patch">How to submit a patch</a> (information about how to create a patch file and get it submitted into the source code).</li> -</ul> - -<p>You can also ask your getting-started questions in {{IRCLink("introduction")}}, and any Firefox development questions in {{IRCLink("developers")}}.</p> diff --git a/files/ja/mozilla/firefox/australis_add-on_compat/index.html b/files/ja/mozilla/firefox/australis_add-on_compat/index.html deleted file mode 100644 index fb7e362c1e..0000000000 --- a/files/ja/mozilla/firefox/australis_add-on_compat/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Australis とアドオンの互換性 -slug: Mozilla/Firefox/Australis_add-on_compat -tags: - - Extensions -translation_of: Mozilla/Firefox/Australis_add-on_compat ---- -<div>{{FirefoxSidebar}}</div> - -<h2 id="拡張機能の変更">拡張機能の変更</h2> - -<p><strong>We've removed the add-ons toolbar (including the status-bar).</strong> You should no longer rely on it existing. There is a shim in place that will attempt to migrate your icons, but it may not work, or only work partially. The best solution is to change the placement of your button. This may also be a good time to wonder if your add-on really needs a toolbar button to be visible by default for all users. <strong>Add-ons made using the Add-on SDK should not need to worry about this change.</strong></p> - -<p><strong>We've removed the application (Firefox) menu.</strong> Instead, there is a <strong>new panel-based menu</strong> that can be opened with a button on the far side of the navigation toolbar. Toolbar items can be dragged in and out from this panel.</p> - -<p>Some of the default toolbarbutton IDs have changed, we have added some new ones, and the sequence of back/forward button, URL bar, stop/reload button, will no longer be customizable. This also means users cannot add new (add-on-provided) buttons inbetween these items using the normal customization flow.</p> - -<p>The standalone stop reload buttons have been removed.</p> - -<p>We're changing the way toolbar buttons are added. While we've attempted to maintain some measure of backward compatibility, the following are deprecated and will be removed in the near future: the <code>toolbar.insertItem</code> method, the <code>toolbar.currentSet</code> property, and the <code>currentset</code> attribute on toolbars. If possible, please stop relying on them. Instead, you should use the <a href="http://mxr.mozilla.org/projects-central/source/ux/browser/components/customizableui/src/CustomizableUI.jsm">CustomizableUI</a> module.</p> - -<p>CustomizableUI introduces a new API to insert, move and remove toolbar buttons and other toolbar items, as well as creating panels that are anchored to these toolbarbuttons. We believe this will be simpler and more powerful than the previous mix of APIs.</p> - -<p>Because of the new customization APIs, your toolbar buttons may not be direct children of a XUL <code><toolbar></code>; they might still be in a toolbar, or they might be in the "customization target" of a toolbar (a descendant node in a toolbar), or they might be in the new menu panel. The customization target of any toolbar (whether the target is a child node, or the toolbar itself) via <code>toolbar.customizationTarget.</code></p> - -<p><strong>Icon sizes in toolbars have changed</strong>, and you should ideally provide a larger icon for your add-on's buttons, should they exist, for use in the menu panel and customization area (palette). The new icon sizes are the same on all platforms and are:</p> - -<ul> - <li>Toolbars:<br> - <strong>16px</strong> (32px @2dppx) without padding.<br> - Internal icons on the navbar use 18px. For add-ons, by default the padding is set up so it should work well if add-ons specify an icon of size 16px.</li> - <li>Menu panel/Customization area (palette):<br> - <strong>32px</strong> (64px @2dppx)<br> - Please note that smaller icons will be <em>upscaled</em>.</li> -</ul> - -<p>When in the customization area (palette), the button will be wrapped in a toolbarpaletteitem with a <code>place</code> attribute set to <code>palette</code>. Putting it all together, your updated CSS might look like this:</p> - -<pre class="brush: css notranslate">#my-addon-button { - list-style-image: url(icon16.png); -} -#my-addon-button[cui-areatype="menu-panel"], -toolbarpaletteitem[place="palette"] > #my-addon-button { - list-style-image: url(icon32.png); -} - -/* High-resolution displays */ -@media (min-resolution: 2dppx) { - #my-addon-button { - list-style-image: url(icon32.png); - } - #my-addon-button[cui-areatype="menu-panel"], - toolbarpaletteitem[place="palette"] > #my-addon-button { - list-style-image: url(icon64.png); - } -} -</pre> - -<p>Tab markup and styling have changed. If your add-on affects the tabstrip or provides alternative visualizations of the tabstrip, changes tab colors, or anything else related to the tabstrip, you may want to verify that it still works.</p> - -<p>The navigation toolbar is always visible (except in popup windows where a reduced navigation toolbar with the urlbar is visible) and can no longer be hidden e.g. for update pages or in-content UI. The related Add-on SDK module <a href="/en-US/Add-ons/SDK/High-Level_APIs/addon-page">addon-page</a> has been removed as it no longer has any effect.</p> - -<p>Items in the navigation toolbar can be overflowed if the browser window is made too small. Items in the toolbar will be moved into the new "overflow panel" when this occurs. The overflow panel is anchored to a button that appears in the navigation toolbar when one or more items are overflowed. If your item should never be overflowed, set an <code>overflows</code> attribute to <code>false</code> on the item. The <code>urlbar-container</code> is not overflowable by default, for example. Items that are overflowed have the <code>overflowedItem</code> attribute set to <code>true</code>.</p> - -<p>The menu panel uses a 3-column grid layout. Items should either fit in a single grid column (<code>toolbarbutton</code>s will be styled to do so automatically) or span the entire width of the panel if they wouldn't fit in a single grid column, e.g. for wide <code>toolbaritem</code>s. In order to have the latter work correctly, you should use the <code>panel-wide-item</code> class on your <code>toolbaritem</code>.</p> - -<p>If your add-on provides a <code><toolbarbutton type="menu"/></code> or <code><toolbarbutton type="menu-button"/></code>, consider moving to a subview-based design, which will work much better in the menu panel. There's some <a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm">documentation</a> you can look at, as well as <a href="http://hg.mozilla.org/projects/ux/annotate/8b514254b168/browser/components/customizableui/src/CustomizableWidgets.jsm#l56">the implementation of the history widget</a>.</p> - -<p>If your add-on provides a simple <code>toolbarbutton</code> then it should automatically be styled correctly in the menu panel, overflow panel and palette. If it provides a <code>toolbaritem</code> it is likely you will need to do additional work to make it look nice in places other than a toolbar.</p> - -<p>All items will have context menus allowing users to move the items between the palette, panel and the navigation toolbar. If your add-on uses the contextmenu itself, we will not override or change it (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=892463">this bug</a> for a lengthy discussion as to why). You are requested, however, to update your menus yourself so that users do have the possibility of using these options even for your add-on's button.</p> - -<p>The <code>class</code> attribute on tab close buttons has been changed. Extensions shouldn't be relying on the class attribute value since it is a list of tokens and should instead look for the <code>anonid </code>attribute with value "<code>close-button</code>".</p> - -<p>The <code>close-icon</code> class now works cross-platform to provide a close icon with a default, hover, and active state. Previously, this wasn't available on Linux and the GTK close icon (gtk-close) was used instead.</p> - -<p>The BrowserToolboxCustomizeDone, BrowserToolboxCustomizeChange, and BrowserCustomizeToolbar global window functions have been removed. <a href="/en-US/docs/XUL/Toolbars/Toolbar_customization_events">The customize events fired from the toolbox</a> are now the preferred mechanism for hooking new logic into the customization feature.</p> - -<h3 id="Add-on_SDK_Australis_APIs">Add-on SDK Australis APIs</h3> - -<p>If you're using the Add-on SDK, there are several new APIs for building your add-on's user interface in Australis. See the <a href="/en-US/Add-ons/SDK/High-Level_APIs/ui">reference documentation</a>. Also note that the <code><a href="/en-US/Add-ons/SDK/High-Level_APIs/widget">widget</a></code> module has been deprecated in favor of the new APIs.</p> - -<h2 id="Changes_for_themes">Changes for themes</h2> - -<p>We've changed the tab markup. If you style these differently, you'll need to check whether it still works.</p> - -<p>We'll be drawing tabs in the titlebar and on top, on all platforms (currently implemented on Windows and OS X), except when not showing tabs at all (in popup windows).</p> - -<p>Support for small icons mode as well as text and icons mode have been removed.</p> - -<p>We've changed the default iconsets, and there are new icon sizes for the menupanel. If you're building on the default theme with new icons, you'll need to rearrange your icons in your Toolbar icon files. In both this case and if you supply a complete theme, you will also need to provide icons for the menu panel. The new icon sizes are the same on all platforms and are:</p> - -<ul> - <li>Toolbars:<br> - <strong>16px</strong> (32px @2dppx) without padding.<br> - Internal icons on the navbar use 18px. For add-ons, by default the padding is set up so it should work well if add-ons specify an icon of size 16px.</li> - <li>Menu panel/Customization area (palette):<br> - <strong>32px</strong> (64px @2dppx)<br> - Please note that smaller icons will be <em>upscaled</em>.</li> -</ul> - -<p>We've removed the add-on bar, but have a shim in place to migrate icons to other places. Any styles pertaining to should be removed so as not to disturb the migration work.</p> - -<p>We've changed a few toolbarbutton IDs, such as those for the bookmark and history buttons. We also added new ones.</p> - -<p>The application (Firefox) menu has been removed.</p> - -<p>The back, forward, stop and refresh buttons will no longer be movable. They will always remain in their current position next to the urlbar. Your CSS rules can probably be simplified now that this is the case.</p> - -<p>The navigation toolbar can no longer be hidden e.g. for update pages or in-content UI.<br> - </p> - -<h2 id="Known_issues_related_to_add-ons">Known issues related to add-ons</h2> - -<ul> - <li>Add-ons that have copied their toolbarbutton-insertion code from Adblock Plus hide their toolbarbutton icon. They keep track of their insertion point by themselves. Even though our compatibility shims correctly insert these button initially, their detection code decides it is not in a toolbar (it is in fact in a customization target inside a toolbar, see above) and removes the icon on restart. This has been fixed in Adblock Plus but add-ons using similar code patterns might still be affected.</li> - <li>Many add-ons check whether their button is in the toolbox (rather than in a toolbar or some other visible place) by checking the result of <code>document.getElementById()</code>. This is <strong>no longer enough</strong>. If your button is in the menu panel, it will not be moved there until the menu panel is first shown. Instead, use:<a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm"><code> CustomizableUI.getPlacementOfWidget("mytoolbarbuttonId")</code></a>. This will return <code>null</code> if and only if the widget is in the palette.</li> - <li>If a <code><menulist></code> element is wrapped inside a toolbaritem, popping up the <code><menulist></code> closes the new menu panel. This issue is being tracked <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=964944">here</a>.</li> - <li>Add-ons that automatically re-add their icons to the add-on bar when removed will need to fix their own insertion code to not do that.</li> - <li>Elements inserted in the statusbar element or the add-on bar itself will not be shown. This can only be fixed by the add-on authors, who need to update their add-on to use toolbaritems instead of statuspanels, and insert into a normal toolbar.</li> - <li>For toolbaritems and toolbarbuttons inserted into the add-on bar, we will attempt to migrate them to a visible toolbar automatically <strong>if</strong> the add-on bar was visible in the user's profile before migrating to Australis. However, depending on your add-on's code this may or may not work correctly without further code changes on your part.</li> - <li>Toolbar buttons of type <code>menu </code>with a <code>orient="horizontal"</code> attribute will not display properly in the menu panel. This attribute should probably be avoided altogether.</li> -</ul> - -<h2 id="See_Also">See Also</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm">CustomizableUI.jsm</a></li> - <li><a href="/en-US/Firefox/Releases/29">Firefox 29 for developers</a></li> -</ul> diff --git a/files/ja/mozilla/firefox/developer_edition/index.html b/files/ja/mozilla/firefox/developer_edition/index.html deleted file mode 100644 index 1f1c73209e..0000000000 --- a/files/ja/mozilla/firefox/developer_edition/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Developer Edition -slug: Mozilla/Firefox/Developer_Edition -tags: - - Beta - - Bugs - - Developer Edition - - Latest -translation_of: Mozilla/Firefox/Developer_Edition ---- -<div>{{FirefoxSidebar}}</div> - -<p>Firefox Developer Edition は、ウェブ開発者向けの Firefox のバージョンです。以下の内容が含まれます:</p> - -<ul> - <li><strong>最新の Firefox 機能</strong>: Firefox Developer Edition は古い Aurora チャンネルを置き換えます - - <ul> - <li>新リリースには、Nightly ビルドを通じて安定化された機能が含まれます。</li> - <li>新機能がリリースされる 6 週間前に、Firefox Beta チャンネルに入ります。</li> - <li>新機能は、Firefox のリリース版に登場する前に 12 週間かけて安定化されます。</li> - </ul> - </li> - <li><strong>開発者プロファイルの分離</strong>: Developer Edition を Firefox のリリース版やベータ版と別に簡単に実行できます。</li> - <li><strong>実験的な開発者ツール</strong>: Developer Edition には、まだリリースに向けた準備が整っていない実験的なツールも含まれます。</li> - <li><strong>ウェブ開発者向けの設定</strong>: 各種既定の設定値もウェブ開発者向けに変更されています。例えば、Developer Edition では、クロームデバッグやリモートデバッグが初期設定で有効となっています。</li> - <li><strong>明確なテーマ</strong>: 開発者ツールへ素早くアクセスできるようになっています。</li> -</ul> - -<p><a href="/ja/docs/Mozilla/Firefox/Releases" style="float: left; margin: 0 30px 20px 30px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Developer Edition の新機能</a></p> - -<p><a href="https://www.mozilla.org/ja/firefox/developer/" style="float: right; margin: 0 30px 20px 30px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Developer Edition をダウンロード</a></p> - -<p> </p> diff --git a/files/ja/mozilla/firefox/developer_edition/reverting/index.html b/files/ja/mozilla/firefox/developer_edition/reverting/index.html deleted file mode 100644 index c9f86b8e6f..0000000000 --- a/files/ja/mozilla/firefox/developer_edition/reverting/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Reverting -slug: Mozilla/Firefox/Developer_Edition/Reverting -translation_of: Mozilla/Firefox/Developer_Edition/Reverting ---- -<div>{{FirefoxSidebar}}</div> - -<h2 id="Developer_Edition_のテーマを元に戻す">Developer Edition のテーマを元に戻す</h2> - -<p>Developer Editionを使用したいが、FirefoxとFirefox Betaで使用されている 'Australis'テーマを使用したい場合は、通常のFirefoxテーマに切り替えることができます。「カスタマイズ」パネルを開き、「テーマ」をクリックし、「デフォルト」というラベルのテーマを選択します。</p> - -<p>{{EmbedYouTube("oiHt8T1Liyk")}}</p> - -<p>または、URLバーに "about:addons" と入力して「Appearance」を選択し、そこからテーマを切り替えます。</p> - -<h2 id="Firefox_Aurora_に戻す">Firefox Aurora に戻す</h2> - -<p>Firefox Developer Editionでベータ版以前の機能をすべて使いたいが、他の変更を望まない場合は、古いFirefox Auroraのようなものに戻すことができます。これにより、アップグレード前のプロファイルとセッションデータも復元されます。それは2段階のプロセスです。この手順をこの順序で実行する必要があります。</p> - -<ol> - <li>Developer EditionのPreferencesページを開いて、「Firefox Developer EditionとFirefoxを同時に実行する」をオフにします。 ブラウザを再起動するよう求められます</li> - <li>再起動後、上記の「Developer Editionテーマを元に戻す」で説明したように、開発者エディションのテーマを元に戻すことができます</li> -</ol> - -<p>{{EmbedYouTube("8rEJn_hATE8")}}</p> diff --git a/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html b/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html deleted file mode 100644 index 262254fcf7..0000000000 --- a/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: エンタープライズ環境におけるFirefoxのデプロイ(Firefox 60 ESR 以前) -slug: Mozilla/Firefox/Enterprise_deployment_before_60 -tags: - - Firefox - - エンタープライズ - - デプロイ - - 管理者向け -translation_of: Mozilla/Firefox/Enterprise_deployment_before_60 ---- -<div>{{FirefoxSidebar}}</div> - -<p>このページでは、Mozilla Firefox を Windows および macOS コンピュータ上でエンタープライズ設定で管理するプロセスを、最初から最後までドキュメント化しようとしています。 ご不明な点がございましたら、エンタープライズワーキンググループメーリングリスト(<a href="https://mail.mozilla.org/listinfo/enterprise">enterprise@mozilla.org</a>)にメールをお送りください。 さらに、<a href="https://mail.mozilla.org/listinfo/enterprise">リストに登録</a>し、進行中のディスカッションに参加してください。</p> - -<div class="note"><strong>注</strong>:この記事では、Firefox 60 ESR 以前の Firefox のバージョンについて説明します。 Firefox 60以降でエンタープライズ環境用にデプロイするには、<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Enterprise_deployment">エンタープライズ環境での Firefox のデプロイ</a>を参照してください。</div> - -<h2 id="さまざまな_Firefox_を選択する">さまざまな Firefox を選択する</h2> - -<h3 id="Rapid_Release_(RR)">Rapid Release (RR)</h3> - -<p>Mozilla publishes a new version with incremented main version number, new features, and bug fixes every six weeks (and, as needed, additional security releases in between). On the day a major version is released, in most cases (see below for an exception) Mozilla stops providing bug fixes for the previous one.</p> - -<p>For the planned dates for upcoming releases, see the column 'release date' in the <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">Future branch dates</a> table in the Mozilla wiki.</p> - -<h3 id="Extended_Support_Release_(ESR)">Extended Support Release (ESR)</h3> - -<p>Every seventh major version of Firefox is declared an Extended Support Release. These versions get serious bugs fixed in minor versions, for 54 weeks (nine of the six-week release cycles). There is an overlap of 12 weeks (two release cycles) between two successive ESR releases, during which both ESR releases get bug fixes.</p> - -<p>The major ESR releases so far have been versions 10, 17, 24, 31, 38, 45 and 52. This cadence will be proken according to information in Devember 2017, and <code>60</code> will be the next ESR</p> - -<p>Many enterprises and other organizations with centrally-managed computing environments prefer to use the ESR rather than the RR versions, because then they need to test for compatibility only every 42 weeks instead of every 6 weeks. Also if there are any issues, they have 12 weeks additional time (the overlap between two ESR releases) to find a solution (in addition to the 6 weeks that they can get by testing the beta version).</p> - -<p>Note that there can be undesired side effects if you switch from a RR version to an earlier ESR version, for example from version 26-RR back to 24.2-ESR, even if they were published on the same day. The reason for this is that often new features are built into the RR versions for test purposes before they are finished, but disabled by preference settings. Eventually Mozilla decides to toggle the feature on in a certain version. If you then downgrade to a previous version, all users keep their latest settings in their profile directories. Thus the option is now switched on, although the feature does not yet fully work in that version. If you want to switch from RR to ESR, you should do so when a new ESR release comes out.</p> - -<h2 id="インストール">インストール</h2> - -<ol> - <li>Get the full, redistributable installer from<br> - <a href="http://www.mozilla.org/firefox/all/">http://www.mozilla.org/firefox/all/</a> (RR)<br> - or<br> - <a href="https://www.mozilla.org/firefox/organizations/all.html">https://www.mozilla.org/firefox/organizations/all.html</a> (ESR)<br> - rather than the "stub" or "downloader" that you get by clicking the "Download" button.</li> - <li>Install using the software distribution method of your choice.<br> - The command line option for a silent install is <code>-ms</code>. </li> - <li>Optionally you can specify an INI file, for example to disable the placement of shortcuts and the installation of the MaintenanceService; see <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">Installer Command Line Arguments</a>.</li> -</ol> - -<h2 id="構成・設定">構成・設定</h2> - -<ol> - <li>Find the Firefox <strong>program directory</strong> where the Firefox executable is located.<br> - For example: - <ul> - <li>on <strong>Windows</strong> this is typically either: - - <ul> - <li><code>C:\Program Files\Mozilla Firefox </code></li> - <li><strong>or</strong> <code>C:\Program Files (x86)\Mozilla Firefox</code></li> - </ul> - </li> - <li>on <strong>macOS</strong> it is typically: - <ul> - <li><code>/Applications/Firefox.app/Contents/MacOS</code></li> - </ul> - </li> - </ul> - If you are specifying a configuration INI file and have set <strong>InstallDirectoryName</strong> or <strong>InstallDirectoryPath</strong>, then use that path.<br> - Subfolders mentioned below are relative to this program directory.</li> - <li>Create a JavaScript file that instructs to use a administrative <strong>config file</strong> at startup.<br> - For best results, the filename should be early in the alphabet, for example; <strong><code style="white-space: nowrap;">00_admin-prefs.js</code></strong><br> - By convention this file is named <strong><code>autoconfig.js</code></strong>, but other filenames will work.<br> - This file should be put inside: <small>(see <a href="#Changes_Over_Time">Changes Over Time</a>)</small> - <ul> - <li>on <strong>Windows</strong>: - <ul> - <li><code>defaults\pref</code></li> - </ul> - </li> - <li>on <strong>Mac</strong>: - <ul> - <li><code>Firefox.app/Contents/Resources/defaults/pref</code></li> - </ul> - </li> - <li>on <strong>Linux</strong>: - <ol> - <li>Formerly: - <ul> - <li><code>defaults/pref</code><br> - <small>(Still working in Firefox 60.0a1)</small></li> - </ul> - </li> - <li>Presently: - <ul> - <li><code>browser/defaults/preferences</code></li> - </ul> - </li> - </ol> - </li> - </ul> - - <p>This <code><strong>autoconfig.js</strong></code> file <strong>must</strong> set these preferences:</p> - - <pre class="brush: js">// Any comment. You <strong>must</strong> start the file with a single-line comment! -pref("general.config.filename", "mozilla.cfg"); -pref("general.config.obscure_value", 0);</pre> - - <div class="warning"> - <p>The first line of the <code><strong>autoconfig.js</strong></code> and <code><strong>mozilla.cfg</strong></code> is ignored. The line shouldn't contain any configuration, nor multiline comment (<code>/*...*/</code>) without closing "<code>*/</code>".</p> - </div> - </li> - <li>Create a <code>.cfg</code> file in the Firefox program directory. By convention, <strong><code>mozilla.cfg</code></strong><code>,</code> but it can be any file name really. It just <strong>has to match</strong> what is specified in <strong><code>general.config.filename</code></strong> preference above. <strong>Skip or comment out the first line</strong>, then start setting your preferences. To learn what preferences to set, go to about:config on a copy of Firefox that you have configured correctly and look for preferences that are "user set", or see the example below. Any preference that appears in about:config (and a few that don't) can be set using one of the following functions: - <dl> - <dt><strong>pref </strong></dt> - <dd>sets the preference as if a user had set it, every time you start the browser. So users can make changes, but they will be erased on restart. If you set a particular preference this way, it shows up in about:config as "user set". </dd> - <dt><strong>defaultPref</strong></dt> - <dd>is used to alter the default value, though users can set it normally and their changes will be saved between sessions. If preferences are reset to default through the GUI or some other method, this is what they will go back to. Appears in about:config as "default". </dd> - <dt><strong>lockPref</strong></dt> - <dd>is used to lock preferences so they cannot be changed through the GUI or about:config. In many cases the GUI will change to reflect this, graying out or removing options. Appears in about:config as "locked". <span class="author-g-fer323ku83ypu55t">Some config items require <strong>lockPref</strong> to be set, such as <strong>app.update.enabled</strong>. It will not work if it set with just <strong>pref</strong>.</span></dd> - <dt><span class="author-g-fer323ku83ypu55t">clearPref</span></dt> - <dd><span class="author-g-fer323ku83ypu55t">can be used to "blank" certain preferences. This can be useful e.g. to disable functions that rely on comparing version numbers. </span></dd> - </dl> - - <div class="warning"> - <p>The first line of the <code><strong>autoconfig.js</strong></code> and <code><strong>mozilla.cfg</strong></code> is ignored. The line shouldn't contain any configuration, nor multiline comment (<code>/*...*/</code>) without closing "<code>*/</code>".</p> - </div> - </li> -</ol> - -<p>See <a href="http://mike.kaply.com/2012/03/16/customizing-firefox-autoconfig-files/">Customizing Firefox autoconfig files</a> and <a href="http://mike.kaply.com/2012/03/20/customizing-firefox-autoconfig-files-continued/">Customizing Firefox autoconfig files continued</a> for more detail. For fancier stuff like disabling UI elements, you may want to use the <a href="http://mike.kaply.com/cck2/">CCK2</a> extension.</p> - -<h3 id="Example_configuration_file">Example configuration file</h3> - -<p>You may see references to "complex preferences" that need to be specified in a different way; the default homepage is one, as in the example below. For more info on individual preferences, search the <a href="http://kb.mozillazine.org/Knowledge_Base">Knowledgebase</a>.</p> - -<pre class="brush: js">// Any comment. You <strong>must</strong> start the file with a comment! - -<span class="brush: js">// Disable updater -lockPref("app.update.enabled", false); -// make absolutely sure it is really off -lockPref("app.update.auto", false); -lockPref("app.update.mode", 0); -lockPref("app.update.service.enabled", false); - -// Disable Add-ons compatibility checking -clearPref("extensions.lastAppVersion"); - -// Don't show 'know your rights' on first run -pref("browser.rights.3.shown", true); - -// Don't show WhatsNew on first run after every update -pref("browser.startup.homepage_override.mstone","ignore"); - -// Set default homepage - users can change -// Requires a complex preference -</span>defaultPref("browser.startup.homepage","data:text/plain,browser.startup.homepage=http://home.example.com"); -<span class="brush: js"> -// Disable the internal PDF viewer -pref("pdfjs.disabled", true); - -// Disable the flash to javascript converter -pref("shumway.disabled", true); - -// Don't ask to install the Flash plugin -pref("plugins.notifyMissingFlash", false); - -//Disable plugin checking -lockPref("plugins.hide_infobar_for_outdated_plugin", true); -clearPref("plugins.update.url"); - -// Disable health reporter -lockPref("datareporting.healthreport.service.enabled", false); - -// Disable all data upload (Telemetry and FHR) -lockPref("</span>datareporting.policy.dataSubmissionEnabled<span class="brush: js">", false); - -// Disable crash reporter -lockPref("toolkit.crashreporter.enabled", false); -Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;</span><em> </em> -</pre> - -<h2 id="拡張機能のパッケージング">拡張機能のパッケージング</h2> - -<ol> - <li>Install the extension on a test machine. Look in <code>about:support</code> under Extensions to find the GUID. This is absent in: FF 52.5.1 ESR</li> - <li>Look in the <a href="https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data">Profile directory</a> (ex: <code>%APPDATA%\Mozilla\Firefox\Profiles</code> on Win7; to find it, click <strong>Show Folder</strong> in <code>about:support</code>), then under "extensions" for the add-on you want. Note whether it is a single .xpi file (basically a zip file) or extracted to a folder with multiple files.</li> - <li>Decide how you want to deploy it. The simplest method is to drop the .xpi or folder into the <strong>program directory</strong><code>/distribution/extensions</code>, but this only works for profiles created after the extension is installed. Also, if you manually update firefox by re-installing it, this directory will be deleted, so make sure you re-install the extensions as well. See <a href="http://mike.kaply.com/2012/02/09/integrating-add-ons-into-firefox/">Integrating add-ons into Firefox/</a> for alternative methods.</li> -</ol> - -<p>Also keep in mind: <a href="http://mike.kaply.com/2013/05/03/add-on-scopes-redux/">Add-on scopes redux</a></p> - -<h2 id="Changes_Over_Time">Changes Over Time</h2> - -<h3 id="Changes_in_Directory_Structure">Changes in Directory Structure</h3> - -<p>The directory structure within the program directory has changed twice. When you read descriptions that were written before version 21 came out, you must take these changes into account:</p> - -<ul> - <li>In version 14 some of the pref settings stopped working when they were in a file in directory <code>defaults/pref</code>. The fix was to create a directory <code>defaults/preferences</code> and put them there.</li> - <li>In version 21 the new directory named <code>browser</code> was created. The file <code>override.ini</code> and the directories <code>defaults/preferences</code>, <code>defaults/profile</code>, <code>extensions</code>, <code>plugins</code>, and <code>searchplugins</code> were moved there. Plug-ins in the directory <code>plugins</code> can be reactivated by setting the preference <code>plugins.load_appdir_plugins</code> to <strong>true</strong>.</li> -</ul> - -<p>Custom settings in <code>defaults/pref</code> that worked in a version of Firefox before 21 may fail in a current or future version. If this happens, copy or move your customized files into the corresponding directories in <code>browser/defaults/preferences</code> and redeploy.</p> - -<h3 id="Mac_Directory_Change">Mac Directory Change</h3> - -<p>Due to Apple's stricter approach to software signing, as of about version 35 or so configuration files should now be placed relative to <code>/Applications/Firefox.app/Contents/Resources </code>(so <code>mozilla.cfg</code> should go there, and <code>autoconfig.js </code>under <code>/Applications/Firefox.app/Contents/Resources/defaults/pref</code>.)</p> - -<h3 id="Changes_in_ESR_24_and_newer_with_Adobe_PDF_Files">Changes in ESR 24 and newer with Adobe PDF Files</h3> - -<p>Firefox RR 19.x changed the default viewer for Adobe PDF files to use the internal Firefox viewer. This change is now in the ESR version as of 24.x, and the setting (on Windows) is changed to use the internal Firefox viewer when upgrading from 17.x, <em>even if an external viewer had already been configured</em>. The name of the Content Type is also changed from <strong>Adobe Acrobat Document</strong> to <strong>Portable Document Format (PDF)</strong>, which makes it difficult to locate via the Tools, Options, Applications tab. To disable this, set <code>pdfjs.disabled</code> to true as in the example file above.</p> diff --git a/files/ja/mozilla/firefox/firefox_esr/index.html b/files/ja/mozilla/firefox/firefox_esr/index.html deleted file mode 100644 index db1e60c146..0000000000 --- a/files/ja/mozilla/firefox/firefox_esr/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Firefox ESR -slug: Mozilla/Firefox/Firefox_ESR -tags: - - ESR - - Exteneded Support Release - - Firefox - - Firefox for Desktop - - LTS - - gpo - - group policy - - グループポリシー - - デスクトップ版Firefox -translation_of: Mozilla/Firefox/Firefox_ESR ---- -<div>{{FirefoxSidebar}}</div> - -<p>Firefox 延長サポートリリース (ESR) は、大規模展開している拡張サポートが必要な組織で使用する、デスクトップ版 Firefox の公式リリースに基づいています。他のリリースチャンネルとは異なり、ESR は 6 週間ごとに新しい機能で更新されるものではありません。代わりに、1 年以上サポートされており、主要なセキュリティまたは安定性の修正が加えられて更新されています。</p> - -<p>スケジュールと詳細は <a href="https://www.mozilla.org/en-US/firefox/organizations/">ESR 公式サイト</a>で入手できます。</p> - -<p>Firefox ESR を導入している管理者は、<a href="https://www.mozilla.org/en-US/firefox/organizations/">Enterprise Working Group (EWG) のメーリングリスト</a>に登録することを強くお勧めします。</p> diff --git a/files/ja/mozilla/firefox/headless_mode/index.html b/files/ja/mozilla/firefox/headless_mode/index.html deleted file mode 100644 index 88e2da5052..0000000000 --- a/files/ja/mozilla/firefox/headless_mode/index.html +++ /dev/null @@ -1,267 +0,0 @@ ---- -title: ヘッドレスモード -slug: Mozilla/Firefox/Headless_mode -tags: - - Automation - - Firefox - - Mozilla - - QA - - Testing - - headless - - headless mode - - node.js -translation_of: Mozilla/Firefox/Headless_mode ---- -<p class="summary">ヘッドレスモードは、その名の通り Firefox を実行する便利な方法です — UI コンポーネントが表示されない点を除いて、Firefox は通常通り実行されます。ウェブサーフィンにはあまり役立たないかもしれませんが、自動テストには非常に有効です。この記事では、ヘッドレス Firefox の実行について知るべきことをすべて提供します。</p> - -<h2 id="ヘッドレスモードを使用する">ヘッドレスモードを使用する</h2> - -<p>このセクションではヘッドレスモードの使用方法について説明します</p> - -<h3 id="基本的な使い方">基本的な使い方</h3> - -<p><code>-headless</code> フラグを含めることで、コマンドラインから Firefox をヘッドレスモードで実行できます。たとえば:</p> - -<pre class="brush: bash">/path/to/firefox -headless</pre> - -<h3 id="スクリーンショットを撮る">スクリーンショットを撮る</h3> - -<p>Firefox 57以降、<code>-screenshot</code>フラグを使用してウェブサイトのスクリーンショットを撮ることができます。基本的な使い方は:</p> - -<pre class="brush: bash line-numbers language-bash"><code class="language-bash">/path/to/firefox -headless -screenshot https://developer.mozilla.com</code></pre> - -<p>これにより、<code>screenshot.png</code>というファイル名で800pxのビューポート幅を持つ<code>https://developer.mozilla.com</code>の全画面スクリーンショットが作成され、アクティブなディレクトリに保存されます。</p> - -<p>暗黙的に <code>-screenshot</code> を使用している場合、<code>-headless</code>を省略することができます。</p> - -<pre class="brush: bash line-numbers language-bash"><code class="language-bash">/path/to/firefox -screenshot https://developer.mozilla.com</code></pre> - -<p>上記のデフォルト値を上書きするために、次のフラグ/機能を使用できます。</p> - -<ul> - <li><code>-screenshot name url</code> — スクリーンショットの名前をカスタマイズするには、<code>-screenshot</code>フラグとキャプチャするURLの間に含めて設定します。<code>.jpg</code>、<code>.bmp</code>などの他のウェブ対応画像フォーマットを指定することができます</li> - <li><code>--window-size=x</code> — スクリーンショットを撮るときにカスタムビューポートの幅(完全な高さが維持されます)を設定します。 これの単一の引数バージョンは動作しないことに注意してください</li> - <li><code>--window-size=x,y</code> — キャプチャのカスタムビューポートの幅と高さを設定します</li> -</ul> - -<p>たとえば、次のコマンドは、ビューポートの幅が800px、高さが1000pxの<code>https://developer.mozilla.com</code>のスクリーンショットを<code>test.jpg</code>というファイル名で作成し、アクティブなディレクトリに保存します。</p> - -<pre class="brush: bash line-numbers language-bash"><code class="language-bash">/path/to/firefox -screenshot test.jpg https://developer.mozilla.com --window-size=800,1000</code></pre> - -<p> </p> - -<h3 id="ブラウザーサポート">ブラウザーサポート</h3> - -<p>ヘッドレス Firefox は Linux 上の Fx55 以上と Windows/Mac 上の Fx56 以上で動作します。</p> - -<h2 id="ヘッドレスモードで自動テストを実行する">ヘッドレスモードで自動テストを実行する</h2> - -<p>ヘッドレス Firefox の最も便利な使い方は、自動テストの実行です。つまり、テストプロセスをより効率的にできます。</p> - -<h3 id="Node.js_で_Selenium">Node.js で Selenium</h3> - -<p>ここで、<a href="https://nodejs.org/">Node.js</a> と <code><a href="https://www.npmjs.com/package/selenium-webdriver">selenium-webdriver</a></code> パッケージを使用して <a href="http://www.seleniumhq.org/">Selenium</a> テストを作成します。このガイドでは、読者が Selenium と Webdriver、Node に精通しており、テスト環境をセットアップ済みであることを想定しています。そうでないなら、最初に <a href="https://developer.mozilla.org/ja/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a> ガイドを読んでから戻ってきてください。</p> - -<p>まず、システムに Node と <code>selenium-webdriver</code> パッケージがインストールされていることを確かめてから、<code>selenium-test.js</code> と呼ばれる新しいファイルを作成し、以下の手順に従ってテストコードを入力してください。</p> - -<div class="note"> -<p><strong>ノート</strong>: 代わりに、<a href="https://github.com/mdn/headless-examples">headless-examples repo</a> をコピーできます。これはパッケージファイルも含んでいるので、<code>npm install</code> を実行するだけで必要な依存パッケージをインストールできます。</p> -</div> - -<ol> - <li> - <p>コードを追加していきましょう、このファイル内で、<code>selenium-webdriver</code> メインモジュールと <code>firefox</code> サブモジュールのインポートから始めます:</p> - - <pre class="brush: js">var webdriver = require('selenium-webdriver'), - By = webdriver.By, - until = webdriver.until; - -var firefox = require('selenium-webdriver/firefox');</pre> - </li> - <li> - <p>次に、Firefox Nightly を表す新しい <code>binary</code> オブジェクトを生成し、ヘッドレスモードで実行するために <code>-headless</code> 引数を追加します:</p> - - <pre class="brush: js">var binary = new firefox.Binary(firefox.Channel.NIGHTLY); -binary.addArguments("-headless");</pre> - </li> - <li> - <p>いよいよ Firefox のための新しいドライバーインスタンスを生成します。上記で作成したバイナリを使用してテストの実行を指定するオプションオブジェクトを含めるためには、<code>setFirefoxOptions()</code> を使用します。(このステップは Linux と Windows/Mac でヘッドレスモードがリリースされた後は不要です。しかし、Nightly 特有の機能としてテストしたい場合にはまだ役立ちます):</p> - - <pre class="brush: js">var driver = new webdriver.Builder() - .forBrowser('firefox') - .setFirefoxOptions(new firefox.Options().setBinary(binary)) - .build();</pre> - </li> - <li> - <p>Google 検索ホームページ上で簡単なテストを実行する次のコードを追加します:</p> - - <pre class="brush: js">driver.get('https://www.google.com'); -driver.findElement(By.name('q')).sendKeys('webdriver'); - -driver.sleep(1000).then(function() { - driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB); -}); - -driver.findElement(By.name('btnK')).click(); - -driver.sleep(2000).then(function() { - driver.getTitle().then(function(title) { - if(title === 'webdriver - Google Search') { - console.log('Test passed'); - } else { - console.log('Test failed'); - } - }); -}); - -driver.quit();</pre> - </li> - <li> - <p>最後に、次のコマンドでテストを実行します:</p> - - <pre class="brush: bash">node selenium-test</pre> - </li> -</ol> - -<p>これでおしまい! 少し経つと、コンソール上に "Test passed" というメッセージが表示されます。</p> - -<p>Myk Melez の <a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a> には、追加の便利な tips やヘッドレスモードで Node.js Selenium テストを実行するトリックが含まれています。</p> - -<h3 id="Java_で_Selenium">Java で Selenium</h3> - -<div class="note"> -<p><strong>Note</strong>: これらの手順を書いてくれてありがとう、nicholas dipiazzaに感謝します!</p> -</div> - -<p>このガイドでは、<a href="/ja/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a> ガイドで説明したように、マシンに Geckodriver が既にあること、および Gradle プロジェクトをサポートする IDE があることを前提としています。</p> - -<ol> - <li> - <p><a href="https://github.com/mdn/headless-examples/blob/master/headlessfirefox-gradle.zip">headlessfirefox-gradle.zip</a> アーカイブ(<a href="https://github.com/mdn/headless-examples/tree/master/headlessfirefox-gradle">ここのソースを参照</a>)をダウンロードし、解凍してheadlessfirefoxフォルダをIDEにグラデルプロジェクトとしてインポートします</p> - </li> - <li> - <p>必要に応じて<code>build.gradle</code>ファイルを編集して、selenium をそれ以降のバージョンに設定します。執筆時点では 3.5.3 を使用しました</p> - - <pre class="brush: java">group 'com.mozilla' -version '1.0' - -apply plugin: 'java' - -sourceCompatibility = 1.8 - -repositories { - mavenCentral() -} - -dependencies { - compile('org.seleniumhq.selenium:selenium-api:3.5.3') - compile('org.seleniumhq.selenium:selenium-remote-driver:3.5.3') - compile('org.seleniumhq.selenium:selenium-server:3.5.3') - - testCompile group: 'junit', name: 'junit', version: '4.12' -}</pre> - </li> - <li> - <p>HeadlessFirefoxSeleniumExample.javaファイルの<code>webdriver.gecko.driver</code>プロパティをgeckodriverをインストールしたパスと等しくなるように編集します(下の15行目を参照)</p> - - <pre class="brush: java">package com.mozilla.example; - -import org.openqa.selenium.By; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.firefox.FirefoxBinary; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.firefox.FirefoxOptions; - -import java.util.concurrent.TimeUnit; - -public class HeadlessFirefoxSeleniumExample { - public static void main(String [] args) { - FirefoxBinary firefoxBinary = new FirefoxBinary(); - firefoxBinary.addCommandLineOptions("--headless"); - System.setProperty("webdriver.gecko.driver", "/opt/geckodriver"); - FirefoxOptions firefoxOptions = new FirefoxOptions(); - firefoxOptions.setBinary(firefoxBinary); - FirefoxDriver driver = new FirefoxDriver(firefoxOptions); - try { - driver.get("http://www.google.com"); - driver.manage().timeouts().implicitlyWait(4, - TimeUnit.SECONDS); - WebElement queryBox = driver.findElement(By.name("q")); - queryBox.sendKeys("headless firefox"); - WebElement searchBtn = driver.findElement(By.name("btnK")); - searchBtn.click(); - WebElement iresDiv = driver.findElement(By.id("ires")); - iresDiv.findElements(By.tagName("a")).get(0).click(); - System.out.println(driver.getPageSource()); - } finally { - driver.quit(); - } - } -}</pre> - </li> - <li> - <p>Javaクラスを実行すると、このページのHTMLコンテンツがコンソール/端末に表示されます</p> - </li> -</ol> - -<h3 id="Python_で_Selenium">Python で Selenium</h3> - -<p>このガイドでは、<a href="/ja/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a>で説明したように、マシンにgeckodriverが既にあることを前提としています。</p> - -<ol> - <li> - <p><a href="https://pypi.python.org/pypi/selenium">SeleniumのPythonクライアント</a>の最新バージョンをインストールします</p> - </li> - <li> - <p>geckodriverをインストールした場所にパスを通すためには、11行目の<code>executable_path</code>を設定し、次のように編集します</p> - - <pre class="brush: python line-numbers language-python"><code class="language-python">from selenium.webdriver import Firefox -from selenium.webdriver.common.by import By -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.firefox.options import Options -from selenium.webdriver.support import expected_conditions as expected -from selenium.webdriver.support.wait import WebDriverWait - -if __name__ == "__main__": - options = Options() - options.add_argument('-headless') - driver = Firefox(executable_path='geckodriver', firefox_options=options) - wait = WebDriverWait(driver, timeout=10) - driver.get('http://www.google.com') - wait.until(expected.visibility_of_element_located((By.NAME, 'q'))).send_keys('headless firefox' + Keys.ENTER) - wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, '#ires a'))).click() - print(driver.page_source) - driver.quit()</code></pre> - </li> - <li> - <p>Pythonスクリプトを実行すると、このページのHTMLコンテンツがコンソール/端末に表示されます</p> - </li> -</ol> - -<h3 id="その他のテスト方法">その他のテスト方法</h3> - -<ul> - <li>Slimerjs は Linux 上で Firefox をサポートしており、Mac と Windowsのサポートは間もなく公開されます。詳細については、Brendan Dahl の <a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a> を参照してください</li> - <li><a href="https://github.com/DevExpress/testcafe">TestCafe</a> (v.0.18.0 以降) は、デフォルトでヘッドレス Firefox でのテストもサポートしています。詳細については<a href="https://devexpress.github.io/testcafe/blog/testcafe-v0-18-0-released.html#testing-in-headless-firefox">ドキュメント</a>を参照してください。</li> -</ul> - -<p>さらに、環境変数を設定できる限り、他の一般的なテストアプリで書かれた自動テストを実行するために、ヘッドレスFirefoxを使用することができます。</p> - -<h2 id="トラブルシューティングとヘルプ">トラブルシューティングとヘルプ</h2> - -<p>ヘッドレスモードの実行でトラブルがあっても心配しないでください — ここで助けます。このセクションでは、追加の QA を載せることを想定しています。</p> - -<ul> - <li>Linux では、ヘッドレスモードで使用しないにもかかわらず、システム上であるライブラリが要求されます。 — Firefox がそれらにリンクしているからです。詳細と修正に向けた進捗は {{bug(1372998)}} を見てください。</li> -</ul> - -<p>エンジニアに質問したいなら、<a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a> の <code>#headless</code> チャネルに行くのがベストです。バグを見つけた場合は、<a href="https://bugzilla.mozilla.org/">Mozilla Bugzilla</a> で報告してください。</p> - -<h2 id="関連項目">関連項目</h2> - -<ul> - <li><a href="https://intoli.com/blog/running-selenium-with-headless-firefox/">Using Selenium with Headless Firefox (on Windows)</a> by Andre Perunicic (Python を使用)</li> - <li><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a> by Myk Melez</li> - <li><a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a> by Brendan Dahl</li> - <li><a href="http://blog.rousek.name/2017/09/08/going-headless-with-firefox-since-55/">Using Selenium with Headless Firefox on Travis-CI</a> by Josef Rousek</li> -</ul> diff --git a/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html b/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html deleted file mode 100644 index 50adc5a551..0000000000 --- a/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html +++ /dev/null @@ -1,480 +0,0 @@ ---- -title: Linux の互換性マトリックス -slug: Mozilla/Firefox/Linux_compatibility_matrix -translation_of: Mozilla/Firefox/Linux_compatibility_matrix ---- -<div>{{FirefoxSidebar}}</div> - -<p><span class="seoSummary">次の表は、mozilla.org distributed Firefox ビルドの依存関係の利用可能なライブラリのバージョン、および/またはFirefoxのビルドを示しています。</span></p> - -<table class="standard-table"> - <tbody> - <tr> - <th>ディストリビューション</th> - <th>カーネル</th> - <th>glibc</th> - <th>glib</th> - <th>gtk+2</th> - <th>gtk+3</th> - <th>pixman</th> - <th>stdc++</th> - <th>GCC</th> - <th>リリース</th> - <th>EOL</th> - </tr> - <tr> - <td style="background-color: rgb(255, 204, 204);">Fedora 16</td> - <td style="background-color: rgb(153, 255, 153);">3.1</td> - <td style="background-color: rgb(153, 255, 153);">2.14</td> - <td style="background-color: rgb(153, 255, 153);">2.30</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(255, 204, 204);">3.2</td> - <td style="background-color: rgb(153, 255, 153);">0.22</td> - <td style="background-color: rgb(153, 255, 153);">4.6</td> - <td style="background-color: rgb(255, 204, 204);">4.6</td> - <td>Nov 2011</td> - <td style="background-color: rgb(255, 204, 204);">Feb 2013</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 17</td> - <td style="background-color: rgb(153, 255, 153);">3.3</td> - <td style="background-color: rgb(153, 255, 153);">2.15</td> - <td style="background-color: rgb(153, 255, 153);">2.32</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.4</td> - <td style="background-color: rgb(153, 255, 153);">0.24</td> - <td style="background-color: rgb(153, 255, 153);">4.7</td> - <td style="background-color: rgb(255, 204, 204);">4.7</td> - <td>May 2012</td> - <td style="background-color: rgb(255, 204, 204);">Jul 2013</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 18</td> - <td style="background-color: rgb(153, 255, 153);">3.6</td> - <td style="background-color: rgb(153, 255, 153);">2.16</td> - <td style="background-color: rgb(153, 255, 153);">2.34</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.6</td> - <td style="background-color: rgb(153, 255, 153);">0.26</td> - <td style="background-color: rgb(153, 255, 153);">4.7</td> - <td style="background-color: rgb(255, 204, 204);">4.7</td> - <td>Jan 2013</td> - <td style="background-color: rgb(255, 204, 204);">Jan 2014</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 19</td> - <td style="background-color: rgb(153, 255, 153);">3.9</td> - <td style="background-color: rgb(153, 255, 153);">2.17</td> - <td style="background-color: rgb(153, 255, 153);">2.36</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.8</td> - <td style="background-color: rgb(153, 255, 153);">0.30</td> - <td style="background-color: rgb(153, 255, 153);">4.8</td> - <td style="background-color: rgb(255, 204, 204);">4.8</td> - <td>Jul 2013</td> - <td style="background-color: rgb(255, 204, 204);">Jan 2015</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 20</td> - <td style="background-color: rgb(153, 255, 153);">3.11</td> - <td style="background-color: rgb(153, 255, 153);">2.18</td> - <td style="background-color: rgb(153, 255, 153);">2.38</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.10</td> - <td style="background-color: rgb(153, 255, 153);">0.30</td> - <td style="background-color: rgb(153, 255, 153);">4.8</td> - <td style="background-color: rgb(255, 204, 204);">4.8</td> - <td>Dec 2013</td> - <td style="background-color: rgb(255, 204, 204);">Jun 2015</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 21</td> - <td style="background-color: rgb(153, 255, 153);">3.17</td> - <td style="background-color: rgb(153, 255, 153);">2.20</td> - <td style="background-color: rgb(153, 255, 153);">2.42</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.14</td> - <td style="background-color: rgb(153, 255, 153);">0.32</td> - <td style="background-color: rgb(153, 255, 153);">4.9</td> - <td style="background-color: rgb(204, 255, 153);">4.9</td> - <td>Dec 2014</td> - <td style="background-color: rgb(255, 204, 204);">Dec 2015</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 22</td> - <td style="background-color: rgb(153, 255, 153);">4.0</td> - <td style="background-color: rgb(153, 255, 153);">2.21</td> - <td style="background-color: rgb(153, 255, 153);">2.44</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.16</td> - <td style="background-color: rgb(153, 255, 153);">0.32</td> - <td style="background-color: rgb(153, 255, 153);">5.1</td> - <td style="background-color: rgb(204, 255, 153);">4.9, 5.1</td> - <td>May 2015</td> - <td style="background-color: rgb(255, 204, 204);">Jul 2016</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 23</td> - <td style="background-color: rgb(153, 255, 153);">4.2</td> - <td style="background-color: rgb(153, 255, 153);">2.22</td> - <td style="background-color: rgb(153, 255, 153);">2.46</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.18</td> - <td style="background-color: rgb(153, 255, 153);">0.33</td> - <td style="background-color: rgb(153, 255, 153);">5.1</td> - <td style="background-color: rgb(204, 255, 153);">5.1</td> - <td>Nov 2015</td> - <td style="background-color: rgb(255, 204, 204);">Dec 2016</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 24</td> - <td style="background-color: rgb(153, 255, 153);">4.5</td> - <td style="background-color: rgb(153, 255, 153);">2.23</td> - <td style="background-color: rgb(153, 255, 153);">2.48</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.20</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">6.1</td> - <td style="background-color: rgb(153, 255, 153);">6.1</td> - <td>Jun 2016</td> - <td style="background-color: rgb(255, 204, 204);">Aug 2017</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 25</td> - <td style="background-color: rgb(153, 255, 153);">4.8</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">2.50</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.22.2</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">6.2</td> - <td style="background-color: rgb(153, 255, 153);">6.2</td> - <td>Nov 2016</td> - <td style="background-color: rgb(255, 204, 204);">Dec 2017</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 26</td> - <td style="background-color: rgb(153, 255, 153);">4.11</td> - <td style="background-color: rgb(153, 255, 153);">2.25</td> - <td style="background-color: rgb(153, 255, 153);">2.52</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.22.16</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">7.1</td> - <td style="background-color: rgb(153, 255, 153);">7.1</td> - <td>Jul 2017</td> - <td>Jun 2018</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 27</td> - <td style="background-color: rgb(153, 255, 153);">4.13</td> - <td style="background-color: rgb(153, 255, 153);">2.26</td> - <td style="background-color: rgb(153, 255, 153);">2.54</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.22.24</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">7.2</td> - <td style="background-color: rgb(153, 255, 153);">7.2</td> - <td>Nov 2017</td> - <td>?</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Fedora 28</td> - <td style="background-color: rgb(153, 255, 153);">4.16</td> - <td style="background-color: rgb(153, 255, 153);">2.27</td> - <td style="background-color: rgb(153, 255, 153);">2.56</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.22.30</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">8.0.1</td> - <td style="background-color: rgb(153, 255, 153);">8.0.1</td> - <td>May 2018</td> - <td>?</td> - </tr> - <tr> - <td style="background-color: rgb(255, 204, 204);">RHEL 6</td> - <td style="background-color: rgb(153, 255, 153);">2.6.32</td> - <td style="background-color: rgb(153, 255, 153);">2.12</td> - <td style="background-color: rgb(153, 255, 153);">2.28</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(255, 204, 204);">N/A</td> - <td style="background-color: rgb(153, 255, 153);">0.32</td> - <td style="background-color: rgb(255, 204, 204);">4.4</td> - <td style="background-color: rgb(255, 204, 204);">4.4</td> - <td>Nov 2010</td> - <td>Nov 2020</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">RHEL 7</td> - <td style="background-color: rgb(153, 255, 153);">3.10</td> - <td style="background-color: rgb(153, 255, 153);">2.17</td> - <td style="background-color: rgb(153, 255, 153);">2.42</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.14</td> - <td style="background-color: rgb(153, 255, 153);">0.32</td> - <td style="background-color: rgb(153, 255, 153);">4.8</td> - <td style="background-color: rgb(255, 204, 204);">4.8</td> - <td>Jun 2014</td> - <td>Jun 2024</td> - </tr> - <tr> - <td style="background-color: rgb(255, 204, 204);">openSUSE 11.4</td> - <td style="background-color: rgb(153, 255, 153);">2.6.37</td> - <td style="background-color: rgb(255, 204, 204);">2.11</td> - <td style="background-color: rgb(153, 255, 153);">2.28</td> - <td style="background-color: rgb(153, 255, 153);">2.22</td> - <td style="background-color: rgb(255, 204, 204);">3.0</td> - <td style="background-color: rgb(153, 255, 153);">0.20</td> - <td style="background-color: rgb(255, 204, 204);">4.5</td> - <td style="background-color: rgb(255, 204, 204);">4.5</td> - <td>Mar 2011</td> - <td style="background-color: rgb(255, 204, 204);">Jul 2015</td> - </tr> - <tr> - <td style="background-color: rgb(255, 204, 204);">openSUSE 12.1</td> - <td style="background-color: rgb(153, 255, 153);">3.1</td> - <td style="background-color: rgb(153, 255, 153);">2.14</td> - <td style="background-color: rgb(153, 255, 153);">2.30</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(255, 204, 204);">3.2</td> - <td style="background-color: rgb(153, 255, 153);">0.22</td> - <td style="background-color: rgb(153, 255, 153);">4.6</td> - <td style="background-color: rgb(255, 204, 204);">4.6</td> - <td>Nov 2011</td> - <td style="background-color: rgb(255, 204, 204);">May 2013</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">openSUSE 12.2</td> - <td style="background-color: rgb(153, 255, 153);">3.4</td> - <td style="background-color: rgb(153, 255, 153);">2.15</td> - <td style="background-color: rgb(153, 255, 153);">2.32</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.4</td> - <td style="background-color: rgb(153, 255, 153);">0.24</td> - <td style="background-color: rgb(153, 255, 153);">4.7</td> - <td style="background-color: rgb(255, 204, 204);">4.7</td> - <td>Jul 2012</td> - <td style="background-color: rgb(255, 204, 204);">Jan 2014</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">openSUSE 12.3</td> - <td style="background-color: rgb(153, 255, 153);">3.7</td> - <td style="background-color: rgb(153, 255, 153);">2.17</td> - <td style="background-color: rgb(153, 255, 153);">2.34</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.6</td> - <td style="background-color: rgb(153, 255, 153);">0.28</td> - <td style="background-color: rgb(153, 255, 153);">4.7</td> - <td style="background-color: rgb(255, 204, 204);">4.7</td> - <td>Mar 2013</td> - <td style="background-color: rgb(255, 204, 204);">Sep 2014</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">openSUSE 13.1</td> - <td style="background-color: rgb(153, 255, 153);">3.11</td> - <td style="background-color: rgb(153, 255, 153);">2.18</td> - <td style="background-color: rgb(153, 255, 153);">2.38</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.10</td> - <td style="background-color: rgb(153, 255, 153);">0.30</td> - <td style="background-color: rgb(153, 255, 153);">4.8</td> - <td style="background-color: rgb(255, 204, 204);">4.8</td> - <td>Nov 2013</td> - <td style="background-color: rgb(255, 204, 204);">Jan 2016</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">openSUSE 13.2</td> - <td style="background-color: rgb(153, 255, 153);">3.16</td> - <td style="background-color: rgb(153, 255, 153);">2.19</td> - <td style="background-color: rgb(153, 255, 153);">2.42</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.14</td> - <td style="background-color: rgb(153, 255, 153);">0.32</td> - <td style="background-color: rgb(153, 255, 153);">4.8</td> - <td style="background-color: rgb(204, 255, 153);">4.8, 4.9</td> - <td>Nov 2014</td> - <td style="background-color: rgb(255, 204, 204);">Jan 2017</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">openSUSE Leap 42.1</td> - <td style="background-color: rgb(153, 255, 153);">4.1</td> - <td style="background-color: rgb(153, 255, 153);">2.19</td> - <td style="background-color: rgb(153, 255, 153);">2.44</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.16</td> - <td style="background-color: rgb(153, 255, 153);">0.32</td> - <td style="background-color: rgb(153, 255, 153);">5.2</td> - <td style="background-color: rgb(204, 255, 153);">4.8, 5.2</td> - <td>Nov 2015</td> - <td style="background-color: rgb(255, 204, 204);">May 2017</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">openSUSE Leap 42.2</td> - <td style="background-color: rgb(153, 255, 153);">4.4</td> - <td style="background-color: rgb(153, 255, 153);">2.22</td> - <td style="background-color: rgb(153, 255, 153);">2.48.2</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.20.9</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">5.3.1</td> - <td style="background-color: rgb(153, 255, 153);">4.8.5, 5.3.1, 6.1.1</td> - <td>Nov 2016</td> - <td style="background-color: rgb(255, 204, 204);">Jan 2018</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">openSUSE Leap 42.3</td> - <td style="background-color: rgb(153, 255, 153);">4.4</td> - <td style="background-color: rgb(153, 255, 153);">2.22</td> - <td style="background-color: rgb(153, 255, 153);">2.48.2</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.20.10</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">5.3.1</td> - <td style="background-color: rgb(153, 255, 153);">4.8.5, 5.3.1, 6.2.1, 7.1.1</td> - <td>Jul 2017</td> - <td>Jan 2019</td> - </tr> - <tr> - <td style="background-color: rgb(255, 204, 204);">Debian 6</td> - <td style="background-color: rgb(153, 255, 153);">2.6.32</td> - <td style="background-color: rgb(255, 204, 204);">2.11</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">2.20</td> - <td style="background-color: rgb(255, 204, 204);">N/A</td> - <td style="background-color: rgb(255, 204, 204);">0.16</td> - <td style="background-color: rgb(255, 204, 204);">4.4</td> - <td style="background-color: rgb(255, 204, 204);">4.1, 4.3, 4.4</td> - <td>Feb 2011</td> - <td style="background-color: rgb(255, 204, 204);">May 2014 / Feb 2016 (LTS)</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Debian 7</td> - <td style="background-color: rgb(153, 255, 153);">3.2</td> - <td style="background-color: rgb(153, 255, 153);">2.13</td> - <td style="background-color: rgb(153, 255, 153);">2.32</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.4</td> - <td style="background-color: rgb(153, 255, 153);">0.26</td> - <td style="background-color: rgb(153, 255, 153);">4.7</td> - <td style="background-color: rgb(255, 204, 204);">4.4, 4.6, 4.7</td> - <td>May 2013</td> - <td style="background-color: rgb(255, 204, 204);">Apr 2016 / May 2018 (LTS)</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Debian 8</td> - <td style="background-color: rgb(153, 255, 153);">3.16</td> - <td style="background-color: rgb(153, 255, 153);">2.19</td> - <td style="background-color: rgb(153, 255, 153);">2.42</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.14</td> - <td style="background-color: rgb(153, 255, 153);">0.32</td> - <td style="background-color: rgb(153, 255, 153);">4.9</td> - <td style="background-color: rgb(204, 255, 153);">4.8, 4.9</td> - <td>Apr 2015</td> - <td>Jun 2018 / Jun 2020 (LTS)</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Debian 9</td> - <td style="background-color: rgb(153, 255, 153);">4.9</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">2.50</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.22</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">6.3</td> - <td style="background-color: rgb(153, 255, 153);">6.3</td> - <td>Jun 2017</td> - <td>Jun 2020 / Jun 2022 (LTS)</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Ubuntu 12.04 LTS</td> - <td style="background-color: rgb(153, 255, 153);">3.2</td> - <td style="background-color: rgb(153, 255, 153);">2.15</td> - <td style="background-color: rgb(153, 255, 153);">2.32</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.4</td> - <td style="background-color: rgb(153, 255, 153);">0.30</td> - <td style="background-color: rgb(153, 255, 153);">4.6</td> - <td style="background-color: rgb(255, 204, 204);">4.4, 4.5, 4.6</td> - <td>Apr 2012</td> - <td style="background-color: rgb(255, 204, 204);">Apr 2017</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Ubuntu 14.04 LTS</td> - <td style="background-color: rgb(153, 255, 153);">3.13</td> - <td style="background-color: rgb(153, 255, 153);">2.19</td> - <td style="background-color: rgb(153, 255, 153);">2.40</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.10</td> - <td style="background-color: rgb(153, 255, 153);">0.30</td> - <td style="background-color: rgb(153, 255, 153);">4.8</td> - <td style="background-color: rgb(255, 204, 204);">4.4, 4.6, 4.7, 4.8</td> - <td>Apr 2014</td> - <td>Apr 2019</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Ubuntu 16.04 LTS</td> - <td style="background-color: rgb(153, 255, 153);">4.4</td> - <td style="background-color: rgb(153, 255, 153);">2.23</td> - <td style="background-color: rgb(153, 255, 153);">2.48</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.18</td> - <td style="background-color: rgb(153, 255, 153);">0.33</td> - <td style="background-color: rgb(153, 255, 153);">5.3</td> - <td style="background-color: rgb(204, 255, 153);">4.7, 4.8, 4.9, 5.3</td> - <td>Apr 2016</td> - <td>Apr 2021</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">Ubuntu 18.04 LTS</td> - <td style="background-color: rgb(153, 255, 153);">4.15</td> - <td style="background-color: rgb(153, 255, 153);">2.27</td> - <td style="background-color: rgb(153, 255, 153);">2.56</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.22.30</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">8-20180414</td> - <td style="background-color: rgb(153, 255, 153);">7.3</td> - <td>Apr 2018</td> - <td>Apr 2023</td> - </tr> - <tr> - <td style="background-color: rgb(255, 204, 204);">SLES 11 (SP4)</td> - <td style="background-color: rgb(153, 255, 153);">3.0</td> - <td style="background-color: rgb(255, 204, 204);">2.11</td> - <td style="background-color: rgb(153, 255, 153);">2.22</td> - <td style="background-color: rgb(153, 255, 153);">2.18</td> - <td style="background-color: rgb(255, 204, 204);">N/A</td> - <td style="background-color: rgb(153, 255, 153);">0.24</td> - <td style="background-color: rgb(153, 255, 153);">4.6, 5.3</td> - <td style="background-color: rgb(255, 204, 204);">4.3</td> - <td>Mar 2009</td> - <td>Mar 2019</td> - </tr> - <tr> - <td style="background-color: rgb(153, 255, 153);">SLES 12 (SP2)</td> - <td style="background-color: rgb(153, 255, 153);">4.4</td> - <td style="background-color: rgb(153, 255, 153);">2.22</td> - <td style="background-color: rgb(153, 255, 153);">2.48.2</td> - <td style="background-color: rgb(153, 255, 153);">2.24</td> - <td style="background-color: rgb(153, 255, 153);">3.20.9</td> - <td style="background-color: rgb(153, 255, 153);">0.34</td> - <td style="background-color: rgb(153, 255, 153);">6.2.1</td> - <td style="background-color: rgb(255, 204, 204);">4.8.5</td> - <td>Oct 2014</td> - <td>Oct 2024</td> - </tr> - </tbody> -</table> - -<h4 id="注意">注意</h4> - -<p>赤い背景は、現在のバージョンのFirefoxとの互換性がないことを表しています。EOL列では、EOL列の末尾のディストリビューションバージョンを表します。<br> - <br> - 黄色の背景はESR60との互換性を表しています<br> - <br> - 緑色の背景は現在のリリース (執筆時点では60) との互換性があることを表しています<br> - <br> - より緑色の背景は、現在のmozilla-central (執筆時点では62) との互換性があることを表しています。</p> - -<p>テーブルは <a href="https://github.com/glandium/firefox-linux-compat-matrix">https://github.com/glandium/firefox-linux-compat-matrix</a> のスクリプトとデータを使って生成されています。</p> diff --git a/files/ja/mozilla/firefox/multiple_profiles/index.html b/files/ja/mozilla/firefox/multiple_profiles/index.html deleted file mode 100644 index d495fe06af..0000000000 --- a/files/ja/mozilla/firefox/multiple_profiles/index.html +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: Multiple Firefox profiles -slug: Mozilla/Firefox/Multiple_profiles -tags: - - Firefox - - QA - - イントロ - - ガイド - - プロファイル - - 初心者 -translation_of: Mozilla/Firefox/Multiple_profiles ---- -<div>{{FirefoxSidebar}}</div> - -<p class="summary">Firefox のプロファイルは、ユーザーが Firefox のコピーに作成またはインストールした設定、カスタマイズ、アドオン、その他のパーソナライズの集合です。プロファイルに関する詳細は、Mozilla のエンドユーザサポートサイトを参照してください。</p> - -<h2 id="複数のプロファイルを持つ理由">複数のプロファイルを持つ理由</h2> - -<p>カジュアルなユーザーは、家族ごとに異なるプロファイルを使用することができます。プロファイルを別にすると、それぞれの人が独自のブックマーク、設定、アドオンを持つことができます。</p> - -<p>Web 開発者は Web サイト、アプリケーション、またはさまざまな Firefox チャンネル上の他のプロジェクトをテストするためのセカンダリプロファイルを必要とするかもしれません。たとえば、Web 開発用にいくつかの拡張機能をインストールしたいが、汎用の Web ブラウジング用にはインストールしたくないかもしれません。 Nightly チャンネルを使用している間、アドオン開発者がそれらを更新する機会を得るまで、新しい API の変更と一時的に互換性がなくなったアドオンが発生することがあります。このようなアドオンは、他のプロファイルで使用できるようにしながら、 Nightly のためのプロファイルから削除できます。</p> - -<p>QA、テスト、およびバグトリアージングの貢献者のために、それぞれ独自のプロファイルを持つ複数の開発版 Firefox をインストールしたい場合があります。テスト用の新しいプロファイルを作成すると、環境設定、ブックマーク、および履歴が失われないようにすることができます。新しいプロファイルを設定するには少し時間がかかります。完了すると、すべての Firefox バージョンが別々に更新され、同時に実行できます。</p> - -<h2 id="利用可能なブラウザ開発チャンネル">利用可能なブラウザ開発チャンネル</h2> - -<p>4つの利用可能なチャンネルがあり、それぞれは異なるレベルの安定性と開発レベルに対応しています。 4つのチャンネルは <a class="link-https" href="https://www.mozilla.org/firefox/new/" title="Firefox Stable">Release</a>, <a class="link-https" href="https://www.mozilla.org/firefox/beta/" title="Firefox Beta">Beta</a>, <a href="https://www.mozilla.org/firefox/aurora/">Developer Edition</a>, and <a class="external" href="https://nightly.mozilla.org/" title="Firefox Nightly">Nightly</a>です。 Release チャンネルは "公式なリリース" であり、たいていのユーザーに推奨されます。 しかしながら、より冒険好きなユーザーに対しては、ほかの3つのチャンネルを使用して Firefox の新機能を見て、試すことができます。 Beta チャンネルは次のリリースで公開される予定の機能を含んでおりテストの最終段階にあたります。 Aurora (Developer Edition) はまだ Beta ほど安定していない実験的な機能を含んでいます。 Nightly は Firefox 開発者からの最新のコードが含まれており、最も安定していないチャンネルです。</p> - -<h2 id="サードパーティのツール">サードパーティのツール</h2> - -<p>組み込みのプロファイルマネージャーと外部のプロファイルマネージャーに加えて、複数のプロファイルで作業するのを容易にするサードパーティ製のツールがいくつかあります。</p> - -<div class="note"> -<p>このリストは決して網羅的ではありません。発見した便利なツールをリストに追加してください!</p> -</div> - -<h3 id="Mac_OS_X">Mac OS X</h3> - -<ul> - <li><a href="http://davemartorana.com/multifirefox/">Multifirefox</a> by Dave Martorana</li> -</ul> - -<h2 id="プロファイル管理">プロファイル管理</h2> - -<h3 id="Firefox_の実行中のプロファイルの決定">Firefox の実行中のプロファイルの決定</h3> - -<p>Windows, macOS or Linux で現在実行している Firefox インスタンスのプロファイルを決定するには、次のようにします。</p> - -<ol> - <li>ブラウザーの URL 検索バーに about:profiles と入力します。</li> - <li>表示されるページでは、すべてのプロファイルの一覧が表示されます。 それぞれの先頭は "プロファイル:" に続いてそのプロファイルの名前が表示されています。</li> - <li>現在実行している Firefox インスタンスのプロファイルの下には "<strong>これは使用中のプロファイルです</strong>" という太字のテキストが表示されます。 例えば、 "プロファイル: Suzie" という項目の下にそのテキストがあれば、 <em>Suzie</em> という名前のプロファイルを実行していることになります。</li> -</ol> - -<h3 id="希望のプロファイルで_Firefox_を起動する">希望のプロファイルで Firefox を起動する</h3> - -<p id="You_cannot_change_the_profile_while_Firefox_is_running._Although_it_is_possible_in_some_cases_to_have_multiple_instances_of_Firefox_running_in_different_profiles_to_avoid_confusion_you_should_first_exitquitterminate_all_running_instances_of_Firefox_FirefoxDeveloperEdition_or_Nightly._Then_follow_the_instructions_below_applicable_to_your_operating_system."><strong>You cannot change the profile while Firefox is running.</strong> Although it is possible in some cases to have multiple instances of Firefox running in different profiles, to avoid confusion, you should first exit/quit/terminate all running instances of <em>Firefox</em>, <em>FirefoxDeveloperEdition</em> or <em>Nightly</em>. Then follow the instructions below, applicable to your operating system.</p> - -<h4 id="Windows">Windows</h4> - -<h5 id="Windows_XP">Windows XP</h5> - -<ol> - <li>Click the Start button.</li> - <li>Click "Run".</li> - <li> - <p>Type <code>firefox --ProfileManager</code>.</p> - </li> -</ol> - -<h5 id="Windows_Vista7">Windows Vista/7</h5> - -<ol> - <li>Click the Start button.</li> - <li>Click the search bar at the bottom.</li> - <li> - <p>Type <code>firefox --ProfileManager</code>.</p> - </li> -</ol> - -<h5 id="Windows_88.1">Windows 8/8.1</h5> - -<ol> - <li>Press "Windows + R" on your keyboard.</li> - <li>Type <code>firefox --ProfileManager</code>.</li> -</ol> - -<p>If the Profile Manager window does not open, Firefox may have been running in the background, even though it was not visible. Close all instances of Firefox, or restart the computer, and then try again.</p> - -<h4 id="Linux">Linux</h4> - -<p>If Firefox is already included in your Linux distribution, or if you have installed Firefox with the package manager of your Linux distribution:</p> - -<ol> - <li>At the top of the Firefox window, click on the File menu and select Quit.</li> - <li>In Terminal run <code>firefox --ProfileManager</code></li> -</ol> - -<p>If the Profile Manager window does not open, Firefox may have been running in the background, even though it was not visible. Close all instances of Firefox, or restart the computer and then try again.</p> - -<h4 id="macOS">macOS</h4> - -<ol> - <li>Run the <em>Terminal</em> application, which is found in Applications/Utilities.</li> - <li>Type or paste in the path to Firefox, followed by <code>.app/Contents/MacOS/firefox</code>. For example, if Firefox is installed in the recommended location, you would enter <code>/Applications/Firefox.app/Contents/MacOS/firefox</code>.</li> - <li>If you have the path to your desired profile handy, enter a space character, followed by <code>-profile</code> followed by another space character, followed by the full path to the profile folder you wish to launch into. This will launch Firefox immediately. Otherwise, enter a space character followed by <code>--profilemanager</code>. This will present the Profile Manager window in which you can make your selection.</li> - <li>Hit <em>return.</em></li> -</ol> - -<p>Here is a complete example Terminal command from steps 2-3:</p> - -<pre>/Applications/Firefox.app/Contents/macOS/firefox -profile /Users/Suzie/Library/Application\ Support/Firefox/Profiles/r99d1z7c.default</pre> - -<p>If you want to do this frequently and more easily, you may wish to create an <em>Automator</em> application, as explained in <a href="http://sonnygill.net/mac/mac-multiple-firefox-profiles/">this tutorial</a>.</p> - -<h3 id="プロファイルの作成">プロファイルの作成</h3> - -<h4 id="Creating_a_profile_through_the_Profile_Manager">Creating a profile through the Profile Manager</h4> - -<p>These instructions should be the same for all operating systems.</p> - -<ol> - <li>To start the Create Profile Wizard, click "Create Profile..." in the Profile Manager.</li> - <li>Click Next and enter the name of the profile. Use a profile name that is descriptive, such as your personal name. This name is not exposed to the Internet.</li> - <li>You can also choose where to store the profile on your computer. To select storage location, click Choose Folder....</li> - <li>If you choose your folder location for the profile, select a new or empty folder. If you choose a folder that isn't empty, and you later remove the profile and choose the \"Delete Files\" option, everything inside that folder will be deleted.</li> - <li>To create the new profile, click Finish.</li> -</ol> - -<h4 id="Creating_a_profile_through_the_Firefox_browser">Creating a profile through the Firefox browser</h4> - -<p>You can create a new Firefox profile directly from the browser.</p> - -<ol> - <li>Type about:profiles into the browser URL search bar</li> - <li>On the page, click Create a New Profile button</li> - <li>Read the introduction, and click Next</li> - <li>Enter a profile name for your new Profile. Use a profile name that is descriptive, such as your personal name. This name is not exposed to the Internet.</li> - <li>Optionally, to change where the profile will be stored on your computer, click Choose Folder...</li> - <li>To create the new profile, click Finish.</li> -</ol> - -<h3 id="プロファイルの削除">プロファイルの削除</h3> - -<ol> - <li>In the Profile Manager, select the profile to remove, and click Delete Profile....</li> - <li>Confirm that you wish to delete the profile: - <ul> - <li>Don't Delete Files removes the profile from the Profile Manager yet retains the profile data files on your computer in the storage folder so that your information is not lost. "Don't Delete Files" is the preferred option, because it saves the old profile's folder, allowing you to recover the files to a new profile.</li> - <li>Delete Files removes the profile and its files, including the profile bookmarks, settings, passwords, etc.<br> - <br> - {{ warning("If you use the \"Delete Files\" option, the profile folder, and files will be deleted. This action cannot be undone.") }}</li> - <li>Cancel interrupts the profile deletion.</li> - </ul> - </li> -</ol> - -<h3 id="プロファイルの名前変更">プロファイルの名前変更</h3> - -<ol> - <li>In the Profile Manager, select the profile you want to rename, and then click "Rename Profile".</li> - <li>Enter a new name for the profile and click on OK.</li> -</ol> - -<div class="note"> -<p>Note: The folder containing the files for the profile is not renamed.</p> -</div> - -<h2 id="オプション">オプション</h2> - -<h3 id="オフライン作業">オフライン作業</h3> - -<p>Choosing this option loads the selected profile, and starts Firefox offline. You can view previously viewed web pages, and experiment with your profile.</p> - -<h3 id="Don't_ask_at_startup">Don't ask at startup</h3> - -<p>If you have multiple profiles, Firefox prompts you for the profile to use each time you start Firefox. Select this option to allow Firefox to load the selected profile, without prompting at startup.</p> - -<div class="note"> -<p>Note: To access other profiles after selecting this option, you must start the Profile Manager first.</p> -</div> - -<h2 id="プロファイルの使用">プロファイルの使用</h2> - -<h3 id="Windows_2">Windows</h3> - -<p>If you want to have the profile manager to pop up each time you start Firefox, so you can choose a profile, you will need to edit the "Target" of the launch icon. To do this:</p> - -<ol> - <li>Right-click the icon and choose "Properties".</li> - <li>When the properties dialog box pops up, you should see a "Target" text field that you can edit, and it should show the current file path.</li> - <li>After the closing quote, add <code>-ProfileManager</code>.</li> - <li>Click Ok.</li> -</ol> - -<p>Now whenever you double click that icon, the profile manager should appear, allowing you to choose which profile you'd like to use.</p> - -<p>If you want individual icons to launch specific profiles, you will need to edit the "Target" of each icon. To do this:</p> - -<ol> - <li>Right-click the icon and choose "Properties".</li> - <li>When the properties dialog box pops up, you should see a "Target" text field that you can edit, and it should show the current file path.</li> - <li>To permanently set a specific profile, add <code>-p PROFILE_NAME</code> to the target path, but outside of the quotes, replacing "PROFILE_NAME" with the actual profile name you chose.</li> - <li>If you would also like to allow multiple instances of Firefox to run at the same time, add <code>-no-remote</code> after the profile name.</li> -</ol> - -<p>Once you are all done, click Ok. Do this for each icon you'd like to have a specific profile for. Once done, each one should automatically start with the specified profile<code>.</code></p> - -<h3 id="Linux_2">Linux</h3> - -<p>There is no extremely straightforward way to create custom application launchers in Gnome 3 like there was in Gnome 2. The following tutorial will help get you going overall: <a class="external" href="https://blog.randell.ph/how-to-create-custom-application-launchers-in-gnome-3/" title="How to create custom application launchers in gnome 3">Gnome 3 Custom application launcher</a>. Once you get to the point of adding a new item, you can have the profile dialog show up every time or set the launcher to launch a specific profile.</p> - -<p>If you want to have the profile manager to pop up each time you start Firefox, so you can choose a profile, you will need to set the command line for your new launcher.</p> - -<ol> - <li>Set the "command" text field to target the executable file, likely "/usr/bin/firefox", and add the <code>-p</code> parameter.</li> -</ol> - -<p>If you want individual icons to launch specific profiles, you will need to set the command line for your new launcher. To do this:</p> - -<ol> - <li>Set the "command" text field to target the executable file, likely "/usr/bin/firefox", and add the <code>-p PROFILE_NAME</code> parameter, replacing "PROFILE_NAME" with the specific profile.</li> - <li>Repeat as necessary, for each additional profile you want to set.</li> - <li>If you would also like to allow multiple instances of Firefox to run at the same time, add "-no-remote" after the profile name.</li> -</ol> - -<h3 id="Mac_OS_X_2">Mac OS X</h3> - -<p>You can find a useful tutorial to set up custom launchers here: <a href="https://spf13.com/post/managing-multiple-firefox-profiles-in-os-x/" title="Managing Multiple Firefox Profiles in OSX">Managing Multiple Firefox Profiles in OSX</a>. Do note it's best to follow all steps in the "Creating the scripts" section, including the "edit Info.plist" step. Leave off the profile name if you want the profile selector to show up every time you launch.</p> - -<h2 id="さまざまな_Firefox_チャンネル用に複数のプロフィールを設定する">さまざまな Firefox チャンネル用に複数のプロフィールを設定する</h2> - -<p>This section will be especially helpful if you are a developer, wanting to work with multiple channels, and each having their separate launcher.</p> - -<h3 id="Windows_3">Windows</h3> - -<p>In Windows, the Developer and Nightly builds get their own directory in the "Programs" folder, so you don't have to worry about where to store the downloaded files. However, all three will attempt to use the same profile by default. You won't want to keep this behavior, because the different channels have different levels of features. To set each launcher, follow the Windows instructions at <a href="#Windows">Windows Launcher</a>.</p> - -<h3 id="Linux_3">Linux</h3> - -<p>In Linux, things aren't as automatically set up. You will likely get a prompt to download a tar.bz2 file to extract from. Extract the files to a new directory, and use the new launcher instructions from <a href="#Linux">here</a>. The only change you will need to make is the command path. You will want to set it to the directory where you extracted the Firefox channel's tar.bz2 file, and the executable "firefox" file located within this directory. The remaining profile assignment methods will remain the same. You will want to, for sure, add the <code>-no-remote</code> part to the end of the command field, so that you could run multiple instances at the same time.</p> - -<h3 id="Mac_OS_X_3">Mac OS X</h3> - -<p>You can find a useful tutorial to set up custom launchers here: <a href="https://spf13.com/post/managing-multiple-firefox-profiles-in-os-x/" title="Managing Multiple Firefox Profiles in OSX">Managing Multiple Firefox Profiles in OSX</a>. Do note it's best to follow all steps in the "Creating the scripts" section, including the "edit Info.plist" step. Also, you'll want to change the path in the do shell script to point to the correct .app file for the Firefox channel you want to target.</p> diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/index.html deleted file mode 100644 index 3adde0c9b6..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: マルチプロセス Firefox -slug: Mozilla/Firefox/Multiprocess_Firefox -translation_of: Mozilla/Firefox/Multiprocess_Firefox ---- -<p>現バージョンのデスクトップ版 Firefox は、オペレーティングシステムにおけるプロセス 1 つでブラウザ全体を実行しています。特に、ブラウザ UI (別名 "chrome code") の JavaScript を実行するプロセスと Web ページ (別名 "content" または "web content") のコードを実行するプロセスが同じです。<br> - <br> - 将来のバージョンの Firefox は、ブラウザ UI のプロセスと web content のプロセスを分離します。このアーキテクチャの第 1 段階では、すべてのブラウザタブを同一のプロセスで実行して、ブラウザ UI を別のプロセスで実行する予定です。また将来の段階で、複数の content プロセスを持つようにする予定です。マルチプロセス Firefox を提供するプロジェクトは Electrolysis と呼ばれ、e10s と略されることがあります。</p> - -<p>一般的な Web ページは、マルチプロセス Firefox の影響を受けません。Firefox そのものや Firefox アドオンの開発に携わる人々は、web content に直接アクセスできる機能に依存するコードを使用している場合に影響を受けます。</p> - -<p>content へ直接アクセスせずに、chrome JavaScript では <a href="/ja/Firefox/Multiprocess_Firefox/Message_manager">メッセージマネージャ</a> を使用して content にアクセスしなければなりません。容易に移行できるようにするため、<a href="/ja/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">クロスプロセスオブジェクトラッパー</a>や<a href="/ja/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Compatibility_shims">アドオン開発者向けの互換性 shim</a> を実装しました。あなたがアドオン開発者で影響を受けるかがわからない場合は、<a href="/ja/Add-ons/Working_with_multiprocess_Firefox">マルチプロセス Firefox を扱うためのガイド</a>をご覧ください。</p> - -<p>現在マルチプロセス Firefox は <a class="external external-icon" href="https://www.mozilla.org/firefox/developer/">Firefox Developer Edition</a> で、既定で有効です。</p> - -<hr> -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Technical_overview">技術概要</a></dt> - <dd>マルチプロセス Firefox がどのように実装されているかを、高レベルから概観します。</dd> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Glossary">用語</a></dt> - <dd>マルチプロセス Firefox で使用する用語のリファレンスです。</dd> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Message_Manager">メッセージマネージャ</a></dt> - <dd>chrome と content の間の通信に使用するオブジェクトのガイドです。</dd> - <dt><a href="/ja/Mozilla/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">SDK ベースのアドオン</a></dt> - <dd>Add-on SDK を使用して開発したアドオンのマイグレーション方法です。</dd> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Which_URIs_load_where">URI ごとの読み込み先</a></dt> - <dd>どの URI (chrome:、about:、file:、resource:) がどのプロセスに読み込まれるかのクイックガイドです。</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Motivation">マルチプロセス化を行う理由</a></dt> - <dd>なぜマルチプロセス Firefox を実装するか? その答えはパフォーマンス、セキュリティ、安定性です。</dd> - <dt><a href="/ja/Add-ons/Working_with_multiprocess_Firefox">アドオンのマイグレーションガイド</a></dt> - <dd>あなたがアドオン開発者でしたら、アドオンが影響を受けるかを突き止めてコードの更新方法を確認してください。</dd> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">クロスプロセスオブジェクトラッパー</a></dt> - <dd>クロスプロセスオブジェクトラッパーは、chrome code が同期的に content にアクセスする機能を提供する、マイグレーション支援措置です。</dd> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">content プロセスのデバッグ</a></dt> - <dd>frame やプロセスのスクリプトを含む、content プロセスで実行しているコードをデバッグする方法です。</dd> - <dt><a href="https://developer.mozilla.org/docs/Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox">マルチプロセス化された Firefox におけるタブの選択方法</a></dt> - <dd>マルチプロセス化された Firefox ではタブの選択方法が異なります。</dd> -</dl> -</div> -</div> - -<hr> -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">chrome スクリプトの制限</a></dt> - <dd>chrome code で実施できなくなることと、その修正方法の実例です。</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/ja/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">frame スクリプトの制限</a></dt> - <dd>frame スクリプトで実施できなくなることと、その代替手段の実例です。</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Contact_us" name="Contact_us">問い合わせ先</h2> - -<p>プロジェクトについて詳しく知り、参加するか疑問点を尋ねてください。</p> - -<ul> - <li><strong>Electrolysis プロジェクトのページ</strong>: <a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li> - <li><strong>IRC</strong>: <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a> の #e10s</li> - <li><strong>メーリングリスト</strong>: <a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li> -</ul> diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html deleted file mode 100644 index 869474d44f..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Message manager -slug: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager ---- -<p>Message managers provide a way for chrome-privileged JavaScript code to communicate across process boundaries. They are particularly useful for allowing chrome code, including the browser's own code and extension code, to access web content when the browser is running web content in a separate process.</p> - -<p>These guides explain how to use message managers in multiprocess Firefox.</p> - -<p>Note that none of this requires multiprocess Firefox: everything described here will work with single-process Firefox, so the same code will work in both variants.</p> - -<hr> -<h2 id="Guides">Guides</h2> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview">Message manager overview</a></dt> - <dd> </dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Frame_script_loading_and_lifetime">Frame script loading and lifetime</a></dt> - <dd> </dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Communicating_with_frame_scripts">Communicating with frame scripts</a></dt> - <dd> </dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Performance">Performance Best Practices</a></dt> - <dd> </dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Frame_script_environment">Frame script environment</a></dt> - <dd> </dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/_Limitations_of_frame_scripts">Limitations of frame scripts</a></dt> - <dd> </dd> - <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Process_scripts">Process scripts</a></dt> - <dd> </dd> -</dl> -</div> -</div> - -<hr> -<h2 id="API_reference">API reference</h2> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader">nsIFrameScriptLoader</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster">nsIMessageBroadcaster</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></dt> - <dd> </dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender">nsISyncMessageSender</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager">nsIContentFrameMessageManager</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader">nsIProcessScriptLoader</a></dt> - <dd> </dd> -</dl> -</div> -</div> diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html deleted file mode 100644 index 5e00266603..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html +++ /dev/null @@ -1,444 +0,0 @@ ---- -title: Message manager overview -slug: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview ---- -<div class="summary"> -<p>マルチプロセスの Firefo では 2 つのプロセスが存在します。</p> - -<ul> - <li>Chrome プロセスまたは親プロセスと呼ばれるもので、ブラウザ UI(chrome) コードと拡張によって挿入されたコードが動いています。</li> - <li>コンテンツプロセスまたは子プロセスと呼ばれます。Web コンテンツのすべてが動いています。近い将来のマルチプロセス Firefo のバージョンでは、それぞれのタブが個別のプロセスで動作するようになりますが、現在はすべてのコンテンツタブが 1 つのコンテンツプロセスを共有している状況です。</li> -</ul> - -<p>Message manager はあるプロセス上の chrome 権限 JavaScript がほかのプロセス上の Chrome 権限 JavaScript と通信することを可能にします。</p> - -<p>この記事では種類の違う message manager の説明、アクセス方法、使いどころの説明をします。</p> -</div> - -<p>トップレベルにおいて、2つの違う種類の message manager が存在します。</p> - -<ul> - <li><em>Frame message managers:</em>コンテンツタブにロードされた iframe にロードされた chrome プロセスコードを有効にします。(現在は 1 つのブラウザタブ) それは<em> frame scripts</em> と呼ばれ、 その名の通り、ブラウザ内の特定のフレームにスコープされます。もし chrome コードを子プロセスで動作して、Web コンテンツにアクセスしたい場合は、一般的にこの種の message manager を使います。</li> - <li><em>Process message managers: </em>プロセスの境界を越え、親(chrome) プロセスで動作しているコードが子(コンテンツ)プロセスで動作するコードと通信することを可能にします。これが子プロセスにおいてはグローバルである事を除いては、frame scripts に似ています。Process scripts は <a href="/en/docs/Observer_Notifications">observer</a> や <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy">content policy</a> のグローバルサービスにアクセスするように、エクステンションがコンテンツプロセスで限られたコードを実行する場合と使い方が似ています。</li> -</ul> - -<h2 id="Frame_message_managers">Frame message managers</h2> - -<p>マルチプロセスの Firefo では、chrome コードが Web コンテンツにアクセスする必要が出た時に、以下のように使います。</p> - -<ul> - <li>factor the code that needs direct access to content into separate scripts, which are called "frame scripts"</li> - <li>use a frame message manager to load these frame scripts into the content process</li> - <li>use the frame message manager API to communicate with the frame script</li> -</ul> - -<div class="note"> -<p>Some older articles on multiprocess Firefox and the message manager might refer to "content scripts" instead of "frame scripts", but this usage is deprecated because the Add-on SDK uses "content script" to refer to a <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts">similar but different kind of script</a>.</p> -</div> - -<p>So fundamentally, frame message managers enable chrome code to:</p> - -<ul> - <li>load a script into a frame (essentially, a single browser tab) in the content process. These scripts are called "frame scripts".</li> - <li>communicate with frame scripts using message-passing APIs</li> -</ul> - -<p>There are various types of frame message managers, as depicted in this diagram:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/10795/frame-message-managers.png" style="display: block; height: 596px; margin-left: auto; margin-right: auto; width: 737px;"></p> - -<p>This diagram shows the setup when there are 2 browser windows open, one with 2 tabs open and one with 1 tab open.</p> - -<h3 id="Chrome_process">Chrome process</h3> - -<p>In the chrome process, there's a hierarchy of frame message managers: the global frame message manager, window message managers, and browser message managers.</p> - -<h4 id="Global_frame_message_manager">Global frame message manager</h4> - -<table class="fullwidth-table standard-table"> - <tbody> - <tr> - <td style="width: 20%;">Description</td> - <td> - <p>There's a single <em>global frame message manager</em> in the chrome process.</p> - - <p>This operates on all frames, in all content tabs. If you load a frame script using the global frame message manager, the script gets loaded separately into every open tab: three times, in the diagram above. Similarly, if you send a message using the global frame message manager, it's received by all content tabs, and is then delivered to any frame scripts that are listening for it.</p> - - <p>Its most important functions and attributes are:</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#childCount">childCount</a></code> : contains the number of children (typically, browser windows)</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#getChildAt()">getChildAt()</a></code> : get the child at the given index</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader#loadFrameScript()">loadFrameScript()</a></code> : load a frame script into every tab in the browser</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#broadcastAsyncMessage()">broadcastAsyncMessage()</a></code> : send a message to frame scripts</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from all frame scripts</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p> - </td> - </tr> - <tr> - <td>Interfaces</td> - <td> - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader" title="">nsIFrameScriptLoader</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></p> - </td> - </tr> - <tr> - <td>How to access</td> - <td> - <p>Access it using <code><a href="/en-US/docs/Components.classes">Components.classes</a></code>:</p> - - <pre class="brush: js language-js"> -// chrome script -let globalMM = Cc["@mozilla.org/globalmessagemanager;1"] - .getService(Ci.nsIMessageListenerManager);</pre> - - <p>You can also access it as the <code>mm</code> property of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">Services.jsm</a>, if you are in the parent process.</p> - </td> - </tr> - </tbody> -</table> - -<h4 id="Window_message_manager">Window message manager</h4> - -<table class="fullwidth-table standard-table"> - <tbody> - <tr> - <td style="width: 20%;">Description</td> - <td> - <p>There's a <em>window message manager</em> for every browser window: two, in the diagram above.</p> - - <p>It operates on all content tabs in a given window. If you load a frame script using the window message manager it gets loaded separately into each tab open in that particular window. If you send a message using the window message manager, it gets sent to all content tabs in that window.</p> - - <p>Its most important functions and attributes are:</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#childCount">childCount</a></code> : contains the number of children (typically, browser tabs)</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#getChildAt()">getChildAt()</a></code> : get the child at the given index</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader#loadFrameScript()">loadFrameScript()</a></code> : load a frame script into every tab in this window</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#broadcastAsyncMessage()">broadcastAsyncMessage()</a></code> : send a message to all frame scripts in this window</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from frame scripts</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p> - </td> - </tr> - <tr> - <td>Interfaces</td> - <td> - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader" title="">nsIFrameScriptLoader</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></p> - </td> - </tr> - <tr> - <td>How to access</td> - <td> - <p>You can access it as a property of the browser window:</p> - - <pre class="brush: js"> -// chrome script -let windowMM = window.messageManager;</pre> - </td> - </tr> - </tbody> -</table> - -<h4 id="Browser_message_manager">Browser message manager</h4> - -<div class="note"> -<p>Note that in this context, "browser" refers to the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/browser">XUL <browser> object</a>, which is a frame that hosts a single Web document. It does not refer to the more general sense of a Web browser.</p> -</div> - -<table class="fullwidth-table standard-table"> - <tbody> - <tr> - <td style="width: 20%;">Description</td> - <td> - <p>Finally, there's a <em>browser message manager</em> for every open content tab: three, in the diagram above.</p> - - <p>This corresponds one-to-one with a content tab. Scripts you load using a browser message manager are loaded only into that content tab, and messages you send are delivered only to that content tab.</p> - - <p>You can mix and match: so for example, you could load a script into every tab using the global message manager, but then send a message to the script instance loaded into a specific tab by using the browser message manager.</p> - - <p>Its most important functions are:</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader#loadFrameScript()">loadFrameScript()</a></code> : load a frame script into this browser frame (tab)</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender#sendAsyncMessage()">sendAsyncMessage()</a></code> : send a message to all frame scripts in this browser frame</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from frame scripts</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p> - </td> - </tr> - <tr> - <td>Interfaces</td> - <td> - <p><code>nsIProcessChecker</code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader">nsIFrameScriptLoader</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></code></p> - </td> - </tr> - <tr> - <td>How to access</td> - <td> - <p>The browser message manager can be accessed as a property of the XUL <code><browser></code> element:</p> - - <pre class="brush: js"> -// chrome script -let browserMM = gBrowser.selectedBrowser.messageManager;</pre> - </td> - </tr> - </tbody> -</table> - -<h3 id="Content_process">Content process</h3> - -<h4 id="Content_frame_message_manager">Content frame message manager</h4> - -<table class="fullwidth-table standard-table"> - <tbody> - <tr> - <td style="width: 20%;">Description</td> - <td> - <p>There's a <em>content frame message manager</em> for every open tab. It's the content-side end of frame message manager conversations.</p> - - <p>Frame scripts are loaded into the content frame message manager scope, and messages from chrome message managers end up here.</p> - - <p>The content frame message manager provides the <a href="/en-US/Firefox/Multiprocess_Firefox/Frame_script_environment">global object for frame scripts</a> (but note that there is trickery to ensure that top-level variables defined by frame scripts are not shared).</p> - - <p>Frame scripts can use this object to send messages to the chrome process, and to receive messages from the chrome process.</p> - - <p>Its most important attributes and functions are:</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager#content">content</a></code> : access the DOM window hosted by the tab</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager#docShell">docShell</a></code> : access the top-level docshell</p> - - <p><code><a href="/en-US/docs/Components_object">Components</a></code> : access privileged objects and APIs</p> - - <p><code><a href="/en-US/docs/Web/API/EventTarget/addEventListener">addEventListener()</a></code> : listen to DOM events</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : receive messages from the chrome process</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender#sendAsyncMessage()">sendAsyncMessage()</a></code> : send asynchronous messages to the chrome process</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender#sendSyncMessage()">sendSyncMessage()</a></code> : send synchronous messages to the chrome process</p> - </td> - </tr> - <tr> - <td>Interfaces</td> - <td> - <p><code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDOMEventTarget">nsIDOMEventTarget</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender">nsISyncMessageSender</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager">nsIContentFrameMessageManager</a></code></p> - </td> - </tr> - <tr> - <td>How to access</td> - <td>The content frame message manager is the global object in frame scripts.</td> - </tr> - </tbody> -</table> - -<h2 id="Process_message_managers">Process message managers</h2> - -<p>Process message managers はプロセス境界を越え、異なるプロセスと通信することを可能にします。マルチプロセスの Firefo のコンセプトは次の通り。</p> - -<ul> - <li>"親プロセス"</li> - <li>"子プロセス" は親プロセスによって生成されたプロセス</li> -</ul> - -<p>実用的な目的で、マルチプロセスの Firefo の親プロセスは chrome プロセスで、子プロセスは コンテンツプロセスです。</p> - -<p>各子プロセスは、single <em>child process message manager</em> (CPMM) を持ちます。それに加え、親プロエスでは <em>child-in-process message manager</em> (CIPMM) をもっています。</p> - -<p>各子プロセスの message manager は、親プロセスに対応する <em>parent process message manager</em> (PPMM) を持っています。</p> - -<p>親プロセスには 1つの <em>global parent process message manager</em> (GPPMM) をもっており、それがすべての親プロセスの message manager に対するアクセスを提供します。2 つの子プロセスを持つと以下の図のように構築されます。</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/10799/process-message-managers.png" style="display: block; height: 477px; margin-left: auto; margin-right: auto; width: 477px;"></p> - -<p>GPPMM を使って、CIPMM とすべての CPMM にブロードキャストすることができます。PPMM は対応する CPMM にだけメッセージを送信できます。CPMM では親プロセスにメッセージを送信できます。まず初めに対応する PPMM が受信でき、次に GPPMM が受信します。<br> - <br> - From Firefox 38 onwards, you can also use a parent process message manager to load a script into a child process. This is the recommended way to load a script that executes just once per child process, which is something you might want to do if you are interacting with some global service (for example, adding listeners to observer notifications or registering a content policy).</p> - -<h3 id="Parent_process">Parent process</h3> - -<h4 id="Global_parent_process_message_manager">Global parent process message manager</h4> - -<table class="fullwidth-table standard-table"> - <tbody> - <tr> - <td style="width: 20%;">Description</td> - <td> - <p>The global parent process message manager (GPPMM) is global to the parent process.</p> - - <ul> - <li>Messages sent using the GPPMM get sent to all CPMMs in all child processes.</li> - <li>Process scripts loaded using the GPPMM get loaded in all child processes.</li> - </ul> - - <p>Its most important functions and attributes are:</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#childCount">childCount</a></code> : contains the number of children (child processes, plus the in-content child)</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#getChildAt()">getChildAt()</a></code> : get the child at the given index</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader#loadProcessScript()">loadProcessScript()</a></code> : load a process script into every content process</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#broadcastAsyncMessage()">broadcastAsyncMessage()</a></code> : send a message to all process scripts</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from process scripts</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p> - </td> - </tr> - <tr> - <td>Interfaces</td> - <td> - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader">nsIProcessScriptLoader</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></p> - </td> - </tr> - <tr> - <td>How to access</td> - <td> - <p>You can access the GPPMM with code like this:</p> - - <pre class="brush: js"> -// parent process -let ppmm = Cc["@mozilla.org/parentprocessmessagemanager;1"] - .getService(Ci.nsIMessageBroadcaster);</pre> - - <p>You can also access it as the <code>ppmm</code> property of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">Services.jsm</a>, if you are in the parent process.</p> - </td> - </tr> - </tbody> -</table> - -<h4 id="Parent_process_message_manager">Parent process message manager</h4> - -<table class="fullwidth-table standard-table"> - <tbody> - <tr> - <td style="width: 20%;">Description</td> - <td> - <p>There's one parent process message manager (PPMM) in the parent process for every child process, and its API is oriented to that one child process.</p> - - <ul> - <li>Messages sent using the PPMM are received only by the corresponding CPMM</li> - <li>Scripts loaded using the PPMM are loaded only into the corresponding child process.</li> - </ul> - - <p>Its most important functions are:</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader#loadProcessScript()">loadProcessScript()</a></code> : load a process script into the content process</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#broadcastAsyncMessage()">broadcastAsyncMessage()</a></code> : send a message to process scripts</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from process scripts</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p> - </td> - </tr> - <tr> - <td>Interfaces</td> - <td> - <p><code>nsIProcessChecker</code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader">nsIProcessScriptLoader</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></code></p> - </td> - </tr> - <tr> - <td>How to access</td> - <td> - <p>You can access a PPMM using the <code>getChildAt()</code> function in the GPPMM:</p> - - <pre class="brush: js"> -// parent process -let ppmm = Services.ppmm.getChildAt(1);</pre> - </td> - </tr> - </tbody> -</table> - -<h3 id="Child_process">Child process</h3> - -<h4 id="Child_process_message_manager">Child process message manager</h4> - -<table class="fullwidth-table standard-table"> - <tbody> - <tr> - <td style="width: 20%;">Description</td> - <td> - <p>There's one child process message manager (CPMM) in each child process. Messages sent using the CPMM are sent to the corresponding PPMM and are also relayed to the GPPMM.</p> - - <p>Its most important attributes and functions are:</p> - - <p><code><a href="/en-US/docs/Components_object">Components</a></code> : access privileged objects and APIs</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : receive messages from the parent process</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender#sendAsyncMessage()">sendAsyncMessage()</a></code> : send asynchronous messages to the parent process</p> - - <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender#sendSyncMessage()">sendSyncMessage()</a></code> : send synchronous messages to the parent process</p> - </td> - </tr> - <tr> - <td>Interfaces</td> - <td> - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></code></p> - - <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender">nsISyncMessageSender</a></code></p> - - <p><code>nsIContentProcessMessageManager</code></p> - </td> - </tr> - <tr> - <td>How to access</td> - <td> - <p>Code running in a child process can access the CPMM with code like this:</p> - - <pre class="brush: js"> -// child process script -let cpmm = Cc["@mozilla.org/childprocessmessagemanager;1"] - .getService(Ci.nsISyncMessageSender);</pre> - - <p>You can also access it as the <code>cpmm</code> property of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">Services.jsm</a>, if you are in the child process.</p> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html deleted file mode 100644 index c94bbd1737..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Web コンテンツの互換性 -slug: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility ---- -<div>{{FirefoxSidebar}}</div> - -<p><span class="seoSummary">Firefoxにマルチプロセス機能を導入するには、Webコンテンツにシームレスで目に見えないものが必要ですが、過去の挙動からの例外や微妙な変更があります。 この資料では、遭遇する可能性のある既知の相違点について説明します。</span></p> - -<h2 id="イベント">イベント</h2> - -<p>ここでは、マルチプロセスのFirefoxの実装によって動作が変更されたイベントに関する情報を見つけることができます。</p> - -<h3 id="<option>_から_<select>_へイベントがバブルしない"><code><option></code> から <code><select></code> へイベントがバブルしない</h3> - -<p>以前より、Firefoxはキーボードとマウスのイベントを {{HTMLElement("option")}} 要素から {{HTMLElement("select")}} 要素にバブルアップさせました。この動作は多くのブラウザで矛盾(たとえば、イベントがChromeでバブルアップしないなど)しています。 Web互換性を高めるため(加えて技術的な理由のため)に、Firefoxがマルチプロセスモードで、<code><select></code>要素がドロップダウンリストとして表示されている場合、これらのイベントはバブルアップしません。<code><select></code>がインラインで表示され、<code>multiple</code>属性が定義されているか、<code>size</code>属性が1より大きい値に設定されている場合、これらのイベントはバブルアップします。<br> - <br> - イベントの {{HTMLElement("option")}} 要素を見るのではなく、{{HTMLElement("select")}} の {{event("change")}} イベントを監視する必要があります。詳細は {{bug(1090602)}} を参照してください。</p> - -<h2 id="関連情報">関連情報</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Firefox/Multiprocess_Firefox">Multiprocess Firefox</a></li> - <li>{{HTMLElement("option")}}</li> - <li>{{HTMLElement("select")}}</li> - <li>{{domxref("HTMLOptionElement")}}</li> - <li>{{domxref("HTMLSelectElement")}}</li> -</ul> diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html deleted file mode 100644 index d4eccacf5a..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: URIのロードする先 -slug: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where ---- -<div>{{FirefoxSidebar}}</div> - -<p>最初にページのURIスキームに基づいて、ブラウザは Chrome プロセスまたはコンテンツプロセスでページを読み込むかどうかを決定できます。一部のスキームでは、デフォルトの動作を変更できます。</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">スキーム</th> - <th scope="col">振る舞い</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>about:</code></td> - <td> - <p>By default, <code>about:</code> pages are always loaded in the chrome process. However, when you register a new <code>about:</code> page, you can change this default.</p> - - <p>Two new flags are defined in <code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/about/nsIAboutModule.idl">nsIAboutModule</a></code>:</p> - - <ul> - <li><code>URI_CAN_LOAD_IN_CHILD</code>: the page will be loaded in the same process as the <code><a href="/en-US/docs/XUL/browser">browser</a></code> that has loaded it.</li> - <li><code>URI_MUST_LOAD_IN_CHILD</code>: the page will always be loaded in a child process.</li> - </ul> - - <p>To use one of these flags, return it from your implementation of <code>getURIFlags</code> in the <a href="/en-US/docs/Custom_about:_URLs">code that registers the <code>about:</code> URI</a>.</p> - - <p>If you use these flags, you must register the about page in the framescript for each tab. If you do not set multiprocessCompatible to true in your install.rdf then shims will be used. But the e10s shims will be deprecated soon. Read more here - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1257201">Bug 1257201</a>.</p> - </td> - </tr> - <tr> - <td><code>chrome:</code></td> - <td> - <p>By default, <code>chrome:</code> pages are always loaded in the chrome process. However, when you register a new <code>chrome:</code> page, you can change this default.</p> - - <p>Two new flags are defined in the <a href="/en-US/docs/Chrome_Registration">chrome.manifest file</a>:</p> - - <ul> - <li>remoteenabled: the page will be loaded in the same process as the <code><a href="/en-US/docs/XUL/browser">browser</a></code> that has loaded it.</li> - <li>remoterequired: the page will always be loaded in a child process.</li> - </ul> - </td> - </tr> - <tr> - <td><code>file:</code></td> - <td> - <p>常にコンテンツプロセスに読み込まれます。</p> - - <p><strong>注:</strong> これは <code>file:</code> という意味ではなく、コンテンツプロセスのコードでURIを自由に使用することができます。 サンドボックス化は特定のディレクトリをブラックリストに載せ、今後の変更により <code>file:</code> URIを通常のWebコンテンツとは別の独立したコンテンツプロセスに制限する可能性があります。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1187099">bug 1187099</a> で、これがプロファイルディレクトリからファイルをロードしようとしているアドオンにどのように影響するかを見てください。</p> - </td> - </tr> - <tr> - <td><code>resource:</code></td> - <td>常にコンテンツプロセスに読み込まれます。</td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/目的/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/目的/index.html deleted file mode 100644 index b9635595c4..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/目的/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: マルチプロセス化を行う理由 -slug: Mozilla/Firefox/Multiprocess_Firefox/目的 -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Motivation ---- -<p>Firefoxがコンテンツを別のプロセスで動作するようにするには、3つの目的があります。:それは、パフォーマンス、セキュリティ、安定性です</p> - -<h2 id="パフォーマンス">パフォーマンス</h2> - -<p>Mozilla は過去2年間、ブラウザの応答性の向上に注力してきました。その目的は<a href="/docs/Glossary/Jank">プチフリ</a>、つまり大きなページをロードしているときやタイピング中、もしくはスクロール中にブラウザがフリーズしたように見える状況を減らすことにありました。近年、応答性はスループットよりも重要になりつつあります。応答性の向上に関する様々な改良は、<a href="https://wiki.mozilla.org/Performance/Snappy">Snappy project</a> の一部として達成されました。主な点を挙げると以下の通りになります:</p> - -<ul> - <li>メインスレッドがユーザへの応答を続けられるようにするために、時間のかかる処理の別スレッドへの移行すること</li> - <li>入出力によってメインスレッドがブロックされるのさけるため、入出力を別スレッドで非同期に行うこと</li> - <li>インクリメンタルGC に代表される時間のかかる処理を細かく分割し、イベントループ中で処理を行うように変更すること</li> -</ul> - -<p>すぐにできる改良の多くは成されており、残った問題は修正が難しい物ばかりでした。例えば JavaScript の実行やメインスレッドで行われるレイアウト処理などです。これらはイベントループをブロックするのですが、別のプロセスへ分離するには難しい処理でもあります。これらの処理は DOM のようなデータにアクセスする必要がありますが、これらのデータはスレッドセーフではないからです。他の選択肢として、イベントループを JavaScript の処理の中に入れる事も検討しましたが、Firefox の他の部分(アドオンではありません)によって難しい事がわかりました。</p> - -<p>Web コンテンツを別のプロセスに分離する事は、良い代替策でした。スレッドを利用するアプローチと同様、Firefox は JavaScript やレイアウト処理がコンテントプロセスで行われている間に イベントループを実行できる上に、DOM やコンテンツデータにアクセスしない UI のコードをスレッドセーフにしなくても済みます。その反面、Firefox の UI プロセスは明示的にメッセージパッシングを行わないとコンテンツデータにアクセスできなくなります。</p> - -<p>このトレードオフはいくつかの理由から許容できると考えています:</p> - -<ul> - <li>すべての Firefox のコードがよくコンテンツ DOM にアクセスするわけではない</li> - <li>Firefox OS と共有されているコードはすでにメッセージパッシングを利用するものになっていること</li> - <li>マルチプロセスモデルでのメッセージパッシングを利用したコンテントアクセスはその失敗が明白であるのに対し、適切なロックなしに行われたコンテンツアクセスに起因するスレッドのバグは発見が難しくデバッグも困難であるため</li> -</ul> - -<h2 id="セキュリティ">セキュリティ</h2> - -<p>Firefox に攻撃可能なバグがあった場合、それを利用してユーザのコンピュータを乗っ取ることが可能です。この問題の解決策として最も強力なものは、<a href="http://en.wikipedia.org/wiki/Sandbox_%28computer_security%29">サンドボックス化</a>です。 技術的にはサンドボックス化にマルチプロセス化は必要ありません。しかしシングルプロセスの Firefox 上でサンドボックス化を行っても、あまり有用ではありません。サンドボックスはあくまでプロセスが、通常のプロセスがしないような振る舞いをするのを阻止するための機能です。アドオンがインストールされている場合が典型的ですが、Firefox の通常プロセスはネットワーク通信やファイルへのアクセスを行います。そのため、シングルプロセスの Firefox では制限をうまく掛けることが難しくなっています。</p> - -<p>マルチプロセス化したFirefoxでのコンテンツプロセスは、サンドボックス化されます。通常、コンテンツプロセスはファイルシステムに直接アクセスすることはありません。そのような場合はメインプロセスに対してファイルアクセスリクエストを送ります。メインプロセスは、そのリクエストが妥当なものかを検証できるため、コンテンツプロセスに対するサンドボックスの制限は極めて厳しいものなります。その結果として、Firefox にセキュリティホールを作ることが難しくなると期待されます。</p> - -<h2 id="安定性">安定性</h2> - -<p>Web ページ中で実行されるプログラムがクラッシュした場合、ブラウザ全体が停止してしまします。マルチプロセス化することによって、停止するのはクラッシュしたプログラムの動作するコンテントプロセスのみとなります。</p> - -<div class="note"> -<p>このページの内容の多くは、Bill McCloskey のブログポストの内容を含んでいます。詳しくはこちらをご覧ください: <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p> -</div> - -<p> </p> diff --git a/files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html b/files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html deleted file mode 100644 index 7ccf3a2ec4..0000000000 --- a/files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: Firefox フロントエンドエンジニアのためのパフォーマンスベストプラクティス -slug: Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers -translation_of: Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers ---- -<h2 id="可能であればメインスレッドを避けること">可能であればメインスレッドを避けること</h2> - -<p>メインスレッドはユーザーイベントを処理し、描画を行います。また、多くの JavaScript はメインスレッドで動きます。</p> - -<p>メインスレッドを避けるほどに、ユーザーイベントや描画、応答が素早くできます。</p> - -<p>メインスレッドから何か計算する必要がある場合、 <a href="/ja/docs/Web/API/Web_Workers_API/Using_web_workers">Worker</a> を使うことをおすすめします。また、より高い権限が必要な場合は <a href="/en-US/docs/Web/API/ChromeWorker">ChromeWorker</a> (Firefoxのみ)を使うことを検討してください。</p> - -<h2 id="requestIdleCallback">requestIdleCallback</h2> - -<p>どうしてもメインスレッドで何らかの長い処理をしないといけない場合、おそらく存在するであろうユーザーが何もしない空き時間に、小さなパーツに分割して実行することを検討してください。</p> - -<p>RequestIdleCallback ではこちらが役に立つでしょう。 <a href="https://hacks.mozilla.org/2016/11/cooperative-scheduling-with-requestidlecallback/">こちらの Hacks ブログをチェックしてください。</a></p> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1353206">そして、いつか、DOM コンテキスト以外でも可能となるでしょう!</a></p> - -<h2 id="Hide_your_panels">Hide your panels</h2> - -<p>If you’re adding a new <popup> or <panel> to a XUL document, set the hidden=”true” attribute on it by default. That way, the binding is applied on demand, and we can save time when constructing the XUL document.</p> - -<h2 id="Get_familiar_with_the_pipeline_that_gets_pixels_to_the_screen">Get familiar with the pipeline that gets pixels to the screen</h2> - -<p><img alt="This is the pipeline that a browser uses to get pixels to the screen." src="https://mdn.mozillademos.org/files/14995/pasted%20image%200.png" style="height: 167px; width: 1093px;"></p> - -<div class="note"> -<p>The above image is used under <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a>, courtesy of <a href="https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing">this page</a> from our friends at Google, which itself is well worth the read.</p> -</div> - -<p>For 60fps, the above needs to occur in 16ms or less.</p> - -<p>Note that <a href="https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame">the requestAnimationFrame API</a> allows you to queue up JavaScript to run very soon after a trip through this pipeline has been completed. This is useful because the last trip through the pipeline likely cached layout and style information which (assuming the DOM hasn't been dirtied somehow) should still be valid and cheap to access (see the sections below on synchronous style and layout flushes).</p> - -<h2 id="Detecting_and_Avoiding_Synchronous_Style_Flushes">Detecting and Avoiding Synchronous Style Flushes</h2> - -<h3 id="What_are_Style_Flushes">What are Style Flushes?</h3> - -<p>When CSS is applied to a document (HTML or XUL, it doesn’t matter), we do a calculation to determine what CSS styles will apply to each element.</p> - -<p>This will happen during the first time the page loads and CSS is first applied, but can happen again if JavaScript modifies the DOM - for example, by changing DOM node attributes (either directly or via APIs like <code>classList.add</code> / <code>classList.remove</code> / <code>classList.toggle</code>), or adding / removing / moving DOM nodes. Note that because styles are normally scoped to the entire document, the cost of doing these style calculations is proportional to the number of DOM nodes in the document (and the number of styles being applied).</p> - -<p>It is expected that over time, script will update the DOM, requiring us to recalculate styles. Normally, however, the changes to the DOM just result in the standard style calculation that occurs immediately after the JavaScript has finished running during the 16ms window.</p> - -<p>It is possible for JavaScript to force multiple, synchronous style calculations (or “style flushes”) to occur during the 16ms window, which greatly increases the probability of going over the 16ms limit, causing us to skip painting one or more frames. Skipping frames is called <strong>jank</strong>.</p> - -<p>Generally speaking, you force a synchronous style flush any time you query for style information after the DOM has changed. Depending on whether or not <a href="https://gist.github.com/paulirish/5d52fb081b3570c81e3a">the style information you’re asking for has something to do with size or position</a>, you may also cause a layout re-calculation (also referred to as “layout flush” or “reflow”), which is also an expensive step (see the section on Detecting and Avoiding Synchronous Reflow below).</p> - -<p>To avoid this: avoid reading style information if you can. If you must read style information, do so at the very beginning of the frame before any changes to the DOM have occurred since the last style flush (perhaps by using <a href="https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame">requestAnimationFrame</a> to set a callback at the start of a frame). At the start of a frame, style values are cached from the last calculation and more cheaply accessed when the document hasn’t yet undergone any change.</p> - -<h3 id="Writing_tests_to_ensure_you_don’t_add_more_synchronous_style_flushes">Writing tests to ensure you don’t add more synchronous style flushes</h3> - -<p>Unlike reflow, there isn’t a “observer” mechanism for style recalculations. There is, however, <a href="http://searchfox.org/mozilla-central/rev/78cefe75fb43195e7f5aee1d8042b8d8fc79fc70/dom/interfaces/base/nsIDOMWindowUtils.idl#1865-1874">an attribute on nsIDOMWindowUtils</a> that records a count of how many style calculations have occurred for a particular DOM window.</p> - -<p>It should be possible to write a test that gets the <code>nsIDOMWindowUtils</code> for a browser window, records the count of styleFlushes, then <strong>synchronously calls the function</strong> that you want to test, and immediately after checks the styleFlushes attribute again. If the value went up, your code caused synchronous style flushes to occur.</p> - -<p>Note that your test and function must be called synchronously in order for this test to be accurate. If you ever go back to the event loop (by yielding, waiting for an event, etc), style flushes unrelated to your code are likely to run, and your test will give you a false positive.</p> - -<h2 id="Detecting_and_Avoiding_Synchronous_Reflow">Detecting and Avoiding Synchronous Reflow</h2> - -<div class="note"> -<p>This is also sometimes called “sync Layout” or “sync Layout calculations”</p> -</div> - -<p>“Sync Reflow” is a term bandied about a lot, and has negative connotations. It's not unusual for an engineer to have only the vaguest sense of what it is - and to only know to avoid it.</p> - -<p>This section will attempt to demystify things.</p> - -<p>The first time a document (XUL or HTML) loads, we parse the markup, and then apply styles. Once the styles have been calculated, we then need to calculate where things are going to be placed on the page. This layout step can be seen in the “16ms” pipeline graphic above, and occurs just before we paint things to be composited for the user to see.</p> - -<p>It is expected that over time, script will update the DOM, requiring us to recalculate styles, and then update layout. Normally, however, the changes to the DOM just result in the standard style calculation that occurs immediately after the JavaScript has finished running during the 16ms window.</p> - -<p>Also note that since <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=67752">the early days</a>, Gecko has had the notion of interruptible reflow. This means that size and position calculations can be broken up over several of those 16ms windows. Gecko will decide when an interruptible reflow has taken too long, and then bail out to paint. It will continue the reflow in the next 16ms window. <strong>Interruptible reflow is fine.</strong> Interruptible reflow only happens during initial document load.</p> - -<p>Uninterruptible reflow is what we want to <strong>avoid at all costs</strong>. Uninterruptible reflow occurs when some DOM node’s styles have changed such that the size or position of one or more nodes in the document will need to be updated, and then <strong>JavaScript asks for the size or position of anything</strong>. <a href="https://gist.github.com/paulirish/5d52fb081b3570c81e3a">Here’s a comprehensive list of things that JavaScript can ask for that can cause uninterruptible reflow</a>.</p> - -<p>Here’s a simple example, cribbed from <a href="http://paulrouget.com/e/fxoshud">this blog post by Paul Rouget</a>:</p> - -<p><code>div1.style.margin = "200px"; // Line 1<br> - var height1 = div1.clientHeight; // Line 2<br> - div2.classList.add("foobar"); // Line 3<br> - var height2 = div2.clientHeight; // Line 4<br> - doSomething(height1, height2); // Line 5</code></p> - -<p>At line 1, we’re setting some style information on a DOM node that’s going to result in a reflow - but (at just line 1) it’s okay, because that reflow will happen after the style calculation.</p> - -<p>Note line 2 though - we’re asking for the height of some DOM node. This means that Gecko needs to synchronously calculate layout using an uninterruptible reflow in order to answer the question that JavaScript is asking (“What is the clientHeight of div1?”).</p> - -<p>It’s possible for our example to avoid this synchronous, uninterruptible reflow by moving lines 2 and 4 above line 1. Assuming there weren’t any style changes requiring size or position recalculation above line 1, the clientHeight information should be cached since the last reflow, and will not result in a new layout calculation.</p> - -<p>If you can avoid querying for the size or position of things in JavaScript, that’s the safest option - especially because it’s always possible that something earlier in this tick of JS execution caused a style change in the DOM without you knowing it.</p> - -<p>You could also potentially move your query into a requestAnimationFrame callback. This will run your code after the last frame is painted, and all of the layout data should be cached. Assuming no DOM properties affecting size or position have been changed in the meantime, accessing those cached values should be free.</p> - -<h3 id="nsIDOMWindowUtils.getBoundsWithoutFlushing">nsIDOMWindowUtils.getBoundsWithoutFlushing</h3> - -<p><code>getBoundsWithoutFlushing</code> does exactly what it says - it allows you to get the rect for some DOM node in a window without flushing layout. This means that the information you get is potentially stale, but allows you to avoid a sync reflow.</p> - -<h3 id="nsIDOMWindowUtils.getRootBounds">nsIDOMWindowUtils.getRootBounds</h3> - -<p>Similar to above - but allows you to get dimensions of the containing window without causing a sync reflow.</p> - -<h3 id="nsIDOMWindowUtils.getScrollXY">nsIDOMWindowUtils.getScrollXY</h3> - -<p>Similar to above - but allows you to get the window scroll offsets without causing a sync reflow.</p> - -<h3 id="Writing_tests_to_ensure_you_don’t_add_more_unintentional_reflow">Writing tests to ensure you don’t add more unintentional reflow</h3> - -<p>We have something called <a href="http://searchfox.org/mozilla-central/rev/78cefe75fb43195e7f5aee1d8042b8d8fc79fc70/docshell/base/nsIReflowObserver.idl">nsIReflowObserver</a>, which allows us to detect both interruptible and uninterruptible reflows. A number of tests have been written that exercise various functions of the browser (<a href="http://searchfox.org/mozilla-central/rev/78cefe75fb43195e7f5aee1d8042b8d8fc79fc70/browser/base/content/test/general/browser_tabopen_reflows.js">opening tabs</a>, <a href="http://searchfox.org/mozilla-central/source/browser/base/content/test/general/browser_windowopen_reflows.js">opening windows</a>) and ensures that we don’t add new uninterruptible reflows accidentally while those actions occur.</p> - -<p>You should add tests like this for your feature if you happen to be touching the DOM.</p> - -<h3 id="Detecting_Over-painting_with_Paint_Flashing">Detecting Over-painting with Paint Flashing</h3> - -<p>Painting is, in general, cheaper than both style calculation and layout calculation - but the more you can avoid, the better.</p> - -<p>Generally speaking, the larger an area that needs to be repainted, the longer it takes. Similarly, the more things that need to be repainted, the longer it takes.</p> - -<p>Our graphics team has added a handy feature to help you detect when and where paints are occurring. This feature is called “paint flashing”, and it can be activated for both web content and the browser chrome. Paint flashing tints each region being painted with a randomly selected colour so that it’s more easy to see what on the screen is being painted.</p> - -<p>You can activate paint flashing for browser chrome by setting <code>nglayout.debug.paint_flashing_chrome</code> to true.</p> - -<p>You can activate paint flashing for web content by setting <code>nglayout.debug.paint_flashing</code> to true.</p> - -<p>Now exercise your function and see what’s painting. See a lot of flashing / colours? That means a lot of painting is going on.</p> - -<p>Painting occurs on the main thread. The more things we can take off of the main thread, the better. If you’re overpainting, it’s a good idea to figure out why.</p> - -<p>Perhaps you’re animating something that requires a repaint? For example, transitioning the background-color of a DOM node from red to blue will result in a repaint for every frame of the animation, and paint flashing will reveal that. Consider using a different animation that can be accelerated by the GPU - these occur off of the main thread, and have a much higher probability of running at 60fps (see the section below labeled “Rely on the Compositor for Animations” for further details).</p> - -<p>Perhaps you’re touching some DOM nodes in such a way that unexpected repaints are occurring in an area that don’t need it. Best to investigate and try to remove those as best you can. Sometimes, our graphics layer invalidates regions in ways that might not be clear to you, and a section outside of the thing that just repainted will also repaint. Sometimes this can be addressed by ensuring that the thing changing is on its own layer (though this comes at a memory cost). You can put something on its own layer by setting its z-index, or by setting the <a href="https://developer.mozilla.org/en/docs/Web/CSS/will-change">will-change style</a> on the node, though this should be used sparingly.</p> - -<p>If you’re unsure why something is repainting, consider talking to our always helpful Graphics team in the #gfx IRC channel, and they can probably advise you. Note that a significant number of the Graphics team members are in the Eastern Time zone, so let that information guide your timing when you ask questions in #gfx.</p> - -<h2 id="Adding_Nodes_with_documentFragment">Adding Nodes with documentFragment</h2> - -<p>There is periodically the need to add a series of DOM nodes as children to another DOM node. For example, for things like our XUL menupopup’s, one often has JavaScript dynamically inserting menuitem’s.</p> - -<p>Inserting items into the DOM comes with a cost. If you’re adding a number of children to a DOM node in a loop, it’s often cheaper to batch those adds into a single insertion.</p> - -<p>Thanks to <a href="https://developer.mozilla.org/en/docs/Web/API/Document/createDocumentFragment">the createDocumentFragment API</a>, this is very straight-forward.</p> - -<p>This example has been cribbed from <a href="https://davidwalsh.name/documentfragment">davidwalsh’s blog post</a>:</p> - -<p><code>// Create the fragment<br> - var frag = document.createDocumentFragment();<br> - // Create numerous list items, add to fragment<br> - for(var x = 0; x < 10; x++) {<br> - var li = document.createElement("li");<br> - li.innerHTML = "List item " + x;<br> - frag.appendChild(li);<br> - }</code></p> - -<p><code>// Mass-add the fragment nodes to the list<br> - listNode.appendChild(frag);</code></p> - -<p>The above is strictly cheaper that individually adding each node to the DOM.</p> - -<h2 id="The_Gecko_Profiler_Add-on_is_your_friend">The Gecko Profiler Add-on is your friend</h2> - -<p>The Gecko Profiler is your best friend when diagnosing performance problems and looking for bottlenecks.</p> - -<p>There’s plenty of excellent documentation on MDN about the Gecko Profiler:</p> - -<ul> - <li><a href="/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem">Basic instructions for gathering and sharing a performance profile</a></li> - <li><a href="en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Advanced profile analysis</a></li> -</ul> - -<h2 id="Don’t_Guess._Measure.">Don’t Guess. Measure.</h2> - -<p>If you’re working on a performance improvement, this should go without saying: ensure that what you care about is actually improving by measuring before and after.</p> - -<p>Landing a speculative performance enhancement is the same thing as landing speculative bug fixes - these things need to be tested. Even if that means instrumenting a function with a <code>Date.now()</code> recording at the entrance, and a <code>Date.now()</code> at the exits in order to measure processing time changes.</p> - -<p>Prove to yourself that you’ve actually improved something by measuring before and after.</p> - -<h3 id="window.performance">window.performance</h3> - -<p>The <a href="/en-US/docs/Web/API/Performance_API">Performance API</a> is very useful for taking high-resolution measurements. This is usually much better than using your own hand-rolled timers to measure how long things take.</p> - -<p>Also, the Gecko Profiler back-end is in the process of being modified to expose things like markers (from window.performance.mark).</p> - -<h2 id="Rely_on_the_Compositor_for_animations._Main_thread_animation_should_be_treated_as_deprecated.">Rely on the Compositor for animations. Main thread animation should be treated as deprecated.</h2> - -<p><a href="https://hacks.mozilla.org/2016/08/animating-like-you-just-dont-care-with-element-animate/">Here’s an excellent article about doing that.</a></p> - -<h2 id="Use_IndexedDB_for_Storage">Use IndexedDB for Storage</h2> - -<p><a href="en-US/docs/Web/HTML/Using_the_application_cache">AppCache</a> and <a href="/en-US/docs/Web/API/Storage/LocalStorage">LocalStorage</a> are synchronous storage APIs that will block the main thread when you use them. Avoid them at all costs!</p> - -<p><a href="/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB">IndexedDB</a> is preferable, as the API is asynchronous (all disk operations occur off of the main thread), and can be accessed from Web Workers.</p> - -<p>IndexedDB is also arguably better than storing and retrieving JSON from a file - particularly if the JSON encoding or decoding is occurring on the main thread. IndexedDB will do JS object serialization and deserialization for you using the Structured Clone algorithm, meaning that you can stash <a href="/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#Supported_types">things like Maps, Sets, Dates, Blobs, and more</a>, without having to do conversions for JSON compatibility.</p> - -<p>A Promise-based wrapper for IndexedDB, <a href="http://searchfox.org/mozilla-central/source/toolkit/modules/IndexedDB.jsm">IndexedDB.jsm</a>, is available for chrome code.</p> - -<h2 id="Test_on_weak_hardware">Test on weak hardware</h2> - -<p>For the folks paid to work on Firefox, we tend to have pretty powerful hardware for development. This is great, because it reduces build times, and means we can do our work faster.</p> - -<p>We should remind ourselves that the majority of our user base is unlikely to have similar hardware. Look at the <a href="https://metrics.mozilla.com/firefox-hardware-survey/">Firefox Hardware Report</a> to get a sense of what our users are working with. Test on slower machines to make it more obvious to yourself if what you’ve written impacts the performance of the browser.</p> - -<p> </p> diff --git a/files/ja/mozilla/firefox/privacy/index.html b/files/ja/mozilla/firefox/privacy/index.html deleted file mode 100644 index 4abcf426c4..0000000000 --- a/files/ja/mozilla/firefox/privacy/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Privacy -slug: Mozilla/Firefox/Privacy -tags: - - Privacy - - Security -translation_of: Mozilla/Firefox/Privacy ---- -<div>{{FirefoxSidebar}}</div> - -<p class="summary">このドキュメントは、プライバシーに関連するドキュメントのリストを表示します。</p> - -<p>{{ ListSubpages () }}</p> - -<h2 id="関連情報">関連情報</h2> - -<ul> - <li><a href="https://support.mozilla.org/ja/products/firefox/privacy-and-security">プライバシーとセキュリティの設定 </a></li> - <li><a href="/ja/docs/Web/Security">ウェブセキュリティ</a></li> -</ul> diff --git a/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html b/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html deleted file mode 100644 index b24c4748f5..0000000000 --- a/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html +++ /dev/null @@ -1,267 +0,0 @@ ---- -title: 'ストレージアクセスポリシー: 追跡者からのクッキーのブロック' -slug: Mozilla/Firefox/Privacy/Storage_access_policy -tags: - - Privacy - - storage access policy - - tracking protection -translation_of: Mozilla/Firefox/Privacy/Storage_access_policy ---- -<div>{{FirefoxSidebar}}</div> - -<p class="summary"><span class="seoSummary">Firefox には、サードパーティの追跡リソース(tracking resources、トラッキングリソース)からのクッキーやその他のサイトデータをブロックする新しいストレージアクセスポリシーが含まれています。 このポリシーは、Firefox で長年にわたって利用されてきた<a href="/ja/docs/Mozilla/Cookies_Preferences">古いクッキーポリシー</a>の代替として設計されています。 このポリシーは、従来のクッキーブロックに関連するサイトの中断を最小限に抑えながら、クロスサイトトラッキング(cross-site tracking、サイトをまたがった追跡)から保護します。 この記事では、ポリシーの仕組みとテスト方法について説明します。</span></p> - -<h2 id="Testing_in_Firefox" name="Testing_in_Firefox">Firefox でのテスト</h2> - -<p>このクッキーポリシーは、バージョン 63 以降の Firefox で使用可能です。 この文書では、Firefox Release ユーザーに出荷する予定のポリシーについて説明しますが、Firefox の現在の Release バージョンで実装されているものと一致しない場合があります。 これは、プレリリースチャネルである <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Firefox Nightly</a> にポリシーが追加されるとすぐに、ポリシーの新しい側面を文書化するためです。 Firefox Nightly には、Release ユーザーへの出荷を予定していない実験的な機能も含まれている場合があります。 この文書には実験的な機能は含まれていませんが、追跡者(trackers、トラッカー)として分類されたドメインの機能に影響を与える可能性があります。</p> - -<p>これには最新バージョンの保護が含まれているため、<a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Firefox Nightly</a> でサイトをテストすることをお勧めします。 前述のように、Nightly には、Release ユーザーに到達する前に削除または変更される追加の保護が含まれることがあります。 保護を強化するため、このページは常に最新情報で更新されます。</p> - -<p>Nightly では、これらの保護はデフォルトで有効になっています。 クッキーポリシーは、<a href="https://support.mozilla.org/ja/kb/content-blocking">コンテンツブロッキング設定</a>を介して Firefox の他のバージョンで有効にできます(これらの手順はバージョンによって異なります。 リンクされた文書には、適切な Firefox バージョンを選択するためのドロップダウンが含まれています)。</p> - -<h3 id="Report_Broken_Sites" name="Report_Broken_Sites">中断するサイトを報告</h3> - -<p>この変更の結果としてウェブサイトが中断する場合は、<a href="https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&blocked=1480137&bug_file_loc=http%3A%2F%2F&bug_ignored=0&bug_severity=normal&bug_status=NEW&cf_fx_iteration=---&cf_fx_points=---&cf_platform_rel=---&cf_status_firefox62=---&cf_status_firefox63=---&cf_status_firefox64=---&cf_status_firefox_esr60=---&cf_status_geckoview62=---&cf_tracking_firefox62=---&cf_tracking_firefox63=---&cf_tracking_firefox64=---&cf_tracking_firefox_esr60=---&cf_tracking_firefox_relnote=---&cf_tracking_geckoview62=---&component=Tracking%20Protection&contenttypemethod=list&contenttypeselection=text%2Fplain&defined_groups=1&flag_type-203=X&flag_type-37=X&flag_type-41=X&flag_type-5=X&flag_type-607=X&flag_type-721=X&flag_type-737=X&flag_type-748=X&flag_type-787=X&flag_type-799=X&flag_type-800=X&flag_type-803=X&flag_type-835=X&flag_type-846=X&flag_type-855=X&flag_type-864=X&flag_type-914=X&flag_type-916=X&flag_type-929=X&flag_type-930=X&flag_type-933=X&form_name=enter_bug&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Unspecified&priority=--&product=Firefox&rep_platform=Unspecified&target_milestone=---&version=unspecified">Bugzilla</a> の Firefox 製品内の Tracking Protection コンポーネントでバグを報告してください。 または、<a href="https://support.mozilla.org/ja/kb/control-center-site-privacy-and-security-firefox">コントロールセンター</a>のコンテンツブロッキングセクションで「問題の報告」をクリックして、Firefox で中断するサイトを直接報告できます(このショートカットは、Firefox のすべてのバージョンで利用できるとは限りません)。</p> - -<h2 id="Tracking_protection_explained" name="Tracking_protection_explained">トラッキング防止の説明</h2> - -<p>Firefox はどのリソースが追跡リソースかをどのように判断していますか?</p> - -<p>Firefox はトラッキング防止リストを使用して、どのリソースが追跡リソースかを判断します。 トラッキング防止リストは、<a href="https://github.com/disconnectme/disconnect-tracking-protection/issues">Disconnect によって維持</a>されます。 リストが Firefox に適用されると、次の2つの重要な変更が行われます。</p> - -<ul> - <li>最初に、リストの「基本的な保護」バージョンのみを使用します。 これは、<a href="https://github.com/mozilla-services/shavar-prod-lists#blacklist">追跡者の一部のカテゴリを除外します</a>。 将来的には、リストの「厳格な保護」バージョンを使用するように保護を拡張する可能性があります。</li> - <li>2番目に、Firefox は追加の「<a href="https://github.com/mozilla-services/shavar-prod-lists/blob/master/disconnect-entitylist.json">エンティティリスト</a>」を使用します。 これにより、<a href="https://github.com/mozilla-services/shavar-prod-lists#entity-list">ドメインが同じ組織が所有する最上位サイトに読み込まれたときにそのドメインが追跡者として分類</a>されなくなります。</li> -</ul> - -<p>Firefox は、組み込みの<a href="https://support.mozilla.org/ja/kb/tracking-protection">トラッキング防止</a> URL 分類子を使用して、トラッキング防止リストに一致するリソースを判別します。 ドメインは、<a href="https://developers.google.com/safe-browsing/v4/urls-hashing#suffixprefix-expressions">SafeBrowsing v4 仕様</a>に従ってリストと照合されます。 具体的には、リストに対してリソースの正確なホスト名を確認し、最後の5つのコンポーネントから開始して先頭のコンポーネントを次々に取り除くことによって形成された最後の4つのホスト名も同様に確認します。 次の例を検討してください。</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">リスト上のホスト名</th> - <th scope="col">リソースのホスト名</th> - <th scope="col">一致</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>example.com</code></td> - <td><code>example.com</code></td> - <td>はい</td> - </tr> - <tr> - <td><code>example.com</code></td> - <td><code>a.b.example.com</code></td> - <td>はい</td> - </tr> - <tr> - <td><code>blah.example.com</code></td> - <td><code>example.com</code></td> - <td>いいえ</td> - </tr> - <tr> - <td><code>a.b.example.com</code></td> - <td><code>c.d.example.com</code></td> - <td>いいえ</td> - </tr> - <tr> - <td><code>blah.example.com</code></td> - <td><code>foo.blah.example.com</code></td> - <td>はい</td> - </tr> - </tbody> -</table> - -<h2 id="What_does_the_storage_access_policy_block" name="What_does_the_storage_access_policy_block">ストレージアクセスポリシーは何をブロックしますか?</h2> - -<p>ストレージアクセスポリシーは、追跡者として識別されたリソースがサードパーティのコンテキストに読み込まれたときに、それらのクッキーや他のサイトストレージにアクセスすることをブロックします。 これにより、それらのリソースがクッキーまたはサイトストレージに保存されている追跡識別子を取得し、それらを使用して複数のファーストパーティにわたって訪問したユーザーを識別することができなくなります。 具体的には、Firefox は次の制限を課してこれを行います。</p> - -<p>クッキー:</p> - -<ul> - <li>{{httpheader("Cookie")}} リクエストヘッダーをブロックし、{{httpheader("Set-Cookie")}} レスポンスヘッダーを無視します。</li> - <li>{{domxref("Document.cookie")}} の呼び出しに対して空の文字列を返し、<code>Document.cookie</code> を介してクッキーを設定する要求を無視します。</li> -</ul> - -<p>DOM ストレージ:</p> - -<ul> - <li><a href="/ja/docs/Web/API/Web_Storage_API">localStorage</a>: <code><a href="/ja/docs/Web/API/Window/localStorage">Window.localStorage</a></code>: 読み取りおよび書き込みの試みは <code>SecurityError</code> 例外をスローします。 Firefox 70より前: <code><a href="/ja/docs/Web/API/Window/localStorage">Window.localStorage</a></code> は <code>null</code> です。 したがって、このオブジェクトを使用して読み書きしようとすると、<code>TypeError</code> 例外がスローされます。</li> - <li><a href="/ja/docs/Web/API/Web_Storage_API">sessionStorage</a>: 読み取りおよび書き込みの試みが許されます。</li> - <li><a href="/ja/docs/Web/API/IndexedDB_API">IndexedDB</a>: IndexedDB Factory オブジェクトへのアクセスの試みは <code>SecurityError</code> 例外をスローします。</li> -</ul> - -<p>メッセージングとワーカー:</p> - -<ul> - <li><a href="/ja/docs/Web/API/Broadcast_Channel_API">Broadcast Channel</a>: 新しい {{domxref("BroadcastChannel")}} 作成の試みは <code>SecurityError</code> 例外をスローします。</li> - <li><a href="/ja/docs/Web/API/Web_Workers_API">Shared Worker</a>: 新しい {{domxref("SharedWorker")}} 作成の試みは <code>SecurityError</code> 例外をスローします。</li> - <li><a href="/ja/docs/Web/API/Service_Worker_API">Service Worker</a>: 新しい {{domxref("ServiceWorker")}} 作成の試みは <code>SecurityError</code> 例外をスローします。</li> -</ul> - -<p>DOM キャッシュ:</p> - -<ul> - <li>{{domxref("CacheStorage")}} の呼び出しは、常に <code>SecurityError</code> で拒否されます。</li> -</ul> - -<p>ブラウザーキャッシュ:</p> - -<ul> - <li><a href="/ja/docs/Web/HTTP/Caching">HTTP キャッシュ</a>、画像キャッシュ、および<a href="/ja/docs/Web/HTTP/Headers/Alt-Svc">代替サービス(Alt-Svc)キャッシュ</a>は、追跡リソースに対してすべてパーティション化されているため、各最上位オリジンには個別のパーティションがあり、異なる最上位オリジンの追跡リソースは互いに別々にキャッシュされます。</li> -</ul> - -<p>ネットワーク接続:</p> - -<ul> - <li>追跡者として分類されている埋め込みのサードパーティリソースへの HTTPS 接続が行われた場合、セッションチケットを使用して <a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Session_Resumption">TLS セッション</a>は再開されません。</li> - <li>追跡者として分類されたドメインによる <a href="/ja/docs/Web/HTTP/Connection_management_in_HTTP_1.x#Persistent_connections">HTTP 接続の再利用</a>は、同じ最上位オリジンで発生する要求に制限されます。 例えば、news.example の tracker.example からのコンテンツの要求は、shopping.example の tracker.example からのコンテンツの要求や、tracker.example に直接訪問したときに(つまり、 ファーストパーティとして)発生する要求との HTTP 接続を再利用しません。</li> -</ul> - -<p>HTTP リファラー:</p> - -<ul> - <li>追跡者として分類されたサードパーティリソースのデフォルトの <a href="/ja/docs/Web/HTTP/Headers/Referrer-Policy">Referrer Policy</a> は、<code>strict-origin-when-cross-origin</code> に設定されています。</li> -</ul> - -<h3 id="What_is_not_blocked_by_the_policy" name="What_is_not_blocked_by_the_policy">ポリシーによってブロックされないものは何ですか?</h3> - -<ol> - <li>現在、このポリシーは、追跡リソースとして分類されていないリソースに対するサードパーティのストレージアクセスを制限していません。 今後、サードパーティのストレージアクセスに追加の制限を適用する場合があります。</li> - <li>ポリシーによって適用される制限は、追跡リソースとして分類されたサードパーティのスクリプトがページのメインコンテキストのストレージにアクセスすることを妨げません。 これらのスクリプトは、最上位オリジンを対象としたストレージを引き続き使用できます。</li> - <li>追跡者として分類されたオリジンは、ファーストパーティのコンテキストで読み込まれると、自分のストレージにアクセスできます。</li> - <li>最上位コンテキストと同じ eTLD+1 から読み込まれたクロスオリジンリソースは、引き続きストレージにアクセスできます。</li> - <li>追跡者として通常分類されるオリジンは、<a href="https://github.com/mozilla-services/shavar-prod-lists#entity-list">最上位ページのオリジンがそれらと同じ組織からのものであると判断された場合、ブロックされません</a>。</li> -</ol> - -<h2 id="Storage_access_grants" name="Storage_access_grants">ストレージアクセス許可</h2> - -<p>ウェブ互換性を改善し、ストレージアクセスを必要とするサードパーティのインテグレーションを許すために、Firefox はこのセクションで説明するように、特定のサードパーティオリジンに対して、ファーストパーティを対象としたストレージアクセスを許可します。 現在、Firefox には、ユーザーが追跡者として分類されるサードパーティとやり取りするときに、これらのサードパーティリソースにストレージアクセスを許可するいくつかのウェブ互換性経験則が含まれています。 これは、アクセスを許可しないとウェブページが中断することが予想される場合に行います。 また、埋め込みの {{htmlelement("iframe")}} が {{domxref("Document.requestStorageAccess()")}} を呼び出してストレージアクセスを要求できる <a href="/ja/docs/Web/API/Storage_Access_API">Storage Access API</a> の初期実装もサポートしています。 これらのアプローチは両方とも同じレベルのストレージアクセスを提供しますが、ストレージへのアクセスを保証するために、サードパーティが Storage Access API の使用に切り替えることをお勧めします。</p> - -<h3 id="Automatic_storage_access_upon_interaction" name="Automatic_storage_access_upon_interaction">対話時の自動ストレージアクセス</h3> - -<p>ウェブ互換性を改善するために、Firefox には現在、ユーザーとのやり取りを受け取るサードパーティにストレージアクセスを自動的に許可するためのいくつかの経験則が含まれています。 これらの経験則は、ウェブで一般的な一部のサードパーティのインテグレーションを機能させ続けることを目的としています。 これらは一時的なものであり、Firefox の将来のバージョンでは取り除かれる予定です。 現在および将来のウェブ開発において依存するべきではありません。</p> - -<p>ユーザージェスチャーが元の文書への<a href="/ja/docs/Web/API/Window/opener">オープナーアクセス</a>を持つポップアップウィンドウをトリガーすると、追跡リソースとして分類されたリソースにサードパーティのストレージアクセスが許可される場合があります。 その場合、サードパーティのオリジンにアクセスを許可する方法には次の3つがあります。</p> - -<ul> - <li>ポップアップウィンドウに最初に読み込まれるリソースのオリジンには、オープナー文書へのストレージアクセスが許可されます。 オリジンが追跡アクセスを取得するためにこの経験則を悪用していることが判明した場合、そのオリジンには、過去30日以内にファーストパーティとしてユーザーとのやり取りを受け取る必要があるという追加の要件があります。</li> - <li>最初のリソースがポップアップウィンドウに読み込まれた後、ウィンドウは他のホストへの一連のリダイレクトを通過する場合があります。 ユーザーがリダイレクト後にポップアップウィンドウとやり取りすると、ポップアップウィンドウに読み込まれたコンテンツのオリジンにはオープナー文書のストレージアクセスが与えられます。</li> - <li>追跡オリジンから非追跡オリジンへの最上位のリダイレクトがある場合、追跡オリジンは、非追跡オリジンとリダイレクトチェーンのさらに下に表れる他の非追跡オリジンで短期間のストレージアクセスを受け取ります(つまり、読み込みがリダイレクトし続ける場合)。 追跡オリジンは、過去30日以内にファーストパーティとしてユーザーとのやり取りを受け取っている必要があり、ストレージアクセス許可は15分後に期限切れになります。</li> -</ul> - -<h3 id="Scope_of_storage_access" name="Scope_of_storage_access">ストレージアクセスの範囲</h3> - -<p>ストレージアクセスが許可されると、それはオープナー文書のオリジンまたはそのオリジンのサブドメインを対象とします。 オリジンのサブドメインで許可されたアクセスは、最上位オリジンに拡張されません。 例えば、<code>tracker.example</code> のリソースに <code>foo.example.com</code> のストレージアクセスが許可されている場合、<code>tracker.example</code> は <code>example.com</code> ではなく <code>bar.foo.example.com</code> のクッキーにアクセスできます。 代わりに、<code>tracker.example</code> が <code>example.com</code> でアクセスを許可された場合、<code>bar.foo.example.com</code>、<code>foo.example.com</code>、および <code>example.com</code> のストレージにアクセスできます。</p> - -<p><code>example.com</code> の <code>tracker.example</code> にストレージアクセスが許可されると、<code>example.com</code> から読み込まれた任意の最上位文書において <code>tracker.example</code> から読み込まれたすべてのリソースには、すぐにストレージアクセスが与えられます。 これには、ページのメインコンテキストに読み込まれたすべてのリソース、埋め込み <code><iframe></code>、埋め込み <code><iframe></code> に読み込まれたリソースが含まれます。 ストレージアクセスは、<code>example.com</code> に読み込まれた他のリソース(<code>other-tracker.example</code> など)や、<code>tracker.example</code> が埋め込まれている他のファーストパーティ(<code>example.org</code> など)には拡張されません。</p> - -<p>ストレージアクセス許可は、ネストされたコンテキストの最初のレベルまで拡張されますが、それ以上は拡張されません。 これは、ページのメインコンテキストに埋め込まれ、追跡者として分類されたドメインから読み込まれた <code><iframe></code> が、JavaScript を介してアクセス可能なすべてのストレージの場所に完全にアクセスできることを意味します。 同様に、ページのメインコンテキストに埋め込まれた <code><iframe></code> に読み込まれたリソースの要求は、HTTP クッキーにアクセスできます。 ただし、追跡者として分類されたオリジンからのものを含むがこれに限定されない、さらにネストされたコンテキストは、ストレージアクセスを許可されません。</p> - -<p><code>tracker.example</code> にストレージアクセスを許可している <code>example.com</code> から読み込まれた最上位ページでの以下の埋め込みのシナリオを検討してください。</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">埋め込み</th> - <th scope="col">tracker.example リソースのストレージアクセス</th> - </tr> - </thead> - <tbody> - <tr> - <td>画像は <code>tracker.example</code> から読み込まれ、<code>example.com</code> のメインコンテキストに埋め込まれます。</td> - <td>HTTP: はい<br> - JS: 該当なし</td> - </tr> - <tr> - <td><code>example.com</code> は、<code>example.org</code> から <code><iframe></code> を埋め込みます。 その <code><iframe></code> は、<code>tracker.example</code> から画像を読み込みます。</td> - <td>HTTP: はい<br> - JS: 該当なし</td> - </tr> - <tr> - <td><code>example.com</code> は、<code>example.org</code> から <code><iframe></code> を埋め込みます。 その <code><iframe></code> は、<code>tracker.example</code> から <code><iframe></code> を埋め込みます。</td> - <td>HTTP: はい<br> - JS: いいえ</td> - </tr> - <tr> - <td><code>example.com</code> は、<code>tracker.example</code> から <code><iframe></code> を埋め込みます。</td> - <td>HTTP: はい<br> - JS: はい</td> - </tr> - <tr> - <td><code>example.com</code> は、<code>example.com</code>(同じオリジン)から <code><iframe></code> を埋め込みます。 ネストされた <code><iframe></code> は、<code>tracker.example</code> から <code><iframe></code> を埋め込みます。</td> - <td>HTTP: はい<br> - JS: いいえ</td> - </tr> - </tbody> -</table> - -<h3 id="Storage_access_expiration" name="Storage_access_expiration">ストレージアクセスの有効期限</h3> - -<p>ストレージアクセス許可は30日後に失効します。 追跡リソースとして分類されたドメインには、複数のファーストパーティでサードパーティのストレージアクセスが許可される場合があり、各パーティのストレージ許可は独立して期限切れになります。 上記の経験則は、すでにアクセスが許可されているオリジンに対するサードパーティのストレージ許可の有効期間を延長するのにも役立ちます。 経験則がアクティブになるたびに、または Storage Access API の成功呼び出しが行われるたびに、以前にアクセスが許可された時点から数えて、既存のストレージアクセスの有効期限が30日間延長されます。</p> - -<p>今後、ストレージアクセスの有効期間を変更する予定です。 前述したように、今後ストレージをサードパーティとして使用できることを知る方法は、Storage Access API を使用することです。</p> - -<h2 id="Debugging" name="Debugging">デバッグ</h2> - -<p>サイト所有者は、サイト、特にサードパーティのコンテンツインテグレーションに依存しているサイトをテストすることをお勧めします。 テストを簡単にするために、Firefox にいくつかの新機能を追加しました。</p> - -<h3 id="Developer_Tools_notifications" name="Developer_Tools_notifications">開発ツールの通知</h3> - -<p>Firefox 開発ツールの<a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a>には、追跡リソースとして分類されたすべてのリソース要求のインジケーターが含まれるようになりました。 このインジケータは、ドメイン列に盾のアイコンとして表示されます。 次のサンプル画像では、<code>trackertest.org</code> は追跡リソースとして分類されていますが、example.com への要求は追跡リソースではありません。</p> - -<p><img alt="Firefox 開発ツールのネットワーク要求は、小さな盾のアイコンで追跡リソースがどれであるかを示します" src="https://mdn.mozillademos.org/files/16181/Screen_Shot_2018-09-21_at_10.34.22_AM.png" style="border-style: solid; border-width: 1px; display: block; height: 57px; margin: 0px auto; width: 600px;"></p> - -<h3 id="Adding_custom_domains_to_the_Tracking_Protection_list" name="Adding_custom_domains_to_the_Tracking_Protection_list">トラッキング防止リストへのカスタムドメインの追加</h3> - -<p>サイトのサードパーティドメインが追跡者として分類された場合、どのように機能するのか興味がありますか? トラッキング防止 URL 分類子にカスタムドメインを追加できる設定を追加しました。 そうするには次のようにします。</p> - -<ol> - <li>アドレスバーに <code>about:config</code> と入力します。 「注意して進んでください!」と警告するページが表示された場合は、「危険性を承知の上で使用する!」をクリックします。</li> - <li>設定名 "urlclassifier.trackingAnnotationTable.testEntries" を検索します。</li> - <li>設定がすでに存在する場合は、設定値を編集します。</li> - <li>設定が存在しない場合は、「文字列」をクリックしてから「+」をクリックして、新しい設定を作成します。</li> - <li>設定値には、追跡者として分類するオリジンをコンマで区切って入力します。 例えば、"example.net,example.org"。</li> -</ol> - -<div class="warning"> -<p><strong>警告</strong>: テストが終了したら、これらのエントリを必ず取り除いてください。</p> -</div> - -<h2 id="FAQ" name="FAQ">FAQ</h2> - -<p>このクッキーポリシーはサイトの中断につながる可能性がありますが、一般的なサードパーティのインテグレーションがクロスサイトトラッキングを防止しながら機能し続けるように設計されています。 このセクションでは、さまざまなインテグレーションのシナリオで期待できる機能について説明します。</p> - -<h3 id="Will_this_storage_access_policy_block_ads_from_displaying_on_my_website" name="Will_this_storage_access_policy_block_ads_from_displaying_on_my_website">このストレージアクセスポリシーにより、ウェブサイトに広告が表示されなくなりますか?</h3> - -<p>いいえ — この機能は、ウェブサイトをわたってユーザーを追跡するために使用できるクッキーとサイトデータへのアクセスのみを制限します。 追跡識別子をブロックしても、広告の表示は妨げられません。</p> - -<h3 id="I_use_a_third-party_analytics_service_that_is_classified_as_a_tracker._Will_I_still_receive_analytics_data" name="I_use_a_third-party_analytics_service_that_is_classified_as_a_tracker._Will_I_still_receive_analytics_data">追跡者として分類されるサードパーティの分析サービスを使用しています。 分析データは引き続き受け取れますか?</h3> - -<p>これは、サードパーティの分析サービスの実装方法に依存します。 サードパーティの分析プロバイダーは、サードパーティのストレージを使用してデータを収集できなくなります。 これは、サードパーティドメイン、またはローカルストレージとそのオリジンの下に保存されている他のサイトデータを対象としたクッキーを使用するプロバイダーが、他のウェブサイトにわたる識別子にアクセスできなくなることを意味します。</p> - -<p>これらのサービスがページのメインコンテキストに埋め込まれている場合、ファーストパーティのクッキーとサイトストレージを引き続き使用して、その特定のファーストパーティのドメインにおいてページにわたった訪問を追跡できます。</p> - -<h3 id="I_use_third-party_services_for_social_login_like_and_share_button_integration._Will_my_users_still_be_able_to_make_use_of_these_services" name="I_use_third-party_services_for_social_login_like_and_share_button_integration._Will_my_users_still_be_able_to_make_use_of_these_services">ソーシャルログイン、いいねボタン、シェアボタンのインテグレーションのためにサードパーティのサービスを使用しています。 ユーザーは引き続きこれらのサービスを利用できますか?</h3> - -<p>これは、ソーシャルインテグレーションの実装方法によって異なります。 人気のあるソーシャルインテグレーションの多くは、Firefox の現在のクッキーポリシーに基づいて機能し続けますが、ユーザーエクスペリエンスに若干の違いがあります。</p> - -<p>追跡者として分類されたソーシャルコンテンツプロバイダーは、ユーザーが新しいファーストパーティに初めてアクセスしたときにサードパーティのクッキーにアクセスできません。 したがって、ユーザーはプロバイダーのウェブサイトに直接アクセスしたときにログインしているにも関わらず、サービスにログアウトしているように見える場合があります。 インテグレーションの種類によっては、ユーザーがソーシャルコンテンツプロバイダーとやり取りするために、プロバイダーにクッキーへのアクセスを許可する前に、何らかのアクションを実行する必要がある場合があります。 例えば次のようにです。</p> - -<ul> - <li>ソーシャルログインの場合、ユーザーはファーストパーティのログインボタンをクリックする必要があります。</li> - <li>ソーシャルのいいねボタンやシェアボタンの場合、ユーザーは最初にログアウト状態のボタンを操作する必要があります。 一度行うと、多くのソーシャルコンテンツプロバイダーはログインを促します。</li> -</ul> - -<p>これらのやり取りの後、プロバイダーは、上記のストレージアクセスのアクティベーション経験則によって捕捉される方法でユーザーにプロンプトした場合、サードパーティのストレージアクセスを受け取ります。 これらのプロバイダーは、できるだけ早く Storage Access API を介してストレージアクセスを明示的に要求するように切り替えることを検討する必要があります。 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1469714">この API の初期実装</a>は、現在 Nightly で利用可能です。</p> - -<h3 id="I_use_third-party_pixels_and_other_tools_to_measure_the_effectiveness_of_my_ad_campaigns._Will_I_still_be_able_to_measure_the_conversion_rate_of_my_ads" name="I_use_third-party_pixels_and_other_tools_to_measure_the_effectiveness_of_my_ad_campaigns._Will_I_still_be_able_to_measure_the_conversion_rate_of_my_ads">サードパーティのピクセルやその他のツールを使用して、広告キャンペーンの効果を測定しています。 広告のコンバージョン率を測定することはできますか?</h3> - -<p>これは、サードパーティが測定ツールをどのように実装したかに依存しますが、一般に広告コンバージョンの測定はより困難になります。 次の例を考慮してください。</p> - -<ol> - <li>あなたは、ユーザーが何度も見たがクリックされなかったソーシャルメディアウェブサイトで広告を掲載している。 そのユーザーは、後で同じソーシャルメディアウェブサイトからのコンバージョン追跡タグを含んであなたのウェブサイトに訪問します。 このタイプのコンバージョンは、多くの場合「ビュースルーコンバージョン」と呼ばれます。 ソーシャルメディアウェブサイトはそれらのサードパーティのストレージにアクセスできないため、それらのウェブサイトで広告を見たユーザーと同じユーザーとしてユーザーを認識せず、コンバージョンは追跡されません。 ディスプレイネットワークで提供されるものを含め、ほとんどのビュースルーコンバージョン追跡技術は機能しなくなると予想されます。</li> - <li>あなたは、ユーザーがクリックしたディスプレイネットワークまたはソーシャルメディアウェブサイトで広告を掲載している。 そのユーザーはあなたのウェブサイトに着陸します。 これには、あなたの広告を表示した同じウェブサイトのコンバージョン追跡タグが含まれています。 このタイプのコンバージョンは、しばしば「クリックスルーコンバージョン」と呼ばれます。 ソーシャルメディアサイトまたはディスプレイネットワークはそれらのサードパーティのストレージにアクセスできないため、それらのウェブサイトで広告を見たユーザーと同じユーザーとしてユーザーを認識せず、コンバージョンは追跡されません。 このバージョンのクリックスルーコンバージョンは機能しなくなると予想されます。</li> - <li>あなたは、ソーシャルメディアウェブサイトに表示される広告を掲載している。 ユーザーがあなたの広告をクリックすると、サードパーティのネットワークからコンバージョン追跡タグを含むランディングページに移動します。 ソーシャルメディアのウェブサイトでは、ネットワークは広告のランディングページ URL に、訪問が広告をクリックした結果であることを示すクエリパラメーターで注釈を付けます。 あなたのウェブサイトでは、ディスプレイネットワークのタグが URL クエリパラメーターをチェックし、広告追跡パラメータをファーストパーティストレージに保存します。 ユーザーが後でコンバージョンイベントを完了した場合、ネットワークのタグはファーストパーティストレージをチェックして、訪問の原因となったクリックを特定します。 この方法で実装されたクリックスルーコンバージョンは引き続き機能すると予想されます。</li> -</ol> diff --git a/files/ja/mozilla/firefox/privacy/tracking_protection/index.html b/files/ja/mozilla/firefox/privacy/tracking_protection/index.html deleted file mode 100644 index 471f4d0684..0000000000 --- a/files/ja/mozilla/firefox/privacy/tracking_protection/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: トラッキング防止 -slug: Mozilla/Firefox/Privacy/Tracking_Protection -translation_of: Mozilla/Firefox/Privacy/Tracking_Protection ---- -<h2 id="トラッキング防止機能とは何か?">トラッキング防止機能とは何か?</h2> - -<p>バージョン 42 以降、デスクトップ版 Firefox および Android 版 Firefox には、組み込みの機能としてトラッキング防止が含まれます。プライベートウィンドウ(Android 版 Firefox ではプライベートタブ)では、サイトをまたいでユーザーを追跡するようなドメインからロードされるコンテンツは Firefox によってブロックされます。</p> - -<p>ブロックされたコンテンツがページレイアウトの一部である場合、どの部分が Firefox によってブロックされたレイアウト要素であるのかはユーザーにも分かるでしょう。ただし、ページグリッドが要素のブロックによってできた穴を塞ぐように配置されることで、ユーザーに全く気付かれないこともあります。</p> - -<p>Firefox によってコンテンツがブロックされると、ウェブコンソールに次のようなメッセージとして記録されます。</p> - -<pre>トラッキング防止機能が有効なため、 "http://some/url" のリソースがブロックされました。</pre> - -<p>Android 版 Firefox の場合、コンソールへの出力はリモートデバッガからアクセスできる点に注意してください。</p> - -<p>Firefox UI は、コンテンツがいつブロックされたのか、そして、選択すれば現在のセッションにおいてブロック解除を有効にできるということを示します。また、ユーザーはトラッキング防止機能を完全に無効にすることもできます。</p> - -<h2 id="Firefox_はどのようにブロックする対象を選ぶのか?">Firefox はどのようにブロックする対象を選ぶのか?</h2> - -<p>コンテンツはそれがロードされるドメインに基づいてブロックされます。</p> - -<p>Firefox は、サイトをまたぐユーザーの追跡を行うサイトをリストにします。トラッキング防止機能が有効な場合、Firefoxは、このリストにあるサイトからのコンテンツをブロックします。</p> - -<p>ユーザーの追跡を行うサイトとしては、広告サイトや分析サイトが一般的です。</p> - -<h2 id="このことがあなたのサイトにとって意味するものは?">このことがあなたのサイトにとって意味するものは?</h2> - -<p>トラッキング防止が有効であれば、次のことが言えます。</p> - -<ul> - <li>追跡を行うサイトから提供されるコンテンツはユーザーに表示されない。</li> - <li>追跡を行うような広告サービスまたは解析ツールをあなたのサイトで使うことができなくなる。</li> -</ul> - -<p>もしあなたのサイトの別の部分が、ロードされる追跡を行うコンテンツに依存していた場合、トラッキング防止が有効になっているとこれらの部分も同様に正しく表示されなくなるかもしれません。例えば、追跡を行うサイトからコンテンツがロードされた時に実行されるようなコールバックがあなたのサイトに含まれたいた場合、このコールバックが実行されることはありません。</p> - -<p>例えば、Google Analytics はこのような使い方をすべきではありません:</p> - -<pre class="brush:html example-bad line-numbers language-html"><code class="language-html"><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>http://www.example.com<span class="punctuation token">"</span></span> <span class="attr-name token">onclick</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>trackLink(<span class="punctuation token">'</span>http://www.example.com<span class="punctuation token">'</span>, event);<span class="punctuation token">"</span></span><span class="punctuation token">></span></span>Visit example.com<span class="tag token"><span class="tag token"><span class="punctuation token"></</span>a</span><span class="punctuation token">></span></span> -<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>script</span><span class="punctuation token">></span></span><span class="language-javascript script token"> -<span class="keyword token">function</span> <span class="function token">trackLink</span><span class="punctuation token">(</span>url<span class="punctuation token">,</span>event<span class="punctuation token">)</span> <span class="punctuation token">{</span> - event<span class="punctuation token">.</span><span class="function token">preventDefault</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">ga</span><span class="punctuation token">(</span><span class="string token">'send'</span><span class="punctuation token">,</span> <span class="string token">'event'</span><span class="punctuation token">,</span> <span class="string token">'outbound'</span><span class="punctuation token">,</span> <span class="string token">'click'</span><span class="punctuation token">,</span> url<span class="punctuation token">,</span> <span class="punctuation token">{</span> - <span class="string token">'transport'</span><span class="punctuation token">:</span> <span class="string token">'beacon'</span><span class="punctuation token">,</span> - <span class="string token">'hitCallback'</span><span class="punctuation token">:</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> - document<span class="punctuation token">.</span>location <span class="operator token">=</span> url<span class="punctuation token">;</span> - <span class="punctuation token">}</span> - <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span> -</span><span class="tag token"><span class="tag token"><span class="punctuation token"></</span>script</span><span class="punctuation token">></span></span></code></pre> - -<p>その代わり、Google Analytics を使わない場合も考慮して、次のように ga オブジェクトが初期化されているか確認してください:</p> - -<pre class="brush:html example-good line-numbers language-html"><code class="language-html"><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>http://www.example.com<span class="punctuation token">"</span></span> <span class="attr-name token">onclick</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>trackLink(<span class="punctuation token">'</span>http://www.example.com<span class="punctuation token">'</span>, event);<span class="punctuation token">"</span></span><span class="punctuation token">></span></span>Visit example.com<span class="tag token"><span class="tag token"><span class="punctuation token"></</span>a</span><span class="punctuation token">></span></span> -<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>script</span><span class="punctuation token">></span></span><span class="language-javascript script token"> -<span class="keyword token">function</span> <span class="function token">trackLink</span><span class="punctuation token">(</span>url<span class="punctuation token">,</span>event<span class="punctuation token">)</span> <span class="punctuation token">{</span> - event<span class="punctuation token">.</span><span class="function token">preventDefault</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span>window<span class="punctuation token">.</span>ga <span class="operator token">&&</span> ga<span class="punctuation token">.</span>loaded<span class="punctuation token">)</span> <span class="punctuation token">{</span> - <span class="function token">ga</span><span class="punctuation token">(</span><span class="string token">'send'</span><span class="punctuation token">,</span> <span class="string token">'event'</span><span class="punctuation token">,</span> <span class="string token">'outbound'</span><span class="punctuation token">,</span> <span class="string token">'click'</span><span class="punctuation token">,</span> url<span class="punctuation token">,</span> <span class="punctuation token">{</span> - <span class="string token">'transport'</span><span class="punctuation token">:</span> <span class="string token">'beacon'</span><span class="punctuation token">,</span> - <span class="string token">'hitCallback'</span><span class="punctuation token">:</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> document<span class="punctuation token">.</span>location <span class="operator token">=</span> url<span class="punctuation token">;</span> <span class="punctuation token">}</span> - <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span> - document<span class="punctuation token">.</span>location <span class="operator token">=</span> url<span class="punctuation token">;</span> - <span class="punctuation token">}</span> -<span class="punctuation token">}</span> -</span><span class="tag token"><span class="tag token"><span class="punctuation token"></</span>script</span><span class="punctuation token">></span></span></code></pre> - -<p>この手法についてより詳しくは <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">Google Analytics, Privacy, and Event Tracking</a> をご覧ください。</p> - -<p>他のサイトからのコンテンツに依存してしまうやり方は、そのサイトが重かったり、読み込みに失敗したり、アドオンによってトラッキングがブロックされた場合にあなたのサイトまで影響を受けてしまうので良い方法とは言えません。</p> diff --git a/files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html b/files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html deleted file mode 100644 index fefd9703e1..0000000000 --- a/files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Firefox のフロントエンドエンジニアのためのセキュリティのベストプラクティス -slug: Mozilla/Firefox/Security_best_practices_for_Firefox_front-end_engi -translation_of: Mozilla/Firefox/Security_best_practices_for_Firefox_front-end_engi ---- -<div>{{FirefoxSidebar}}</div> - -<p>このガイドは、Firefoxの開発者がセキュリティコントロールを理解し、Firefoxのフロントエンドを開発する際の一般的な落とし穴を避けるのに役立ちます。</p> - -<h2 id="既存のセキュリティコントロール">既存のセキュリティコントロール</h2> - -<h3 id="innerHTMLやそれに関連するものを通してDOMに入るすべての文字列をサニタイズする">innerHTMLやそれに関連するものを通してDOMに入るすべての文字列をサニタイズする</h3> - -<p>Chrome 特権で実行されるコードでは、Chrome 特権文書用に作成されたすべてのHTMLフラグメントをサニタイズします。これには文字列を受け取りDOMツリーに解析するすべてのDOM APIが含まれます。</p> - -<p>私たちは、Sanitizerに組み込まれた次の<a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIParserUtils#Constants">フラグ</a>を使用します。</p> - -<pre><code id="line-5195">SanitizerAllowStyle -</code><code id="line-5196">SanitizerAllowComments -</code><code id="line-5197">SanitizerDropForms -</code><code id="line-5198">SanitizerLogRemovals</code></pre> - -<p>サニタイザはすべてのスクリプト (スクリプトタグ、イベントハンドラ) とフォーム要素 (<code>form</code>, <code>input</code>, <code>keygen</code>, <code>option</code>, <code>optgroup</code>, <code>select</code>, <code>button</code>, <code>datalist</code>) を削除します。<a href="https://searchfox.org/mozilla-central/source/dom/base/nsTreeSanitizer.cpp#38">ホワイトリストに載っている要素のリスト</a>の正式なものはソースコードです。<br> - <br> - 最後のフラグは開発者が問題を早期に発見し、提供後ではなく開発サイクル内で問題を回避できることを保証します。</p> - -<h3 id="非衛生的なDOMの相互作用に対するLinterの規則">非衛生的なDOMの相互作用に対するLinterの規則</h3> - -<p>Security Assuranceチームは、<code>innerHTML</code>などのDOM APIの安全でない使用を禁止する <a href="https://github.com/mozilla/eslint-plugin-no-unsanitized">ESLint ルール</a>を維持しています。Linterは善意の開発者を想定して、ソースコードにハードコードされた文字列リテラルを使用するコードの例外を作成します。 開発者は次のような<a href="/ja/docs/Web/JavaScript/Reference/template_strings">テンプレート文字列</a>と組み合わせてエスケープ関数を使用することで、ルールをトリッピングすることを避けることができます。</p> - -<pre class="brush: js"><span class="pl-smi">bar</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-en">escapeHTML</span><span class="pl-pds">`</span><<span class="pl-ent">a</span> <span class="pl-e">href</span>=<span class="pl-s"><span class="pl-pds">'</span>${url}<span class="pl-pds">'</span></span>>About</<span class="pl-ent">a</span>><span class="pl-pds">`</span></span>;</pre> - -<p>Chrome 特権コードでは、残っているスクリプトは引き続きGoogleのサニタイザで削除されます。</p> - -<h2 id="付録">付録</h2> - -<h4 id="許可されていない_DOM_API_の一覧"><a name="list-disallowed">許可されていない DOM API の一覧</a></h4> - -<ul> - <li><code>innerHTML</code></li> - <li><code>outerHTML</code></li> - <li><code>insertAdjacentHTML()</code></li> - <li><code>createContextualFragment()</code></li> - <li><code>document.write()</code></li> - <li><code>document.writeln()</code></li> -</ul> - -<p><a href="https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules">Please take a look at the repository for an updated list</a></p> diff --git a/files/ja/mozilla/firefox_for_ios/index.html b/files/ja/mozilla/firefox_for_ios/index.html deleted file mode 100644 index b49013cb47..0000000000 --- a/files/ja/mozilla/firefox_for_ios/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: iOS 版 Firefox -slug: Mozilla/Firefox_for_iOS -tags: - - Beginner - - Firefox - - Mobile - - iOS -translation_of: Mozilla/Firefox_for_iOS ---- -<p>多くの人にとって、モバイル端末は Web にアクセスする第一の方法であり、場合によっては唯一の方法になってきています。<a class="link-https" href="https://www.mozilla.org/ja/firefox/ios/">iOS 版 Firefox</a> (Android 版と同様にコードネームは Fennec です) は、デスクトップ版 Firefox のようにオープンで、ハック可能な、ウェブ標準に準じたブラウザーです。</p> - -<p>iOS 版 Firefox は <a href="/ja/docs/Archive/Mozilla/XUL">XUL</a> の代わりにネイティブなウィジェットでUIを構築しています。これは大幅に性能、特に起動時間、メモリー消費量を改善させます。Apple の App Store の制限のため、iOS 上では iOS 組み込みの <code>WKWebView</code> も使用しています。これは Gecko でなく WebKit をベースにしています。</p> - -<h2 id="Contribute_to_Firefox_for_iOS" name="Contribute_to_Firefox_for_iOS">iOS 版 Firefox に貢献する</h2> - -<p>我々は iOS 版 Firefox 作成に力を入れており、また我々はあなたの助けを求めています。iOS 版 Firefox プロジェクトへの貢献に興味があるの主な出発点は <a class="external external-icon" href="https://github.com/mozilla-mobile/firefox-ios">GitHub のページ </a>にあります。</p> - -<p>iOS 版 Firefox の構築、改善を以下によって手助けすることができます:</p> - -<ul> - <li><a class="external external-icon" href="https://mail.mozilla.org/listinfo/mobile-firefox-dev">mobile-firefox-dev メーリングリスト</a> の購読</li> - <li><a class="link-irc" href="irc://irc.mozilla.org/#mobile">IRC</a> 上のチームに連絡</li> - <li><a class="external external-icon" href="https://wiki.mozilla.org/Mobile/Notes">Wednesday development meeting</a> への参加</li> - <li><a class="external" href="http://planet.firefox.com/mobile/">Planet Firefox Mobile</a>、<a class="external external-icon" href="https://fennecnightly.tumblr.com/">Tumblr</a> や <a class="external external-icon" href="https://twitter.com/FirefoxiOS">Twitter</a> からプロジェクトの最新情報の取得</li> - <li><a class="external external-icon" href="https://github.com/mozilla-mobile/firefox-ios">iOS 版 Firefoxのビルドとハック</a> (Fennec)</li> -</ul> - -<h2 id="Opening_links_in_Firefox_iOS" name="Opening_links_in_Firefox_iOS">iOS 版 Firefox でリンクを開く</h2> - -<p>iOS ではデフォルトのブラウザーを変更できません。そのため、サードパーティー製のブラウザーを使用するユーザーは、コピー・ペーストを使用する必要があります。代わりに、ユーザーを幸せになるためにネイティブアプリにおいていくつかできる方法があります:</p> - -<ul> - <li>ユーザーへの iOS アプリの拡張システムを利用できるようにします。iOS 版 Firefoxはあなたのアプリからオープンすること、ブックマークを作成すること、Firefox のリーディングリストに追加することなどの、いくつかのアプリの機能拡張を提供します。NSHipster は、あなたのアプリに UIActivityViewController を追加する方法の <a class="external external-icon" href="https://nshipster.com/uiactivityviewcontroller/">詳しい概要</a> を説明しています。</li> - <li>簡単に Firefox がインストールされているかどうかを検出し、表示するためのオプションとして、<a class="external external-icon" href="https://github.com/mozilla-mobile/firefox-ios-open-in-client">Open-In-Firefox SDK</a> を使用してください。今後のリリースでは、それが簡単に、ユーザーが Firefox で記事を読んだ後に、簡単にあなたのアプリに戻る方法を提供するつもりです。</li> -</ul> - -<h2 id="Addons" name="Addons">アドオン</h2> - -<p>iOS 版 Firefox は現在の iOS 拡張エコシステムをサポートしていますが、デスクトップ版や Android 版 Firefox のような JavaScript のアドオンを (まだ) サポートしていません。</p> - -<p>{{bug(1210119)}} で <a href="/ja/docs/Mozilla/Add-ons/Themes/Lightweight_themes">軽量テーマ</a> に取り組んでおり、{{bug(1466496)}} で <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">WebExtension ベースのテーマ</a> に取り組んでいます。</p> - -<h2 id="Get_help" name="Get_help">ヘルプはこちら</h2> - -<p>文書化と使用についてのチュートリアルと iOS 用 Firefox のトラブルシューティングは、<a class="external" href="https://support.mozilla.org/products/ios" title="https://support.mozilla.org/products/ios">Mozilla サポートのウェブサイト</a> で利用できます。</p> diff --git a/files/ja/mozilla/gecko/chrome/api/chromeworker/index.html b/files/ja/mozilla/gecko/chrome/api/chromeworker/index.html deleted file mode 100644 index db2f4f08de..0000000000 --- a/files/ja/mozilla/gecko/chrome/api/chromeworker/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: ChromeWorker -slug: Mozilla/Gecko/Chrome/API/ChromeWorker -translation_of: Mozilla/Gecko/Chrome/API/ChromeWorker ---- -<div> -<section class="Quick_links" id="Quick_Links"> -<ol> - <li><strong><a href="/en-US/docs/Web/API/Mozilla"><code>Mozilla</code></a></strong></li> -</ol> -</section> - -<div class="blockIndicator nonStandard nonStandardHeader"> -<p><strong><span class="gt-baf-term-text"><span class="gt-baf-cell gt-baf-word-clickable">非標準</span></span></strong><br> - この機能は標準的ではなく、標準化もされていません。 Web に公開している本番サイトでは使用しないでください。すべてのユーザに対して機能するわけではありません。実装間には大きな非互換性があり、その振る舞いは将来変更されるかもしれません。</p> -</div> -</div> - -<h2 id="要約">要約</h2> - -<p>特権コードを開発していて、ネイティブコードへの呼び出しを実行するために <a href="/en/js-ctypes" title="en/js-ctypes">js-ctypes</a> を使用できる worker を作成したい場合は、標準の <a href="/ja/docs/Web/API/Worker" title="The Worker interface of the Web Workers API represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread."><code>Worker</code></a> オブジェクトの代わりに <code>ChromeWorker</code> を使用してください。worker のグローバルスコープで利用可能なグローバル <code>ctypes</code> オブジェクトを介して <a href="/en/js-ctypes" title="en/js-ctypes">js-ctypes</a> にアクセスできることを除けば、標準の <a href="/ja/docs/Web/API/Worker" title="The Worker interface of the Web Workers API represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread."><code>Worker</code></a> とまったく同じように機能します。ChromeWorker による js-ctypes の使用例は Github で入手でき、<a href="#seealso">下記の関連項目セクション</a>からリンクされています。Promise を特徴とするコールバックバージョンの ChromeWorker で postMessage を使用するには、<a href="/ja/docs/Web/API/PromiseWorker">PromiseWorker</a> を参照してください。</p> - -<p>アドオンは worker をロードするために絶対 URL を使用しなければならず、それらの URL は <code>chrome://</code> または <code>resource://</code> プロトコル (<code>file://</code> は受け入れられません) を使用する必要があります。 <code>file://</code> URL を使用したいアドオンは、まず次のようなコードを使用してリソース置換パスを登録する必要があります。</p> - -<pre class="brush: js">var fileuri = Services.io.newFileURI(file); -Services.io.getProtocolHandler('resource'). - QueryInterface(Ci.nsIResProtocolHandler). - setSubstitution('my-cool-addon', fileuri); - var worker = new Worker('resource://my-cool-addon/worker.js');</pre> - -<p>More references:</p> - -<ul> - <li>You can use <code>ChromeWorker</code> from <a href="/en/JavaScript_code_modules" title="en/JavaScript code modules">JavaScript code modules</a>. See <a href="/en/JavaScript_code_modules/Using_workers_in_JavaScript_code_modules" title="en/JavaScript code modules/Using workers in JavaScript code modules">Using workers in JavaScript code modules</a> for details.</li> - <li>You can use <a href="https://developer.mozilla.org/en-US/docs/Mozilla/ChromeWorkers/Chrome_Worker_Modules">ChromeWorker modules</a> in ChromeWorkers.</li> - <li>See <a class="internal" href="/En/Using_web_workers" title="en/Using DOM workers">Using web workers</a> for examples and details.</li> -</ul> - -<h2 id="あわせて参照">あわせて参照<a id="seealso" name="seealso"></a></h2> - -<ul> - <li><a class="internal" href="/en/Using_web_workers" title="en/Using DOM workers">Using web workers</a></li> - <li><a href="/en/JavaScript_code_modules/Using_workers_in_JavaScript_code_modules" title="en/JavaScript code modules/Using workers in JavaScript code modules">Using workers in JavaScript code modules</a></li> - <li><a href="/en-US/docs/Web/API/Worker" title="The Worker interface of the Web Workers API represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread."><code>Worker</code></a></li> - <li><code><a class="internal" href="/en/DOM/SharedWorker" title="en/DOM/SharedWorker">SharedWorker</a></code></li> - <li><a class="external" href="http://www.whatwg.org/specs/web-workers/current-work/" title="http://www.whatwg.org/specs/web-workers/current-work/">Web Workers specification</a></li> - <li><a href="/en-US/docs/Web/API/WorkerGlobalScope" title="The WorkerGlobalScope interface of the Web Workers API is an interface representing the scope of any worker. Workers have no browsing context; this scope contains the information usually conveyed by Window objects — in this case event handlers, the console or the associated WorkerNavigator object. Each WorkerGlobalScope has its own event loop."><code>WorkerGlobalScope</code></a></li> - <li><a href="https://github.com/Noitidart/ChromeWorker">GitHub :: ChromeWorker</a> - A fully working demo addon using js-ctypes from a chrome worker. Uses WinAPI example.</li> - <li><a href="/en-US/docs/Web/API/PromiseWorker">PromiseWorker</a> - <ul> - <li><a href="https://github.com/Noitidart/PromiseWorker">GitHub :: PromiseWorker</a> - Shows how to uses promises as an twist on postMessage feature of ChromeWorker</li> - </ul> - </li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/api/index.html b/files/ja/mozilla/gecko/chrome/api/index.html deleted file mode 100644 index 3885f415f1..0000000000 --- a/files/ja/mozilla/gecko/chrome/api/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Chrome-only API reference -slug: Mozilla/Gecko/Chrome/API -tags: - - API - - 'API:Mozilla Extensions' - - Chrome - - Gecko - - Mozilla - - NeedsTranslation - - Non-standard - - Overview - - Reference - - TopicStub -translation_of: Mozilla/Gecko/Chrome/API ---- -<p>{{FirefoxSidebar}}</p> - -<p class="seoSummary">This page lists APIs that only run in Gecko Chrome code (and sometimes in other privileged circumstances).</p> - -<div class="blockIndicator note"> -<p><strong>Note</strong>: Most of the APIs exposed to the Web in general are also usable in Chrome code: see <a href="/en-US/docs/Web/API">Web APIs</a> for a list of these.</p> -</div> - -<p>{{LandingPageListSubpages}}</p> - -<dl> - <dd class="landingPageList"> </dd> -</dl> - -<p> </p> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html deleted file mode 100644 index 0c92782256..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: ':-moz-tree-cell-text(hover)' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text(hover)' -tags: - - CSS - - Non-standard - - Reference - - XUL - - 疑似クラス -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text(hover)' ---- -<div>{{Non-standard_header}}{{CSSRef}}{{gecko_minversion_header(1.9)}}</div> - -<p><a href="/ja/docs/Web/CSS">CSS</a> の <strong><code>:-moz-tree-cell-text(hover)</code></strong> <a href="/ja/docs/Web/CSS/Pseudo-classes">擬似クラス</a>は、マウスカーソルがツリーセル内のテキストに合わせてあるとき、要素に一致します。</p> - -<p>このセレクターは、主にテーマ開発者によって使用されるものです。</p> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html deleted file mode 100644 index 030edc7899..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ':-moz-tree-cell-text' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text' ---- -<p>{{Non-standard_header}}{{CSSRef}}</p> - -<p><code>properties</code> 属性によってアクティブ化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treecell")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("font")}}</li> - <li>{{cssxref("visibility")}}</li> - <li>{{cssxref("color")}}</li> - <li>{{cssxref("text-decoration")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html deleted file mode 100644 index e1ab2e64f0..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: ':-moz-tree-cell' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell' ---- -<div>{{CSSRef}}{{Non-standard_header}}</div> - -<p><code>properties</code> 属性によって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treecell")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("background")}}</li> - <li>{{cssxref("border")}}</li> - <li>{{cssxref("margin")}}</li> - <li>{{cssxref("outline")}}</li> - <li>{{cssxref("padding")}}</li> - <li>{{cssxref("visibility")}}</li> -</ul> - -<h2 id="参照">参照</h2> - -<ul> - <li><a href="/ja/docs/XUL/Tutorial/Styling_a_Tree">ツリーのスタイル付け</a></li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html deleted file mode 100644 index cec1fd82a2..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ':-moz-tree-column' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-column' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-column' ---- -<div>{{CSSRef}}{{Non-standard_header}}</div> - -<p><code>properties</code> 属性によって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treecol")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("margin")}}</li> - <li>{{cssxref("visibility")}}</li> - <li>{{cssxref("text style")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html deleted file mode 100644 index 18603774d5..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ':-moz-tree-drop-feedback' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-drop-feedback' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-drop-feedback' ---- -<div>{{Non-standard_header}}{{CSSRef}}</div> - -<p><code>properties</code> 属性によって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treerow")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("margin")}}</li> - <li>{{cssxref("visibility")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html deleted file mode 100644 index cf19d79e47..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: ':-moz-tree-image' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-image' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/:-moz-tree-image' ---- -<div>{{CSSRef}}{{Non-standard_header}}</div> - -<p><code>properties</code> 属性によって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treeitem")}}</li> - <li>{{XULElem("treecell")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("margin")}}</li> - <li>{{cssxref("list-style")}}</li> - <li>{{cssxref("position")}}</li> -</ul> - -<h2 id="Examples" name="Examples">例</h2> - -<p><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=610762">Bookmark icons in the Places window - Mozillazine Forum</a></p> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html deleted file mode 100644 index f0b8edee2f..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: ':-moz-tree-indentation' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-indentation' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-indentation' ---- -<p>{{CSSRef}}{{Non-standard_header}}</p> - -<p><code>properties</code> 属性によって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treeitem")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("position")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html deleted file mode 100644 index 058ae755d4..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ':-moz-tree-line' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-line' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-line' ---- -<p>{{Non-standard_header}}{{CSSRef}}</p> - -<p><code>properties</code> 属性によって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treeitem")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("border")}}</li> - <li>{{cssxref("visibility")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html deleted file mode 100644 index a037c191bd..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ':-moz-tree-progressmeter' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-progressmeter' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-progressmeter' ---- -<div>{{Non-standard_header}}{{CSSRef}}</div> - -<p><code>type</code> 属性に <code>progressmeter</code> が設定されることによって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treecell")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("margin")}}</li> - <li>{{cssxref("color")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html deleted file mode 100644 index cda60c7101..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: ':-moz-tree-row(hover)' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row(hover)' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row(hover)' ---- -<p>{{Non-standard_header}}{{ CSSRef() }}{{ Fx_minversion_header(3) }}</p> - -<h2 id="Summary" name="Summary">概要</h2> - -<p>マウスカーソルが tree 行の上に合わせてあるとき、<code>:-moz-tree-row(hover)</code> は要素にマッチします。</p> - -<p>このセレクタは主にテーマ開発者によって使用されるものです。</p> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html deleted file mode 100644 index ff4d962ceb..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: ':-moz-tree-row' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row' ---- -<p>{{CSSRef}}{{Non-standard_header}}</p> - -<p><code>-moz-tree-row</code> CSS <a href="/ja/docs/Web/CSS/Pseudo-elements">擬似要素</a>は、列の選択と tree 列のスタイル付けに使用されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treerow")}}</li> -</ul> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="syntaxbox">treechildren::-moz-tree-row { <em>style プロパティ</em> } -</pre> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("background")}}</li> - <li>{{cssxref("border")}}</li> - <li>{{cssxref("margin")}}</li> - <li>{{cssxref("outline")}}</li> - <li>{{cssxref("padding")}}</li> - <li>{{cssxref("display")}}</li> - <li>{{cssxref("-moz-appearance")}}</li> -</ul> - -<h2 id="Examples" name="Examples">例</h2> - -<pre class="brush:css">treechildren::-moz-tree-row( foo bar ) -{ - margin: 2%; -} -</pre> - -<p>...次の位置に適用されます...</p> - -<pre class="brush:html"> <treerow properties="foo">...</treerow> -</pre> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html deleted file mode 100644 index 3c3d83f284..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ':-moz-tree-separator' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-separator' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-separator' ---- -<div>{{Non-standard_header}}{{CSSRef}}</div> - -<p><code>properties</code> 属性によって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treeseparator")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("border")}}</li> - <li>{{cssxref("display")}}</li> - <li>{{cssxref("-moz-appearance")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html deleted file mode 100644 index 50cb0808df..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ':-moz-tree-twisty' -slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-twisty' -tags: - - CSS - - CSS Reference - - Non-standard -translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-twisty' ---- -<p>{{ CSSRef() }}{{Non-standard_header}}</p> - -<p><code>properties</code> 属性によって活性化されます。</p> - -<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2> - -<ul> - <li>{{XULElem("treecell")}}</li> -</ul> - -<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2> - -<ul> - <li>{{cssxref("border")}}</li> - <li>{{cssxref("margin")}}</li> - <li>{{cssxref("padding")}}</li> - <li>{{cssxref("display")}}</li> - <li>{{cssxref("list-style")}}</li> - <li>{{cssxref("position")}}</li> - <li>{{cssxref("-moz-appearance")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/display-xul/index.html b/files/ja/mozilla/gecko/chrome/css/display-xul/index.html deleted file mode 100644 index 4d48fdef55..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/display-xul/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: <display-xul> -slug: Mozilla/Gecko/Chrome/CSS/display-xul -tags: - - CSS - - CSS データ型 - - CSS 表示 - - Deprecated - - Firefox - - Gecko - - Mozilla - - Mozilla 拡張 - - Non-standard - - Reference - - XUL -translation_of: Mozilla/Gecko/Chrome/CSS/display-xul ---- -<div>{{CSSRef}}{{Non-standard_Header}}{{Deprecated_Header(62)}}</div> - -<p class="summary">Firefox は以下の <code>-moz-</code> の接頭辞が付いた <a href="/ja/docs/Mozilla/Tech/XUL">XUL</a> 表示値に対応しています。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<dl> - <dt><code>-moz-box</code> {{Non-standard_Inline}} {{Deprecated_Inline}}</dt> - <dd>XUL ボックス、 <code style="white-space: nowrap;">flex</code> とほぼ等価</dd> - <dt><code>-moz-inline-box</code> {{Non-standard_Inline}} {{Deprecated_Inline}}</dt> - <dd>XUL インラインボックス、 <code style="white-space: nowrap;">inline-flex</code> とほぼ等価</dd> - <dt><code>-moz-grid</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt> - <dd>XUL グリッド</dd> - <dt><code>-moz-inline-grid</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt> - <dd>XUL インライングリッド</dd> - <dt><code>-moz-grid-group</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt> - <dd>XUL グリッドグループ</dd> - <dt><code>-moz-grid-line</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt> - <dd>XUL グリッド線</dd> - <dt><code>-moz-stack</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt> - <dd>XUL スタック</dd> - <dt><code>-moz-inline-stack</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt> - <dd>XUL インラインスタック</dd> - <dt><code>-moz-deck</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt> - <dd>XUL デッキ</dd> - <dt><code>-moz-popup</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt> - <dd>XUL ポップアップ</dd> -</dl> - -<p>XUL 表示値はすべて、 <code style="white-space: nowrap;">-moz-box</code> および <code style="white-space: nowrap;">-moz-inline-box</code> を除き、 {{bug(1288572)}} で削除されました。詳しくは <a class="external" href="https://www.fxsitecompat.com/en-CA/docs/2018/most-of-non-standard-css-display-values-have-been-dropped/">this Firefox Site Compatibility post</a> をご覧ください。</p> - -<p> <code style="white-space: nowrap;">-moz-box</code> および <code style="white-space: nowrap;">-moz-inline-box</code> の値は、後に {{bug(879275)}} で削除される予定です。詳細は <a class="external" href="https://www.fxsitecompat.com/en-CA/docs/2018/display-moz-box-and-display-moz-inline-box-have-been-deprecated/">this Firefox Site Compatibility post</a> をご覧ください。</p> - -<h2 id="See_also" name="See_also">関連情報</h2> - -<ul> - <li>{{CSSxRef("display")}}</li> - <li>{{CSSxRef("<display-inside>")}}</li> - <li>{{CSSxRef("<display-outside>")}}</li> - <li>{{CSSxRef("<display-listitem>")}}</li> - <li>{{CSSxRef("<display-internal>")}}</li> - <li>{{CSSxRef("<display-box>")}}</li> - <li>{{CSSxRef("<display-legacy>")}}</li> -</ul> diff --git a/files/ja/mozilla/gecko/chrome/css/index.html b/files/ja/mozilla/gecko/chrome/css/index.html deleted file mode 100644 index 45808aee2a..0000000000 --- a/files/ja/mozilla/gecko/chrome/css/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: CSS -slug: Mozilla/Gecko/Chrome/CSS -tags: - - CSS - - Chrome - - Gecko - - Mozilla - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Gecko/Chrome/CSS ---- -<div>{{FirefoxSidebar}}</div> - -<p class="summary">This page lists CSS properties that are only available in Gecko Chrome code (and sometimes in other privileged circumstances, eg. UA stylesheets.)</p> - -<div class="note"> -<p><strong>Note</strong>: Most of the CSS properties exposed to the Web in general are also usable in Chrome stylesheets: see the <a href="/en-US/docs/Web/CSS">CSS documentation</a> for a list of these.</p> -</div> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/ja/mozilla/gecko/chrome/index.html b/files/ja/mozilla/gecko/chrome/index.html deleted file mode 100644 index af4f7182cf..0000000000 --- a/files/ja/mozilla/gecko/chrome/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Gecko Chrome -slug: Mozilla/Gecko/Chrome -tags: - - Chrome - - Gecko - - Mozilla - - NeedsTranslation - - Overview - - TopicStub -translation_of: Mozilla/Gecko/Chrome ---- -<div>{{FirefoxSidebar}}{{Draft}}</div> - -<p class="summary">This page contains information specific to Chrome code running in Gecko.</p> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/ja/mozilla/gecko/index.html b/files/ja/mozilla/gecko/index.html deleted file mode 100644 index 496a56a822..0000000000 --- a/files/ja/mozilla/gecko/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Gecko -slug: Mozilla/Gecko -tags: - - Gecko -translation_of: Mozilla/Gecko ---- -<p><img align="right" src="/@api/deki/files/777/=Netscape-gecko-logo.jpg"><strong>Gecko</strong> は、Mozilla プロジェクトによって開発されているレイアウトエンジンの名称です。元々 NGLayout という名前でした。</p> -<p>Gecko の機能は、<a href="/ja/docs/HTML" title="HTML">HTML</a> 、<a href="/ja/docs/CSS" title="CSS">CSS</a> 、<a href="/ja/docs/XUL" title="XUL">XUL</a> 、そして<a href="/ja/docs/JavaScript" title="JavaScript">JavaScript</a>、Web 上のコンテンツを読み込み、ユーザの画面上に描画もしくは印刷することです。XUL ベースのアプリケーションでは、Gecko はアプリケーションのユーザインターフェースの描画にも利用されています。</p> -<p>Gecko は、Firefox、Mozilla Suite、Camino などのいくつかのブラウザを含む、様々なアプリケーションで利用されています。(完全なリストは、<a class="external" href="http://en.wikipedia.org/wiki/Gecko_(layout_engine)#Web_browsers">Wikipedia の Gecko についての記事 (英語版)</a>を参照してください。) 同じバージョンの Gecko を利用している製品はまったく同じ標準をサポートしています。</p> -<p><small>Gecko の名称とロゴは Netscape Communications Corporation の商標です。許可を得て使用しています。</small></p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">ドキュメンテーション</h2> - <dl> - <dt> - <a href="/ja/docs/Gecko_FAQ" title="Gecko_FAQ">Gecko FAQ</a></dt> - <dd> - <small>Gecko についてのよくある質問と答。</small></dd> - <dt> - <a href="/ja/docs/Gecko_DOM_Reference" title="Gecko_DOM_Reference">Gecko DOM リファレンス</a></dt> - <dd> - DOM に関する説明。</dd> - <dt> - <a href="/ja/docs/Gecko-Specific_DOM_Events" title="Gecko/Gecko event reference">Gecko イベントリファレンス</a></dt> - <dd> - Gecko 及び Mozilla のアプリケーションで用いられるイベントの解説。<br> - <small>※Web 標準の DOM イベントに関しては <a href="/ja/docs/DOM/DOM_event_reference" title="DOM/DOM event reference">『DOM イベントリファレンス』</a> を参照して下さい。</small></dd> - <dt> - <a href="/ja/docs/Gecko/Versions" title="Gecko/Versions">Gecko versions and application versions</a></dt> - <dd> - Versions of Gecko and the applications they're used in.</dd> - <dt> - <a class="external" href="http://www.mozilla.org/newlayout/doc/layout-2006-12-14/master.xhtml">Mozilla のレイアウトエンジン</a></dt> - <dd> - <small>レイアウトに関するテクニカルトーク。</small></dd> - <dt> - <a href="/ja/docs/Embedding_Mozilla" title="Embedding_Mozilla">Mozilla の組み込み方</a></dt> - <dd> - <small>あなたのアプリケーションで Gecko を使う方法について。</small></dd> - <dt> - <a href="/ja/docs/Character_Sets_Supported_by_Gecko" title="Character Sets Supported by Gecko">Gecko によってサポートされている Character set の一覧</a></dt> - <dd> - A list of the character sets supported by Gecko.</dd> - <dt> - <a href="/en-US/docs/Gecko/HTML_parser_threading" title="en-US/docs/Gecko/HTML_parser_threading">HTML パーサーのスレッド処理</a></dt> - <dd> - HTML パーサ内でのマルチスレッド処理に関する解説。</dd> - <dt> - {{interwiki('wikimo', 'Gecko:Home_Page', 'Gecko Home Page on MozillaWiki')}}</dt> - <dd> - <small>アクティブな開発者のためのホームページ。ロードマップおよび、最新のリソースがあります。</small></dd> - </dl> - <p><span class="alllinks"><a href="/ja/docs/tag/Gecko" title="/ja/docs/tag/Gecko">すべて表示...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community">コミュニティ</h2> - <ul> - <li>Mozilla フォーラムを見る... {{ DiscussionList("dev-tech-layout", "mozilla.dev.tech.layout") }}</li> - </ul> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2> - <ul> - <li><a href="/ja/docs/Web_Standards" title="Web_Standards">Web 標準</a>, <a href="/ja/docs/XUL" title="XUL">XUL</a>, <a href="/ja/docs/Embedding_Mozilla" title="Embedding_Mozilla">Mozilla の組み込み方</a>, <a href="/ja/docs/Developer_Guide" title="Developing_Mozilla">Mozilla の開発</a></li> - </ul> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/gecko/versions/index.html b/files/ja/mozilla/gecko/versions/index.html deleted file mode 100644 index 598fd24443..0000000000 --- a/files/ja/mozilla/gecko/versions/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Gecko 及び対応するアプリケーションのバージョンナンバー -slug: Mozilla/Gecko/Versions -tags: - - Gecko -translation_of: Mozilla/Gecko/Versions ---- -<p>以下の表は、Gecko のバージョンと、そのバージョンが使用されているアプリケーションの対応を示すものです。Gecko 5 以降、Firefox と Thunderbird のバージョンナンバーは Gecko のそれと同じものになっています。</p> -<table class="standard-table"> - <thead> - <tr> - <th>Gecko のバージョン</th> - <th>対応するアプリケーションのバージョン</th> - </tr> - </thead> - <tbody> - <tr> - <td>Gecko 24</td> - <td><a href="/ja/docs/Mozilla/Firefox/Releases/24">Firefox 24</a>、<a href="/ja/docs/Mozilla/Thunderbird/Releases/24">Thunderbird 24</a>、<a href="http://www.seamonkey-project.org/releases/seamonkey2.21/changes">SeaMonkey 2.21</a></td> - </tr> - <tr> - <td>Gecko 23</td> - <td><a href="/ja/docs/Mozilla/Firefox/Releases/23">Firefox 23</a>、<a href="http://www.seamonkey-project.org/releases/seamonkey2.20/changes">SeaMonkey 2.20</a></td> - </tr> - <tr> - <td>Gecko 22</td> - <td><a href="/ja/docs/Mozilla/Firefox/Releases/22">Firefox 22</a>、<a href="http://www.seamonkey-project.org/releases/seamonkey2.19/changes">SeaMonkey 2.19</a></td> - </tr> - <tr> - <td>Gecko 21</td> - <td><a href="/ja/docs/Firefox_21_for_developers">Firefox 21</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.18', 'SeaMonkey 2.18') }}</td> - </tr> - <tr> - <td>Gecko 20</td> - <td><a href="/ja/docs/Firefox_20_for_developers">Firefox 20</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.17', 'SeaMonkey 2.17') }}</td> - </tr> - <tr> - <td>Gecko 19</td> - <td><a href="/ja/docs/Firefox_19_for_developers">Firefox 19</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.16', 'SeaMonkey 2.16') }}</td> - </tr> - <tr> - <td>Gecko 18</td> - <td><a href="/ja/docs/Firefox_18_for_developers" title="/ja/docs/Firefox_18_for_developers">Firefox 18</a>、<a href="/ja/docs/Mozilla/Firefox_OS" title="/ja/docs/Mozilla/Firefox_OS">Firefox OS 1.0</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.15', 'SeaMonkey 2.15') }}</td> - </tr> - <tr> - <td>Gecko 17</td> - <td><a href="/ja/docs/Firefox_17_for_developers" title="/ja/docs/Firefox_17_for_developers">Firefox 17</a>、<a href="https://wiki.mozilla.org/Thunderbird/Support/TB17UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB17UserChanges">Thunderbird 17</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.14', 'SeaMonkey 2.14') }}</td> - </tr> - <tr> - <td>Gecko 16</td> - <td><a href="/ja/docs/Firefox_16_for_developers" title="/ja/docs/Firefox_16_for_developers">Firefox 16</a>、<a href="https://wiki.mozilla.org/Thunderbird/Support/TB16UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB16UserChanges">Thunderbird 16</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.13', 'SeaMonkey 2.13') }}</td> - </tr> - <tr> - <td>Gecko 15</td> - <td><a href="/ja/docs/Firefox_15_for_developers" title="Firefox_15_for_developers">Firefox 15</a>、 <a href="https://wiki.mozilla.org/Thunderbird/Support/TB15UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB15UserChanges">Thunderbird 15</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.12', 'SeaMonkey 2.12') }}</td> - </tr> - <tr> - <td>Gecko 14</td> - <td><a href="/ja/docs/Firefox_14_for_developers" title="Firefox_14_for_developers">Firefox 14</a>、<a href="https://wiki.mozilla.org/Thunderbird/Support/TB14UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB14UserChanges">Thunderbird 14</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.11', 'SeaMonkey 2.11') }}</td> - </tr> - <tr> - <td>Gecko 13</td> - <td><a href="/ja/docs/Firefox_13_for_developers" title="ja/docs/Firefox_13_for_developers">Firefox 13</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB13UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB13UserChanges">Thunderbird 13</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.10', 'SeaMonkey 2.10') }}</td> - </tr> - <tr> - <td>Gecko 12</td> - <td><a href="/ja/docs/Firefox_12_for_developers" title="ja/docs/Firefox_12_for_developers">Firefox 12</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB12UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB12UserChanges">Thunderbird 12</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.9', 'SeaMonkey 2.9') }}</td> - </tr> - <tr> - <td>Gecko 11</td> - <td><a href="/ja/docs/Firefox_11_for_developers" title="ja/docs/Firefox_11_for_developers">Firefox 11</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB11UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB11UserChanges">Thunderbird 11</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.8', 'SeaMonkey 2.8') }}</td> - </tr> - <tr> - <td>Gecko 10</td> - <td><a class="internal" href="/ja/docs/Firefox_10_for_developers" title="ja/docs/Firefox 10 for developers">Firefox 10</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB10UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB10UserChanges">Thunderbird 10</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.7', 'SeaMonkey 2.7') }}</td> - </tr> - <tr> - <td>Gecko 9</td> - <td><a class="internal" href="/ja/docs/Firefox_9_for_developers" title="ja/docs/Firefox 9 for developers">Firefox 9</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB9UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB9UserChanges">Thunderbird 9</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.6', 'SeaMonkey 2.6') }}</td> - </tr> - <tr> - <td>Gecko 8</td> - <td><a class="internal" href="/ja/docs/Firefox_8_for_developers" title="ja/docs/Firefox 8 for developers">Firefox 8</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB8UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB8UserChanges">Thunderbird 8</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.5', 'SeaMonkey 2.5') }}</td> - </tr> - <tr> - <td>Gecko 7</td> - <td><a class="internal" href="/ja/docs/Firefox_7_for_developers" title="ja/docs/Firefox 7 for developers">Firefox 7</a>、<a href="/ja/docs/Thunderbird_7_for_developers" title="ja/docs/Thunderbird 7 for developers">Thunderbird 7</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.4', 'SeaMonkey 2.4') }}</td> - </tr> - <tr> - <td>Gecko 6</td> - <td><a class="internal" href="/ja/docs/Firefox_6_for_developers" title="ja/docs/Firefox 6 for developers">Firefox 6</a>、<a href="/ja/docs/Thunderbird_6_for_developers" title="ja/docs/Thunderbird 6 for developers">Thunderbird 6</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.3', 'SeaMonkey 2.3') }}</td> - </tr> - <tr> - <td>Gecko 5</td> - <td><a href="/ja/docs/Firefox_5_for_developers" title="ja/docs/Firefox 5 for developers">Firefox 5</a>、<a href="/ja/docs/Thunderbird_5_for_developers" title="ja/docs/Thunderbird 5 for developers">Thunderbird 5</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.2', 'SeaMonkey 2.2') }}</td> - </tr> - <tr> - <td>Gecko 2</td> - <td><a class="internal" href="/ja/docs/Firefox_4_for_developers" title="ja/docs/Firefox 4 for developers">Firefox 4</a>、<span class="st">Thunderbird 3.3、 </span>{{ interwiki('wikimo', 'SeaMonkey/Features/2.1', 'SeaMonkey 2.1') }}</td> - </tr> - <tr> - <td>Gecko 1.9.2</td> - <td><a class="internal" href="/ja/docs/Firefox_3.6_for_developers" title="ja/docs/Firefox 3.6 for developers">Firefox 3.6</a>、Thunderbird 3.1</td> - </tr> - <tr> - <td>Gecko 1.9.1</td> - <td><a class="internal" href="/ja/docs/Firefox_3.5_for_developers" title="ja/docs/Firefox 3.5 for developers">Firefox 3.5</a>、<a class="internal" href="/ja/docs/Thunderbird_3_for_developers" title="ja/docs/Thunderbird 3 for developers">Thunderbird 3</a>、{{ interwiki('wikimo', 'SeaMonkey:New_for_2.0', 'SeaMonkey 2.0') }}</td> - </tr> - <tr> - <td>Gecko 1.9</td> - <td><a href="/ja/docs/Firefox_3_for_developers" title="ja/docs/Firefox_3_for_developers">Firefox 3</a></td> - </tr> - <tr> - <td>Gecko 1.8.1</td> - <td><a href="/ja/docs/Firefox_2_for_developers" title="ja/docs/Firefox_2_for_developers">Firefox 2</a>、Thunderbird 2、SeaMonkey 1.1</td> - </tr> - <tr> - <td>Gecko 1.8</td> - <td><a href="/ja/docs/Firefox_1.5_for_developers" title="ja/docs/Firefox_1.5_for_developers">Firefox 1.5</a>、Thunderbird 1.5、SeaMonkey 1.0</td> - </tr> - <tr> - <td>Gecko 1.7</td> - <td>Firefox 1.0、Thunderbird 1.0、Nvu 1.0、Mozilla Suite 1.7</td> - </tr> - <tr> - <td colspan="2"><strong>これより古いバージョンの Gecko のバージョンナンバーは Mozilla Suite のそれと一致します。</strong></td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/ja/mozilla/gecko_almost_standards_mode/index.html b/files/ja/mozilla/gecko_almost_standards_mode/index.html deleted file mode 100644 index 33c774dd77..0000000000 --- a/files/ja/mozilla/gecko_almost_standards_mode/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Gecko's "Almost Standards" Mode -slug: Mozilla/Gecko_Almost_Standards_Mode -tags: - - Gecko - - Web Development - - Web Standards -translation_of: Mozilla/Gecko_Almost_Standards_Mode ---- -<p>Mozilla は、バージョン 1.0.1 と 1.1 Beta において、「ほぼ標準」モード(準標準モード)と呼ばれる新しいレンダリングモードを実装しました。これは、以前からある「<a href="/ja/docs/Quirks_Mode_and_Standards_Mode">互換</a>」モードと「標準」モードに追加されたものです。</p> - - -<p>「ほぼ標準」モードは、ひとつの挙動を除けば、他は「標準」モードとまったく同じです。その例外とは、テーブルセル内の画像のレイアウトが Gecko の「互換」モードと同様に扱われ、Internet Explorer など他のブラウザとほとんど同じ表示になるという点です。これは、Mozilla 1.0.1 以降のレンダリングエンジンを搭載した Gecko ベースのブラウザで、「互換」あるいは「ほぼ標準」モードでページを表示した場合、テーブルセル内に配置されたスライス画像のレイアウトが崩れる可能性が少なくなるということです。(「標準」モードでそうしたレイアウトがどのように扱われるかについては『<a href="/ja/docs/Images,_Tables,_and_Mysterious_Gaps">画像、テーブル、不可解なずれ</a>』で詳しく解説されています)</p> - - -<p>この違いを除けば、「ほぼ標準」と「標準」モードは、レイアウトやその他の挙動についてはまったく同じです。</p> - - -<h2 id="Triggering_.22Almost_Standards.22" name="Triggering_.22Almost_Standards.22">「ほぼ標準」モードのトリガー</h2> -<p>「ほぼ標準」モードのトリガーとなる文書型宣言 (DOCTYPE) は、以下のいずれかです。</p> -<ul> - <li>公開識別子 "<code>-//W3C//DTD XHTML 1.0 Transitional//EN</code>"</li> - <li>公開識別子 "<code>-//W3C//DTD XHTML 1.0 Frameset//EN</code>"</li> - <li>公開識別子 "<code>-//W3C//DTD HTML 4.01 Transitional//EN</code>" とシステム識別子の組み合わせ</li> - <li>公開識別子 "<code>-//W3C//DTD HTML 4.01 Frameset//EN</code>" とシステム識別子の組み合わせ</li> - <li>IBM のシステム DOCTYPE "<code><span class="nowiki">http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd</span></code>"</li> -</ul> -<p>完全な DOCTYPE には公開識別子とシステム識別子が含まれています。DOCTYPE の議論では、多くの人々が、DOCTYPE は「URI 付き」か「URI なし」であると主張しています。URI はシステム識別子です。例えば、以下の DOCTYPE について考えた場合、</p> -<pre class="brush:html"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" - "http://www.w3.org/TR/html4/loose.dtd"></pre> -<p>それぞれの部分はこのように区別できます。</p> -<ul> - <li>公開識別子: "<code>-//W3C//DTD HTML 4.01 Transitional//EN</code>"</li> - <li>システム識別子: "<code>http://www.w3.org/TR/html4/loose.dtd</code>"</li> -</ul> -<p>そのため、HTML 4.01 Transitional あるいは Frameset の DOCTYPE は、URI (システム識別子) が付いている場合、「ほぼ標準」モードのトリガーとなります。また、XHTML 1.0 Transitional あるいは Frameset の DOCTYPE は、URI の有無にかかわらずトリガーとなります。IBM 社外の Web 開発者は、同様に「ほぼ標準」モードのトリガーとなる特別な DOCTYPE について気にする必要はありません。</p> - - -<h2 id="Recommendations" name="Recommendations">アドバイス</h2> -<ul> - <li>HTML 4.01 または XHTML 1.0 を用いた正しいマークアップへの移行を検討中で、テーブル内に画像を配置するデザイン概念を持ち続けている開発者は、「ほぼ標準」モードのトリガーとなる DOCTYPE を利用してください。</li> -</ul> - -<h2 id="Also_On_MDC" name="Also_On_MDC">MDC にある他の文書</h2> -<ul> - <li><a href="/ja/docs/Images,_Tables,_and_Mysterious_Gaps">画像、テーブル、不可解なずれ</a></li> - <li><a href="/ja/docs/Mozilla's_DOCTYPE_sniffing">Mozilla 製品の DOCTYPE の判別</a></li> - <li><a href="/ja/docs/Quirks_Mode_and_Standards_Mode">Mozilla 製品の後方互換モード (Quirks Mode)</a></li> -</ul> -<div class="originaldocinfo"> - <h2 id="Original_Document_Information" name="Original_Document_Information">原文書の情報</h2> - <ul> - <li>著者: Eric A. Meyer, Netscape Communications</li> - <li>最終更新日: 2001 年 11 月 08 日 (公開)</li> - <li>著作権: Copyright © 2001-2003 Netscape. All rights reserved.</li> - <li>注記: この転載記事は元々 Netscape DevEdge で公開されていました。</li> - </ul> -</div> diff --git a/files/ja/mozilla/ime_handling_guide/index.html b/files/ja/mozilla/ime_handling_guide/index.html deleted file mode 100644 index 977fcfafca..0000000000 --- a/files/ja/mozilla/ime_handling_guide/index.html +++ /dev/null @@ -1,667 +0,0 @@ ---- -title: IME handling guide -slug: Mozilla/IME_handling_guide -tags: - - 入力メソッド -translation_of: Mozilla/IME_handling_guide ---- -<p>このドキュメントでは、GeckoがIMEをどのように扱うかを説明します。</p> - -<h2 id="はじめに">はじめに</h2> - -<p>IMEはInput Method Editorの略です。 これはWindowsの専門用語ですが、最近では他のプラットフォームでも使用されています。</p> - -<p>IMEは、ユーザーのテキスト入力を補助するアプリケーションです。 プラットフォームに応じ、フォーカスされているアプリケーションへのネイティブキーイベント前後に処理を行い、コンポジション文字列(別名:編集前文字列)を作成し、ユーザーが入力しようとしているもののリストを提案し、リストから選択された項目として、変換を行わないコンポジション文字列をコミットします。 IMEは、中国語、日本語、韓国語、および台湾のユーザーの文字を入力するために使用されています。 これらの言語では、使用される文字の数が数千を超えているため、IMEを介さずにキーボードから文字を直接入力することはできません。 また、最近のモバイルデバイスでは、ラテン語のオートコンプリートのような入力にもIMEは使用されます。 さらに、IMEは、いくつかのプラットフォーム上で手書きシステムや音声入力システムに使用されることもあります。</p> - - - -<p>IMEがフォーカスされた要素で利用できる場合は、その状態を"enabled"と呼びます。 IMEが利用可能ではない(例えば、ユーザがIMEを有効にできない)場合の状態を"disabled"と呼びます。</p> - - - -<p>IMEがenabledになっているがユーザーが直接入力モードを使用する場合(例えばラテン文字を入力するために)、それを"IME is closed"と呼びます。 それ以外の場合は、"IME is open"と呼びます。 (ちなみに:"open"は"active"または"turned on"とも呼ばれます。 "close"は"inactive"または"truned off"とも呼ばれます)</p> - -<p>このドキュメントはGeckoのテキスト入力に関するバグを修正しようとしているときに役に立つでしょう。</p> - -<h2 id="Composition_string_and_clauses">Composition string and clauses</h2> - -<p>Typical Japanese IME can input two or more words into a composition string. When a user converts from Hiragana characters to Chinese characters the composition string, Japanese IME separates the composition string into multiple clauses. For example, if a user types "watasinonamaehanakanodesu", it's converted to Hiragana characters, "わたしのなまえはなかのです", automatically (In the following screenshots, the composition string has a wavy underline and the only one clause is called "raw input clause").</p> - -<p><img alt="Screenshot of raw composition string which is inputting Roman character mode of MS-IME (Japanese)" src="https://mdn.mozillademos.org/files/8703/inputting_composition_string.png" style="height: 33px; width: 540px;"></p> - -<p><img alt="Screenshot of raw composition string whose all characters are Hiragana character (MS-IME, Japanese)" src="https://mdn.mozillademos.org/files/8705/raw_composition_string.png" style="height: 33px; width: 540px;"></p> - -<p>When a user presses <code>Convert</code> key, Japanese IME separates the composition string as "わたしの" (my), "なまえは" (name is) and "なかのです" (Nakano). Then, converts each clause with Chinese characters: "私の", "名前は" and "中野です" (In the following screenshot each clause is underlined and not connected adjacently. These clauses are called "converted clause").</p> - -<p><img alt="Screenshot of converted composition string (MS-IME, Japanese)" src="https://mdn.mozillademos.org/files/8707/converted_composition_string.png" style="height: 33px; width: 540px;"></p> - -<p>If one or more clauses were not converted as expected, the user can choose one of the clauses with <code>Arrow</code> keys and look for the expected result form the list in the drop down menu (In the following screenshot, the clause with the thicker underline is called "selected clause").</p> - -<p><img alt="Screenshot of candidate window of MS-IME (Japanese) which converts the selected clause" src="https://mdn.mozillademos.org/files/8709/candidatewindow.png" style="height: 261px; width: 540px;"></p> - -<p>Basically, composition string and each clause style is rendered by Gecko. And the drop down menu is created by IME.</p> - -<p>Each clause is represented with selection in the editor. From chrome script, you can check it with <code>nsISelectionController</code>. In native code, you can access it with either <code>nsISelectionController</code> or <code>mozilla::SelectionType</code> (the latter is recommended because of type safer). And editor sets these IME selections from <code>mozilla::TextRangeType</code> which are sent by <code>mozilla::WidgetCompositionEvent</code> as <code>mozilla::TextRangeArray</code>. Following table explains the mapping between them.</p> - -<table class="standard-table"> - <caption>Selection types of each clause of composition string or caret</caption> - <thead> - <tr> - <th scope="row"></th> - <th scope="col"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/base/nsISelectionController.idl">nsISelectionController</a></code></th> - <th scope="col"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/base/nsISelectionController.idl">mozilla::SelectionType</a></code></th> - <th scope="col"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/TextRange.h">mozilla::TextRangeType</a></code></th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row">Caret</th> - <td><code>SELECTION_NORMAL</code></td> - <td><code>eNormal</code></td> - <td><code>eCaret</code></td> - </tr> - <tr> - <th scope="row">Raw text typed by the user</th> - <td><code>SELECTION_IME_RAW_INPUT</code></td> - <td><code>eIMERawClause</code></td> - <td><code>eRawClause</code></td> - </tr> - <tr> - <th scope="row">Selected clause of raw text typed by the user</th> - <td><code>SELECTION_IME_SELECTEDRAWTEXT</code></td> - <td><code>eIMESelectedRawClause</code></td> - <td><code>eSelectedRawClause</code></td> - </tr> - <tr> - <th scope="row">Converted clause by IME</th> - <td><code>SELECTION_IME_CONVERTEDTEXT</code></td> - <td><code>eIMEConvertedClause</code></td> - <td><code>eConvertedClause</code></td> - </tr> - <tr> - <th scope="row">Selected clause by the user or IME and also converted by IME</th> - <td><code>SELECTION_IME_SELECTEDCONVERTEDTEXT</code></td> - <td><code>eIMESelectedClause</code></td> - <td><code>eSelectedClause</code></td> - </tr> - </tbody> -</table> - -<p>Note that typically, "Selected clause of raw text typed by the user" isn't used because when composition string is already separated to multiple clauses, that means that the composition string has already been converted by IME at least once.</p> - -<h2 id="Modules_handling_IME_composition">Modules handling IME composition</h2> - -<h3 id="widget*"><a href="http://mxr.mozilla.org/mozilla-central/source/widget/"><code>widget/*</code></a></h3> - -<p>Each widget handles native IME events and dispatches <code>WidgetCompositionEvent</code> with <code>mozilla::widget::TextEventDispatcher</code> to represent the behavior of IME in the focused editor.</p> - -<p>This is the only module that depends on the users platform. See also <a href="#Native_IME_handlers">Native IME handlers section</a> for the detail of each platform's implementation.</p> - -<div class="note"> -<p>Android widget still does not use <code>TextEventDispatcher</code> to dispatch <code>WidgetCompositionEvent</code>s, see {{Bug(1137567)}}.</p> -</div> - -<h3 id="mozillawidgetTextEventDispatcher"><a href="https://dxr.mozilla.org/mozilla-central/source/widget/TextEventDispatcher.cpp">mozilla::widget::TextEventDispatcher</a></h3> - -<p>This class is used by native IME handler(s) on each platform. This capsules the logic to dispatch <code>WidgetCompositionEvent</code> and <code>WidgetKeyboardEvent</code> for making the behavior on each platform exactly same. For example, if <code>WidgetKeyboardEvent</code> should be dispatched when there is a composition is managed by this class in XP level. First of use, native IME handlers get the rights to use <code>TextEventDispatcher</code> with a call of <code>BeginNativeInputTransaction()</code>. Then, <code>StartComposition()</code>, <code>SetPendingComposition()</code>, <code>FlushPendingComposition()</code>, <code>CommitComposition()</code>, etc. are available if <code>BeginNativeInputTransaction()</code> return true. These methods automatically manage composition state and dispatch <code>WidgetCompositionEvent</code> properly.</p> - -<p>This is also used by <code>mozilla::TextInputProcessor</code> which can emulates (or implements) IME with chrome script. So, native IME handlers using this class means that the dispatching part is also tested by automated tests.</p> - -<h3 id="mozillaWidgetCompositionEvent"><a href="https://dxr.mozilla.org/mozilla-central/source/widget/TextEvents.h">mozilla::WidgetCompositionEvent</a></h3> - -<p>Internally, <code>WidgetCompositionEvent</code> represents native IME behavior. Its message is one of following values:</p> - -<h4 id="eCompositionStart"><code>eCompositionStart</code></h4> - -<p>This is dispatched at starting a composition. This represents a DOM <code>compositionstart</code> event. The <code>mData</code> value is a selected string at dispatching the DOM event and it's automatically set by <code>TextComposition</code>.</p> - -<h4 id="eCompositionUpdate"><code>eCompositionUpdate</code></h4> - -<p><em>This is dispatched by <code>TextComposition</code></em> when an <code>eCompoitionChange</code> will change the composition string. This represents a DOM <code>compositionupdate</code> event.</p> - -<h4 id="eCompositionEnd"><code>eCompositionEnd</code></h4> - -<p><em>This is dispatched by <code>TextComposition</code></em> when an <code>eCompositionCommitAsIs</code> or <code>eComposiitonCommit</code> event is dispatched. This represents a DOM <code>compositionend</code> event.</p> - -<h4 id="eCompositionChange"><code>eCompositionChange</code></h4> - -<p>This is used internally only. This is dispatched at modifying a composition string, committing a composition, changing caret position and/or changing ranges of clauses. This represents a DOM <code>text</code> event which is not in any standards. <code>mRanges</code> should not be empty only with this message.</p> - -<h4 id="eCompositionCommitAsIs"><code>eCompositionCommitAsIs</code></h4> - -<p>This is used internally only. This is dispatched when a composition is committed with the string. The <code>mData</code> value should be always be an empty string. This causes a DOM <code>text</code> event without clause information and a DOM <code>compositionend</code> event.</p> - -<h4 id="eCompositionCommit"><code>eCompositionCommit</code></h4> - -<p>This is used internally only. This is dispatched when a composition is committed with specific string. The <code>mData</code> value is the commit string. This causes a DOM <code>text</code> event without clause information and a DOM <code>compositionend</code> event.</p> - -<table class="standard-table"> - <caption>Table of event messages</caption> - <thead> - <tr> - <th scope="row"></th> - <th scope="col">meaning of <code>mData</code></th> - <th scope="col">who sets <code>mData</code>?</th> - <th scope="col"><code>mRanges</code></th> - <th scope="col">representing DOM event</th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row"><code>eCompositionStart</code></th> - <td>selected string before starting composition</td> - <td><code>TextComposition</code></td> - <td><code>nullptr</code></td> - <td><code>compositionstart</code></td> - </tr> - <tr> - <th scope="row"><code>eCompositionUpdate</code></th> - <td>new composition string</td> - <td><code>TextComposition</code></td> - <td><code>nullptr</code></td> - <td><code>compositionupdate</code></td> - </tr> - <tr> - <th scope="row"><code>eCompositionEnd</code></th> - <td>commit string</td> - <td><code>TextComposition</code></td> - <td><code>nullptr</code></td> - <td><code>compositionend</code></td> - </tr> - <tr> - <th scope="row"><code>eCompositionChange</code></th> - <td>new composition string</td> - <td>widget (or <code>TextComposition</code>)</td> - <td>must not be <code>nullptr</code></td> - <td><code>text</code></td> - </tr> - <tr> - <th scope="row"><code>eCompositionCommitAsIs</code></th> - <td><em>N/A</em> (must be empty)</td> - <td><em>nobody</em></td> - <td><code>nullptr</code></td> - <td><em>None</em></td> - </tr> - <tr> - <th scope="row"><code>eCompositionCommit</code></th> - <td>commit string</td> - <td>widget (or <code>TextComposition</code>)</td> - <td><code>nullptr</code></td> - <td><em>None</em></td> - </tr> - </tbody> -</table> - -<h3 id="PresShell"><a href="http://dxr.mozilla.org/mozilla-central/source/layout/base/nsPresShell.cpp"><code>PresShell</code></a></h3> - -<p><code>PresShell</code> receives the widget events and decides an event target from focused document and element. Then, it sends the events and the event target to <code>IMEStateManager</code>.</p> - -<h3 id="mozillaIMEStateManager"><code><a href="http://dxr.mozilla.org/mozilla-central/source/dom/events/IMEStateManager.cpp">mozilla::IMEStateManager</a></code></h3> - -<p><code>IMEStateManager</code> looks for a <code>TextComposition</code> instance whose native IME context is same as the widget' which dispatches the widget event. If there is no proper <code>TextComposition</code> instance, it creates the instance. And it sends the event to the <code>TextComposition</code> instance.</p> - -<p>Note that all instances of <code>TextComposition</code> are managed by <code>IMEStateManager</code>. When an instance is created, it's registered to the list. When composition completely ends, it's unregistered from the list (and released automatically).</p> - -<h3 id="mozillaTextComposition"><a href="http://dxr.mozilla.org/mozilla-central/source/dom/events/TextComposition.cpp"><code>mozilla::TextComposition</code></a></h3> - -<p><code>TextComposition</code> manages a composition and dispatches DOM <code>compositionupdate</code> events.</p> - -<p>When this receives an <code>eCompositionChange</code>, <code>eCompositionCommit</code> or <code>eCompositionCommitAsIs</code> event, it dispatches the event to the stored node which was the event target of <code>eCompositionStart</code> event. Therefore, this class guarantees that all composition events for a composition are fired on same element.</p> - -<p>When this receives <code>eCompositionChange</code> or <code>eCompositionCommit</code>, this checks if new composition string (or committing string) is different from the last data stored by the <code>TextComposition</code>. If the composition event is changing the composition string, the <code>TextComposition</code> instance dispatches <code>WidgetCompositionEvent</code> with <code>eCompositionUpdate</code> into the DOM tree directly and modifies the last data. The <code>eCompositionUpdate</code> event will cause a DOM <code>compositionupdate</code> event.</p> - -<p>When this receives <code>eCompositionCommitAsIs</code> or <code>eCompositionCommit</code>, this dispatches an eCompositionEnd event which will cause a DOM <code>compositionend</code> event after dispatching <code>eCompositionUpdate</code> event and/or <code>eCompositionChange</code> event if necessary.</p> - -<p>One of the other important jobs of this is, when a focused editor handles a dispatched <code>eCompositionChange</code> event, this modifies the stored composition string and its clause information. The editor refers the stored information for creating or modifying a text node representing a composition string.</p> - -<p>And before dispatching <code>eComposition*</code> events, this class removes ASCII control characters from dispatching composition event's data in the default settings. Although, this can be disabled with <code>"dom.compositionevent.allow_control_characters"</code> pref.</p> - -<p>Finally, this class guarantees that requesting to commit or cancel current composition to IME is perefored synchronously. See <a href="#Forcibly_committing_composition">Forcibly committing composition section</a> for the detail.</p> - -<h3 id="editorlibeditor"><a href="http://dxr.mozilla.org/mozilla-central/source/editor/"><code>editor/libeditor</code></a></h3> - -<p><a href="http://dxr.mozilla.org/mozilla-central/source/editor/libeditor/EditorEventListener.cpp"><code>mozilla::EditorEventListener</code></a> listens for trusted DOM <code>compositionstart</code>, <code>text</code> and <code>compositionend</code> events and notifies <a href="http://dxr.mozilla.org/mozilla-central/source/editor/libeditor/EditorBase.cpp"><code>mozilla::EditorBase</code></a> and <a href="http://dxr.mozilla.org/mozilla-central/source/editor/libeditor/TextEditor.cpp"><code>mozilla::TextEditor</code></a> of the events.</p> - -<p>When <code>EditorBase</code> receives an <code>eCompositionStart</code> (DOM <code>"compositionstart"</code>) event, it looks for a proper <code>TextComposition</code> instance and stores it.</p> - -<p>When <code>TextEditor</code> receives an <code>eCompositionChange</code> (DOM <code>"text"</code>) event, it creates or modifies a text node which includes the composition string and <a href="https://dxr.mozilla.org/mozilla-central/source/editor/libeditor/CompositionTransaction.cpp">mozilla::CompositionTransaction</a> (it was called <code>IMETextTxn</code>) sets IME selections for representing the clauses of the composition string.</p> - -<p>When <code>EditorBase</code> receives an <code>eCompositionEnd</code> (DOM <code>"compositionend"</code>) event, it releases the stored <code>TextComposition</code> instance.</p> - -<h3 id="nsTextFrame"><a href="http://dxr.mozilla.org/mozilla-central/source/layout/generic/nsTextFrame.cpp"><code>nsTextFrame</code></a></h3> - -<p><code>nsTextFrame</code> paints IME selections.</p> - -<h3 id="mozillaIMEContentObserver"><a href="http://dxr.mozilla.org/mozilla-central/source/dom/events/IMEContentObserver.cpp"><code>mozilla::IMEContentObserver</code></a></h3> - -<p><code>IMEContentObserver</code> observes various changes of a focused editor. When an editor or a windowless plugin gets focus, an instance is created, starts to observe and notifies <code>widget</code> of IME getting focus. When the editor or windowless plugin loses focus, it notifies <code>widget</code> of IME losing focus, stops observing everything and is released.</p> - -<p>This class observes selection changes (caret position changes), text changes of a focused editor and layout changes (by reflow or scroll) of everything in the document. It depends on the result of <code>nsIWidget::GetIMEUpdatePreference()</code> what is observed.</p> - -<p>When this notifies something of widget and/or IME, it needs to be safe to run script because notifying something may cause dispatching one or more DOM events and/or new reflow. Therefore, IMEContentObserver only stores which notification should be sent to widget and/or IME. Then, <code>mozilla::IMEContentObserver::IMENotificationSender</code> tries to send the pending notifications when it might become safe to do that. Currently, it's tried:</p> - -<ul> - <li>after a native event is dispatched from <code>PresShell::HandleEventInternal()</code></li> - <li>at changing focus from a windowless plugin</li> - <li>when new focused editor receives DOM <code>"focus"</code> event</li> -</ul> - -<div class="note"> -<p>The 3rd timing may not be safe actually, but it causes a lot of oranges of automated tests.</p> -</div> - -<p>See also <a href="#Notifications_to_IME">Notifications to IME section</a> for the detail of sending notifications.</p> - -<p>Currently, <code>WidgetQueryContentEvent</code> is handled via <code>IMEContentObserver</code> because if it has a cache of selection, it can set reply of <code>eQuerySelectedText</code> event only with the cache. That is much faster than using <code>ContentEventHandler</code>.</p> - -<h2 id="e10s_support">e10s support</h2> - -<p>Even when a remote process has focus, native IME handler in chrome process does its job. So, there is process boundary between native IME handler and focused editor. Unfortunately, it's not allowed to use syncronous communication from chrome process to a remote process. This means that chrome process (and also native IME and our native IME handler) cannot query the focused editor contents directly. For fixing this issue, we have <code>ContentCache</code> classes around process boundary.</p> - -<h3 id="mozillaContentCache"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/ContentCache.cpp">mozilla::ContentCache</a></code></h3> - -<p>This is a base class of <code>ContentCacheInChild</code> and <code>ContentCacheInParent</code> and IPC-aware. This has common members of them including all cache data:</p> - -<dl> - <dt><code>mText</code></dt> - <dd>Whole text in focused editor. This may be too big but IME may request all text in the editor.</dd> - <dd>If we can separate editor contents per paragraph, moving selection between paragraphs generates pseudo focus move, we can reduce this size and runtime cost of <code>ContentEventHandler</code>. However, we've not had a plan to do that yet. Note that Microsoft Word uses this hack.</dd> - <dt><code>mCompositionStart</code></dt> - <dd>Offset of composition string in <code>mText</code>. When there is no composition, this is <code>UINT32_MAX</code>.</dd> - <dt><code>mSelection::mAnchor</code>, <code>mSelection::mFocus</code></dt> - <dd>Offset of selection anchor and focus in <code>mText</code>.</dd> - <dt><code>mSelection::mWritingMode</code></dt> - <dd>Writing mode at selection start.</dd> - <dt><code>mSelection::mAnchorCharRect</code>, <code>mSelection::mFocusCharRect</code></dt> - <dd>Next character rect of <code>mSelection::mAnchor</code> and <code>mSelection::mFocus</code>. If correspoinding offset is end of the editor contents, its rect should be caret rect.</dd> - <dd>These rects shouldn't be empty rect.</dd> - <dt><code>mSelection::mRect</code></dt> - <dd>Unifiied character rect in selection range. When the selection is collapsed, this should be caret rect.</dd> - <dt><code>mFirstRect</code></dt> - <dd>First character rect of <code>mText</code>. When <code>mText</code> is empty string, this should be caret rect.</dd> - <dt><code>mCaret::mOffset</code></dt> - <dd>Always same as selection start offset even when selection isn't collappsed.</dd> - <dt><code>mCaret::mRect</code></dt> - <dd>Caret rect at <code>mCaret::mOffset</code>. If caret isn't actually exists, it's computed with a character rect at the offset.</dd> - <dt><code>mTextRectArray::mStart</code></dt> - <dd>If there is composition, <code>mStart</code> is same as <code>mCompositionStart</code>. Otherwise, UINT32_MAX.</dd> - <dt><code>mTextRectArray::mRects</code></dt> - <dd>Each character rects of composition string.</dd> - <dt><code>mEditorRect</code></dt> - <dd>The rect of editor element.</dd> -</dl> - -<h3 id="mozillaContentCacheInChild"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/ContentCache.cpp">mozilla::ContentCacheInChild</a></code></h3> - -<p>This exists only in remote processes. This is created as a member of <code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/PuppetWidget.cpp">PuppetWidget</a></code>. When <code>PuppetWidget</code> receives notifications to IME from <code>IMEContentObserver</code> in the remote process, it makes this class modify its cached content. Then, this class do that with <code>WidgetQueryContentEvent</code>s. Finally, <code>PuppetWidget</code> sends the notification and <code>ContentCacheInParent</code> instance as <code>ContentCache</code> to its parent process.</p> - -<h3 id="mozillaContentCacheInParent"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/ContentCache.cpp">mozilla::ContentCacheInParent</a></code></h3> - -<p>This exists as a member of <code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/ipc/TabParent.cpp">TabParent</a></code>. When TabParent receives notification from corresponding remote process, it assigns <code>ContentCacheInParent</code> new <code>ContentCache</code> and post the notification to <code>ContentCacheInParent</code>. If all sent <code>WidgetCompositionEvent</code>s and <code>WidgetSelectionEvent</code>s are already handled in the remote process, <code>ContentCacheInParent</code> sending the notifications to widget.</p> - -<p>And also this handles <code>WidgetQueryContentEvent</code>s with its cache. Supported event messages of them are:</p> - -<ul> - <li><code>eQuerySelectedText</code> (only with <code>SelectionType::eNormal</code>)</li> - <li><code>eQueryTextContent</code></li> - <li><code>eQueryTextRect</code></li> - <li><code>eQueryCaretRect</code></li> - <li><code>eQueryEditorRect</code></li> -</ul> - -<p>Additionally, this does not support query content events with XP line breakers but this must not be any problem since native IME handlers query contents with native line breakers.</p> - -<p><code>ContentCacheInParent</code> also manages sent <code>WidgetCompositionEvent</code>s and <code>WidgetSelectionEvent</code>s. After these events are handled in the remote process, <code>TabParent</code> receives it with a call of <code>RecvOnEventNeedingAckHandled()</code>. Then, it calls <code>ContentCacheInParent::OnEventNeedingAckHandled()</code>. Finally, <code>ContentCacheInParent</code> flushes pending notifications.</p> - -<h3 id="How_do_mozillaTextComposition_and_mozillaIMEStateManager_work_in_e10s_mode">How do <code>mozilla::TextComposition</code> and <code>mozilla::IMEStateManager</code> work in e10s mode?</h3> - -<p>In remote process, they work as non-e10s mode. On the other hand, they work specially in parent process.</p> - -<p>When IMEStateManager in parent process receives <code>eCompositionStart</code>, it creates <code>TextComposition</code> instance normally. However, if the event target has remote contents, <code>TextComposition::DispatchCompositionEvent()</code> directly sends the event to the remote process instead of dispatching the event into the target DOM tree in the process.</p> - -<p>That means that even in a parent process, anybody can retrieve <code>TextComposition</code> instance, but it just does nothing in parent process.</p> - -<p>IMEStateManager works more complicated because IMEStateManagers in each processe need to negotiate about owner ship of managing input context.</p> - -<p>When a remote process gets focus, temporarily, <code>IMEStateManager</code> in parent process disables IME in the widget. After that, <code>IMEStateManager</code> in the remote process will set proper input context for the focused editor. At this time, <code>IMEStateManager</code> in the parent process does nothing. Therefore, <code>IMEContentObserver</code> is never created while a remote process has focus.</p> - -<p>When a remote process loses focus, <code>IMEStateManager</code> in parent process notifies <code>IMEStateManager</code> in the remote process of "Stop IME state management". When <code>IMEStateManager::StopIMEStateManagement()</code> is called in the remote process by this, the <code>IMEStateManager</code> forgets all focus information (i.e., that indicates nobody has focus).</p> - -<p>When <code>IMEStateManager</code> in parent process is notified of pseudo focus move from or to menubar while a remote process has focus, it notifies the remote process of "Menu keyboard listener installed". Then, <code>TabChild</code> calls <code>IMEStateManager::OnInstalledMenuKeyboardListener()</code> in the remote process.</p> - -<h2 id="Style_of_each_clause">Style of each clause</h2> - -<p>The style of each IME selection is managed by <a href="http://dxr.mozilla.org/mozilla-central/source/widget/LookAndFeel.h"><code>LookAndFeel</code></a> class per platform. Therefore, it can be overridden by prefs.</p> - -<p>Background color, foreground color (text color) and underline color can be specified with following prefs. The values must be string of "<code>#rrggbb</code>" format.</p> - -<ul> - <li><code>ui.IMERawInputBackground</code></li> - <li><code>ui.IMERawInputForeground</code></li> - <li><code>ui.IMERawInputUnderline</code></li> - <li><code>ui.IMESelectedRawTextBackground</code></li> - <li><code>ui.IMESelectedRawTextForeground</code></li> - <li><code>ui.IMESelectedRawTextUnderline</code></li> - <li><code>ui.IMEConvertedTextBackground</code></li> - <li><code>ui.IMEConvertedTextForeground</code></li> - <li><code>ui.IMEConvertedTextUnderline</code></li> - <li><code>ui.IMESelectedConvertedTextBackground</code></li> - <li><code>ui.IMESelectedConvertedTextForeground</code></li> - <li><code>ui.IMESelectedConvertedTextUnderline</code></li> -</ul> - -<p>Underline style can be specified with the following prefs. The values are integer, <code>0</code>: none, <code>1</code>: dotted, <code>2</code>: dashed, 3: solid, 4: double, 5: wavy (The values same as <code>NS_STYLE_TEXT_DECORATION_STYLE_*</code> defined in <a href="http://dxr.mozilla.org/mozilla-central/source/layout/style/nsStyleConsts.h">nsStyleConsts.h</a>.</p> - -<ul> - <li><code>ui.IMERawInputUnderlineStyle</code></li> - <li><code>ui.IMESelectedRawTextUnderlineStyle</code></li> - <li><code>ui.IMEConvertedTextUnderlineStyle</code></li> - <li><code>ui.IMESelectedConvertedTextUnderlineStyle</code></li> -</ul> - -<p>Underline width can be specified with "<code>ui.IMEUnderlineRelativeSize</code>" pref. This affects all types of clauses. The value should be <code>100</code> or <code>200</code>. <code>100</code> means normal width, <code>200</code> means double width.</p> - -<p>On some platforms, IME may support its own style for each clause. Currently, this feature is supported in TSF mode of Windows and on Linux. The style information is stored in <code>TextRangeStyle</code> which is defined in <a href="http://dxr.mozilla.org/mozilla-central/source/widget/TextRange.h">TextRange.h</a>. It's a member of <code>TextRange</code>. <code>TextRange</code> is stored in <code>mRanges</code> of <code>WidgetCompositionEvent</code> only when its message is <code>eCompositionChange</code>.</p> - -<h2 id="Lifetime_of_composition_string">Lifetime of composition string</h2> - -<p>When native IME notifies Gecko of starting a composition, a widget dispatches <code>WidgetCompositionEvent</code> with <code>eCompositionStart</code> which will cause a DOM <code>compositionstart</code> event.</p> - -<p>When native IME notifies Gecko of a composition string change, a caret position change and/or a change of length of clauses, a widget dispatches <code>WidgetCompositionEvent</code> with <code>eCompositionChange</code> event. It will cause a DOM <code>compositionupdate</code> event when composition string is changing. That is dispatched by <code>TextComposition</code> automatically. After that when the widget and <code>PresShell</code> of the focused editor have not been destroyed yet, the <code>eCompositionChange</code> will cause a DOM <code>text</code> event which is not in any web standards.</p> - -<p>When native IME notifies Gecko of the ending of a composition, a widget dispatches <code>WidgetCompositionEvent</code> with <code>eCompositionCommitAsIs</code> or <code>eCompositionCommit</code>. If the committing string is different from the last set of data (i.e., if the event message is <code>eCompositionCommit</code>), <code>TextComposition</code> dispatches a DOM <code>compositionupdate</code> event. After that, when the widget and <code>PresShell</code> of the focused editor have not been destroyed yet, an <code>eCompositionChange</code> event dispatched by <code>TextComposition, that</code> causes a DOM <code>text</code> event. Finally, if the widget and <code>PresShell</code> of the focused editor has not been destroyed yet too, <code>TextComposition</code> dispatches an <code>eCompositionEnd</code> event which will cause a DOM <code>compositionend</code> event.</p> - -<h2 id="Limitation_of_handling_composition">Limitation of handling composition</h2> - -<p>Currently, <code>EditorBase</code> touches undo stack at receiving every <code>WidgetCompositionEvent</code>. Therefore, <code>EditorBase</code> requests to commit composition when the following cases occur:</p> - -<ul> - <li>The editor loses focus</li> - <li>The caret is moved by mouse or Javascript</li> - <li>Value of the editor is changed by Javascript</li> - <li>Node of the editor is removed from DOM tree</li> - <li>Somethings object is modified in an HTML editor, e.g., resizing an image</li> - <li>Composition string is moved to a different position which is specified by native IME (e.g., only a part of composition is committed)</li> -</ul> - -<p>In the future, we should fix this limitation. If we make <code>EditorBase</code> not touch undo stack until composition is committed, some of the cases must be fixed.</p> - -<h2 id="Notifications_to_IME">Notifications to IME</h2> - -<p>XP part of Gecko uses <code>nsIWidget::NotifyIME()</code> for notifying <code>widget</code> of something useful to handle IME. Note that some of them are notified only when <code>nsIWidget::GetIMEUpdatePreference()</code> returns flags which request the notifications.</p> - -<p><code>NOTIFY_IME_OF_TEXT_CHANGE</code>, <code>NOTIFY_IME_OF_SELECTION_CHANGE</code>, <code>NOTIFY_IME_OF_POSITION_CHANGE</code> and <code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code> are always sent by following order:</p> - -<ol> - <li><code>NOTIFY_IME_OF_TEXT_CHANGE</code></li> - <li><code>NOTIFY_IME_OF_SELECTION_CHANGE</code></li> - <li><code>NOTIFY_IME_OF_POSITION_CHANGE</code></li> - <li><code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code></li> -</ol> - -<p>If sending one of above notifications causes higher priority notification, the sender should abort to send remaning notifications and restart from highet priority notification again.</p> - -<p>Additionally, all notifications except NOTIFY_IME_OF_BLUR should be sent only when it's safe to run script since the notification may cause querying content and/or dispatching composition events.</p> - -<h3 id="NOTIFY_IME_OF_FOCUS"><code>NOTIFY_IME_OF_FOCUS</code></h3> - -<p>When an editable editor gets focus and <code>IMEContentObserver</code> starts to observe it, this is sent to <code>widget</code>. This must be called after the previous <code>IMEContentObserver</code> notified widget of <code>NOTIFY_IME_OF_BLUR</code>.</p> - -<p>Note that even if there are pending notifications, they are canceled when <code>NOTIFY_IME_OF_FOCUS</code> is sent since querying content with following notifications immediately after getting focus does not make sense. The result is always same as the result of querying contents at receiving this notfication.</p> - -<h3 id="NOTIFY_IME_OF_BLUR"><code>NOTIFY_IME_OF_BLUR</code></h3> - -<p>When an <code>IMEContentObserver</code> instance ends observing the focused editor, this is sent to <code>widget</code> synchronously because assumed that this notification causes neither query content events nor composition events.</p> - -<p>If <code>widget</code> wants notifications even while all windows are deactive, <code>IMEContentObserver</code> doesn't end observing the focused editor. I.e., in this case, <code>NOTIFY_IME_OF_FOCUS</code> and <code>NOTIFY_IME_OF_BLUR</code> are not sent to <code>widget</code> when a window which has a composition is being activated or deactivated.</p> - -<p>When <code>widget</code> wants notifications during deactive, <code>widget</code> includes <code>NOTIFY_DURING_DEACTIVE</code> to the result of <code>nsIWidget::GetIMEUpdatePreference().</code></p> - -<p>If this notification is tried to sent before sending <code>NOTIFY_IME_OF_FOCUS</code>, all pending notifications and <code>NOTIFY_IME_OF_BLUR</code> itself are canceled.</p> - -<h3 id="NOTIFY_IME_OF_TEXT_CHANGE"><code>NOTIFY_IME_OF_TEXT_CHANGE</code></h3> - -<p>When text of focused editor is changed, this is sent to <code>widget</code> with a range of the change. But this is sent only when result of <code><code>nsIWidget::GetIMEUpdatePreference()</code></code> includes <code>NOTIFY_TEXT_CHANGE</code>.</p> - -<p>If two or more text changes occurred after previous <code>NOTIFY_IME_OF_TEXT_CHANGE</code> or <code>NOTIFY_IME_OF_FOCUS</code>, the ranges of all changes are merged. E.g., if first change is from <code>1</code> to <code>5</code> and second change is from <code>5</code> to <code>10</code>, the notified range is from <code>1</code> to <code>10</code>.</p> - -<p>If all merged text changes were caused by composition, <code>IMENotification::mTextChangeData::mCausedOnlyByComposition</code> is set to true. This is useful if native IME handler wants to ignore all text changes which are expected by native IME.</p> - -<p>If at least one text change of the merged text changes was caused by <em>current</em> composition, <code>IMENotification::mTextChangeData::mIncludingChangesDuringComposition</code> is set to true. This is useful if native IME handler wants to ignore delayed text change notifications.</p> - -<p>If at least one text change of the merged text changes was caused when there was no composition, <code>IMENotification::mTextChangeData::mIncludingChangesWithoutComposition</code> is set to true.</p> - -<h3 id="NOTIFY_IME_OF_SELECTION_CHANGE"><code>NOTIFY_IME_OF_SELECTION_CHANGE</code></h3> - -<p>When selection (or caret position) is changed in focused editor, <code>widget</code> is notified of this.</p> - -<p>If the last selection change was occurred by a composition event event handling, <code>IMENotification::mSelectionChangeData::mCausedByComposition</code> is set to true. This is useful if native IME handler wants to ignore the last selection change which is expected by native IME.</p> - -<p>If the last selection change was occurred by an <code>eSetSelection</code> event, <code>IMENotification::mSelectionChangeData::mCausedBySelectionEvent</code> is set to true. This is useful if native IME handler wants to ignore the last selection change which was requested by native IME.</p> - -<p>If the last selection is occurred during a composition, <code>IMENotification::mSelectionChangeData::mOccurredDuringComposition</code> is set to true. This is useful if native IME handler wants to ignore the last selection change which occurred by web application's <code>compositionstart</code> or <code>compositionupdate</code> event handler before inserting composition string.</p> - -<h3 id="NOTIFY_IME_OF_POSITION_CHANGE"><code>NOTIFY_IME_OF_POSITION_CHANGE</code></h3> - -<p>When reflow or scroll occurs in the document, this is sent to <code>widget</code>. But this is sent only when result of <code><code>nsIWidget::GetIMEUpdatePreference()</code></code> includes <code>NOTIFY_POSITION_CHANGE</code>.</p> - -<p>This might be useful to update a candidate window position or something.</p> - -<h3 id="NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED"><code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code></h3> - -<p>After <code>TextComposition</code> handles <code>eCompositionStart</code>, <code>eCompositionChange</code>, <code>eComposiitionCommit</code> or <code>eCompositionCommitAsIs</code>, this notification is sent to <code>widget</code>. This might be useful to update a candidate window position or something.</p> - -<h3 id="NOTIFY_IME_OF_MOUSE_BUTTON_EVENT"><code>NOTIFY_IME_OF_MOUSE_BUTTON_EVENT</code></h3> - -<p>When a <code>mousedown</code> event or a <code>mouseup</code> event is fired on a character in a focused editor, this is sent to <code>widget</code>. But this is sent only when result of <code><code>nsIWidget::GetIMEUpdatePreference()</code></code> includes <code>NOTIFY_MOUSE_BUTTON_EVENT_ON_CHAR</code>. This is sent with various information. See <code>IMENotification::mMouseButtonEventData</code> in <a href="http://dxr.mozilla.org/mozilla-central/source/widget/IMEData.h"><code>IMEData.h</code></a> for the detail.</p> - -<p>If native IME supports mouse button event handling, <code>widget</code> should notify IME of mouse button events with this. If IME consumes an event, <code>widget</code> should return <code>NS_SUCCESS_EVENT_CONSUMED</code> from <code>nsIWidget::NotifyIME()</code>. Then, <code>nsEditor</code> doesn't handle the mouse event.</p> - -<p>Note that if a <code>mousedown</code> event or a <code>mouseup</code> event is consumed by a web application (before a focused editor handles it), this notification is not sent to <code>widget</code>. This means that web applications can handle mouse button events before IME.</p> - -<h2 id="Requests_to_IME">Requests to IME</h2> - -<p>XP part of Gecko can request IME to commit or cancel composition. This must be requested via <code>IMEStateManager::NotifyIME()</code>. Then, <code>IMEStateManager</code> looks for a proper <code>TextComposition</code> instance. If it's found, <code>TextComposition::RequestToCommit()</code> for calling nsIWidget::NotifyIME() and handles some extra jobs.</p> - -<p><code>widget</code> should call the proper native API if it's available. Even if commit or canceling composition does not occur synchronously, <code>widget</code> doesn't need to emulate it since <code>TextComposition</code> will emulate it automatically. In other words, <code>widget</code> should only request to commit or cancel composition to IME.</p> - -<h3 id="REQUEST_TO_COMMIT_COMPOSITION"><code>REQUEST_TO_COMMIT_COMPOSITION</code></h3> - -<p>A request to commit current composition to IME. See also following "Forcibly committing composition" section for additional information.</p> - -<h3 id="REQUEST_TO_CANCEL_COMPOSITION"><code>REQUEST_TO_CANCEL_COMPOSITION</code></h3> - -<p>A request to cancel current composition to IME. In other words, a request to commit current composition with an empty string.</p> - -<h2 id="Forcibly_committing_composition">Forcibly committing composition</h2> - -<p>When <code>TextComposition::RequestToCommit()</code> calls <code>nsIWidget::NotifyIME()</code>, it guarantees synchronous commit or canceling composition.</p> - -<p>In order to put it into practice, we need to handle the following four scenarios:</p> - -<h3 id="The_composition_is_committed_with_non-empty_string_synchronously">The composition is committed with non-empty string synchronously</h3> - -<p>This is the most usual case. In this case, <code>TextComposition</code> handles <code>WidgetCompositionEvent</code> instances during a request normally. However, in a remote process in e10s mode, this case never occurs since requests to native IME is handled asynchronously.</p> - -<h3 id="The_composition_is_not_committed_synchronously_but_later">The composition is not committed synchronously but later</h3> - -<p>This is the only case in a remote process in e10s mode or occurs on Linux even in non-e10s mode if the native IME is iBus. The callers of <code>NotifyIME(REQUEST_TOCOMMIT_COMPOSITION)</code> may expect that composition string is committed immediately for their next job. For such a case, <code>TextComposition::RequestToCommit()</code> synthesizes DOM <code>composition</code> events and a DOM <code>text</code> event for emulating to commit composition synchronously. Additionally, <code>TextComposition</code> ignores comming events which are dispatched by widget when the widget receives native IME events.</p> - -<p>In this case, using the last composition string as commit string.</p> - -<p>However, if the last composition string is only an ideographic space (fullwidth space), the composition string may be a placeholder of some old Chinese IME on Windows.</p> - -<p><img alt="Screenshot of ChangJie (Traditional Chinese IME) which puts an ideographic space into composition string for placeholder" src="https://mdn.mozillademos.org/files/8713/ChangJie.png" style="height: 48px; width: 527px;"></p> - -<p>In this case, although, we should not commit the placeholder character because it's not a character which the user wanted to input but we commit it as is. The reason is, inputting an ideographic space causes a composition. Therefore, we cannot distinguish if committing composition is unexpected. If the user uses such old Chinese IME, <code>"intl.ime.remove_placeholder_character_at_commit"</code> pref may be useful but we don't support them anymore in default settings (except if somebody will find a good way to fix this issue).</p> - -<h3 id="The_composition_is_committed_synchronously_but_with_empty_string">The composition is committed synchronously but with empty string</h3> - -<p>This case may occur on Linux or with some IME on other platforms. If a web application implements autocomplete, committing with different strings especially an empty string it might cause confusion.</p> - -<p>In this case, <code>TextComposition</code> overwrites the commit string of <code>eCompositionChange</code> event dispatched by widget. However, if the last composition string is only an ideographic space, it shouldn't be committed. See the previous case</p> - -<p>Note that this case doesn't work as expected when composition is in a remote process in e10s mode.</p> - -<h3 id="The_composition_is_not_committed">The composition is not committed</h3> - -<p>On Linux, there is no API to request commit or canceling composition forcibly. Instead, Gecko uses <code>gtk_im_context_reset()</code> API for this purpose because most IME cancel composition with it. But there are some IMEs which do nothing when Gecko calls it.</p> - -<p>If this occurs, Gecko should restart composition with a DOM <code>compositionstart</code> event , a DOM <code>compositionupdate</code> event and a DOM <code>text</code> event at caret position.</p> - -<div class="note"> -<p>This issue hasn't been supported yet.</p> -</div> - -<h2 id="IME_state_management">IME state management</h2> - -<p>IME is a text input system. It means that except when a user wants to input some text, IME shouldn't be avaliable. For example, pressing the space key to attempt scrolling a page may be consumed and prevented by IME. Additionally, password editors need to request special behavior with IME.</p> - -<p>For solving this issue, Gecko sets the proper IME state at DOM focus change.</p> - -<p>First, when a DOM node gets focus, <code>nsFocusManager</code> notifies <code>IMEStateManager</code> of the new focused node (calls <code>IMEStateManager::OnChangeFocus()</code>). <code>IMEStateManager</code> asks desired IME state by calling <code>nsIContent::GetDesiredIMEState()</code> of the node. If the node owns <code>nsEditor</code> instance, it asks for the desired IME state from the editor and returns the result.</p> - -<p>Next, <code>IMEStateManager</code> initializes <code>InputContext</code> (defined in <a href="http://dxr.mozilla.org/mozilla-central/source/widget/IMEData.h"><code>IMEData.h</code></a>) with the desired IME state and node information. Then, it calls <code>nsIWidget::SetInputContext()</code> with the <code>InputContext</code>.</p> - -<p>Finally, <code>widget</code> stores the <code>InputContext</code> and enables or disables IME if the platform has such an API.</p> - -<h3 id="InputContext"><code>InputContext</code></h3> - -<p><code>InputContext</code> is a struct. Its <code>mIMEState</code>, <code>mHTMLInputType</code>, <code>mHTMLInputInputMode</code> and <code>mActionHint</code> are set at <code>nsIWidget::SetInputContext()</code> called.</p> - -<h4 id="mIMEState"><code>mIMEState</code></h4> - -<p>IME state has two abilities. One is enabled state:</p> - -<h5 id="ENABLED"><code>ENABLED</code></h5> - -<p>This means IME is fully available. E.g., when an editable element such as <code><input type="text"></code>, <code><textarea></code> or <code><foo contentediable></code> has focus.</p> - -<h5 id="DISABLED"><code>DISABLED</code></h5> - -<p>This means IME is not available. E.g., when a non-editable element has focus or no element has focus, the desired IME state is <code>DISABLED</code>.</p> - -<h5 id="PASSWORD"><code>PASSWORD</code></h5> - -<p>This means IME state should be the same as the state when a native password field has focus. This state is set only when <code><input type="password"></code> (<code><a href="/en-US/docs/Web/CSS/ime-mode">ime-mode</a>: auto;</code>), <code><input type="text" style="ime-mode: disabled;"></code> or <code><textarea style="ime-mode: disabled;"></code>.</p> - -<h5 id="PLUGIN"><code>PLUGIN</code></h5> - -<p>This is set only when a windowless plugin has focus.</p> - -<div class="note"> -<p>Be careful, even if a password field has focus, <code>mIMEState</code> may be <code>ENABLED</code>. When you need to check if a password field has focus for security reasons, you should use <code>InputContext::IsPasswordEditor()</code>.</p> -</div> - -<p>The other is IME open state:</p> - -<h5 id="DONT_CHANGE_OPEN_STATE"><code>DONT_CHANGE_OPEN_STATE</code></h5> - -<p>The open state of IME shouldn't be changed. I.e., Gecko should keep the last IME open state.</p> - -<h5 id="OPEN"><code>OPEN</code></h5> - -<p>Open IME. This is specified only when ime-mode of the new focused element is <code>active</code>.</p> - -<h5 id="CLOSE"><code>CLOSE</code></h5> - -<p>Close IME. This is specified only when ime-mode of the new focused element is <code>inactive</code>.</p> - -<div class="note"> -<p>E.g., on Linux, applications cannot manage IME open state. On such platforms, this is ignored.</p> -</div> - -<div class="note"> -<p>IME open state should be changed only when <code>nsIWidget::SetInputContext()</code> is called at DOM focus change because changing IME open state while an editor has focus makes users confused. The reason why <code>nsIWidget::SetInputContext()</code> is called is stored in <code>InputContextAction::mCause</code>.</p> -</div> - -<h5 id="How_does_Gecko_disable_IME_in_IMM_mode_on_Windows">How does Gecko disable IME in IMM mode on Windows</h5> - -<p>Every window on Windows is associated an <code>IMContext</code>. When Gecko disables IME, <a href="http://dxr.mozilla.org/mozilla-central/source/widget/windows/WinIMEHandler.cpp">mozilla::widget::IMEHandler</a>::SetInputContext() disasociates the context from the window.</p> - -<h5 id="How_does_Gecko_disable_IME_in_TSF_mode_on_Windows">How does Gecko disable IME in TSF mode on Windows</h5> - -<p><a href="http://dxr.mozilla.org/mozilla-central/source/widget/windows/TSFTextStore.cpp"><code>mozilla::widget::TSFTextStore</code></a> sets focus to a dummy context which disables the keyboard.</p> - -<h5 id="How_does_Gecko_disable_IME_on_Mac">How does Gecko disable IME on Mac</h5> - -<p><code><a href="http://dxr.mozilla.org/mozilla-central/source/widget/cocoa/TextInputHandler.mm">mozilla::widget::TextInputHandler</a>::HandleKeyDownEvent()</code> doesn't call focused view's <code>interpretKeyEvents</code>. This prevents native key events to be passed to IME.</p> - -<h5 id="How_does_Gecko_disable_IME_on_GTK">How does Gecko disable IME on GTK</h5> - -<p><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gtk/IMContextWrapper.cpp">mozilla::widget::IMContextWrapper</a> sets focus to a dummy context which doesn't have IME composition.</p> - -<h5 id="How_does_Gecko_disable_IME_on_Android">How does Gecko disable IME on Android</h5> - -<dl> - <dt>?</dt> -</dl> - -<h4 id="mHTMLInputType"><code>mHTMLInputType</code></h4> - -<p>The value is a string representing the focused editor.</p> - -<dl> - <dt><code>"text"</code>, <code>"password"</code>, <code>"number"</code>, etc.</dt> - <dd>When an <code><input></code> element gets focus, the value is the type of the input element.</dd> - <dt>"textarea"</dt> - <dd>When a <code><textarea></code> element gets focus, the value is <code>"textarea"</code>.</dd> - <dt>""</dt> - <dd>When an HTML editor (an element whose <code>contenteditable</code> attribute is <code>"true"</code> or document whose <code>designMode</code> is <code>"on"</code>) gets focus, the value is empty. And also, when the other elements get focus.</dd> -</dl> - -<h4 id="mHTMLInputInputMode"><code>mHTMLInputInputMode</code></h4> - -<p>The value is <code>inputmode</code> attribute value of the focused editor. This is set only when <code>"dom.forms.inputmode"</code> pref is true.</p> - -<h4 id="mActionHint"><code>mActionHint</code></h4> - -<p>The value is <code>mozactionhint</code> attribute value of the focused editor. This is useful for deciding the caption for the submit button in virtual keyboard. E.g., the value could be <code>"Go"</code>, <code>"Next"</code> or <code>"Search"</code>.</p> - -<h2 id="Native_IME_handlers">Native IME handlers</h2> - -<p>Following classes handles IME on each platform:</p> - -<h3 id="Windows">Windows</h3> - -<h4 id="mozillawidgetIMEHandler"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/windows/WinIMEHandler.cpp">mozilla::widget::IMEHandler</a></code></h4> - -<p>This class manages input mehtod context of each window and makes <code>IMMHandler</code> or <code>TSFTextStore</code> work with active IME and focused editor or windowless plugin. This class has only static members, i.e., never created its instance.</p> - -<h4 id="mozillawidgetIMMHandler"><a href="http://dxr.mozilla.org/mozilla-central/source/widget/windows/IMMHandler.cpp"><code>mozilla::widget::IMMHandler</code></a></h4> - -<p>This class is used when TSF mode is disabled by pref (<code>"intl.tsf.enable"</code>), focused content is a windowless plugin or active IME is for IMM (i.e., not TIP for TSF).</p> - -<p>This class handles <code>WM_IME_*</code> messages and uses <code>Imm*()</code> API. This is a singleton class since Gecko supports only on IM context in a process. Typically, a process creates windows with default IM context. Therefore, this design is enough (ideally, an instance should be created per IM context, though). The singleton instance is created when it becomes necessary. So, if user doesn't meet a windowless plugin nor use IME on it, this instance is never created.</p> - -<h4 id="mozillawidgetTSFTextStore"><a href="http://dxr.mozilla.org/mozilla-central/source/widget/windows/TSFTextStore.cpp"><code>mozilla::widget::TSFTextStore</code></a></h4> - -<p>This class handles IME events in TSF mode and when TIP (IME implemented with TSF) is active. This instances are created when an editable element gets focus and released when it loses focus.</p> - -<p>TSFTextStore implements some COM interfaces which is necessary to work with TIP. And similarly, there is a singleton class, TSFStaticSink, to observe active TIP changes.</p> - -<p>TSF is the most complicated IME API on all platforms, therefore, design of this class is also very complicated.</p> - -<p>FIrst, TSF/TIP requests to lock the editor content for querying or modifying the content or selection. However, web standards don't have such mechanim. Therefore, when it's requested, TSFTextStore caches current content and selection with <code>WidgetQueryContentEvent</code>. Then, it uses the cache to reply to query requests, and modifies the cache as they requested. At this time, TSFTextStore saves the requests of modification into the queue called <code>PendingAction</code>. Finally, after unlocking the contents, it flushes the pending actions with dispatches <code>WidgetCompositionEvent</code>s via <code>TextEventDispatcher</code>.</p> - -<p>Then, <code>IMEContentObserver</code> will notify some changes caused by the dispatched <code>WidgetCompositionEvent</code>s (they are notified synchronously in chrome or non-e10s mode, but asynchronously from a remote process in e10s mode). At this time, <code>TSFTextStore</code> may receive notifications which indicates web application changes the content differently from cache in TSFTextStore. However, <code>TSFTextStore</code> ignores such fact temporarily until the composition is finished completely. The reason is that, notifying unexpected text or selection changes to TSF and/or TIP during composition may behave them odd.</p> - -<p>When a composition is committed and it receives <code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code>, <code>TSFTextStore</code> clears the cache of contents and notifying TSF of merged text changes and the last selection change if they are not caused by composition. By this step, TSF and TIP may sync its internal cache with actual contents.</p> - -<p>Note that if new composition is started before <code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code> notification, <code>TSFTextStore</code> handles the new composition with cached contents which may be different from actual contents. So, e.g., reconvertion around caret may not work as unexpectd in such case, but we don't have a good solution for this issue.</p> - -<p>On the other hand, <code>TSFTextStore</code> cannot cache character rects since if there are a lot of characters, caching the rects require a lot of CPU cost (to compute each rect) and memory. Therefore, <code>TSFTextStore</code> will use insertion point relative query for them {{Bug(1286157)}}. Then, it can retrieve expected character's rect even if the cache of <code>TSFTextStore</code> is different from the actual contents because TIP typically needs caret position's character rect (for a popup to indicate current input mode or next word suggestion list) or first character rect of the target clause of current composition (for a candidate list window of conversion).</p> - -<h3 id="Mac">Mac</h3> - -<p>Both IME and key events are handled in <a href="http://dxr.mozilla.org/mozilla-central/source/widget/cocoa/TextInputHandler.mm"><code>TextInputHandler.mm</code></a>.</p> - -<p><code>mozilla::widget::TextInputHandlerBase</code> is the most base class. <code>mozilla::widget::PluginTextInputHandler</code> inherits <code>TextInputHandlerBase</code> and handles key events and IME events on focused plugin. <code>mozilla::widget::IMEInputHandler</code> inherits <code>TextInputHandlerBase</code> and handles IME related events. <code>mozilla::widget::TextInputHandler</code> inherits <code>TextInputHandlerBase</code> and implements <code>NSTextInput</code> protocol of Cocoa. The instance is created per <a href="http://dxr.mozilla.org/mozilla-central/source/widget/cocoa/nsChildView.mm"><code>nsChildView</code></a> instance.</p> - -<h3 id="GTK">GTK</h3> - -<p><code><a href="http://dxr.mozilla.org/mozilla-central/source/widget/gtk/IMContextWrapper.cpp">mozilla::widget::IMContextWrapper</a></code> handles IME. The instance is created per top level window.</p> - -<h3 id="Android">Android</h3> - -<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/android/nsWindow.cpp">nsWindow::GeckoViewSupport</a></code> handles native IME events and just dispatches <code>Widget*Event</code>.</p> diff --git a/files/ja/mozilla/implementing_pontoon_in_a_mozilla_website/index.html b/files/ja/mozilla/implementing_pontoon_in_a_mozilla_website/index.html deleted file mode 100644 index ea0178a4d0..0000000000 --- a/files/ja/mozilla/implementing_pontoon_in_a_mozilla_website/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Mozilla プロジェクトでの Pontoon の実装 -slug: Mozilla/Implementing_Pontoon_in_a_Mozilla_website -tags: - - Localization -translation_of: Mozilla/Implementing_Pontoon_in_a_Mozilla_website ---- -<p><a class="external external-icon" href="https://pontoon.mozilla.org">Pontoon</a> は、ウェブベースの WYSIWYG (What-You-See-Is-What-You-Get) ローカライゼーション (localization, l10n) ツールです。Mozilla では、現在 Pontoon を使用して、さまざまな Mozilla プロジェクトや、Gaia という名前で知られる Firefox OS アプリのインターフェイスをローカライズしています。Pontoon は非常にシンプルで直感的なツールで、ローカライズする利用者に技術的なスキルをあまり要求しないため、プロジェクトのローカライズ版を短時間で公開することができるようになります。この記事では、Pontoon をあなたの Mozilla プロジェクトに導入する方法について話します。</p> - -<div class="note"> -<p><strong>Pontoon の改善に興味がありますか?</strong> ぜひ <a href="https://github.com/mozilla/pontoon">GitHub</a> を訪れてみてください。</p> -</div> - -<div class="note"> -<p><strong>プロジェクトをローカライズするのは初めてですか?</strong> wiki で <a href="https://wiki.mozilla.org/L10n:NewProjects">getting your project localized</a> を読んでみてください。</p> -</div> - -<h2 id="A._プロジェクトをローカライズ可能にする">A. プロジェクトをローカライズ可能にする</h2> - -<p>以下のことがらはすでに Mozilla でのプロジェクトのローカライズにおける標準のベストプラクティスだとみなされていますが、リマインダーとしてここでもう一度軽く説明しておくのもいいでしょう。</p> - -<ol> - <li>少なくとも1つのローカライゼーションフレームワーク (<a class="external external-icon" href="https://www.gnu.org/software/gettext/">gettext</a>, <a class="external external-icon" href="https://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.html">XLIFF</a>, <a class="external external-icon" href="https://projectfluent.org/">L20n</a>, <a class="external external-icon" href="https://github.com/mozilla-l10n/langchecker/wiki/.lang-files-format">lang</a>, <a class="external external-icon" href="https://wikipedia.org/wiki/.properties">properties</a> など) に対応させる。</li> - <li>ローカライズ可能な文字列をリソースファイルとして抽出する。</li> - <li>リソースファイルをリポジトリ (SVN, HG, Git) にプッシュする。 - <ul> - <li>個別のロケールフォルダはディレクトリツリーの同じレベルになるように配置する。ソースとなるロケールは <code>templates</code>、<code>en</code>、<code>en-US</code> のいずれかの名前にする。ロケール専用の <code>locales</code> フォルダーを作成するといいかもしれません。ロケールコードはファイル名に含まれないようにする。</li> - <li>正しいパターン: - <pre>/locales/{locale_code}/path/to/file.extension</pre> - </li> - <li>正しくないパターン: - <pre>/locales/{locale_code}/path/to/file.{locale_code}.extension</pre> - </li> - </ul> - </li> - <li>Pontoon にリポジトリへの書き込み権限を与える。 - <ul> - <li>GitHub を使用する場合、<a class="external external-icon" href="https://github.com/mozilla-pontoon">mozilla-pontoon</a> または <a href="https://github.com/orgs/mozilla/teams/pontoon-l10n-robots">pontoon-l10n-robots</a> をプロジェクトのコラボレーターとして追加すれば大丈夫です。</li> - </ul> - </li> -</ol> - -<h2 id="B._オプション_ウェブプロジェクトでページ内ローカライゼーションを有効にする">B. (オプション) ウェブプロジェクトでページ内ローカライゼーションを有効にする</h2> - -<ol> - <li>HTML の <code><body></code> 要素内でスクリプトへのリンクを貼ります。これにより Pontoon がサイトとお話したり、コンテンツを編集したり、その場でローカライズできるようになります。そのために必要なのは、ページ内ローカライゼーションを利用する環境 (たとえば、ステージングサーバー上) で、次のコードを追加することだけです。 - - <ul> - <li> - <pre id="line1"><span> </span><span><<span class="start-tag">script</span> <span class="attribute-name">src</span>="<a class="attribute-value">https://pontoon.mozilla.org/pontoon.js</a>"</span><span>></<span class="end-tag">script</span>></span></pre> - </li> - </ul> - </li> - <li>もしサイトが <a href="/ja/docs/Web/HTTP/CSP">CSP</a> を使用している場合、<code>pontoon.mozilla.org</code> ドメインに対して、次の操作が許可されるようにしてください。 - <ol> - <li>内部での iframe の読み込み</li> - <li>リモートの CSS の読み込み</li> - <li>リモートの画像の読み込み</li> - </ol> - </li> - <li>もしサイトが <a href="/ja/docs/Web/HTTP/X-Frame-Options">X-Frame-Options</a> ヘッダを使用している場合、<code>pontoon.mozilla.org</code> ドメインに対して iframe の内部での読み込みが許可されるようにしてください。</li> - <li>サイトを HTTPS に対応させてください。フリーで自動化できるオープンなサービス、<a href="https://letsencrypt.org/">Let's encrypt</a>! を使いましょう!</li> -</ol> - -<h2 id="C._プロジェクトを_Pontoon_に追加する">C. プロジェクトを Pontoon に追加する</h2> - -<p>これで、プロジェクトを Pontoon に追加する準備ができました。<a class="external external-icon" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Localization%20Infrastructure%20and%20Tools&component=Administration%20%2F%20Setup">Localization Infrastructure and Tools :: Administration / Setup</a> にバグ報告としてファイルを作り、以下の情報を知らせてください。</p> - -<ul> - <li>Project name (プロジェクト名)</li> - <li>Repository URL (リポジトリの URL)</li> - <li>List of requested locales (リクエストするロケールのリスト)</li> - <li>Website URL, including all subpage URLs (only if using in-page localization) (すべてのサブページの URL を含む、ウェブサイトの URL (ページ内ローカライゼーションを利用する場合のみ))</li> -</ul> - -<p>さらに詳しい情報については、<a class="external external-icon" href="mailto:pontoon-team@mozilla.com">Project Management Team</a> に相談してください。</p> diff --git a/files/ja/mozilla/javascript_code_modules/components.utils.unload/index.html b/files/ja/mozilla/javascript_code_modules/components.utils.unload/index.html deleted file mode 100644 index cea96fd101..0000000000 --- a/files/ja/mozilla/javascript_code_modules/components.utils.unload/index.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Components.utils.unload -slug: Mozilla/JavaScript_code_modules/Components.utils.unload -tags: - - Modules -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.unload ---- -<p>{{ Gecko_minversion_header("7.0") }}</p> - -<p><code><a href="/ja/docs/Components.utils">Components.utils</a>.unload</code> は<a href="/ja/Firefox_7_for_developers" title="ja/Firefox_7_for_developers">Firefox 7</a> で導入され、 <a href="/ja/JavaScript_code_modules" title="ja/JavaScript code modules">JavaScript コードモジュール</a>をアンロードするために使用されています。これは特に<a href="/ja/Extensions/Bootstrapped_extensions" title="ja/Extensions/Bootstrapped_extensions">再起動不要な(ブートストラップ型)拡張機能</a>において、新しいバージョンの拡張機能をインストールするときに古いバージョンのコードモジュールをアンロードしたいときに便利です。</p> - -<p>このメソッドが呼び出されると、モジュールへの参照は引き続き機能しますが、それ以降にモジュールがインポートされるとリロードして新しい参照を与えます。 JavaScript コードモジュールがまだインポートされていない場合、このメソッドは何も行いません。</p> - -<p>アプリケーションの一部であるモジュール(<code><a class="external" rel="freelink">resource://gre/</a></code> や <code>resource:///</code> や <code><a class="external" rel="freelink">resource://app/</a></code>)は、他の拡張機能やアプリケーションによって利用されている可能性があるので、アンロードするべきではありません。拡張機能の一部としてインクルードしたモジュールのみをアンロードしてください。</p> - -<h3 id="Syntax" name="Syntax">構文</h3> - -<pre>Components.utils.unload( <em>url</em> ); -</pre> - -<h3 id="Parameters" name="Parameters">引数</h3> - -<dl> - <dt><code>url</code></dt> - <dd>アンロードするスクリプトの "resource://" で始まる URL です。スクリプトをロードするために使用したものと同じ URL である必要があります。</dd> -</dl> - -<h3 id="Example" name="Example">例</h3> - -<p>以下の1行のコードで、 MyModule.jsm と呼ばれるモジュールをアンロードできます。</p> - -<pre class="eval">Components.utils.unload("<span class="nowiki">resource://myaddon/modules/MyModule.jsm</span>"); -</pre> - -<div class="note"><strong>注:</strong> 現在、 Components.utils.unload clears はアンロードするモジュールのグローバルオブジェクトをクリアします。これによってアンロードにそれらへの参照を使用すると、モジュールが誤動作する可能性があります。 {{ bug("769253") }} を参照してください。</div> - -<h3 id="See_also" name="See_also">関連情報</h3> - -<ul> - <li>{{ bug("481603") }}</li> - <li>{{ Source("js/xpconnect/idl/xpccomponents.idl", "xpccomponents.idl") }} のドキュメント</li> - <li>{{ Source("js/xpconnect/tests/unit/") }} のテスト</li> -</ul> diff --git a/files/ja/mozilla/javascript_code_modules/ctypes.jsm/index.html b/files/ja/mozilla/javascript_code_modules/ctypes.jsm/index.html deleted file mode 100644 index a1a61b823b..0000000000 --- a/files/ja/mozilla/javascript_code_modules/ctypes.jsm/index.html +++ /dev/null @@ -1,199 +0,0 @@ ---- -title: ctypes.jsm -slug: Mozilla/JavaScript_code_modules/ctypes.jsm -tags: - - 要更新 ---- -<div>{{gecko_minversion_header("2.0")}}</div> -<div class="note"> - <strong>註:</strong> <code>ctypes.jsm</code> コードモジュールは機能性の強化のために API 改訂中です。よってこの文書はそれが完了した際に改訂されるでしょう。</div> -<p><code>ctypes.jsm</code> JavaScript コードモジュールは、自前のバイナリ XPCOM コンポーネントを書くことなく JavaScript コードから C 互換な外部ライブラリ関数の呼び出しを可能にします。</p> -<div class="note"> - <strong>註:</strong> <code>ctypes.jsm</code> JavaScript コードモジュールは chrome ――つまり、アプリケーション自身またはアドオンの内部からだけ利用することができます。</div> -<p>ctypes を利用するにはまず、 JavaScript スコープの中にコードモジュールをインポートする必要があります:</p> -<pre><span class="nowiki">Components.utils.import("resource://gre/modules/ctypes.jsm")</span></pre> -<p>一度モジュールをインポートしたら、あとは外部ライブラリを読み込むために利用することができます。</p> -<h2 id=".E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.92.E9.96.8B.E3.81.8F" name=".E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.92.E9.96.8B.E3.81.8F">ライブラリを開く</h2> -<p>外部ライブラリを利用する前に、開く必要があります。これは <code>ctypes.open()</code> 関数を用いて行います。</p> -<pre>var lib = ctypes.open(name); -</pre> -<p>ライブラリ <code>name</code> はパス名の文字列、または {{interface("nsILocalFile")}} オブジェクトのどちらかで指定できます。</p> -<p>ライブラリが無事に読み込まれると、<code>ctypes.open()</code> は節「<a href="/ja/docs/JavaScript_code_modules/ctypes.jsm#.e3.83.a9.e3.82.a4.e3.83.96.e3.83.a9.e3.83.aa.e3.82.aa.e3.83.96.e3.82.b8.e3.82.a7.e3.82.af.e3.83.88.e3.81.ae.e5.88.a9.e7.94.a8">ライブラリオブジェクトの利用</a>」で説明されるライブラリオブジェクトを返します。ライブラリの読み込みに失敗すると、 <code>null</code> を返します。</p> -<h2 id=".E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.88.A9.E7.94.A8" name=".E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.88.A9.E7.94.A8">ライブラリオブジェクトの利用</h2> -<p>一度ライブラリが開かれたら、<code>アクセスしたい</code><code>あらゆる関数</code><code>を</code>ライブラリオブジェクトの <code>declare() メソッドを呼び出すことで</code><code>宣言する必要があります。</code></p> -<pre>var func = lib.declare(name, abi, returnType, argType1, ...) -</pre> -<dl> - <dt>name</dt> - <dd>宣言する関数の名前。これは開いたライブラリの中で妥当なシンボルでなければならない。</dd> - <dt>abi</dt> - <dd>利用する呼び出しの取り決め。通常これは <code>ctypes.default_abi</code> になるが、関数が Win32 API の場合は <code>ctypes.stdcall_abi</code> を利用する必要がある。</dd> - <dt>returnType</dt> - <dd>関数が返す型。これは<a href="/ja/docs/JavaScript_code_modules/ctypes.jsm#.e5.9e.8b.e5.ae.9a.e6.95.b0">型定数</a>の一つでなければならない。</dd> - <dt>argType1...</dt> - <dd>入力引数型の 0 個以上のリスト。これらは<a href="/ja/docs/JavaScript_code_modules/ctypes.jsm#.e5.9e.8b.e5.ae.9a.e6.95.b0">型定数</a>から選ばれなければならない。</dd> -</dl> -<p>一度ライブラリから関数が宣言されたら、ほかの関数と同様に呼び出すことができます。</p> -<p>ライブラリの利用を終えたら、その <code>close()</code> メソッドを呼んで閉じる必要があります:</p> -<pre>lib.close(); -</pre> -<h2 id=".E5.9E.8B.E5.AE.9A.E6.95.B0" name=".E5.9E.8B.E5.AE.9A.E6.95.B0">型定数</h2> -<p>次の定数は ctypes で対応しているデータ型を定義しています。</p> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>ctypes.void_t</code></td> - <td>返り型でのみ可能。なにも返さないことを示す。</td> - </tr> - <tr> - <td>ctypes.bool</td> - <td>8 ビット真偽値</td> - </tr> - <tr> - <td>ctypes.int8_t</td> - <td>8 ビット符号付き整数</td> - </tr> - <tr> - <td>ctypes.int16_t</td> - <td>16 ビット符号付き整数</td> - </tr> - <tr> - <td>ctypes.int32_t</td> - <td>32 ビット符号付き整数</td> - </tr> - <tr> - <td>ctypes.int64_t</td> - <td>64 ビット符号付き整数</td> - </tr> - <tr> - <td>ctypes.uint8_t</td> - <td>8 ビット符号なし整数</td> - </tr> - <tr> - <td>ctypes.uint16_t</td> - <td>16 ビット符号なし整数</td> - </tr> - <tr> - <td>ctypes.uint32_t</td> - <td>32 ビット符号なし整数</td> - </tr> - <tr> - <td>ctypes.uint64_t</td> - <td>64 ビット符号なし整数</td> - </tr> - <tr> - <td>ctypes.float</td> - <td>浮動小数点数</td> - </tr> - <tr> - <td>ctypes.double</td> - <td>倍精度浮動小数点数</td> - </tr> - <tr> - <td>ctypes.string</td> - <td>C 文字列 (<code>char *</code>)</td> - </tr> - <tr> - <td>ctypes.ustring</td> - <td>16 ビット C 文字列 (<code>char16_t *</code>)</td> - </tr> - </tbody> -</table> -<h2 id=".E4.BE.8B.3A_Windows_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99" name=".E4.BE.8B.3A_Windows_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99">例: Windows ルーチンの呼び出す</h2> -<p>この例は Win32 API を呼び出すために ctypes を利用する方法を説明します。</p> -<pre class="brush: js">Components.utils.import("resource://gre/modules/ctypes.jsm"); - -var lib = ctypes.open("C:\\WINDOWS\\system32\\user32.dll"); - -/* Declare the signature of the function we are going to call */ -var msgBox = lib.declare("MessageBoxW", - ctypes.stdcall_abi, - ctypes.int32_t, - ctypes.int32_t, - ctypes.ustring, - ctypes.ustring, - ctypes.int32_t); -var MB_OK = 3; - -var ret = msgBox(0, "Hello world", "title", MB_OK); - -lib.close();</pre> -<p>3行目で、<code>user32.dll</code> システムライブラリが読み込まれています。6 行目は Windows 関数 <a href="http://msdn.microsoft.com/ja-jp/library/ms645505%28VS.85%29.aspx"><code>MessageBoxW</code></a> を呼び出すメソッドとなる <code>msgBox()</code> を宣言しています。15 行目は <code>msgBox()</code> ルーチンを呼び、警告を表示します。</p> -<p>利用を終えたら私たちが最後に行うのは、ライブラリを閉じるために <code>lib.close()</code> を呼び出すことです。</p> -<p>パスすべてを定義するのではなく、単にファイル名を与えることもできます。</p> -<pre>var lib = ctypes.open("user32.dll"); -</pre> -<p>あるいは拡張子抜きで。</p> -<pre>var lib = ctypes.open("user32"); -</pre> -<p>フルパスが与えられなかった場合、Windows は DLL 探すために次の検索順を利用します:</p> -<ol> - <li>アプリケーションが読み込まれたディレクトリ。</li> - <li>システムディレクトリ。</li> - <li>16 ビットシステムディレクトリ。</li> - <li>Windows ディレクトリ。</li> - <li>現在のディレクトリ。</li> - <li><code>PATH</code> 環境変数に載っているディレクトリ。</li> -</ol> -<p>(<a href="http://msdn.microsoft.com/ja-JP/library/ms682586%28VS.85%29.aspx">http://msdn.microsoft.com/ja-jp/library/ms682586%28VS.85%29.aspx</a> より)</p> -<h2 id=".E4.BE.8B.3A_Mac_OS_X_.E3.81.A7_Carbon_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99" name=".E4.BE.8B.3A_Mac_OS_X_.E3.81.A7_Carbon_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99">例: Mac OS X で Carbon ルーチンの呼び出す</h2> -<p>この例は Mac OS X で Carbon 関数を呼び出すために ctypes を利用する方法を説明します。</p> -<pre class="brush: js">/* build a Str255 ("Pascal style") string from the passed-in string */ - -function makeStr(str) { - return String.fromCharCode(str.length) + str; -} - -Components.utils.import("resource://gre/modules/ctypes.jsm"); - -var carbon = ctypes.open("/System/Library/Frameworks/Carbon.framework/Carbon"); - -stdAlert = carbon.declare("StandardAlert", /* function name */ - ctypes.default_abi, /* ABI type */ - ctypes.int16_t, /* return type */ - ctypes.int16_t, /* alert type */ - ctypes.string, /* primary text */ - ctypes.string, /* secondary text */ - ctypes.uint32_t, /* alert param */ - ctypes.int16_t); /* item hit */ - -var hit = 0; -var msgErr = makeStr("Carbon Says..."); -var msgExp = makeStr("We just called the StandardAlert Carbon function from JavaScript!"); - -var err = stdAlert(1, msgErr, msgExp, 0, hit); - -carbon.close(); -</pre> -<p>The <code>makeStr()</code> 関数は入力として標準の JavaScript 文字列を取り、バイト長の後に文字列そのものの文字が続く Carbon 形式の「Pascal」文字列を返すユーティリティルーチンです。これは文字列が実際に 256 文字以下の場合にだけ正しく動作することを忘れないでください。 長い場合は見事に失敗します。</p> -<p>9 行目で、システムの Carbon フレームワークから Carbon ライブラリが読み込まれています。</p> -<p>11 行目は Carbon の <code>StandardAlert</code> ルーチンを呼び出す、<code>stdAlert()</code> 関数を宣言しています。既定の ABI を利用し、 16 ビット整数 (Carbon の <code>OSErr</code> 値) を返し、そして整数(警告タイプ)と 2 つの文字列、私たちは利用しないパラメータブロックへのポインタ、ヒットした項目を返すために用いるもう 1 つの整数を受け入れます。詳しくは <a href="http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/Dialog_Manager/Reference/reference.html#//apple_ref/c/func/StandardAlert"><code>StandardAlert</code></a> に関する Apple の文書を参照してください。</p> -<p>その後、私たちは必要な Str255 文字列を 2 つ生成するために <code>makeStr() を用いて単にパラメータを構成し、<code>stdAlert()</code> を呼び出すと、次の警告ウィンドウが作り出されます:</code></p> -<p><img alt="ctype-mac-dialog.png" class="internal default" src="/@api/deki/files/3842/=ctype-mac-dialog.png"></p> -<p>利用を終えたら私たちが最後に行うのは、ライブラリを閉じるために <code>carbon.close()</code> を呼び出すことです。</p> -<h2 id=".E4.BE.8B.3A_Linux_.E3.81.A7_LibC_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99" name=".E4.BE.8B.3A_Linux_.E3.81.A7_LibC_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99">例: Linux で LibC ルーチンの呼び出す</h2> -<p>この例は Linux で libc 関数を呼び出すために ctypes を利用する方法を説明します。</p> -<pre class="brush: js">/* import js-ctypes */ -Components.utils.import("resource://gre/modules/ctypes.jsm"); - -/* open a library */ -var libc = ctypes.open("libc.so.6"); - -/* import a function */ -var puts = libc.declare("puts", /* function name */ - ctypes.default_abi, /* call ABI */ - ctypes.int32_t, /* return type */ - ctypes.string /* argument type */ -); -var ret = puts("Hello World from js-ctypes!"); -</pre> -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> -<ul> - <li><a href="/ja/docs/JavaScript_code_modules/Using">Using JavaScript code modules</a></li> - <li><a href="/ja/docs/JavaScript_code_modules">JavaScript code modules</a></li> - <li><a href="/ja/docs/Components.utils.import"><code>Components.utils.import</code></a></li> -</ul> diff --git a/files/ja/mozilla/javascript_code_modules/deferredtask.jsm/index.html b/files/ja/mozilla/javascript_code_modules/deferredtask.jsm/index.html deleted file mode 100644 index 91a3dad875..0000000000 --- a/files/ja/mozilla/javascript_code_modules/deferredtask.jsm/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: DeferredTask.jsm -slug: Mozilla/JavaScript_code_modules/DeferredTask.jsm -tags: - - JavaScript - - Modules -translation_of: Mozilla/JavaScript_code_modules/DeferredTask.jsm ---- -<p>{{ gecko_minversion_header("18.0") }}</p> -<p>{{ Fx_minversion_note("28.0", "Firefox 28 でインターフェースの変更があり、古いメソッドは削除されました。") }}</p> -<p><code>{{ Source("toolkit/modules/DeferredTask.jsm", "DeferredTask.jsm") }}</code> JavaScript コードモジュールは、遅延後に実行するタスクのためのユーティリティルーチンを提供します。遅延前に実行が試みられる複数の同じタスクは一本化されます。このモジュールを使用するには、先にコードモジュールをあなたの JavaScript スコープにインポートしておく必要があります:</p> -<pre>Components.utils.import("resource://gre/modules/DeferredTask.jsm"); -</pre> -<p>このモジュールは、例えば、ファイルにデータを書き込み、そのすぐ後に再びデータを書き込む可能性がある場合に使用できます。<code>DeferredTask</code> でタスクに数ミリ秒間の遅延を起こし、データへの新しい変更をその間に行ってください。</p> -<ul> - <li>データの最終バージョンのみが実際に書き込まれます。</li> - <li>他の変更を考慮していくらかの猶予の遅延が追加されます。</li> -</ul> -<p>{{ h1_gecko_minversion("DeferredTask コンストラクタ", "18.0") }}</p> -<p>2 秒間遅らせたい関数呼び出しがある場合、<code>DeferredTask</code> コンストラクタを使用して次のようにしてください:</p> -<pre>var task = new DeferredTask(myFunction, 2000); -</pre> -<p>{{ fx_minversion_inline("28.0") }} 第一引数にはジェネレータ関数を渡す事もできます。</p> -<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>bool <a href="#isPending()">isPending</a>();</code> {{ obsolete_inline("28.0") }}</td> - </tr> - <tr> - <td><code>void <a href="#start()">start</a>();</code> {{ obsolete_inline("28.0") }}</td> - </tr> - <tr> - <td><code>void <a href="#flush()">flush</a>();</code> {{ obsolete_inline("28.0") }}</td> - </tr> - <tr> - <td><code>void <a href="#cancel()">cancel</a>();</code> {{ obsolete_inline("28.0") }}</td> - </tr> - <tr> - <td><code>void <a href="#arm()">arm</a>();</code> {{ gecko_minversion_inline("28.0") }}</td> - </tr> - <tr> - <td><code>void <a href="#disarm()">disarm</a>();</code> {{ gecko_minversion_inline("28.0") }}</td> - </tr> - <tr> - <td><code>Promise <a href="#finalize()">finalize</a>();</code> {{ gecko_minversion_inline("28.0") }}</td> - </tr> - </tbody> -</table> -<h2 id="Attributes" name="Attributes">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>isArmed</code></td> - <td><code><a href="/en/boolean" title="en/boolean">boolean</a></code></td> - <td>このタスクが開始を要求されているかどうかを表します。この値はタスクが現在実行中であるかどうかとは関係ありません。 {{ gecko_minversion_inline("28.0") }}</td> - </tr> - <tr> - <td><code>isRunning</code></td> - <td><code><a href="/en/boolean" title="en/boolean">boolean</a></code></td> - <td>このタスクが現在実行中であるかどうかを表します。タスクの関数内からこの値を取得した場合常に true ですが、タスクが非同期のジェネレータ関数の場合、外部のコードから取得しても true です。 {{ gecko_minversion_inline("28.0") }}</td> - </tr> - </tbody> -</table> -<h2 id="Methods" name="Methods">メソッド</h2> -<h3 id="isPending()" name="isPending()">isPending</h3> -<p>{{ obsolete_inline("28.0") }}</p> -<p>現在のタスク状態を確認します。</p> -<pre class="eval">bool isPending(); -</pre> -<h6 id="Return_value" name="Return_value">戻り値</h6> -<p>未実行の場合は <code>true</code>、そうでない場合は <code>false</code> を返します。</p> -<h3 id="start()" name="start()">start</h3> -<p>{{ obsolete_inline("28.0") }}</p> -<p>タスクを開始 (または延期) します。</p> -<pre class="eval">void start(); -</pre> -<h3 id="flush()" name="flush()">flush</h3> -<p>{{ obsolete_inline("28.0") }}</p> -<p>延期したタスクをすぐに実行します。</p> -<pre class="eval">void flush(); -</pre> -<h3 id="cancel()" name="cancel()">cancel</h3> -<p>{{ obsolete_inline("28.0") }}</p> -<p>未実行のタスクをキャンセルします。</p> -<pre class="eval">void cancel(); -</pre> -<h3 id="arm()" name="arm()">arm</h3> -<p>{{ gecko_minversion_inline("28.0") }}</p> -<p>タスク構築時に指定した遅延の後、タスクを実行する事を要求します。複数回の呼び出しは追加の遅延を引き起こしません。タスクが実行中である場合、現在の実行の終了後から遅延が開始されます。</p> -<p>タスク構築時に遅延が 0 に指定されていたとしても、タスクは常にイベントループの異なる瞬間に実行されます。イベントループ中の同じ瞬間における複数回の "arm" の呼び出しは、一回のタスクの実行となる事が保証されます。</p> -<p>設計では、このメソッドは呼び出し側に対し、次の実行がいつ終了するかを検出する手段や結果を取得する手段を提供しません。実際、これを行う事は往々にして重複処理やログ取得となります。タスクの完了時に特殊な処理やエラーログが必要であれば、タスク中で try/catch/finally 節等を用いてタスク自身が行う方が良いでしょう。"finalize" メソッドは一般的にはシャットダウン時に完了を待つ時に使われます。</p> -<pre class="eval">void arm(); -</pre> -<h3 id="disarm()" name="disarm()">disarm</h3> -<p>{{ gecko_minversion_inline("28.0") }}</p> -<p>このタスクの遅延された実行の要求をキャンセルします。ただし既に実行中のタスクはキャンセルできません。</p> -<p>このメソッドは現在実行中のタイマーを停止させます。このため、再度 "arm" メソッドを呼び出した場合、遅延はタスク構築時に指定された元の値から開始されます。</p> -<pre class="eval">void disarm(); -</pre> -<h3 id="finalize()" name="finalize()">finalize</h3> -<p>{{ gecko_minversion_inline("28.0") }}</p> -<p>保留中のタスクを即座に実行し、最後まで実行される事を保証します。これ以降のタイマーの arm は阻止されます。</p> -<ul> - <li>もしタスクが実行中で、タイマーが arm されている場合、現在のタスクの実行が完了した直後、即座にもう一度タスクが実行され、この後に返り値の promise が解決します。</li> - <li>もしタスクが実行中で、タイマーが arm されていない場合、返り値の promise は現在の実行が完了した時に解決されます。</li> - <li>もしタスクが実行中ではなく、タイマーが arm されている場合、タスクが即座に開始され、返り値の promise はこの新しい実行が完了した時に解決されます。</li> - <li>もしタスクが実行中ではなく、タイマーが arm されていない場合、このメソッドは解決済みの promise を返します。</li> -</ul> -<pre class="eval">Promise finalize(); -</pre> -<h2 id="Example" name="Example">例</h2> -<p>{{ Fx_minversion_note("28.0", "この節は Firefox 28.0 以降の DeferredTask.jsm について書かれています。") }}</p> -<p>指定された遅延の後に実行される関数または非同期のタスクを作成します。遅延が経過する前の複数回の "arm" メソッド呼び出しは結合されます。タスクは実行中に再入する事はできませんが、前回の実行が完了した後で再度実行する事はできます。</p> -<p> </p> -<p>一般的な使用例は、短期間における複数回の非同期呼び出しによってデータが変更され、その度にファイルに保存しなければいけない場合です。</p> -<pre class="eval">let saveDeferredTask = new DeferredTask(function* () { - yield OS.File.writeAtomic(...); - // 補足されない例外は報告されます -}, 2000); - -// このタスクは準備完了ですが、要求されるまで実行はされません -</pre> -<p>"arm" メソッドは、タスクを実行する内部タイマーを開始するのに使用します。複数回のタイマーの arm は追加の遅延を引き起こしません。</p> -<pre class="eval">saveDeferredTask.arm(); - -// タスクはこの時点から 2 秒後に実行されます - -yield waitOneSecond(); -saveDeferredTask.arm(); - -// タスクはこの時点から 1 秒後に実行されます -</pre> -<p>タイマーは遅延をリセットするため、もしくは単純に実行をキャンセルするために arm を解除できます。</p> -<pre class="eval">saveDeferredTask.disarm(); -saveDeferredTask.arm(); - -// タスクはこの時点から 2 秒後に実行されます -</pre> -<p>指定時間が経過し内部タイマーが発動するとタスクの実行が開始され、このタスクはこれ以降キャンセルできなくなります。しかし、タスクの実行中にタイマーを再び arm する事は可能であり、この場合タイマーが実際に開始するには前のタスクが完了する必要があります。このため、タスクの実行と実行の間の休止時間は指定された遅延以上である事が保証されます。</p> -<p>"finalize" メソッドはタスクが確実に終了する事を保証するために使用できます。このメソッドが返した promise はタスクの最後の実行が完了した時に解決されます。タスクの実行が最後である事を保証するために、このメソッドは以降再びタイマーを arm する事を拒否します。</p> -<p>"finalize" メソッドが呼び出された時点でタイマーが既に arm されていた場合、タスクは即座に実行されます。この時点でタスクが既に実行されていた場合、現在の実行が終了し次第、即座に最後の実行が始めから終わりまで再び行なわれます。もしタイマーが arm されていなかった場合、"finalize" メソッドは実行中のタスクが完了する事を保証します。</p> -<p>例えばシャットダウン中に、もしタイマーが arm されていた場合、最新バージョンのデータを用いた保留中の書き込みが処理される事を保証したいでしょう。</p> -<pre class="eval">AsyncShutdown.profileBeforeChange.addBlocker( - "Example service: shutting down", - () => saveDeferredTask.finalize() -); -</pre> -<p>しかし、どのみち保存されたデータをディスクから削除しようとしている場合、むしろ保留されている書き込みの開始を抑制した方が良いでしょう。ただし、削除しようとしているファイルが使用中ではなくなるように、現在処理中の書き込みが終了する事は保証した上で。</p> -<pre class="eval">saveDeferredTask.disarm(); -saveDeferredTask.finalize().then(() => OS.File.remove(...)) - .then(null, Components.utils.reportError); -</pre> diff --git a/files/ja/mozilla/javascript_code_modules/downloads.jsm/index.html b/files/ja/mozilla/javascript_code_modules/downloads.jsm/index.html deleted file mode 100644 index f01fc476ac..0000000000 --- a/files/ja/mozilla/javascript_code_modules/downloads.jsm/index.html +++ /dev/null @@ -1,297 +0,0 @@ ---- -title: Downloads.jsm -slug: Mozilla/JavaScript_code_modules/Downloads.jsm -translation_of: Mozilla/JavaScript_code_modules/Downloads.jsm ---- -<p>{{ gecko_minversion_header("26") }}</p> - -<p>Downloads.jsmはダウンロードに関する機能を提供するJavaScriptモジュールです。新規にダウンロードを開始したり、ダウンロード中に制御を行ったり、ダウンロードに関連する設定を呼び出したりできます。これを使用するにはまずモジュールをインポートする必要があります。</p> - -<pre>Components.utils.import("resource://gre/modules/Downloads.jsm"); -</pre> - -<h2 id="メソッドの概要">メソッドの概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download">Download</a>> <a href="#createDownload()">createDownload</a>(<a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object" title="/en-US/docs/JavaScript/Reference/Global_Objects/Object">Object</a> aProperties);</code></td> - </tr> - <tr> - <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#fetch()">fetch</a>(aSource, aTarget, [optional] <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object" title="/en-US/docs/JavaScript/Reference/Global_Objects/Object">Object</a> </code><code>aOptions);</code></td> - </tr> - <tr> - <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList">DownloadList</a>> <a href="#getList()">getList</a>(aType);</code></td> - </tr> - <tr> - <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary">DownloadSummary</a>> <a href="#getSummary()">getSummary</a>(aType);</code></td> - </tr> - </tbody> -</table> - -<h2 id="定数">定数</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>PUBLIC</code></td> - <td>Work on downloads that were not started from a private browsing window.</td> - </tr> - <tr> - <td><code>PRIVATE</code></td> - <td>Work on downloads that were started from a private browsing window.</td> - </tr> - <tr> - <td><code>ALL</code></td> - <td>Work on both <code>Downloads.PRIVATE</code> and <code>Downloads.PUBLIC</code> downloads.</td> - </tr> - </tbody> -</table> - -<h2 id="プロパティ">プロパティ</h2> - -<table class="standard-table" style="width: auto;"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>Error</code> <span class="inlineIndicator readOnly readOnlyInline" title="This value may not be changed.">Read only </span></td> - <td><a href="/en-US/docs/JavaScript/Guide/Working_with_Objects#Using_a_constructor_function" title="/en-US/docs/JavaScript/Guide/Working_with_Objects#Using_a_constructor_function"><code>Constructor</code></a></td> - <td>Constructor for a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadError" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadError"><code>DownloadError</code></a> object. When you catch an exception during a download, you can use this to verify if <code>ex instanceof Downloads.Error</code>, before reading the exception properties with the error details. Example (using <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm"><code>Task.jsm</code></a>): - <pre class="brush: js"> -try { - yield Downloads.fetch(sourceUri, targetFile); -} catch (ex if ex instanceof Downloads.Error && ex.becauseTargetFailed) { - console.log("Unable to write to the target file, ignoring the error."); -}</pre> - </td> - </tr> - </tbody> -</table> - -<h2 id="メソッド">メソッド</h2> - -<h3 id="createDownload()">createDownload()</h3> - -<p>新しく<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a>オブジェクトを生成します。</p> - -<pre>Promise<Download> createDownload( - Object aProperties -); -</pre> - -<h5 id="パラメーター">パラメーター</h5> - -<dl> - <dt><code>aProperties</code></dt> - <dd>Provides the initial properties for the newly created download. This matches the serializable representation of a <code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download">Download</a></code> object. Some of the most common properties in this object include: - <ul> - <li><code>source</code>: String containing the URI for the download source. Alternatively, may be an {{Interface("nsIURI")}}, a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSource" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSource"><code>DownloadSource</code></a> object, or an object with the following properties: - <ul> - <li><code>url</code>: String containing the URI for the download source.</li> - <li><code>isPrivate</code>: {{optional_inline()}} Indicates whether the download originated from a private window. If omitted, the download is public.</li> - <li><code>referrer</code>: {{optional_inline()}} String containing the referrer URI of the download source. Can be omitted or <code>null</code> if no referrer should be sent or the download source is not HTTP.</li> - </ul> - </li> - <li><code>target</code>: String containing the path of the target file. Alternatively, may be an {{Interface("nsIFile")}}, a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget"><code>DownloadTarget</code></a> object, or an object with the following properties: - <ul> - <li><code>path</code>: String containing the path of the target file.</li> - </ul> - </li> - <li><code>saver</code>: {{optional_inline()}} String representing the class of the download operation. If omitted, defaults to "copy". Alternatively, may be the serializable representation of a <code>DownloadSaver</code> object.</li> - </ul> - </dd> -</dl> - -<h5 id="Promise_resolves_to">Promise resolves to</h5> - -<p>新しく生成された<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a>オブジェクト.</p> - -<h3 id="fetch()">fetch()</h3> - -<p>ネットワーク上のデータをローカルにダウンロードします。</p> - -<p>この関数はダウンロードをキャンセルしたり再開するインターフェイスを提供していません。その場合は<a href="#createDownload()" title="#createDownload()"><code>createDownload()</code></a>関数を利用して<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a>オブジェクトを参照してください。</p> - -<p>ダウンロードは再開されないため、たとえダウンロードが失敗しても部分的にダウンロードデータが保存されることはありません。</p> - -<pre>Promise fetch( - aSource, - aTarget, - Object aOptions -); -</pre> - -<h5 id="パラメーター_2">パラメーター</h5> - -<dl> - <dt><code>aSource</code></dt> - <dd>String containing the URI for the download source. Alternatively, may be an {{Interface("nsIURI")}} or a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSource" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSource"><code>DownloadSource</code></a> object.</dd> - <dt><code>aTarget</code></dt> - <dd>String containing the path of the target file. Alternatively, may be an {{Interface("nsIFile")}} or a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget"><code>DownloadTarget</code></a> object.</dd> - <dt><code>aOptions</code> {{optional_inline()}}</dt> - <dd>An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields: - <ul> - <li><code>isPrivate</code>: {{optional_inline()}} Indicates whether the download originated from a private window. If omitted, the download is public.</li> - </ul> - </dd> -</dl> - -<h5 id="Promise_resolves_to_2">Promise resolves to</h5> - -<p><code>undefined</code> when the download has finished successfully and you can access the target file.</p> - -<h5 id="Promise_can_be_rejected_with">Promise can be rejected with</h5> - -<p><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadError" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadError"><code>DownloadError</code></a> if the download failed.</p> - -<h3 id="getList()">getList()</h3> - -<p>Retrieves the specified type of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList"><code>DownloadList</code></a> object. There is one download list for each type, and this method always retrieves a reference to the same download list when called with the same argument.</p> - -<p>この関数を呼び出すと、ダウンロードリストが(すでにロードされている場合をのぞいて)リロードされます。</p> - -<pre>Promise<DownloadList> getList(aType); -</pre> - -<h5 id="パラメーター_3">パラメーター</h5> - -<dl> - <dt><code>aType</code></dt> - <dd>This can be <code>Downloads.PUBLIC</code>, <code>Downloads.PRIVATE</code>, or <code>Downloads.ALL</code>. Downloads added to the <code>Downloads.PUBLIC</code> and <code>Downloads.PRIVATE</code> lists are reflected in the <code>Downloads.ALL</code> list, and downloads added to the <code>Downloads.ALL</code> list are also added to either the <code>Downloads.PUBLIC</code> or the <code>Downloads.PRIVATE</code> list based on their properties.</dd> -</dl> - -<h5 id="Promise_resolves_to_3">Promise resolves to</h5> - -<p>The requested <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList"><code>DownloadList</code></a> object.</p> - -<h3 id="getSummary()">getSummary()</h3> - -<p>Retrieves the specified type of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary"><code>DownloadSummary</code></a> object. There is one download summary for each type, and this method always retrieves a reference to the same download summary when called with the same argument.</p> - -<p>Calling this function does not cause the list of public downloads to be reloaded from the previous session. The summary will behave as if no downloads are present until the <a href="#getList()" title="#getList()"><code>getList()</code></a> method is called.</p> - -<pre>Promise<DownloadSummary> getSummary(aType); -</pre> - -<h5 id="パラメーター_4">パラメーター</h5> - -<dl> - <dt><code>aType</code></dt> - <dd>This can be <code>Downloads.PUBLIC</code>, <code>Downloads.PRIVATE</code>, or <code>Downloads.ALL</code>.</dd> -</dl> - -<h5 id="Promise_resolves_to_4">Promise resolves to</h5> - -<p>The requested <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary"><code>DownloadSummary</code></a> object.</p> - -<h2 id="例">例</h2> - -<h3 id="ローカルにダウンロードする">ローカルにダウンロードする</h3> - -<p>この例では、HTMLファイルをダウンロードしています。ダウンロードの進捗状況を表示したり、エラー処理は行っていません。</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/Downloads.jsm"); -Components.utils.import("resource://gre/modules/osfile.jsm") -Components.utils.import("resource://gre/modules/Task.jsm"); - -Task.spawn(function () { - - yield Downloads.fetch("http://www.mozilla.org/", - OS.Path.join(OS.Constants.Path.tmpDir, - "example-download.html")); - - console.log("example-download.html has been downloaded."); - -}).then(null, Components.utils.reportError); -</pre> - -<h3 id="ダウンロードの監視">ダウンロードの監視</h3> - -<p>この例では、グローバルなダウンロードリストに変化が発生するたびに、メッセージを記録しています。</p> - -<p>To demonstrate the logging, a new download is started while a message box is being shown. The download is stopped and removed from the list when the message box is closed, regardless of whether it has been completed or not.</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/Downloads.jsm"); -Components.utils.import("resource://gre/modules/osfile.jsm") -Components.utils.import("resource://gre/modules/Task.jsm"); - -Task.spawn(function () { - - let list = yield Downloads.getList(Downloads.ALL); - - let view = { - onDownloadAdded: download => console.log("Added", download), - onDownloadChanged: download => console.log("Changed", download), - onDownloadRemoved: download => console.log("Removed", download) - }; - - yield list.addView(view); - try { - let download = yield Downloads.createDownload({ - source: "http://www.mozilla.org/", - target: OS.Path.join(OS.Constants.Path.tmpDir, "example-download.html"), - }); - list.add(download); - try { - download.start(); - alert("Now monitoring all downloads. Close the message to stop."); - } finally { - yield list.remove(download); - yield download.finalize(true); - } - } finally { - yield list.removeView(view); - } - -}).then(null, Components.utils.reportError); -</pre> - -<h2 id="Conversion_from_nsIDownloadManager">Conversion from nsIDownloadManager</h2> - -<p>Starting in Firefox for Desktop version 26, the {{interface("nsIDownloadManager")}} and {{interface("nsIDownload")}} interfaces are not available anymore.</p> - -<p>The new module works differently from the old component. In general, you should be aware of the following highlights:</p> - -<ul> - <li>There is no difference between active downloads and finished downloads. The <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a> object can be used without requiring direct database access.</li> - <li>Observer notifications (for example, <code>"dl-done"</code>) and download listeners are replaced by views on the <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList"><code>DownloadList</code></a> object returned by the <a href="#getList()" title="#getList()"><code>getList()</code></a> method.</li> - <li>Object identity replaces the use of numeric identifiers. You can use <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a> objects as keys in a <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set"><code>Set</code></a> or <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map"><code>Map</code></a> to associate your own state to them for the session.</li> - <li>There is no separate count of active downloads. If a count is needed, it should be maintained using a view on a <code>DownloadList</code>.</li> - <li>The <code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download#start()" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download#start()">start()</a></code> method can be used to restart a failed download. Handling of downloads that have been paused is also different.</li> -</ul> - -<p>While some of the legacy methods and properties have an equivalent in <code>Downloads.jsm</code>, there might be subtle differences in behavior. For example, the properties that handle progress are now more detailed and don't use the special value <code>-1</code> anymore. You may see the documentation of the new methods and properties for details.</p> - -<h2 id="Using_it_in_a_XUL_app">Using it in a XUL app</h2> - -<p>In a XUL standalone application (running with XULRunner or <code>firefox --app</code>), you have to do additionnal things in order to use the new download manager. By default it is not enabled. It will be enabled when the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=851471">bug 851471</a> will be closed. If you don't activate it, you could use Downloads.jsm, but your view will not be called by the external helper app service (when a user click on a file to download, in a web page). To enable the new download manager :</p> - -<ul> - <li>First you have to set the pref {{pref("browser.download.useJSTransfer")}} to <code>true</code>.</li> - <li>Then you should declare the new {{interface("nsITransfer")}} object during the startup of your app.</li> -</ul> - -<pre> Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar) - .registerFactory(Components.ID("{1b4c85df-cbdd-4bb6-b04e-613caece083c}"), "", "@mozilla.org/transfer;1", null); - -</pre> - -<p> </p> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a class="internal" href="/en-US/docs/JavaScript_code_modules/Using" title="en-US/docs/JavaScript code modules/Using JavaScript code modules">Using JavaScript code modules</a></li> - <li><a class="internal" href="/en-US/docs/Mozilla/JavaScript_code_modules" title="en-US/docs/Mozilla/JavaScript code modules">JavaScript code modules</a></li> - <li><a class="internal" href="/en-US/docs/Components.utils.import" title="en-US/docs/Components.utils.import"><code>Components.utils.import</code></a></li> -</ul> - -<div id="xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd"> </div> diff --git a/files/ja/mozilla/javascript_code_modules/index.html b/files/ja/mozilla/javascript_code_modules/index.html deleted file mode 100644 index dfded8747d..0000000000 --- a/files/ja/mozilla/javascript_code_modules/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: JavaScript コードモジュール -slug: Mozilla/JavaScript_code_modules -tags: - - Add-ons - - Extensions - - JavaScript - - Modules - - XPCOM - - 要更新 -translation_of: Mozilla/JavaScript_code_modules ---- -<div>{{ gecko_minversion_header("1.9") }}</div> - -<p>JavaScript コードモジュールは 複数の特権 JavaScript スコープにおいてコードを共有することを目的として導入されました。具体的には、Firefox 自身または拡張機能でのコードの重複を避けるために使用することができます。</p> - -<div class="note"> -<p>These are <em>not</em> the same thing as standard JavaScript modules. See {{jsxref("Statements/export", "export")}} and {{jsxref("Statements/import", "import")}} to learn more about how to use standard modules.</p> -</div> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 id="一般的な事項">一般的な事項</h2> - - <dl> - <dt><a class="internal" href="/ja/docs/JavaScript_code_modules/Using" title="./Using">Using JavaScript code modules</a></dt> - <dd>JavaScript コードモジュールの使用方法についてのイントロダクション。</dd> - <dt><a class="internal" href="/ja/Components.utils.import" title="ja/Components.utils.import">Component.utils.import</a></dt> - <dd>JavaScript コードモジュールのインポートの方法。</dd> - <dt><a class="internal" href="/ja/Components.utils.unload" title="ja/Components.utils.unload">Component.utils.unload</a> {{ gecko_minversion_inline("7.0") }}</dt> - <dd>JavaScript コードモジュールのアンロード方法。</dd> - <dt><a href="/ja/Code_snippets/Modules" title="ja/Code_snippets/Modules">Code snippets: Modules</a></dt> - <dd>コードモジュールの使い方の例。</dd> - <dt><a class="external" href="http://wiki.mozilla.org/Labs/JS_Modules">Mozilla Labs JS Modules</a></dt> - <dd>このページには、拡張機能の開発者が彼らのコードで使用できる JavaScript モジュール、ならびにダウンロードリンクとドキュメントの一覧が記載されています。</dd> - </dl> - </td> - <td> - <h2 id="標準コードモジュール">標準コードモジュール</h2> - - <dl> - </dl> - - <dl> - <dt><a href="/ja/Addons/Add-on_Manager" title="ja/Addons/Add-on_Manager">AddonManager.jsm</a> {{ gecko_minversion_inline("2.0") }}</dt> - <dd>アドオンのインストール、管理、アンインストールのためのインターフェイスです。</dd> - <dt><a href="/ja/Addons/Add-on_Repository" title="ja/Addons/Add-on Repository">AddonRepository.jsm</a> {{ gecko_minversion_inline("2.0") }}</dt> - <dd>アドオンリポジトリの検索を許容します。</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Assert.jsm" title="./Assert.jsm">Assert.jsm</a> {{gecko_minversion_inline("28.0")}}</dt> - <dd>Implements the <a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.1" title="http://wiki.commonjs.org/wiki/Unit_Testing/1.1">CommonJS Unit Testing specification version 1.1</a>, which provides a basic standardized interface for performing in-code logical assertions with optional, customizable error reporting.</dd> - <dt><a href="/ja/docs/JavaScript_code_modules/ctypes.jsm" title="./ctypes.jsm">ctypes.jsm</a> {{ fx_minversion_inline("3.6") }}</dt> - <dd>XPCOM コンポーネントの開発をせずに JavaScript のコードからネイティブライブラリを呼び出すためのインターフェイスを提供します。</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm" title="./ctypes.jsm">CustomizableUI.jsm</a> {{fx_minversion_inline("29")}}</dt> - <dd>Allows you to interact with customizable buttons and items in Firefox's main window UI.</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm" title="./DeferredTask.jsm">DeferredTask.jsm</a> {{gecko_minversion_inline("18.0")}}</dt> - <dd>遅延の後にタスクを実行します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Dict.jsm" title="./Dict.jsm">Dict.jsm</a> {{gecko_minversion_inline("5.0")}}</dt> - <dd>キー・バリュー型の辞書の API を提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/DownloadLastDir.jsm" title="ja/JavaScript_code_modules/DownloadLastDir.jsm">DownloadLastDir.jsm</a> {{ gecko_minversion_inline("2.0") }}</dt> - <dd>最後にダウンロードが行われたディレクトリへのパスを提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Downloads.jsm" title="./Downloads.jsm">Downloads.jsm</a> {{gecko_minversion_inline("23.0")}}</dt> - <dd>プラットフォームのダウンロード性能に影響するシングルエントリポイントを提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/FileUtils.jsm" title="./FileUtils.jsm">FileUtils.jsm</a> {{gecko_minversion_inline("1.9.2")}}</dt> - <dd>ファイルを取り扱うヘルパーを提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Geometry.jsm" title="./Geometry.jsm">Geometry.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>座標点および矩形の基本的な幾何学的な操作を行うルーチンを提供します。</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Http.jsm" title="./Geometry.jsm">HTTP.jsm</a> {{gecko_minversion_inline("25.0")}}</dt> - <dd>A wrapper for XMLHttpRequest that provides convenient and simplified API for dealing with HTTP requests.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a> {{fx_minversion_inline("17.0")}}</dt> - <dd>Abstracts the js-ctypes to provide an interface that allows JavaScript code to call code running in native JVMs.</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/ISO8601DateUtils.jsm" title="./ISO8601DateUtils.jsm">ISO8601DateUtils.jsm</a></dt> - <dd>JavaScript <a href="/ja/docs/JavaScript/Reference/Global_Objects/Date" title="JavaScript/Reference/Global_Objects/Date"><code>Date</code></a> オブジェクトと ISO 8601 date 文字列を変換するルーチンを提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Log.jsm">Log.jsm</a> (以前の log4moz) {{gecko_minversion_inline("27.0")}}</dt> - <dd><a href="/ja/docs/Tools/Browser_Console">Browser Console</a> やディスク上のファイルなど、様々なエンドポイントへのログメッセージを記録するための <a href="https://en.wikipedia.org/wiki/Log4j">log4j</a> スタイルの API を提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/NetUtil.jsm" title="./NetUtil.jsm">NetUtil.jsm</a></dt> - <dd>データを入力ストリームから出力ストリームに非同期で簡単にコピーする機能を含む、役に立つネットワークユーティリティ関数を提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/openLocationLastURL.jsm" title="./openLocationLastURL.jsm">openLocationLastURL.jsm</a> {{gecko_minversion_inline("1.9.1.4")}}</dt> - <dd>ファイルメニューの "URL を開く" を用いて開かれた最後の URL にアクセスする手段を提供します。</dd> - <dt><a href="/ja/docs/JavaScript_OS.File" title="/ja/docs/JavaScript_OS.File">osfile.jsm</a> {{gecko_minversion_inline("16.0")}}</dt> - <dd>JavaScript モジュールの <code>OS.File</code> にはファイルを操作するためのプリミティブが含まれます。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm" title="./PerfMeasurement.jsm">PerfMeasurement.jsm</a> {{fx_minversion_inline("4.0")}}</dt> - <dd>低レベルのハードウェアアクセスおよび OS パフォーマンス測定ツールを提供します。</dd> - <dt><a href="/ja/docs/Localization_and_Plurals" title="Localization and Plurals">PluralForm.jsm</a></dt> - <dd>現在のロケールにおける正確な複数形を取得する簡単な方法と特定の複数形規則に沿ったローカライズ手段を提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/PopupNotifications.jsm" title="./PopupNotifications.jsm">PopupNotifications.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>ユーザーに対してモーダルでない通知を表示する簡単な手段を提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Promise.jsm" title="./Promise.jsm">Promise.jsm</a> {{gecko_minversion_inline("25.0")}}</dt> - <dd>2013 年 4 月に提案された <a class="external" href="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md" title="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md">Promises/A+</a> を実装します。</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/PromiseWorker.jsm">PromiseWorker.jsm</a> {{gecko_minversion_inline("20.0")}}</dt> - <dd>A version of {{domxref("ChromeWorker")}} which uses Promises to return the worker's result instead of using an event to do so.</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Services.jsm" title="./Services.jsm">Services.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> - <dd>よく使われるサービスへのアクセスを便利に取得できるゲッターを提供します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/source-editor.jsm" title="./source-editor.jsm">source-editor.jsm</a> {{fx_minversion_inline("11.0")}}</dt> - <dd>ソースエディタはスタイルエディタなどの開発ツールで使用されます。このインターフェイスはエディタを実装し、使用者との間で相互に作用します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Sqlite.jsm" title="./Sqlite.jsm">Sqlite.jsm</a> {{gecko_minversion_inline("20.0")}}</dt> - <dd>{{ interface("mozIStorage") }}/SQLite に対する Promise ベースの API です。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="./Task.jsm">Task.jsm</a> {{gecko_minversion_inline("17.0")}}</dt> - <dd>JavaScript の <code>yield</code> 演算子の力を借りてシーケンシャルで非同期な操作を単純化する <a class="external" href="https://taskjs.org/">Task.js</a> のサブセットを実装します。</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Timer.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Timer.jsm </a>{{gecko_minversion_inline("22.0")}}</dt> - <dd><code>window.setTimeout</code> の純粋な JS 実装です。</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Webapps.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Webapps.jsm </a>{{gecko_minversion_inline("??.0")}}</dt> - <dd>Provides an interface to manage Open Web Apps.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/WebRequest.jsm">WebRequest.jsm</a> {{gecko_minversion_inline("41.0")}}</dt> - <dd>Provides an API to add event listeners for the various stages of making an HTTP request. The event listener receives detailed information about the request, and can modify or cancel the request.</dd> - <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm" title="./XPCOMUtils.jsm">XPCOMUtils.jsm</a></dt> - <dd>JS コンポーネントローダーによって読み込まれる JavaScript コンポーネントのためのユーティリティを含みます。</dd> - </dl> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/javascript_code_modules/perfmeasurement.jsm/index.html b/files/ja/mozilla/javascript_code_modules/perfmeasurement.jsm/index.html deleted file mode 100644 index 175d7ad24c..0000000000 --- a/files/ja/mozilla/javascript_code_modules/perfmeasurement.jsm/index.html +++ /dev/null @@ -1,302 +0,0 @@ ---- -title: PerfMeasurement.jsm -slug: Mozilla/JavaScript_code_modules/PerfMeasurement.jsm -translation_of: Mozilla/JavaScript_code_modules/PerfMeasurement.jsm ---- -<p>{{ gecko_minversion_header("2.0") }}</p> - -<p><code>PerfMeasurement.jsm</code> JavaScript コードモジュールを使用すると、コードの詳細なパフォーマンス測定値を取得できます。</p> - -<p>{{ note("The <code>PerfMeasurement.jsm</code> JavaScript code module can only be used from chrome -- that is, from within the application itself or an add-on.") }}</p> - -<p>Before you can use this module, you need to import it into your scope:</p> - -<pre><span class="plain">Components.utils.import("resource://gre/modules/PerfMeasurement.jsm")</span></pre> - -<p>See <a href="/en/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a> for details on how to use this API.</p> - -<div class="note"><strong>Note:</strong> At present, <code>PerfMeasurement.jsm</code> is only functional on Linux, but it is planned to add support for Windows ({{ Bug(583322) }}) and OSX ({{ Bug(583323) }}) as well, and we welcome patches for other operating systems.</div> - -<h2 id="Method_overview">Method overview</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>static bool <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#canMeasureSomething()" title="en/JavaScript code modules/PerfMeasurement.jsm#canMeasureSomething()">canMeasureSomething</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#reset()" title="en/JavaScript code modules/PerfMeasurement.jsm#reset()">reset</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#start()" title="en/JavaScript code modules/PerfMeasurement.jsm#start()">start</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#stop()" title="en/JavaScript code modules/PerfMeasurement.jsm#stop()">stop</a>();</code></td> - </tr> - </tbody> -</table> - -<h2 id="Member_fields">Member fields</h2> - -<h3 id="Recorded_data_variables">Recorded data variables</h3> - -<p>These variables provide access to the recorded data. Any measurable event that was not being recorded has a value of -1 (that is, 0xFFFFFFFFFFFFFFFF).</p> - -<div class="note"><strong>Note:</strong> These values are all zeroed (or set to -1, for events not being measured) when you initialize the <code>PerfMeasurement</code> object, then they are not zeroed again unless you explicitly call the {{ manch("reset") }} method. This lets you accumulate measurements over multiple passes through code that you want to analyze.</div> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Variable</td> - <td class="header">Type</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>cpu_cycles</code></td> - <td><code>uint64</code></td> - <td>The number of CPU cycles elapsed.</td> - </tr> - <tr> - <td><code>instructions</code></td> - <td><code>uint64</code></td> - <td>The number of instructions executed.</td> - </tr> - <tr> - <td><code>cache_references</code></td> - <td><code>uint64</code></td> - <td>The number of memory accesses that occurred.</td> - </tr> - <tr> - <td><code>cache_misses</code></td> - <td><code>uint64</code></td> - <td>The number of times memory accesses missed the cache.</td> - </tr> - <tr> - <td><code>branch_instructions</code></td> - <td><code>uint64</code></td> - <td>The number of branch instructions executed.</td> - </tr> - <tr> - <td><code>branch_misses</code></td> - <td><code>uint64</code></td> - <td>The number of times branch prediction guessed wrong.</td> - </tr> - <tr> - <td><code>bus_cycles</code></td> - <td><code>uint64</code></td> - <td>The number of memory bus cycles that elapsed.</td> - </tr> - <tr> - <td><code>page_faults</code></td> - <td><code>uint64</code></td> - <td>The number of page exceptions the OS handled.</td> - </tr> - <tr> - <td><code>major_page_faults</code></td> - <td><code>uint64</code></td> - <td>The number of times page faults required disk access.</td> - </tr> - <tr> - <td><code>context_switches</code></td> - <td><code>uint64</code></td> - <td>The number of context switches that occurred involving the thread being profiled.</td> - </tr> - <tr> - <td><code>cpu_migrations</code></td> - <td><code>uint64</code></td> - <td>The number of times the profiled thread migrated from one CPU core to another.</td> - </tr> - </tbody> -</table> - -<h3 id="Event_types_measured_constant">Event types measured constant</h3> - -<p>The <code>eventsMeasured</code> constant provides a mask indicating which event types were recorded.</p> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Variable</td> - <td class="header">Type</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>eventsMeasured</code></td> - <td><code>EventMask</code></td> - <td>A bit mask of the <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#Event_mask_constants" title="en/JavaScript code modules/PerfMeasurement.jsm#Event mask constants">event types</a> recorded; this can differ from the events requested if the platform doesn't support all of the event types you specified when creating the <code>PerfMeasurement</code> object.</td> - </tr> - </tbody> -</table> - -<h2 id="Constants">Constants</h2> - -<h3 id="Event_mask_constants">Event mask constants</h3> - -<p>These constants are used to construct the mask indicating which events you want to monitor.</p> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Constant</td> - <td class="header">Value</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>CPU_CYCLES</code></td> - <td><code>0x00000001</code></td> - <td>Measure CPU cycles elapsed.</td> - </tr> - <tr> - <td><code>INSTRUCTIONS</code></td> - <td><code>0x00000002</code></td> - <td>Measure the number of instructions executed.</td> - </tr> - <tr> - <td><code>CACHE_REFERENCES</code></td> - <td><code>0x00000004</code></td> - <td>Measure the number of cache references.</td> - </tr> - <tr> - <td><code>CACHE_MISSES</code></td> - <td><code>0x00000008</code></td> - <td>Measure the number of cache misses.</td> - </tr> - <tr> - <td><code>BRANCH_INSTRUCTIONS</code></td> - <td><code>0x00000010</code></td> - <td>Measure the number of branch instructions executed.</td> - </tr> - <tr> - <td><code>BRANCH_MISSES</code></td> - <td><code>0x00000020</code></td> - <td>Measure the number of times branch prediction guesses wrong.</td> - </tr> - <tr> - <td><code>BUS_CYCLES</code></td> - <td><code>0x00000040</code></td> - <td>Measure the number of bus cycles elapsed.</td> - </tr> - <tr> - <td><code>PAGE_FAULTS</code></td> - <td><code>0x00000080</code></td> - <td>Measure the number of page faults that occurred.</td> - </tr> - <tr> - <td><code>MAJOR_PAGE_FAULTS</code></td> - <td><code>0x00000100</code></td> - <td>Measure the number of major page faults that occurred.</td> - </tr> - <tr> - <td><code>CONTEXT_SWITCHES</code></td> - <td><code>0x00000200</code></td> - <td>Measure the number of context switches that occurred.</td> - </tr> - <tr> - <td><code>CPU_MIGRATIONS</code></td> - <td><code>0x00000400</code></td> - <td>Measure the number of context switches that occurred.</td> - </tr> - <tr> - <td><code>ALL</code></td> - <td><code>0x000007FF</code></td> - <td>Measure all available events.</td> - </tr> - </tbody> -</table> - -<h3 id="Number_of_available_event_types">Number of available event types</h3> - -<p>The <code>NUM_MEASURABLE_EVENTS</code> constant tells you how many types of events can be measured.</p> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Constant</td> - <td class="header">Value</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>NUM_MEASURABLE_EVENTS</code></td> - <td><code>11</code></td> - <td>The number of types of events that can be measured.</td> - </tr> - </tbody> -</table> - -<h2 id="Constructor">Constructor</h2> - -<p>Creates a new <code>PerfMeasurement</code> object, configured to record the specified event types.</p> - -<pre>PerfMeasurement( - EventMask toMeasure -); -</pre> - -<h6 id="Parameters">Parameters</h6> - -<dl> - <dt><code>toMeasure</code></dt> - <dd>A mask of all of the event types you want to record; see <a href="/en/JavaScript_code_modules/PerfMeasurement#Event_mask_constants" title="en/JavaScript code modules/PerfMeasurement#Event mask constants">Event mask constants</a> for a list of values. OR together all the event types you want to record, and pass that value here. Pass <code>PerfMeasurement.ALL</code> to record all event types.</dd> -</dl> - -<h6 id="Return_value">Return value</h6> - -<p>A new <code>PerfMeasurement</code> object configured to record the specified event types.</p> - -<h2 id="Methods">Methods</h2> - -<h3 id="canMeasureSomething()">canMeasureSomething()</h3> - -<p>Indicates whether or not the platform on which your code is running supports this code module.</p> - -<pre>static bool canMeasureSomething(); -</pre> - -<h6 id="Parameters_2">Parameters</h6> - -<p>None.</p> - -<h6 id="Return_value_2">Return value</h6> - -<p>If even one of the <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#Event_mask_constants" title="en/JavaScript code modules/PerfMeasurement.jsm#Event mask constants">event types</a> can be recorded, this will return <code>true</code>. Otherwise, it returns <code>false</code>.</p> - -<h3 id="reset()">reset()</h3> - -<p>Resets all the enabled counters to zero.</p> - -<pre>void reset(); -</pre> - -<h6 id="Parameters_3">Parameters</h6> - -<p>None.</p> - -<h3 id="start()">start()</h3> - -<p>Starts measuring the performance indicators that were specified when the <code>PerfMeasurement</code> object was created.</p> - -<pre>void start(); -</pre> - -<h6 id="Parameters_4">Parameters</h6> - -<p>None.</p> - -<h3 id="stop()">stop()</h3> - -<p>Stops measuring performance data. For each enabled counter, the number of measured events of that type that occurred are added to the appropriate visible variable.</p> - -<pre>void stop(); -</pre> - -<h6 id="Parameters_5">Parameters</h6> - -<p>None.</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a></li> - <li><a href="/en/Performance/JS::PerfMeasurement" title="en/Performance/JS::PerfMeasurement">JS::PerfMeasurement</a></li> - <li><a href="/en/Performance" title="en/Performance">Performance</a></li> -</ul> diff --git a/files/ja/mozilla/javascript_code_modules/popupnotifications.jsm/index.html b/files/ja/mozilla/javascript_code_modules/popupnotifications.jsm/index.html deleted file mode 100644 index 6443acf9b9..0000000000 --- a/files/ja/mozilla/javascript_code_modules/popupnotifications.jsm/index.html +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: PopupNotifications.jsm -slug: Mozilla/JavaScript_code_modules/PopupNotifications.jsm -tags: - - Modules - - Notifications -translation_of: Mozilla/JavaScript_code_modules/PopupNotifications.jsm ---- -<p>{{ gecko_minversion_header("2.0") }}</p> - -<p><code>PopupNotifications.jsm</code> JavaScript コードモジュールはポップアップ通知ボックスサービスを提供します。このサービスを使うことにより、例えば、位置情報に関連する通知の表示といった機能を実現できます。</p> - -<p><img alt="popupnotification.png" class="default internal" src="/@api/deki/files/4905/=popupnotification.png"></p> - -<p>このサービスを使用するためには、最初に、あなたの JavaScript スコープへとコードモジュールをインポートする必要があります:</p> - -<pre>Components.utils.import("resource://gre/modules/PopupNotifications.jsm"); -</pre> - -<p>モジュールを一度インポートすれば、エクスポートされた <code>PopupNotifications</code> オブジェクトを使用できるようになります。このオブジェクトは、ポップアップ通知パネルの作成と表示のためのメソッドを提供します。</p> - -<div class="note"><strong>註:</strong>このコードモジュールは Firefox の chrome ウィンドウによってインポートされます。そのため、多くの拡張機能では改めてインポートする必要はありません。</div> - -<h2 id="メソッド概要">メソッド概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#locationChange()" title="ja/JavaScript code modules/PopupNotifications.jsm#locationChange()">locationChange</a>();</code></td> - </tr> - <tr> - <td><code>Notification <a href="/en/JavaScript_code_modules/PopupNotifications.jsm#getNotification()" title="en/JavaScript code modules/PopupNotifications.jsm#getNotification()">getNotification</a>(id, browser);</code></td> - </tr> - <tr> - <td><code>void <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#remove()" title="ja/JavaScript code modules/PopupNotifications.jsm#remove()">remove</a>(notification);</code></td> - </tr> - <tr> - <td><code>Notification <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#show()" title="ja/JavaScript code modules/PopupNotifications.jsm#show()">show</a>(browser, id, message, anchorID, mainAction, secondaryActions, options);</code></td> - </tr> - </tbody> -</table> - -<h2 id="プロパティ">プロパティ</h2> - -<table class="standard-table" style="width: auto;"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>isPanelOpen</code></td> - <td><code>Boolean</code></td> - <td>通知パネルが現在表示されているのであれば <code>true</code> を、そうでない場合は <code>false</code> を返します。</td> - </tr> - </tbody> -</table> - -<h2 id="メソッド">メソッド</h2> - -<h3 id="locationChange()">locationChange()</h3> - -<p>使用者 (consumer)は、ポップアップ通知モジュールに現在のブラウザのロケーションが変更されたことを知らせるために、このメソッドを呼び出します。これにより通知サービスは、必要に応じて、アクティブな通知を更新することができます。</p> - -<div class="note"><strong>註:</strong>Firefox のウィンドウ中で PopupNotifications オブジェクトを使用している場合、あなたは、このメソッドを呼び出す必要はありません。Firefox のコードが自動でうまく取り扱ってくれます。</div> - -<pre>void locationChange(); -</pre> - -<h6 id="引数">引数</h6> - -<p>無し。</p> - -<h3 id="getNotification()">getNotification()</h3> - -<p>指定した <code>browser</code> 要素および ID に関連づけられている <code>Notification</code> オブジェクトを取得します。</p> - -<pre><code>Notification</code> getNotification( - string id - XULElement browser -); -</pre> - -<h6 id="引数_2">引数</h6> - -<dl> - <dt><code>id</code></dt> - <dd>検索に使用する <code>Notification</code> ID。</dd> - <dt><code>browser</code></dt> - <dd><code>Notification</code> オブジェクトを検索する XUL {{ XULElem("browser") }} 要素。 <code>null</code> である場合、現在選択されている {{ XULElem("browser") }} に関連づけられている<code> Notification</code> オブジェクトが検索されます。</dd> -</dl> - -<h6 id="返り値">返り値</h6> - -<p>与えられた引数に対応する <code>Notification</code> オブジェクト。対応する<code> Notification </code>オブジェクトが無い場合は <code>null</code> を返します。</p> - -<h3 id="remove()">remove()</h3> - -<p>指定された通知を削除します。</p> - -<pre>void remove( - Notification notification -); -</pre> - -<h6 id="引数_3">引数</h6> - -<dl> - <dt><code>notification</code></dt> - <dd>削除する通知を表す <code>Notification</code> オブジェクト。</dd> -</dl> - -<h3 id="show()">show()</h3> - -<p>新しいポップアップ通知を追加し、ユーザーへと表示します。</p> - -<pre>Notification show( - browser, - id, - message, - anchorID, - mainAction, - secondaryActions, - options -); -</pre> - -<h6 id="引数_4">引数</h6> - -<dl> - <dt><code>browser</code></dt> - <dd>通知を結びつける XUL {{ XULElem("browser") }} 要素。この値は <code>null</code> であってはいけません。現在のタブへと通知を結びつける場合であれば、単純に <code>gBrowser.selectedBrowser</code> を指定する事が可能です。</dd> - <dt><code>id</code></dt> - <dd>表示される通知の種類を示すユニーク ID 文字列。例えば、位置情報に関連する通知の場合のIDは "geolocation" となります。同じ ID を持つ通知は、同時にひとつしか表示されません。指定した ID の通知が既に通知されていた場合、新しい通知によって古い通知は置き換えられることになります。</dd> - <dt><code>message</code></dt> - <dd>通知パネルに表示される文字列。</dd> - <dt><code>anchorID</code></dt> - <dd>通知ポップアップのアンカーを表示することとなる要素の ID。(つまり、ポップアップの矢印が指し示すであろう要素のことです) <code>null</code> に指定した場合、通知は PopupNotification オブジェクトのアイコンボックスを表示元とします。この anchorID は、PopupNotification オブジェクトのアイコンボックスの内側に含まれる要素を指定しなければなりません。(Firefox ウィンドウであれば、グローバル PopupNotifications オブジェクトは <code>notification-popup-box</code> 要素を使用します)</dd> - <dt><code>mainAction</code></dt> - <dd>通知パネル中に描画されるボタンを定義するフィールドを含む JavaScript オブジェクトリテラル。詳しくは下記の <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#Notification_actions" title="ja/JavaScript code modules/PopupNotifications.jsm#Notification actions">Notification actions</a> を参照してください。</dd> - <dt><code>secondaryActions</code></dt> - <dd>Notification action オブジェクトの配列。これらは通知パネルのボタンのドロップダウンメニューへ項目を追加するのに使われます。</dd> - <dt><code>options</code></dt> - <dd>通知のオプションとなるプロパティを含む JavaScript オブジェクト。詳しくは下記の <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#Notification_actions" title="ja/JavaScript code modules/PopupNotifications.jsm#Notification options">Notification options</a> を参照してください。</dd> -</dl> - -<h6 id="返り値_2">返り値</h6> - -<p>追加された通知に対応する <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#The_Notification_object" title="ja/JavaScript code modules/PopupNotifications.jsm#The Notification object"><code>Notification</code></a> オブジェクトを返します。</p> - -<h2 id="Notification_actions">Notification actions</h2> - -<p>Notification action オブジェクトは、通知に結び付いたアクションのためのユーザーインターフェースを記述します。<strong>main action</strong> は通知パネル中に表示されるボタンの挙動を記述するために使われます。一方、<strong>secondary actions</strong> はボタンからドロップダウン表示されるメニューの挙動を記述するのにつかわれます。</p> - -<p>Notification action は以下のプロパティを含まなければなりません:</p> - -<dl> - <dt><code>label</code></dt> - <dd>アクションを説明するラベルのテキスト。</dd> - <dt><code>accessKey</code></dt> - <dd>アクションを発動するキーストロークを示す文字列。</dd> - <dt><code>callback</code></dt> - <dd>ユーザーがアクションを選択した際に実行される JavaScript 関数。</dd> -</dl> - -<h2 id="Notification_options">Notification options</h2> - -<p>Notification options オブジェクトは通知パネルの更なるカスタマイズを指定できます。以下のプロパティをどのように組み合わせた場合でもカスタマイズは提供されます:</p> - -<dl> - <dt><code>persistence</code></dt> - <dd>通知を存在させ続ける、ページのロード回数を示す整数値。一度に大量のページのロードが発生した場合、通知は自動的に消えるかもしれません。</dd> - <dt><code>timeout</code></dt> - <dd>少なくとも通知が自動的には消えない時間を指定するタイムスタンプ(UNIX エポックからの経過ミリ秒)。タイムアウト値を指定した通知は、ユーザーの操作によって非表示にならない限り、指定された時間までは自動的に消えることはありません。大抵の使用時において、このパラメータ値は <code>Date.now()</code> に、通知を表示し続ける時間量を示すオフセット値を加えます。(例:30秒とする場合は <code>Date.now() + 30000</code> 。)</dd> - <dt><code>persistWhileVisible</code></dt> - <dd>ロケーションの変更をまたいでも通知を表示させたままにするかどうかを指定する真偽値。<code>true</code> の場合、別のロケーションへと移動しても、通知は表示されたままになります。</dd> - <dt><code>dismissed</code></dt> - <dd><strong>非表示通知 (dismissed notification) </strong> として通知を追加するかどうかを指定する真偽値。非表示通知 はアンカーのクリックによってアクティベートされます。この指定により、あなたが作成した通知は、ユーザーがアンカーをクリックした後に表示されます。</dd> - <dt><code>eventCallback</code></dt> - <dd>通知の状態が変更されたときに呼び出される JavaScript 関数。コールバック関数の最初の引数は、発生した状態の変更を示す文字列となります。詳しくは下記の <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#Notification_events" title="ja/JavaScript code modules/PopupNotifications.jsm#Notification events">Notification events</a> を参照してください。</dd> - <dt><code>neverShow</code></dt> - <dd>真偽値。<code>true</code> に指定した場合、ポップアップが表示されるのを永続的に妨げます。通知としてアンカーアイコンのみを表示する目的に使用できます。</dd> - <dt><code>removeOnDismissal</code></dt> - <dd>通知が非表示である場合(すなわち、ユーザーの操作でポップアップが閉じられている場合はいつでも)、この設定を <code>true</code> にされている通知は削除されます。</dd> - <dt><code>popupIconURL</code> {{ fx_minversion_inline("11") }}</dt> - <dd>ポップアップに表示される画像の URL を指定する文字列。 これは通常、 CSS で {{ cssxref("list-style-image") }} と <code>.popup-notification-icon[popupid=...]</code> セレクタ―を用いて指定されています。</dd> -</dl> - -<h2 id="Notification_events">Notification events</h2> - -<p><code>show()</code> を呼び出す際に <code>options</code> パラメータを使用してイベントコールバックを指定した場合、通知の状態の変更に応じてコールバック関数が呼び出されます。コールバック関数の最初の引数は、状態の変更を示す以下の文字列のうちのいずれかひとつとなります:</p> - -<dl> - <dt>"dismissed"</dt> - <dd>(クリックやタブ切り替えといった)ユーザーの操作によって通知が消えた場合。"removed" とは異なり、通知は再び表示することが可能です。</dd> - <dt>"removed"</dt> - <dd>通知上でのユーザーの操作、または新たなロケーションへブラウザが移動することによって通知が削除場合。</dd> - <dt>"shown"</dt> - <dd>通知が表示された場合。通知の非表示と再表示の度に発火します。</dd> -</dl> - -<h2 id="The_Notification_object">The Notification object</h2> - -<p>いずれの通知も <code>Notification</code> オブジェクトによって提供されます。このオブジェクトは通知の表示と管理に必要なすべてのデータを含み、1つのメソッドを持っています。<code>anchorElement</code> プロパティは通知のアンカー要素を返します。 <code>remove()</code>メソッドは通知を除去します。</p> - -<h2 id="関連項目">関連項目</h2> - -<ul> - <li><a href="/ja/Using_popup_notifications" title="ja/Using popup notifications">Using popup notifications</a></li> -</ul> - -<p>{{ languages( { "en": "en/JavaScript_code_modules/PopupNotifications.jsm" } ) }}</p> diff --git a/files/ja/mozilla/javascript_code_modules/using/index.html b/files/ja/mozilla/javascript_code_modules/using/index.html deleted file mode 100644 index d1e91166e7..0000000000 --- a/files/ja/mozilla/javascript_code_modules/using/index.html +++ /dev/null @@ -1,208 +0,0 @@ ---- -title: JavaScript コードモジュールの利用 -slug: Mozilla/JavaScript_code_modules/Using -tags: - - Add-ons - - Extensions - - XPCOM -translation_of: Mozilla/JavaScript_code_modules/Using ---- -<div>{{gecko_minversion_header("1.9")}}</div> - -<p>JavaScript コードモジュールは、{{Gecko("1.9")}} で導入されたコンセプトであり、特権を持った異なるスコープ間でコードを共有するために用いられます。また、モジュールは、グローバルな JavaScript のシングルトンオブジェクトを生成するために用いることもできます (以前は JavaScript XPCOM オブジェクトを使う必要がありました)。 JavaScript コードモジュールは、登録されたパスに配置された純粋な JavaScript のコードです。<a href="/ja/docs/Components.utils.import"><code>Components.utils.import()</code></a> や <code><a href="https://developer.mozilla.org/en-US/docs/Components.utils.import">Components.utils["import"]()</a></code> を使って、 XUL スクリプトや JavaScript XPCOM スクリプトのような特定の JavaScript のスコープへモジュールを読み込むことができます。</p> - -<h2 id="Creating_a_JavaScript_code_module" name="Creating_a_JavaScript_code_module">JavaScript コードモジュールの作成</h2> - -<p>とても単純な JavaScript モジュールの例を以下に示します。</p> - -<pre class="brush: js">var EXPORTED_SYMBOLS = ["foo", "bar"]; - -function foo() { - return "foo"; -} - -var bar = { - name : "bar", - size : 3 -}; - -var dummy = "dummy"; -</pre> - -<p>モジュールが普通の JavaScript を使って、関数、オブジェクト、定数、その他あらゆる JavaScript の型のオブジェクトを生成していることに注目してください。また、モジュールは <code>EXPORTED_SYMBOLS</code> という名前の特別な Array を定義します。 <code>EXPORTED_SYMBOLS</code> 内で命名されたすべての JavaScript オブジェクトは、モジュールからエクスポートされてインポート先のスコープ内で使用可能となります。以下に例を示します。</p> - -<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm"); - -alert(foo()); // "foo" と表示される -alert(bar.size + 3); // "6" と表示される -alert(dummy); // 'dummy' はモジュールからエクスポートされないため、"dummy is not defined" と表示される -</pre> - -<div class="note"> -<p><strong>Note: </strong>あなたがコードモジュールにテスト変更を加えたとき、実行する前にアプリケーションビルドID(例、バージョンなど) が変わっているかどうか確認してください。 otherwise, you may find yourself running the previous version of your module's code.</p> -</div> - -<h3 id="code_moduleのURL">code moduleのURL</h3> - -<p>上記のサンプルからわかる通り、コードモジュールをインポートするためにはURLが必要となります。(上の例ではURLは"resource://app/my_module.jsm"となっています)</p> - -<p>Code modulesは<strong>chrome:</strong> ({{gecko_minversion_inline("2")}}), <strong>resource:</strong>, or <strong>file:</strong> URLのどれかを使用してのみロードすることができます。</p> - -<ul> - <li>If you're writing an extension for Firefox 4 and already have a <a href="https://developer.mozilla.org/en-US/docs/Chrome_Registration">chrome.manifest</a> with a <code>content</code> instruction in it, you can put the code module in your content folder and reference it like your other content files via <code>chrome://<yourextension>/content/<yourmodule>.jsm.</code></li> - <li>If your extension or application needs to support Mozilla 1.9.x (Firefox 3.x), you should register a new resource URL. Details on doing this are in the <a href="https://developer.mozilla.org/ja/docs/Mozilla/JavaScript_code_modules/Using$edit#Extending_resource.3A_URLs">"Extending resource: URLs" section</a> below.</li> -</ul> - -<h3 id="Sharing_objects_using_code_modules">Sharing objects using code modules</h3> - -<p><a href="/ja/docs/Components.utils.import"><code>Components.utils.import()</code></a> の動作の非常に重要な点は、モジュールが読み込まれた時点でキャッシュされ、次のインポート時には、新しいバージョンのモジュールを再び読み込むことなく、以前にキャッシュされたバージョンを使用するということです。これは、モジュールが複数回インポートされた時に共有されることを意味します。モジュールをインポートしたあらゆるスコープ内で、データ、オブジェクト、関数の変更が可能となります。例えば、単一のモジュールが異なる 2 つの JavaScript のスコープ内へインポートされた場合、一方のスコープでの変更は他方のスコープにも影響します。</p> - -<p>スコープ 1:</p> - -<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm"); - -alert(bar.size + 3); // "6" と表示される - -bar.size = 10; -</pre> - -<p>スコープ 2:</p> - -<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm"); - -alert(foo()); // "foo" と表示される -alert(bar.size + 3); // "13" と表示される -</pre> - -<p>このような共有の動作によって、ウィンドウや XUL スクリプト、XPCOM コンポーネントをまたいでデータを共有できるシングルトンのオブジェクトを生成することが可能となります。</p> - -<p>{{Note("モジュールをインポートしたスコープごとに、そのモジュールでエクスポートされたシンボルの by-value コピーを受け取ります。シンボルの値の変更は他のスコープに伝搬することはありません。")}}</p> - -<p>スコープ 1:</p> - -<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm"); - -bar = "foo"; -alert(bar); // "foo" と表示される -</pre> - -<p>スコープ 2:</p> - -<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm"); - -alert(bar); // "[object Object]" と表示される -</pre> - -<p>by-value コピーの主な効果は単純型のグローバル変数がスコープを横断して共有されないことです。常にラッパークラスの中に変数を置いてラッパーをエクスポートします (上の例にある <em>bar</em> のように)。</p> - -<p>{{h2_gecko_minversion("Unloading code modules", "7.0")}}</p> - -<p><code><a href="https://developer.mozilla.org/en-US/docs/Components.utils.unload">Components.utils.unload()</a></code> allows you to unload a previously imported code module. Once this method has been called, references to the module will continue to work but any subsequent import of the module will reload it and give a new reference.</p> - -<h3 id="Examples">Examples</h3> - -<ul> - <li>A template to download and edit is seen here on <a href="https://gist.github.com/Noitidart/9045387">GitHub - Gists - _template-BootstrapJSM.xpi</a></li> -</ul> - -<h3 id="resource:_Protocol" name="resource:_Protocol">コードモジュールの配置</h3> - -<div class="geckoVersionNote"> -<div>{{gecko_callout_heading("2.0")}}</div> - -<p>{{Gecko("2.0")}} より前のバージョンでは、JavaScript コードモジュールは、<strong>file:</strong> または <strong>resource:</strong> URL のみを用いて読み込むことができました。 {{Gecko("2.0")}} では、<strong>chrome:</strong> URL からのモジュールの読み込みが追加されましたが、これらは JAR アーカイブ内に限られます。</p> -</div> - -<p><a href="/ja/docs/Components.utils.import"><code>Components.utils.import()</code></a> を使用する場合、コードモジュールは、ディスク上のファイルを指し示すために <strong>file:</strong> または <strong>chrome:</strong>, <strong>resource:</strong> URL を使用して読み込まれなければなりません。</p> - -<h4 id="Using_a_resource.3a_URL" name="Using_a_resource.3a_URL">resource: URL の使用</h4> - -<p>{{Gecko("2.0")}} より前のバージョンでは、コードモジュールを読み込む最も一般的な方法は <strong>resource:</strong> URL を使用することでした。 resource URL の基本的な構文は以下のようになります:</p> - -<pre>resource://<alias>/<relative-path>/<file.js|jsm> -</pre> - -<p><code><alias></code> は通常、アプリケーションや XUL ランタイムの相対的なファイルパスへのエイリアスです。 XUL ランタイムによって予め定義されたいくつかのエイリアスがあります:</p> - -<ul> - <li><code>app</code> - XUL アプリケーションのパスへのエイリアス。</li> - <li><code>gre</code> - XUL ランタイムのパスへのエイリアス。</li> -</ul> - -<p><code><relative-path></code> は複数の階層とすることも可能で、常に <code><alias></code> で定義されたパスに対する相対パスとなります。一般的な相対パスは "modules" であり、 XUL Runner や Firefox にて使用されています。コードモジュールは拡張子 .js や .jsm の単一の JavaScript ファイルです。</p> - -<p><code><alias></code> must be unique to your add-on, as the application and other extensions share the same namespace for all aliases.</p> - -<h3 id="chrome.manifestを使う">chrome.manifestを使う</h3> - -<p>拡張機能や XUL アプリケーションへ独自のエイリアスを追加する最も簡単な方法は、 <a href="/ja/docs/Chrome_Registration">chrome manifest</a> 内の以下のような行によって登録することです:</p> - -<pre>resource <em>aliasname</em> <em>uri/to/files/</em></pre> - -<p>例えば、拡張機能 <em>foo</em> の XPI ファイルがモジュール <em>bar.js</em> を含むトップレベルの <em>modules/</em> ディレクトリを有する場合 (つまり、<em>modules/</em> ディレクトリが <em>chrome.manifest</em> と <em>install.rdf</em> の兄弟)、以下の命令によってそのディレクトリへのエイリアスを作ることができます:</p> - -<pre>resource foo modules/</pre> - -<p>(末尾のスラッシュを忘れないこと!) すると、以下の一文でモジュールを JavaScript コードへインポートできるようになります:</p> - -<pre class="brush: js">Components.utils.import("<a rel="freelink">resource://foo/bar.js</a>"); -</pre> - -<h3 id="プログラムによるエイリアスの追加">プログラムによるエイリアスの追加</h3> - -<p>{{interface("nsILocalFile")}} として表せるパスへの独自のエイリアスをプログラムによって追加することもできます。以下に例を示します。</p> - -<pre class="brush: js">var ioService = Components.classes["@<a class="linkification-ext" href="http://mozilla.org/network/io-service;1">mozilla.org/network/io-service;1</a>"] - .getService(Components.interfaces.nsIIOService); -var resProt = ioService.getProtocolHandler("resource") - .QueryInterface(Components.interfaces.nsIResProtocolHandler); - -var aliasFile = Components.classes["@<a class="linkification-ext" href="http://mozilla.org/file/local;1">mozilla.org/file/local;1</a>"] - .createInstance(Components.interfaces.nsILocalFile); -aliasFile.initWithPath("/some/absolute/path"); - -var aliasURI = ioService.newFileURI(aliasFile); -resProt.setSubstitution("myalias", aliasURI); - -// コードモジュールはサブフォルダではなくエイリアスフォルダ直下にあるとする -</pre> - -<h2 id="Notes">Notes</h2> - -<h3 id="Custom_modules_and_XPCOM_components" name="Custom_modules_and_XPCOM_components">カスタムモジュールと XPCOM コンポーネント</h3> - -<p>{{Gecko("2.0")}} より前のバージョンでは、JavaScript XPCOM コンポーネントは、chrome が登録される前に読み込まれることに注意してください。これは、コンポーネントソース内のトップレベルにおいて独自の resource URL で <code><a href="/ja/docs/Components.utils.import">Components.utils.import()</a></code> が使用できないことを意味します。可能な解決策は、<a href="/ja/docs/Components.utils.import"><code>Components.utils.import()</code></a> の呼び出しを XPCOM コンポーネントのコンストラクタ内に移動することです (<a href="http://groups.google.com/group/mozilla.dev.apps.firefox/browse_thread/thread/e178d41afa2ccc87?hl=en#">このことについての議論</a>を参照してください)。</p> - -<h3 id="Packaging_notes">Packaging notes</h3> - -<p>It's important to note that you should not typically put your JavaScript code modules in a JAR file in your add-on. Firefox 3.6 doesn't support them at all, and there's only one case in which it's remotely useful: a Firefox 4-only add-on which must be installed unpacked. Otherwise placing code modules in a JAR file breaks compatibility unnecessarily.</p> - -<h2 id="Importing_CommonJS_modules">Importing CommonJS modules</h2> - -<p>The JavaScript code modules described here are not the same thing as <a href="http://www.commonjs.org/specs/modules/1.0/">CommonJS modules</a>, but you can import CommonJS modules into any scope where you can use <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.import">Components.utils.import</a>. Just call the following:</p> - -<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">const</span> <span class="punctuation token">{</span> require <span class="punctuation token">}</span> <span class="operator token">=</span> Cu<span class="punctuation token">.</span><span class="keyword token">import</span><span class="punctuation token">(</span><span class="string token">"resource://gre/modules/commonjs/toolkit/require.js"</span><span class="punctuation token">,</span> <span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">)</span></code></pre> - -<p>This will import <code>require()</code> into your scope.</p> - -<p>You can then use that to import CommonJS modules. You can import <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/SDK">Add-on SDK</a> modules in just the same way you could from an SDK add-on:</p> - -<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// import the SDK's base64 module</span> - -<span class="keyword token">var</span> base64 <span class="operator token">=</span> <span class="function token">require</span><span class="punctuation token">(</span><span class="string token">"sdk/base64"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> -base64<span class="punctuation token">.</span><span class="function token">encode</span><span class="punctuation token">(</span><span class="string token">"hello"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// "aGVsbG8="</span></code></pre> - -<p>You can import other CommonJS modules, too, as long as you know the path to them:</p> - -<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// import my module</span> - -<span class="keyword token">var</span> myModule <span class="operator token">=</span> <span class="function token">require</span><span class="punctuation token">(</span><span class="string token">"resource://path/to/my/module.js"</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> - -<p>In this case, though, you might be better off <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/_loader">creating your own loader</a>, so you can specify the <code><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/_loader#paths">paths</a></code> property yourself.</p> - -<h2 id="関連項目">関連項目</h2> - -<ul> - <li><a href="/ja/docs/Mozilla/JavaScript_code_modules">JavaScript コードモジュール</a>のトピックのページ。</li> - <li><a href="http://wiki.mozilla.org/Labs/JS_Modules">Mozilla Labs JS Modules</a> - このページは JS モジュールの一覧、加えて拡張機能開発者が利用できるコードのダウンロードリンクと文書を特集しています。</li> -</ul> diff --git a/files/ja/mozilla/javascript_style_guide/index.html b/files/ja/mozilla/javascript_style_guide/index.html deleted file mode 100644 index 7f8e78b58d..0000000000 --- a/files/ja/mozilla/javascript_style_guide/index.html +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: JavaScript style guide -slug: Mozilla/JavaScript_style_guide -tags: - - Developing Mozilla - - JavaScript -translation_of: Mozilla/JavaScript_Tips ---- -<p> </p> -<h2 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h2> -<p>このガイドでは {{ Source("browser", "mozilla/browser") }} 内のコードを対象としています (すなわち Firefox)。</p> -<p>既存のスクリプトを編集する際には、既存のコードに合わせるためにこれらのガイドラインをいじらなければならないかもしれません。すでに大量の変更を加えているのであれば既存のコードの書式を見直すことも検討すべきですが。</p> -<p>これは <a class="external" href="http://neil.rashbrook.org/JS.htm" title="http://neil.rashbrook.org/JS.htm">Neil のガイド</a> を元にしていますが、コードレビュー担当者は最新のスタイルに合わせるためにこれを更新してください。</p> -<h2 id=".E3.83.9B.E3.83.AF.E3.82.A4.E3.83.88.E3.82.B9.E3.83.9A.E3.83.BC.E3.82.B9" name=".E3.83.9B.E3.83.AF.E3.82.A4.E3.83.88.E3.82.B9.E3.83.9A.E3.83.BC.E3.82.B9">ホワイトスペース</h2> -<ul> <li>基本的なインデントはスペース 2 つです。タブを使ってはいけません。</li> <li>1 行は 80 文字以下になるようにしてください。行を折り返すときは前の行の関係のあるアイテムと並ぶようにインデントしてください。{{ Anch("インデントの例") }} をご覧ください。</li> <li>行末にスペースを入れないようにしてください。たとえ 2 項演算子やコンマやセミコロンの後ろでもだめです。</li> <li>2 項演算子はスペースで離してください。</li> <li>コンマやセミコロンの後ろにスペースを入れてください。前にではありません。</li> <li>キーワードの後ろにスペースを入れてください。例:<code>if (x > 0)</code></li> <li>定義のブロックの間には空行を 1 つ(もしくは 2 つ)入れてください。大きなコードのブロックも空行で分割するようにしてください。</li> <li>ファイルの最後には改行してください。(特に emacs ユーザに当てはまります。)</li> -</ul> -<h2 id=".E8.A8.98.E5.8F.B7" name=".E8.A8.98.E5.8F.B7">記号</h2> -<ul> <li>インラインの関数やオブジェクトでは、コンマやセミコロンの前を除いて波括弧の前後にスペースを入れてください。</li> -</ul> -<pre class="eval">function valueObject(aValue) { return { value: aValue }; } -</pre> -<ul> <li>パラメータのリストや配列の添え字など、角括弧の中ではスペースは必須ではありません。これは丸括弧の中のインラインオブジェクトを折り返す場合や、<code>for (;;)</code> 構文も該当します。後者に関して、最初のセミコロンの後ろに通常必要なスペースは 2 番目のセミコロンによっていらなくなり、2 番目のセミコロンの後ろのスペースは閉じ括弧によっていらなくなります。</li> <li>二重引用符を使うようにしてください。インラインのイベントハンドラ内や二重引用符をくくる場合は例外です。</li> <li>波括弧はその親の文に対してインデントしないでください。既存のファイルではそこで使われているスタイルを一貫して使ってください。ただし、新しくファイルを作るときは以下の使用可能な構文から好きなものを選んで使っても構いません。</li> -</ul> -<pre>if (dlmgrWindow) - dlmgrWindow.focus(); - -if (dlmgrWindow) { - dlmgrWindow.focus(); -} else { - dlmgr.open(window, null); -} -</pre> -<ul> <li>非 ASCII 文字に関しては <a href="/ja/JavaScript/Guide/Unicode" title="ja/Core_JavaScript_1.5_Guide/Unicode"><code>\uXXXX</code> 形式の Unicode エスケープ</a> を使用してください。XUL、DTD、スクリプト、プロパティファイル向けの文字セットは UTF-8 です。</li> -</ul> -<h2 id=".E3.82.B3.E3.83.BC.E3.83.89.E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB" name=".E3.82.B3.E3.83.BC.E3.83.89.E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB">コードスタイル</h2> -<ul> <li>else は上で示したように常に単独の行に書いてください。</li> <li><code>return</code> の後には <code>else</code> を使わないでください。</li> -</ul> -<pre>if (x < y) - return -1; -if (x > y) - return 1; -return 0; -</pre> -<ul> <li><code>i++</code> も <code>++i</code> も使用可能です。</li> <li>インライン関数はそのデバッグが楽になるように名前を付けてください。関数をプロパティに代入しただけではその関数に名前を付けることはできません。次のようにしてください。</li> -</ul> -<pre>var offlineObserver = { - observe: function OO_observe(aSubject, aTopic, aState) { - if (aTopic == "network:offline-status-changed") - setOfflineUI(aState == "offline"); - } -}; -</pre> -<h2 id=".E9.96.A2.E6.95.B0.E3.82.84.E5.A4.89.E6.95.B0.E3.81.AE.E3.83.8D.E3.83.BC.E3.83.9F.E3.83.B3.E3.82.B0" name=".E9.96.A2.E6.95.B0.E3.82.84.E5.A4.89.E6.95.B0.E3.81.AE.E3.83.8D.E3.83.BC.E3.83.9F.E3.83.B3.E3.82.B0">関数や変数のネーミング</h2> -<ul> <li>名前や列挙値には interCaps のような形式を使用してください。他の定数は UPPER_CASE のようにしてください。</li> <li>コンストラクタは interCaps を使用し、1 文字目は大文字にしてください。</li> <li>インタフェース名用の利便のための定数の名前は nsI から始まるようにしてください。</li> -</ul> -<pre class="eval">const nsISupports = Components.interfaces.nsISupports; -const nsIWBN = Components.interfaces.nsIWebBrowserNavigation; -</pre> -<ul> <li>列挙値は k という文字から始まるようにしてください。例:<code>const kDisplayModeNormal = 0;</code></li> <li>グローバル変数は g という文字から始まるようにしてください。例:<code>gFormatToolbar</code></li> <li>引数(パラメータ名)は a という文字から始まるようにしてください。</li> <li>プライベートメンバは _ から始まるようにしてください。例:<code>_internalFunction</code></li> <li>イベントハンドラ関数は on という語から始まるようにしてください。具体的には <code>onLoad</code>、<code>onDialogAccept</code>、<code>onDialogCancel</code> のような名前を使うようにしてください。こうすることで明白になります。</li> <li>関数名、ローカル変数、オブジェクトのメンバに接頭辞はいりません。</li> <li>ローカル変数はできるかぎりそれが使用されるところの近くで宣言するようにしてください。そしてすべての変数を初期化するようにしてください。</li> <li>XUL オーバレイでコードを挿入するときは、既存あるいは将来の関数名や変数名との衝突を避けるために、関数や変数を一意の名前を持つオブジェクトの中に隠蔽してください。</li> -</ul> -<pre class="eval">var UniqueName = { - _privateMember: 3, - publicMember: "A string", - - init: function UN_init() { - this.doSomething(this.anotherMember); - }, - - doSomething: function UN_doSomething(aParam) { - alert(aParam); - } -}; -</pre> -<h2 id="JavaScript_.E3.82.89.E3.81.97.E3.81.84.E9.83.A8.E5.88.86" name="JavaScript_.E3.82.89.E3.81.97.E3.81.84.E9.83.A8.E5.88.86">JavaScript らしい部分</h2> -<ul> <li>以下のような厳格な JavaScript の警告が書いたコードに対して出ていないかを確認してください。 <ul> <li>変数の宣言の重複</li> <li><code>return;</code> と <code>return value;</code> の混合。</li> <li>JavaScript オブジェクトの宣言における末尾のコンマ。</li> <li>未宣言の変数やメンバ。配列の値が存在するか不確かな場合はインデックスを配列の長さと比較してください。オブジェクトのメンバが存在するか不確かな場合は <code>"name" in aObject</code> を使用してください。期待している特定の型があるのであれば <code>typeof aObject.name == "function"</code>(または期待している型)を使用しても構いません。</li> </ul> </li> <li>JavaScript 配列を作るときは混乱しやすい <code>new Array(value1, value2)</code> よりも <code>{{ mediawiki.external('value1, value2') }}</code> を使用してください。<code>{{ mediawiki.external('value') }}</code> は常に 1 要素の配列を生成するのに対して、<code>new Array(length)</code> は実際には与えられた論理的な長さを持つ物理的には空の配列を生成するからです。配列用にメモリをあらかじめ割り当てることができるかは実際には保証できません。</li> <li>JavaScript オブジェクトを作るときは <code>{ member: value, ... }</code> を使用してください。<code>new Object()</code> に対して有利な点は、初期プロパティを作ることができ、さらに拡張 JavaScript 構文を使用してゲッタやセッタを定義することができることです。デフォルトのプロパティを代入する必要があるコンストラクタが定義されている場合、オブジェクトリテラルをプロトタイププロパティに代入するようにしてください。</li> -</ul> -<pre>function SupportsString(data) { - this.data = data; -} -SupportsString.prototype = { - toString: function toString() { - return data; - } -}; -</pre> -<ul> <li>正規表現を使用してください。だだし賢く使用してください。例えば、<code>aString</code> がホワイトスペースではないことをチェックするには <code>/\S/.test(aString);</code> を使用してください。結果の位置を知る必要がある場合でのみ <code>aString.search</code> を使用してください。また、マッチした部分文字列(正規表現では括弧区切り)をまとめたい場合にのみ <code>aString.match</code> を使用してください。マッチするかがあらかじめわかっていない場合や、文字列の決まった既知の場所から部分文字列を抜き出す場合は正規表現はあまり便利ではありません。例えば、<code>aString.slice(-1)</code> は <code>aString</code> の最後の文字を返します。<code>aString</code> が空であれば空の文字列を返します。</li> <li>真偽値を <code>true</code> や <code>false</code> と比較しないでください。例えば、<code>if (ioService.offline)</code> のように書いてください。混乱のおそれがある場合、オブジェクトなら <code>null</code> と、数値なら <code>0</code> と、文字列なら <code>""</code> と比較してください。</li> <li>どんなときでも <a href="/ja/JavaScript/Reference" title="ja/Core_JavaScript_1.5_Reference">JavaScript リファレンス</a> を読む価値があります。例えば、あたかも配列かのように、文字列にインデックスを付けることができるということを忘れないようにするために。</li> -</ul> -<h2 id="XPConnect" name="XPConnect">XPConnect</h2> -<ul> <li>オブジェクトのメソッドやプロパティを必要以上に使用しないでください。一時変数に結果を格納しておくとより高速になります。</li> <li>必要のないメソッドを呼び出さないでください。例えば、1 つのウィンドウに対してならば <code>windowManager.getEnumerator(aType).hasMoreElements()</code> ではなく <code>windowManager.getMostRecentWindow(aType) != null</code> が使用できます。</li> <li>そのインタフェースのメソッドやプロパティにアクセスする必要がないときは、インタフェースにクエリをかけないでください。オブジェクトを比較するときもオブジェクトをパラメータとして渡すときもインタフェースにクエリをかける必要はありません。(C++ では両者とも必要です。)</li> <li>成功しそうでないときは <code>QueryInterface</code> を呼び出さないでください。その代わりに <code>instanceof</code> を使用してください。</li> -</ul> -<pre>if (target instanceof Components.interfaces.nsIRDFResource) - return target.Value; -if (target instanceof Components.interfaces.nsIRDFLiteral) - return target.Value; -return null; -</pre> -<ul> <li><code>QueryInterface</code> の戻り値をテストしないでください。成功すると常にオリジナルの変数を返します。XPConnect は tearoff に関してすべて知っていますし、既知のインタフェースをすべて得るために <code>QueryInterface</code> や <code>instanceof</code> をしたオブジェクトを変更します。</li> <li>オブジェクトを XPCOM のメソッドに渡す際に、渡すオブジェクトが XPCOM オブジェクトかどうか確認することはしばしば有用です。そうすることで C++ のメソッドは C++ のオブジェクトにアクセスできます。しかし、これは常に必要であるとは限りません。例えば、上で宣言したオフラインオブザーバは XPCOM オブジェクトとともに登録された JavaScript のオブジェクトです。そうすることで XPCOM からのコールバックが JavaScript のメソッドを実行できます。XPCOM メソッドにはいくつかのインタフェースを実装したオブジェクトを期待したものもあります。そのために <code>QueryInterface</code> メソッドを使う必要が出てきます。しかし、C++ だとヘルパクラスを必要とする弱参照については、JavaScript だと至極簡単に書けます。</li> -</ul> -<pre>var weakObserver = { - QueryInterface: function QueryInterface(aIID) { - if (aIID.equals(Components.interfaces.nsIObserver) || - aIID.equals(Components.interfaces.nsISupportsWeakReference) || - aIID.equals(Components.interfaces.nsISupports)) - return this; - throw Components.results.NS_NOINTERFACE; - }, - observe: function observe(aSubject, aTopic, aState) { - } -} -</pre> -<ul> <li>XPCOM メソッドを宣言するときは、インタフェース定義で使われているのと同じメソッドのパラメータの名前を使用するようにしてください。</li> -</ul> -<h2 id="DOM_.E8.A6.81.E7.B4.A0" name="DOM_.E8.A6.81.E7.B4.A0">DOM 要素</h2> -<ul> <li>DOM 要素は単にあらかじめいくつかインタフェースが備わっている XPCOM オブジェクトです。</li> <li>ある属性が存在しているかを確かめるのに <a href="/ja/DOM/element.getAttribute" title="ja/DOM/element.getAttribute">getAttribute</a> を呼び出さないでください。その代わりに <a href="/ja/DOM/element.hasAttribute" title="ja/DOM/element.hasAttribute">hasAttribute</a> を呼び出してください。</li> <li>next/previousSibling と一緒に first/lastChild を使うのではなく、childNodes に対するループを使うようにしてください。ただし、<code>childNodes.length > 0</code> ではなく hasChildNodes() を使用してください。同様に、<code>document.getElementsByTagName(aTag).length > 0</code> ではなく <code>document.getElementsByTagName(aTag).item(0) != null</code> を使用するようにしてください。</li> <li>tagName ではなく localName を使用するようにしてください。</li> <li>XUL の要素にはプロパティに対応した属性がたくさんあります。こうなっているのには理由がありますので、どんどん使用してください。そのプロパティは以下のものです。 <ul> <li>id</li> <li>align</li> <li>dir</li> <li>flex</li> <li>orient</li> <li>pack</li> <li>observes</li> <li>contextMenu</li> <li>tooltip</li> <li>width</li> <li>height</li> <li>minWidth</li> <li>minHeight</li> <li>maxWidth</li> <li>maxHeight</li> <li>persist</li> <li>left</li> <li>top</li> <li>datasources</li> <li>ref</li> <li>tooltipText</li> <li>statusText</li> <li>allowEvents</li> </ul> </li> <li>XUL は <code>ordinal</code> 属性も対応させていますが、これがない場合のデフォルトは "1" です。</li> <li>XUL は <code>class</code> 属性も対応させていますが、残念ながら <code>class</code> は予約済みの識別子であるためにプロパティは <code>className</code> という名前です。(プロパティは <code>{{ mediawiki.external('"class"') }}</code> として実装できそうですが、見た目が悪いです。)</li> <li>XUL は <code>hidden</code> および <code>collapsed</code> 属性もプロパティに対応させていますが、上のリストがすべて文字列のプロパティであるのに対してこれらは真偽値のプロパティであることに注意してください。</li> <li>XBL バインディングを使うことで XUL は他の便利なプロパティやメソッドも対応させられますが、これは要素によって異なります。</li> <li>最高のパフォーマンスを求めるために、すべての重要な要素に id を付けてください。しかしながら、タグ名によって要素を特定することに加えて、XUL は属性によって要素を特定することもできます。使える属性は文書の要素によって異なります。</li> <del><code>event.keyCode == 13</code> ではなく <code>event.keyCode == KeyEvent.DOM_VK_RETURN</code> のような DOM 定数を使用するのを忘れないでください。</del><ins>現在、KeyEvent定数はDOM仕様から外れたため(既に他のブラウザでもサポートされていない場合が多い)、数値を用いて比較するのが妥当です。</ins> </ul> <h2 id=".E3.82.A4.E3.83.B3.E3.83.87.E3.83.B3.E3.83.88.E3.81.AE.E4.BE.8B" name=".E3.82.A4.E3.83.B3.E3.83.87.E3.83.B3.E3.83.88.E3.81.AE.E4.BE.8B">インデントの例</h2> <p>妥当なインデントの例:</p> <pre class="eval">var result = prompt(aMessage, - aInitialValue, - aCaption); - -var IOService = Components.classes["@mozilla.org/network/io-service;1"] - .getService(Components.interfaces.nsIIOService); -</pre> <p>XPCOM コンポーネントの初期化の妥当なスタイル:</p> <pre class="eval">var IOService = Components.classes["@mozilla.org/network/io-service;1"] - .getService(Components.interfaces.nsIIOService); - -const Ci = Components.interfaces; -const Cc = Components.classes; - -var IOService = Cc["@mozilla.org/network/io-service;1"]. - getService(Ci.nsIIOService); - -var IOService = Cc["@mozilla.org/network/io-service;1"]. - getService(Ci.nsIIOService); -</pre> <pre class="eval">Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService) - .logStringMessage(aMsg); -</pre> <h2 id=".E3.83.84.E3.83.BC.E3.83.AB" name=".E3.83.84.E3.83.BC.E3.83.AB">ツール</h2> <ul> <li><a class="external" href="http://beaufour.dk/jst-review/">JST Review</a> - C++ 用ではありますが、基本的な JS のルール(タブ、行の長さなど)にも対応しています。</li> </ul> <h2 id=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99" name=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99">参考資料</h2> <ul> <li>これは <a class="external" href="http://neil.rashbrook.org/JS.htm" title="http://neil.rashbrook.org/JS.htm">Neil のガイド</a> を転載することから始まりました</li> <li>より新しい情報はこの <a class="external" href="http://dietrich.ganx4.com/blog/?p=226">ブログの投稿</a> にあります</li> </ul> <p>{{ languages( { "en": "en/JavaScript_style_guide" } ) }}</p> diff --git a/files/ja/mozilla/js-ctypes/index.html b/files/ja/mozilla/js-ctypes/index.html deleted file mode 100644 index 30ad2d77e2..0000000000 --- a/files/ja/mozilla/js-ctypes/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: js-ctypes -slug: Mozilla/js-ctypes -translation_of: Mozilla/js-ctypes ---- -<p>{{deprecated_header}}{{jsctypesSidebar("Introduction")}}</p> - -<p><strong>js-ctypes</strong> はアプリケーションと拡張コードが C で書かれたネイティブコードとやり取りすることを可能にします。<code>vtable</code> ポインタを通して可能です。<a href="/ja/docs/Mozilla/js-ctypes/Examples/Using_COM_from_js-ctypes">js-ctypes から COM を使う</a>を見てください。 拡張 C++ サポートについての議論は {{bug("505907")}} を見てください。js-ctypes によって可能にされた他の仕事は JNI で、これは <a href="/ja/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a> セクションで詳しく説明しますが、js-ctypes セクションではなくすべての js-ctypes を抽象化します。バイナリの XPCOM コンポーネントとは異なり、開発者は Firefox の複数のバージョンで使用するための単一のバイナリをデリバリすることができます。</p> - -<div class="note"><strong>Note:</strong> js-ctypes is only available from chrome code; that is, ctypes is not available to websites, only application and extension code.</div> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> - - <p class="summary">If you are brand new to js-ctypes, and have no idea about it, the pages you should read first is - <a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open">ctypes.open </a>followed by <a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Standard_OS_Libraries">Standard OS Libraries</a>.</p> - - <dl> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes" title="Mozilla/js-ctypes/Using_js-ctypes">Using JS-Ctypes</a></dt> - <dd> - <ul> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open">ctypes.open</a> - <ul> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open#Custom_Native_File">Custom Native File</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Standard_OS_Libraries" title="Mozilla/js-ctypes/Standard_Libraries_per_OS">Standard OS Libraries</a> - <ul> - <li><a href="/en-US/Add-ons/Code_snippets/Finding_Window_Handles">Finding window handles</a></li> - </ul> - </li> - </ul> - </li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Working_with_data">Working with Data</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Working_with_ArrayBuffers">Working with ArrayBuffers</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_types">Declaring Types</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_and_calling_functions">Declaring and Calling Functions</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Callbacks">Declaring and Using Callbacks</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Type_conversion">Type Conversion</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/Memory_Management">Memory Management</a></li> - <li><a href="/en-US/docs/Web/API/ChromeWorker">ChromeWorker</a></li> - </ul> - </dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference" title="js-ctypes/js-ctypes_reference">JS-ctypes Reference</a></dt> - <dd>A reference guide to the js-ctypes API. - <ul> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ABI">ABI</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/CData">CData</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/CType">CType</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ctypes">ctypes</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/FunctionType">FunctionType</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Int64">Int64</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Library">Library</a></li> - <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/UInt64">UInt64</a></li> - </ul> - </dd> - </dl> - - <p><span class="alllinks"><a href="/en-US/docs/tag/js-ctypes" title="tag/js-ctypes">View All...</a></span></p> - - <h2 class="Tools" id="Examples" name="Examples"><a href="/en-US/docs/Mozilla/js-ctypes/Examples" title="Mozilla/js-ctypes/Examples">Examples</a></h2> - - <dl> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Add_to_iPhoto" title="Mozilla/js-ctypes/Examples/Add_to_iPhoto">Add to iPhoto</a></dt> - <dd>A Firefox extension that uses js-ctypes to call Carbon and Core Foundation framework routines on Mac OS X to implement an "Add image to iPhoto" feature in Firefox.</dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_C_structs_and_pointers">Using C structs and pointers</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_COM_from_js-ctypes">Using COM from js-ctypes</a></dt> - <dd> </dd> - <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_Objective-C_from_js-ctypes">Using Objective-C from js-ctypes</a></dt> - </dl> - - <dl> - <dt><a href="https://github.com/ochameau/jscpptypes">Github :: ochameau / jscpptypes</a></dt> - <dd>A mangling library to use C++ from js-ctypes</dd> - </dl> - </td> - <td> - <h2 class="Community" id="Community" name="Community">Community</h2> - - <ul> - <li>View Mozilla forums...{{DiscussionList("dev-extensions", "mozilla.dev.extensions")}}</li> - <li><a href="irc://moznet/jsctypes">IRC - #jsctypes</a></li> - <li><a href="http://stackoverflow.com/questions/tagged/jsctypes">Stackoverflow - jsctypes</a></li> - </ul> - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2> - - <ul> - <li><a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Changes_in_Gecko_2.0#Binary_components">XPCOM in Gecko 2 - Binary Components</a></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p> </p> diff --git a/files/ja/mozilla/localization/bootstrapping_a_new_locale/index.html b/files/ja/mozilla/localization/bootstrapping_a_new_locale/index.html deleted file mode 100644 index c323372cd3..0000000000 --- a/files/ja/mozilla/localization/bootstrapping_a_new_locale/index.html +++ /dev/null @@ -1,225 +0,0 @@ ---- -title: 新しいロケールのブートストラップ -slug: Mozilla/Localization/Bootstrapping_a_new_locale -translation_of: Mozilla/Localization/Bootstrapping_a_new_locale ---- -<p>(see also https://developer.mozilla.org/en/Create_a_new_localization)</p> - -<div class="warning"> -<p>ここの文書はもはや維持されておらず、不正確です。 L10nのドキュメントは、<a class="external external-icon" href="https://mozilla-l10n.github.io/localizer-documentation/" rel="noopener">https://mozilla-l10n.github.io/localizer-documentation/</a> に移動しました。Mozilla プロジェクトの新しいロケールをブートストラップする方法については、それらのドキュメントを参照してください。</p> -</div> - -<p>In Mozilla, we use the the <a href="/en/Mercurial_basics" title="en/Mercurial basics">Mercurial</a> version control system (Hg) to help manage our localizations. When a <a class="link-https" href="https://wiki.mozilla.org/L10n:Starting_a_localization#Team_building" title="https://wiki.mozilla.org/L10n:Starting_a_localization#Team_building">localization team is registered</a> and your Hg repository is set up for a locale, you can then clone the existing Mozilla release branch (i.e. where active development of the upcoming release of Firefox occurs) and then begin the necessary work for translation. Hg allows localizers to work locally on their machines and then "push" changes to their official Mozilla repository.</p> - -<h2 id="Mercurial_のインストール">Mercurial のインストール</h2> - -<p>Depending on your operating system, you will need to install the correct version of Hg on your machine. <a href="/en/Installing_Mercurial" title="https://developer.mozilla.org/en/Installing_Mercurial">This document</a> will give you the basic information on how to do that.</p> - -<h2 id="compare-locales_ユーティリティをインストールする">compare-locales ユーティリティをインストールする</h2> - -<p>The next step is to install <code>compare-locales</code>.</p> - -<pre>$ sudo easy_install compare-locales -</pre> - -<p>This will download and install the utility.</p> - -<h2 id="ソースコードをクローン">ソースコードをクローン</h2> - -<p>The next step is to <a class="internal" href="/en/Developer_Guide/Source_Code/Mercurial" rel="internal" title="en/Developer Guide/Source Code/Mercurial">download a copy of the source code</a> to your local system, using Mercurial. You will need to "hg clone" the existing release branch for Mozilla<br> - so you have all the files locally for you to begin localization. Make sure to have the directory where you intend to work as the current path on your terminal. (You should "cd" to the directory before beginning.) </p> - -<p>In the terminal, type the following command:</p> - -<pre>$ hg clone http://hg.mozilla.org/releases/mozilla-x.x.x/</pre> - -<p>Where "x.x.x" is the existing release branch version. For instance, for Firefox 3.6, we use <code>mozilla-1.9.2</code>. Refer to <a class="external" href="http://wiki.mozilla.org/L10n:Branches" title="http://wiki.mozilla.org/L10n:Branches">L10n:Branches</a> for the list of all branches.</p> - -<p>If you are interested in localizing Thunderbird 3, SeaMonkey 2 or other Mozilla projects based on Gecko 1.9.1 you'll need to follow the instructions on <a href="../../../../En/Developer_Guide/Source_Code/Getting_comm-central" rel="internal">getting the source-code of the comm-central repository</a>.</p> - -<h2 id="Create_a_bare-bones_localization">Create a bare-bones localization</h2> - -<p>Next, create a base localization. This is done by cloning the en-US (United States English) files into your localization. First, you should specify your locale's language identifier in ab-CD format, where "ab" is the <a class="external" href="http://www.w3.org/WAI/ER/IG/ert/iso639.htm" title="http://www.w3.org/WAI/ER/IG/ert/iso639.htm">ISO 639 language code</a>, and CD is the <a class="external" href="http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm" title="http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm">ISO 3166 country code</a>. The "-CD" part is only necessary to differentiate between versions of a language that are subtly different from country to country, such as in "en-US" and "en-GB" for United States English and British English.</p> - -<p>Before you run the copy commands, you need to make the locale directory at the same level as the <code>mozilla-1.9.x/</code> you just cloned from above. Navigate to that level making sure you are *not* inside <code>mozilla-1.9.x/</code> and then run the following commands.</p> - -<div class="warning"><strong>警告:</strong> これらのコマンドをコピー&ペーストしないでください。"ab-CD" を最初に言語識別子に、1.9.x を最新のリリースブランチに置き換える必要があります。 例えば、Firefox 3.6 は1.9.2ブランチからリリースされています。</div> - -<pre><span style="color: #ff0000;">from now on may be needs some corrections, (see expected structure below $cd ab-CD/browser/chrome/browser) -may be needs $</span>cp -R mozilla-1.9.x/browser/locales/en-US/ ab-CD <span style="color: #ff0000;">and then </span><span>$mv ab-CD/en-US ab-CD/browser</span><span style="color: #ff0000;"> and the same for the others -the commands seems symbolic and not real ... see also structure expected more below. -/editor/ is in 1.9.2 ? netwerk not error ? -</span> -mkdir -p ab-CD/browser/installer ab-CD/browser/profile/chrome ab-CD/browser/searchplugins ab-CD/browser/updater ab-CD/toolkit -cp -R mozilla-1.9.x/browser/locales/en-US/ ab-CD/browser -cp -R mozilla-1.9.x/dom/locales/en-US/ ab-CD/dom -cp -R mozilla-1.9.x/editor/locales/en-US/ ab-CD/editor -cp -R mozilla-1.9.x/extensions/reporter/locales/en-US/chrome ab-CD/extensions -cp -R mozilla-1.9.x/netwerk/locales/en-US/ ab-CD/netwerk -cp -R mozilla-1.9.x/other-licenses/branding/firefox/locales/en-US/ ab-CD/other-licenses -cp -R mozilla-1.9.x/security/manager/locales/en-US/ ab-CD/security -cp -R mozilla-1.9.x/toolkit/locales/en-US/ ab-CD/toolkit -</pre> - -<h2 id="Getting_started">Getting started</h2> - -<p>Change your directory to the new working directory so you are in the <code>~/[your working directory]/[ab-CD]/</code> path and can start localizing. We'll first navigate to the directory called "browser" by running the following commands one after the other from your command line:</p> - -<pre>$ cd [ab-CD]/browser/chrome/browser</pre> - -<p>To see what is contained in "browser" type</p> - -<pre>$ ls</pre> - -<p>And, you should see the following output from your terminal:</p> - -<pre>aboutCertError.dtd pageInfo.dtd aboutDialog.dtd pageInfo.properties aboutPrivateBrowsing.dtd pageReportFirstTime.dtd -aboutRobots.dtd places aboutSessionRestore.dtd preferences aboutSupport.dtd quitDialog.properties -baseMenuOverlay.dtd safeMode.dtd browser.dtd safebrowsing browser.properties sanitize.dtd -credits.dtd search.properties engineManager.dtd searchbar.dtd engineManager.properties setDesktopBackground.dtd -feeds shellservice.properties history sidebar migration tabbrowser.dtd -openLocation.dtd tabbrowser.properties openLocation.properties</pre> - -<p>As a localizer, you are responsible for localizing each of the ".dtd" and ".properties" in *all* of the sub-directories found in your ab-CD directory.</p> - -<h2 id="Directories_to_localize">Directories to localize</h2> - -<p>If you're starting from scratch, you should have just downloaded:</p> - -<pre>mozilla-1.9.x/browser/locales/en-US/ -mozilla-1.9.x/dom/locales/en-US/ -mozilla-1.9.x/netwerk/locales/en-US/ -mozilla-1.9.x/other-licenses/branding/firefox/locales/en-US -mozilla-1.9.x/security/manager/locales/en-US/ -mozilla-1.9.x/toolkit/locales/en-US/</pre> - -<p>And then copied them so that the files for localization end up in the following directories:</p> - -<pre>ab-CD/browser/ -ab-CD/dom/ -ab-CD/netwerk/ -ab-CD/other-licenses/branding/firefox/ -ab-CD/security/manager/ -ab-CD/toolkit/ </pre> - -<h2 id="Translating">Translating</h2> - -<p>To start editing, you will need a text editing application. You can choose to use:</p> - -<ul> - <li><a class="external" href="http://notepad-plus.sourceforge.net/uk/site.htm" title="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> or <a class="external" href="http://www.flos-freeware.ch/notepad2.html" title="http://www.flos-freeware.ch/notepad2.html">Notepad2</a> on Windows,</li> - <li><a class="external" href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29" title="http://en.wikipedia.org/wiki/Vim_(text_editor)">vim</a>, <a class="external" href="http://projects.gnome.org/gedit/" title="http://projects.gnome.org/gedit/">gedit</a> or <a class="external" href="http://www.kate-editor.org/kate" title="http://www.kate-editor.org/kate">Kate</a> on GNU/Linux,</li> - <li><a class="external" href="http://www.barebones.com/products/TextWrangler/" title="http://www.barebones.com/products/TextWrangler/">TextWrangler</a> on Mac OS X.</li> -</ul> - -<p><span style="font-size: x-small;">(Read more about tools at </span><a class="link-https" href="https://wiki.mozilla.org/L10n:Tools" title="https://wiki.mozilla.org/L10n:Tools"><span style="font-size: x-small;">L10n:Tools</span></a><span style="font-size: x-small;">.)</span></p> - -<p>After you have downloaded your editor of choice, type the following command in the same path from above (~/ab-CD/browser/chrome/browser)</p> - -<pre>$ edit ab-CD/browser/chrome/browser/aboutCertError.dtd</pre> - -<p>Read the top of the file to get any context on how to translate contained in the notes written by the developers or l10n-drivers. Localization notes will look like this:</p> - -<pre><!-- LOCALIZATION NOTES... --></pre> - -<p>After the localization notes, you will see a list of <code><!ENTITY></code> strings like the following:</p> - -<pre><!ENTITY certerror.pagetitle "Untrusted Connection"></pre> - -<p>You should go through each entity, translating the value in the parameters (e.g. <code>Untrusted Connection</code> in the example above), like so (example for Polish):</p> - -<pre><!ENTITY certerror.pagetitle "Niezaufane połączenie"></pre> - -<p>Once you have translated all the <code><!ENTITY></code> strings in this file, you should save your work and open the next .dtd or .property file. You will need to go through each and every file to in every directory in ab-CD.</p> - -<h2 id="Recommended_order_of_localization">Recommended order of localization</h2> - -<p>For recommended order of localization, refer to the localization "phase list" which provides a very rough guide on where to start and in what order to proceed through translation.</p> - -<ul> - <li><a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/">The localization phase lists</a> (Firefox 3.5: <a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/ff35.phaselist?view=markup" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/ff35.phaselist?view=markup">ff35.phaselist</a>, Firefox 3.6: <a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/ff36.phaselist?view=markup" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/ff36.phaselist?view=markup">ff36.phaselist</a>).</li> - <li><a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/phases?view=markup" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/phases?view=markup">Description of phases.</a></li> -</ul> - -<p>Land your translated files one by one, making sure it follows the *mozilla-1.9.2* structure. This will familiarize you with our "Hg"<br> - commands and will get us something that we can import easily when you are done.</p> - -<h2 id="Working_with_Bit_Bucket">Working with Bit Bucket</h2> - -<p>Before a team becomes official, we like to get the localizers comfortable with the Hg commands that allow for cloning, pulling, committing, and pushing work to an experimental repository. We use a web service called <a class="external" href="http://www.bitbucket.org" title="http://www.bitbucket.org/">Bit Bucket</a> to start the learning process.</p> - -<p>To begin, contact the l10n-drivers to let them know that you are interested in starting a localization. The l10n-drivers will help set up an experimental Hg repository in Bit Bucket. You will need to create an account so you can access the service. Once you have that account, send the l10n-drivers the details to be added as a "writer". With that level of authority, you will be able to push and pull and manage the repository remotely. It will be just like working on Hg with Mozilla, yet you will use the Bit Bucket platform to start.</p> - -<p>After your new Bit Bucket repository is created by the l10n-drivers, please visit the URL for your repo. You can do this by entering the following URL into your browser:</p> - -<pre>$ https://bitbucket.org/mozillal10n/ab-CD/overview/</pre> - -<p>(where ab-CD will be replaced by your locale code)</p> - -<p>At that main page of your newly created Bit Bucket repo, you'll see the Hg commands,</p> - -<pre style="margin-left: 40px;">$ hg clone http://bitbucket.org/mozillal10n/ab-CD/ ... -$ hg pull -u # to pull changes and update -$ hg push # to push changes to this repo -</pre> - -<p style="margin-left: 40px;"><em>Import existing data?</em></p> - -<pre style="margin-left: 40px;">$ cd /path/to/existing/hg/repo/ -$ hg push http://bitbucket.org/mozillal10n/ab-CD/</pre> - -<p style="margin-left: 40px;"><em>Prefer SSH?</em></p> - -<pre style="margin-left: 40px;">$ hg clone ssh://hg@bitbucket.org/mozillal10n/ab-CD/ -$ hg push ssh://hg@bitbucket.org/mozillal10n/ab-CD/</pre> - -<p>As you begin to move through your translations, you should "commit" the changes locally and "push" your work to this experimental respository. For instance, if you have finished translating all the .dtd and .property files in your ~/ab-CD/browser/ directory, then you should</p> - -<pre style="margin-left: 40px;">$ cd ~/ab-CD/ -$ hg status -$ hg commit -m "Translated browser/" -$ hg push http://bitbucket.org/mozillal10n/ab-CD/ -</pre> - -<p>Note that due to the distributed nature of Hg, <code>hg commit</code> saves the changes locally, i.e. in the Hg repository on your computer. You can see the history of commits with <code>hg log</code>. After doing <code>hg commit</code>, you still need to send the changes to BitBucket. This is why you need to do <code>hg push</code>, which sends the already made commits to the remote repository (<code><a class="external" href="http://bitbucket.org/mozillal10n/ab-CD/" rel="freelink">http://bitbucket.org/mozillal10n/ab-CD/</a></code> in the example above).</p> - -<p>After you have committed and pushed your initial translation, email the l10n-drivers team to let us know it's ready.</p> - -<h2 id="Set_up_for_building">Set up for building</h2> - -<p>The next step is to create a <code>.mozconfig</code> file with the compile options for the localized build of Firefox, and to set up the object directory for the localized build.</p> - -<pre>cd mozilla-1.9.1 -echo "mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../fx-ab-DC" > .mozconfig -echo "ac_add_options --with-l10n-base=../" >> .mozconfig -echo "ac_add_options --disable-compile-environment" >> .mozconfig -echo "ac_add_options --enable-application=browser" >> .mozconfig -make -f client.mk configure -</pre> - -<h3 id="Create_a_language_pack" name="Create_a_language_pack">Create a language pack</h3> - -<p>First, we'll create a build directory. This sounds worse than it is, you won't need to actually build, but we'll need to setup something that looks like it. You're still in the <code>l10n</code> directory, right? We'll create <code>build</code> right next to it. The name of that directory doesn't really matter, so no reason to change it.</p> - -<pre class="eval">mkdir ../build -cd ../build -</pre> - -<p>Now we'll set up a not-so-compile environment by calling configure. If you just checked out the localizable parts of en-US above, it will create a plethora of warnings <code>No such file or directory</code>, but no errors.</p> - -<pre class="eval">../mozilla/configure --disable-compile-environment --enable-application=browser -</pre> - -<p>Whenever you need a build directory, these are the steps that you need to do to initialize it. If you're downloading a new release of Firefox from CVS, you might want to run configure again, too.</p> - -<p>Now we can actually create the language pack,</p> - -<pre class="eval">make -C browser/locales langpack-en-X-dude -</pre> - -<p>You should find your newly created language pack in <code>dist/install</code>.</p> - -<pre class="eval">ls dist/install -</pre> - -<p>You can open that file in Firefox and check it out. You have to set your selected language still. You can either use the <a class="link-https" href="https://addons.mozilla.org/de/firefox/addon/356">Locale Switcher</a> extension, or set it in <code>about:config</code>. Set the <code>general.useragent.locale</code> to your language code, in this case, <code>en-X-dude</code>, and restart Firefox once more.</p> diff --git a/files/ja/mozilla/localization/index.html b/files/ja/mozilla/localization/index.html deleted file mode 100644 index 430105cc7b..0000000000 --- a/files/ja/mozilla/localization/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Mozilla でのローカライズ -slug: Mozilla/Localization -tags: - - Landing - - Mozilla - - l10n - - ローカライズ - - 翻訳 -translation_of: Mozilla/Localization ---- -<p><span class="seoSummary"><strong>ローカライゼイション</strong> (L10n) とは、ソフトウェアのユーザインタフェースをある言語に翻訳し、またその言語の文化で扱いやすいように適応させるのための一連の作業のことです。これらのリソースは、ローカライゼイションに関わる技術的な側面に興味のあるすべての人たちのためのものです。</span>特に、開発者とすべての貢献者の役に立つことを意図しています。</p> - -<div class="warning"> -<p>ここの文書はもはや維持されておらず、不正確です。 L10nのドキュメントは、<a href="https://mozilla-l10n.github.io/localizer-documentation/">https://mozilla-l10n.github.io/localizer-documentation/</a>に移動しました。Mozilla プロジェクトの新しいロケールをブートストラップする方法については、それらのドキュメントを参照してください。</p> -</div> - -<h2 id="関連項目">関連項目</h2> - -<dl> - <dt><a href="https://developer.mozilla.org//ja/docs/MDN/Contribute/Localize" title="/ja/docs/MDN/Contribute/Localize">MDN でのローカライズ</a></dt> - <dd>こちらの記事では、ここ、つまり MDN にある文書の翻訳について説明します。</dd> - <dt><a href="https://developer.mozilla.org/ja/Apps/Build/Localization">App localization</a></dt> - <dd>こちらの一連の文書は、アプリのローカライズに特化したものです。Firefox OS アプリも含みます。</dd> - <dt><a href="https://developer.mozilla.org/ja/docs/Web/API/L10n">L10n</a></dt> - <dd>Firefox OS をローカライズするために Mozilla が使う API のリファレンスです。</dd> -</dl> diff --git a/files/ja/mozilla/localization/index/index.html b/files/ja/mozilla/localization/index/index.html deleted file mode 100644 index 821da2cc9c..0000000000 --- a/files/ja/mozilla/localization/index/index.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: 索引 -slug: Mozilla/Localization/Index -translation_of: Mozilla/Localization/Index ---- -<p>{{Index("/ja/docs/Mozilla/Localization")}}</p> diff --git a/files/ja/mozilla/localization/localizing_with_pontoon/index.html b/files/ja/mozilla/localization/localizing_with_pontoon/index.html deleted file mode 100644 index 7a5e3b0dce..0000000000 --- a/files/ja/mozilla/localization/localizing_with_pontoon/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Pontoon でローカライズする -slug: Mozilla/Localization/Localizing_with_Pontoon -tags: - - Localization -translation_of: Mozilla/Localization/Localizing_with_Pontoon ---- -<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon</a> は、ウェブベースで、What-You-See-Is-What-You-Get (WYSIWYG) のローカライズ (l10n) ツールです。Mozilla では、すべての Mozilla の製品やウェブサイトをローカライズするために使用します。Pontoon は、l10n のワークフローで技術的なスキルはほとんど必要なく、とても簡単で直感的に使用できるツールです。サインインから貢献を完了するところまで、プロジェクトをローカライズするのに、Pontoon を使用する方法を説明します。手順に沿って、l10n の貢献を効率的に、そして簡単にする素晴らしい機能をいくつか説明します。</p> - -<div class="note"> -<p><strong>開発者の場合</strong>、<a href="/docs/Implementing_Pontoon_Mozilla">プロジェクトに Pontoon を実装する方法</a> や <a href="https://github.com/mozilla/pontoon">GitHub</a> で参加する方法をご覧ください。</p> -</div> - -<h2 id="First_steps" name="First_steps">第一ステップ</h2> - -<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon のホームページ</a> を使用するのはとても簡単です。プロジェクトのローカライズを始めるには、右上のメニューからサインインします。次に、ドロップダウンメニューから作業したいプロジェクトとロケールを選択します。Pontoon で自動的にそのロケールのプロジェクトを開きます。ここでは、<a href="https://affiliates.mozilla.org/">Firefox Affiliates</a> のウェブサイトを使用して Pontoon の機能やワークフローを説明します。Pontoon 内で、以下のような画面が開きます:</p> - -<p><em><img alt="Browser app and workspace" src="https://mdn.mozillademos.org/files/8323/affiliates.png" style="height: 558px;"></em></p> - -<h3 id="Main_toolbar" name="Main_toolbar">メインツールバー</h3> - -<p>見て分かるように、ほとんどのインターフェイスは、翻訳されたウェブサイトの画面になっています。以下の項目が含まれた Pontoon のツールバーのみが上部にあります (左から順に):</p> - -<p><img alt="Main toolbar" src="https://mdn.mozillademos.org/files/8325/toolbar.png"></p> - -<h4 id="List_of_strings" name="List_of_strings">文字列の一覧</h4> - -<p>ローカライズするすべての文字列の一覧がサイドバーで開きます。</p> - -<h4 id="Project_selector_(Affiliates)" name="Project_selector_(Affiliates)"><span id="cke_bm_939S" style="display: none;"> </span>プロジェクト選択 (Affiliates)</h4> - -<p>ローカライズするプロジェクトを切り替えられます。</p> - -<h4 id="Resource_selector_(Homepage)" name="Resource_selector_(Homepage)"><span id="cke_bm_940S" style="display: none;"> </span>リソース選択 (Homepage)</h4> - -<p>サブページやローカライズファイルのような、ローカライズするリソースを切り替えます。プロジェクト内に利用できるリソースがない場合は表示されません。</p> - -<h4 id="sect1"><span id="cke_bm_941S" style="display: none;"> </span></h4> - -<dl> -</dl> - -<h4 id="Locale_selector_(Slovenian)" name="Locale_selector_(Slovenian)">ロケール選択 (Slovenian)</h4> - -<p>ローカライズする言語を切り替えられます。</p> - -<h4 id="Go">Go</h4> - -<p>プロジェクト、リソース、ロケールで選択したものを開きます。</p> - -<h4 id="Progress_indicator" name="Progress_indicator">進捗インジケーター</h4> - -<p>ローカライズ中のリソースの進捗を表示します。ポップアップで詳しく表示されます。</p> - -<dl> -</dl> - -<h4 id="User_menu" name="User_menu"><span id="cke_bm_943S" style="display: none;"> </span>ユーザーメニュー</h4> - -<p>リポジトリのコミットや、ファイルのダウンロード、サインアウトなど、ユーザー固有のタスクを行えます。</p> - -<h4 id="Info_menu" name="Info_menu">インフォメーションメニュー</h4> - -<p>参加したプロジェクトのタイムラインや、キーボードショートカットの一覧のような重要な情報が表示されます。</p> - -<dl> -</dl> - -<p>では、翻訳をどうやって行うのでしょうか?<span id="cke_bm_608E" style="display: none;"> </span></p> - -<dl> -</dl> - -<h2 id="Translate_strings" name="Translate_strings">文字列の翻訳</h2> - -<p>Pontoon を使用してローカライズするとき、文字列を翻訳するにはいくつかののオプションがあります。コンテキスト内、コンテキスト外、両方の組み合わせで翻訳できます。まず、コンテキスト内での翻訳から始めましょう。</p> - -<h3 id="In-context" name="In-context">コンテキスト内</h3> - -<p>Pontoon のコンテキスト内翻訳モードは、他の翻訳を上書きします。ウェブページ (またはウェブアプリ) を開き、ページをリアルタイムに編集できます。翻訳する方法は:</p> - -<p><img alt="In-context localization" src="https://mdn.mozillademos.org/files/8331/in-context.png"></p> - -<ol> - <li>翻訳したいテキストをマウスでホバーします。</li> - <li>テキストに翻訳ボタンが表示されます。このボタンをクリックすると翻訳モードが有効になります。</li> - <li>もとのテキストを翻訳した文字列に置き換えます。</li> - <li>保存ボタンをクリックして翻訳を保存します。</li> -</ol> - -<div> -<h3 id="Out-of-context" name="Out-of-context">コンテキスト外</h3> - -<p>ウェブサイトの <title> タグのコンテンツや、配置される文字列や複数形のように、コンテキスト内で翻訳することができない文字列もあります。メインツールバーにあるハンバーガーボタンをクリックし、すべての文字列と翻訳の一覧が表示されます。サイドバーを使用してもコンテキスト外ローカライズを行えます:</p> - -<p><img alt="Out-of-context localization: list" src="https://mdn.mozillademos.org/files/8337/out-of-context-1.png"> <img alt="Out-of-context localization: translate" src="https://mdn.mozillademos.org/files/8335/out-of-context-2.png"></p> - -<ol> - <li>翻訳したい文字列をクリックします。</li> - <li>翻訳パネルが開き、もとの文字列と詳細 (コメントなど) が表示されます。</li> - <li>翻訳エリアで文字列を翻訳します。</li> - <li>保存ボタンをクリックし翻訳を保存します。</li> -</ol> - -<p>コンテキスト内でも翻訳できる場合、コンテキスト外で文字列を翻訳すると、ウェブサイトにも翻訳が表示されます。</p> - -<h3 id="Translation_helpers" name="Translation_helpers">翻訳ヘルパー</h3> -</div> - -<p>見て分かるように、履歴からの候補、翻訳の記録、機械翻訳や他のロケールがコンテキスト外の翻訳パネルに表示されます。これらを翻訳ヘルパーと呼び、文字列を翻訳する手助けとなります:</p> - -<p><img alt="Translation helpers: History" src="https://mdn.mozillademos.org/files/8339/helpers-history.png"> <img alt="Translation helpers: Machinery" src="https://mdn.mozillademos.org/files/8341/helpers-machinery.png"> <img alt="Translation helpers: Other locales" src="https://mdn.mozillademos.org/files/8343/helpers-locales.png"> <img alt="Translation helpers: Search" src="https://mdn.mozillademos.org/files/8345/helpers-menu.png"></p> - -<h4 id="History" name="History">履歴</h4> - -<p>他のユーザーが翻訳したものも含め、以前に翻訳した候補が表示されます。</p> - -<h4 id="Machinery" name="Machinery">機械翻訳</h4> - -<p>様々なサービスから一致するものを表示します: 内部の翻訳の記録、<a href="http://transvision.mozfr.org/">Mozilla Transvision</a>、<a href="https://amagama-live.translatehouse.org/">オープンソース翻訳の記憶</a>、<a href="http://www.microsoft.com/Language/">Microsoft terminology</a>、<a href="http://www.bing.com/translator">機械翻訳</a>。</p> - -<h4 id="Other_locales" name="Other_locales">他のロケール</h4> - -<p>他のロケールから一致する翻訳を表示します。</p> - -<h4 id="Search" name="Search">検索</h4> - -<p>機械的とほぼ同じですが、もとの文字列の代わりにパラメータとしてキーワードを入力する必要があります。</p> - -<p>候補をクリックすると、翻訳エリアにコピーされます。</p> - -<dl> -</dl> - -<h2 id="Publishing_your_localization" name="Publishing_your_localization">ローカライズを公開する</h2> - -<p>Pontoon で、レポジトリにコミットし、l10n の作業を完了させましょう。この作業も Pontoon で行えます。実際、時間単位で自動的に同期されています。自分のやったことを称えたり、踊ったり、寝たり、他のことをして祝福してください!</p> diff --git a/files/ja/mozilla/localization/quick_start_guide/index.html b/files/ja/mozilla/localization/quick_start_guide/index.html deleted file mode 100644 index 4b6a3333ae..0000000000 --- a/files/ja/mozilla/localization/quick_start_guide/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: ローカライズのクイックスタートガイド -slug: Mozilla/Localization/Quick_start_guide -tags: - - ガイド - - ローカライズ - - 翻訳 -translation_of: Mozilla/Localization/Quick_start_guide ---- -<p>Mozilla のローカライズにようこそ。</p> - -<p>Mozilla プロジェクトで独自にローカライズを始めるにしても、既存のローカライズの取り組みに参加しようとするにしても、ここが適切な場所です。<span class="seoSummary">このガイドには、 Mozilla のローカライズプログラムに参加するために必要な基本的な技術情報がすべて記載されています。</span>最初の環境設定から独自のローカライズをテストしてリリースするまでの手順を説明します。 途中で、あなたが貢献できるさまざまなプロジェクトと、それらをローカライズするために使用されるツールについて説明します。</p> - -<p>具体的な例を挙げると、 Mozilla で最も広くローカライズされたプロジェクトである Firefox プロジェクトから取り上げていきます。このガイドの終わりに近づくにつれて、あなたはあなたのローカル設定で Firefox を変更してから、その変更を Firefox のユーザーインターフェースで見ることができるはずです。最後に、このガイドを終えると、貢献を開始するために必要なすべてのツールが用意されています。</p> - -<p>なお、このガイドは Mozilla のローカライズの技術的な側面についてのみ説明します。プロセス全体については、<a class="link-https" href="https://wiki.mozilla.org/L10n:Localization_Process" title="https://wiki.mozilla.org/L10n:Overview">ローカライズプロセス</a>のページをご覧ください。</p> - -<div style="width: 25%; background-color: #4AA02C; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;"> -<h2 id="初期セットアップ"><a href="/ja/docs/Mozilla/Localization/Quick_start_guide/Initial_setup" title="ja/Localization_Quick_Start_Guide/Initial_setup">初期セットアップ</a></h2> -ローカライズ前の技術的な準備作業です。</div> - -<div style="width: 25%; background-color: #A2BFF4; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;"> -<h2 id="翻訳フェーズ"><a href="/ja/docs/Mozilla/Localization/Quick_start_guide/Translation_phase" title="ja/Localization_Quick_Start_Guide/Translation_phase">翻訳フェーズ</a></h2> -翻訳のためのツールとチュートリアルです。</div> - -<div style="width: 25%; background-color: orange; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;"> -<h2 id="品質保証フェーズ"><a href="/ja/docs/Mozilla/Localization/Quick_start_guide/QA_phase" title="ja/Localization_Quick_Start_Guide/QA_phase">品質保証フェーズ</a></h2> -ローカライズの試験のチュートリアルです。</div> - -<div style="width: 92%; background-color: #C0C0C0; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;"> -<h2 id="リリースフェーズ"><a href="/ja/docs/Mozilla/Localization/Quick_start_guide/Release_phase" title="ja/Localization_Quick_Start_Guide/Release_phase">リリースフェーズ</a></h2> -ローカライズ作業を世に出す過程です。</div> - -<div style="background-color: white; border: 3px solid; display: block; padding: 20px; margin-top: 20px;"><span id="result_box" lang="ja"><span>これらの4つの過程は、ローカライズプログラムの技術面を構成しています。</span> <span>詳細については、上記のいずれかのリンクをクリックしてください。</span> <span>大きな画像を得るには、緑色のところから始め、順番にステージに移動することをお勧めします。</span></span></div> - -<p> </p> - -<div class="note"><strong>注</strong>: このガイドは、新しくローカライズを始める人と、既存のローカライズに参加している人の2種類の貢献者のために書かれています。どの情報がどの種類の貢献者に適用されるのかを知ることは重要です。適切な情報を見分けられるように、新しくローカライズを始める人に固有の情報は<span style="color: #daa520;">オレンジ色のフォント</span>で表示しています。既存のローカライズに参加する人に関する情報は<span style="color: #0000ff;">青色のフォント</span>で表示しています。</div> - -<p>{{ Next("Mozilla/Localization/Quick_start_guide/Initial_setup") }}</p> diff --git a/files/ja/mozilla/localization/quick_start_guide/initial_setup/index.html b/files/ja/mozilla/localization/quick_start_guide/initial_setup/index.html deleted file mode 100644 index 37fe583ba6..0000000000 --- a/files/ja/mozilla/localization/quick_start_guide/initial_setup/index.html +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: 初期セットアップ -slug: Mozilla/Localization/Quick_start_guide/Initial_setup -tags: - - ローカライズ -translation_of: Mozilla/Localization/Quick_start_guide/Initial_setup ---- -<p>ローカライズプログラムに貢献するための前提条件として、コードやツールへのアクセス手段や、適切に設定されたローカル環境(つまり、パソコン)が必要です。あなたのロケールにすでにローカライズの取り組みが存在するかどうかを判断する必要もあります。ここでは、必要なアカウントと、貢献する前に設定する必要があるツールと設定について説明します。</p> - -<h3 id="新規か既存か">新規か既存か</h3> - -<p>何よりも前に、新しいローカライズを始めるのか、既存のローカライズに加わるのかを知る必要があります。これにより、このガイドの後の部分でどの情報が適切かが判断できます。</p> - -<p>することは以下の通りです。</p> - -<p>既存のローカライズコミュニティのディレクトリを調べて、あなたのロケールのコミュニティがすでに存在するどうかを調べてください。</p> - -<ol start="1" style="list-style-type: lower-alpha;"> - <li><span style="color: #0000cd;">コミュニティが既に存在する場合は、彼らに接触して何を手伝うかを尋ねましょう。</span></li> - <li><span style="color: #ff8c00;">コミュニティが存在しない場合は、 <a class="link-https" href="https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.l10n.new-locales" title="https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.l10n.new-locales">new-locales ニュースグループにメールを送って</a>案内してもらってください。</span><span style="color: #ff8c00;">.</span></li> -</ol> - -<h3 id="アカウント">アカウント</h3> - -<p>始めるにあたって、知っておくべきアカウントがいくつかあります。貢献を始めるときには必要ありませんが、公式リリースを制作する準備をするときに必要になります。今のところ、あなたの貢献が進むにつれてこれらが重要になることを覚えておいてください。これらのアカウントにはコードや貢献したものが保存され、公式のローカリゼーションを作成するのに役立ちます。</p> - -<dl> - <dt style="margin-left: 40px;">hg (Mercurial)</dt> - <dd style="margin-left: 40px;">Mercurial はリビジョン管理環境で、 Mozilla の主要なソースコードと Mozilla の公式ローカライズのためにローカライズされたコードを格納しています。 Mozilla のアプリケーションをローカライズするには、これが必要になります。ローカライズを開始する上で、コミットアクセスは必要<u>ありません</u>。 hg でいくらか経験を積んだ後で、コミットアクセスを取得したくなるかもしれません。 その時点で、 <a class="external" href="http://www.mozilla.org/hacking/committer/" title="http://www.mozilla.org/hacking/committer/">Mozilla Committer のページ</a>にアクセスし、そこに記載されているプロセスに従わなければなりません。プロセスをうまく説明する<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=741305" title="https://bugzilla.mozilla.org/show_bug.cgi?id=741305">バグの例を以下に示します</a>。 hg アカウント登録のためにバグ報告をするとき、<a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&component=Repository%20Account%20Requests&rep_platform=All&op_sys=All&cc=l10n%40mozilla.com&short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&component=Repository%20Account%20Requests&rep_platform=All&op_sys=All&cc=l10n%40mozilla.com&short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)">このバグテンプレート</a>を使用してください。ロケールのリポジトリの作成に関するリクエストを<a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">新しいロケールのニュースグループ</a>に追加してください。</dd> - <dt style="margin-left: 40px;">SVN</dt> - <dd style="margin-left: 40px;">SVN はリビジョン管理環境で、 Mozilla の公式ローカライズのために、 Mozilla ソースウェブサイトとそのローカライズ版を格納しています。 SVN へアクセス権を得る方法は、<a class="link-https" href="https://wiki.mozilla.org/SVN#SVN_account_for_localizers" title="https://wiki.mozilla.org/SVN#SVN_account_for_localizers">このウィキページ</a>を参照してください。 <a href="https://developer.mozilla.org/en-US/docs/SVN_guide_for_localizers" title="https://developer.mozilla.org/en-US/docs/SVN_guide_for_localizers">ローカライズする人のための SVN ガイド</a>は、ローカライズのために最も重要な SVN コマンドを学ぶのに役立ちます。新しい<a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">ロケールのニュースグループ</a>にロケールのリポジトリの作成に関するリクエストを追加してください。</dd> -</dl> - -<dl> - <dt style="margin-left: 40px;">ウェブベースのローカライズツール</dt> - <dd style="margin-left: 40px;">これについて少し話があります。今のところ、あなたがそれらを使用することを選択した場合は、個人アカウントを作成する必要があるかもしれないことに注意してください。</dd> - <dt style="margin-left: 40px;">Mozilla LDAP</dt> - <dd style="margin-left: 40px;">Mozilla のメインリポジトリにローカライズ版を登録する準備ができたら、 Mozilla LDAP アカウントが必要になります。<a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">新しいロケールのニュースグループ</a>に LDAP アカウントの作成に関するリクエストを追加してください。</dd> - <dt style="margin-left: 40px;"><span>ロケール固有の Bugzilla コンポーネント</span></dt> - <dd style="margin-left: 40px;"><span>ロケール固有の Bugzilla コンポーネントを使用すると、ローカライズの進捗状況を最初のステップから公式リリースに追跡するのに役立ちます。また、ローカリゼーションチームの作業に固有の問題が発生した場合には通知もしてくれます。ロケールの Bugzilla コンポーネントの作成に関するリクエストを</span><a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics"><span>新しいロケールニュースグループ</span></a><span>に追加してください。</span></dd> -</dl> - -<h3 id="ローカル環境のツール">ローカル環境のツール</h3> - -<p>アカウントと同様に、パソコンにインストールする必要がある環境ツールがいくつかのあります。これらのツールは、貢献したものを保存し、 Mozilla アプリケーションと言語パックをビルドし、作業をテストするのに役立ちます。</p> - -<dl> - <dt style="margin-left: 40px;">Hg (Mercurial)</dt> - <dd style="margin-left: 40px;">前述のとおり、Mozillaのソースコードとローカライズされたコードを維持するために Mercurial を使用しています。あなたのローカライズを保存するためのローカライズリポジトリだけでなく、 PC にインストールして設定する必要もあります。ローカライズ作業のための Mercurial のインストールと設定についての情報はすべて<a href="/ja/Localizing_with_Mercurial#Install_Mercurial" title="https://developer.mozilla.org/ja/L10n_on_Mercurial#Install_Mercurial">ここ</a>にあります。</dd> -</dl> - -<dl> - <dt style="margin-left: 40px;">compare-locales</dt> - <dd style="margin-left: 40px;">compare-locales は、 Firefox や他のアプリケーションを実行することなく作業をチェックするのに役立つ Python スクリプトです。インストール手順は<a href="/en/Compare-locales" title="https://developer.mozilla.org/ja/Compare-locales">こ</a>こにあります。</dd> - <dt style="margin-left: 40px;">L10n checks</dt> - <dd style="margin-left: 40px;">L10n checks は、アプリケーションを実行せずに作業をチェックするのに役立つ別の Python スクリプトです。インストール手順は<a href="/ja/L10n_Checks" title="https://developer.mozilla.org/en/L10n_Checks">ここ</a>にあります。</dd> - <dt style="margin-left: 40px;">autoconf 2.13</dt> - <dd style="margin-left: 40px;">autoconf は、 Mozilla アプリケーションのビルドと言語パックを手動で作成するために不可欠なユーティリティです。これらのビルドにはバージョン2.13以降を使用します。ソースファイルとインストール手順は<a class="external" href="http://www.gnu.org/software/autoconf/" title="http://www.gnu.org/software/autoconf/">ここ</a>にあります。</dd> - <dt style="margin-left: 40px;">wget</dt> - <dd style="margin-left: 40px;">wget は、インターネットプロトコルを使用してファイルを取得できるコマンドラインユーティリティです。リポジトリからファイルを取得するために使用します。ソースファイルとインストール手順は<a class="external" href="http://www.gnu.org/s/wget/" title="http://www.gnu.org/s/wget/">ここ</a>にあります。</dd> - <dt style="margin-left: 40px;">Perl</dt> - <dd style="margin-left: 40px;">Perl は、 Mozilla アプリケーションのビルドと言語パックの作成に役立つプログラミング言語です。ソースファイルとインストール手順は<a class="external" href="http://www.perl.org/" title="http://www.perl.org/">ここ</a>にあります。</dd> - <dt style="margin-left: 40px;">Python</dt> - <dd style="margin-left: 40px;">Python は、多くのローカライズ用テストスクリプトが書かれたプログラミング言語です。ソースファイルとインストール手順は<a class="external" href="http://python.org/" title="http://python.org/">ここ</a>にあります。</dd> - <dt style="margin-left: 40px;">Locale Switcher または Quick Locale Switcher</dt> - <dd style="margin-left: 40px;">Locale Switcher と Quick Locale Switcher は、 Mozilla アプリケーションのアドオンです。 Mozilla アプリケーションで作業結果を見るためには、どちらかが必要です。 Firefox のアドオンマネージャでこれらのファイルを検索するか、<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/locale-switcher/" title="https://addons.mozilla.org/en-US/firefox/addon/locale-switcher/">これら</a>の<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/quick-locale-switcher/" title="https://addons.mozilla.org/en-US/firefox/addon/quick-locale-switcher/">リンク</a>をたどってインストールすることができます。</dd> - <dt style="margin-left: 40px;">堅牢な、 Unicode ベースのテキストエディタ―</dt> - <dd style="margin-left: 40px;">いくつかお薦めのものがあります。 - <ul> - <li style="margin-left: 40px;">Windows: <a class="external" href="http://notepad-plus.sourceforge.net/uk/site.htm" rel="external nofollow" title="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> または <a class="external" href="http://www.flos-freeware.ch/notepad2.html" rel="external nofollow" title="http://www.flos-freeware.ch/notepad2.html">Notepad2</a></li> - <li style="margin-left: 40px;">GNU/Linux: <a class="external" href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29" rel="external nofollow" title="http://en.wikipedia.org/wiki/Vim_(text_editor)">vim</a>, <a class="external" href="http://projects.gnome.org/gedit/" rel="external nofollow" title="http://projects.gnome.org/gedit/">gedit</a>, <a class="external" href="http://www.kate-editor.org/kate" rel="external nofollow" title="http://www.kate-editor.org/kate">Kate</a></li> - <li style="margin-left: 40px;">Mac OS X: <a class="external" href="http://www.barebones.com/products/TextWrangler/" rel="external nofollow" title="http://www.barebones.com/products/TextWrangler/">TextWrangler</a></li> - </ul> - </dd> - <dt style="margin-left: 40px;">GNU make</dt> - <dd style="margin-left: 40px;"><span class="external">Make は実行可能ファイルの生成を制御するツールです。バージョン</span> 3.79.1 以上は<a class="external" href="http://www.gnu.org/software/make/" title="http://www.gnu.org/software/make/">こちら</a>にあります。残念ながら、他の種類の <code>make</code> は利用できません。</dd> -</dl> - -<h2 id="初期セットアップの終了">初期セットアップの終了</h2> - -<p>これで初期セットアップが終了したので、翻訳の準備ができました。</p> - -<p>{{ PreviousNext("Mozilla/Localization/Quick_start_guide", "Mozilla/Localization/Quick_start_guide/Translation_phase") }}</p> diff --git a/files/ja/mozilla/localization/quick_start_guide/translation_phase/index.html b/files/ja/mozilla/localization/quick_start_guide/translation_phase/index.html deleted file mode 100644 index 080e7b74d9..0000000000 --- a/files/ja/mozilla/localization/quick_start_guide/translation_phase/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: 翻訳フェーズ -slug: Mozilla/Localization/Quick_start_guide/Translation_phase -tags: - - ローカライズ -translation_of: Mozilla/Localization/Quick_start_guide/Translation_phase ---- -<p>初期セットアップの完了おめでとうございます。努力の成果として、ここへ来た目的である Mozilla プロジェクトのローカライズに移ることができます。</p> - -<p>ここから、プロセスの技術的側面が別れ始めるところです。 Mozilla では、3つの異なるグループに分類されるさまざまなプロジェクトをローカライズしています。プロジェクトの各グループは、プロジェクトのローカライズのために、異なるローカライズツールを採用しています。ローカライズツールは、ローカライズされたコンテンツをリリースからリリースまで維持し、新しいコンテンツをローカライズする際に既にローカライズされた素材を活用するのに役立ちます。</p> - -<p>ここでは、これらのプロジェクトのグループと、それぞれに関連付けられているツールについて説明します。途中で、その特定のプロジェクトグループのローカライズに関する基本的な技術チュートリアルを紹介します。あなたとそのコミュニティは、どのローカライズツールが最も適しているかを判断する必要があります。より多くの経験を積むと、Mozillaが開発したローカライズツールとは独立してローカライズしたくなるかもしれません。</p> - -<h2 id="Projects" name="Projects">プロジェクトの種類</h2> - -<p>The Mozilla projects and their l10n workflows are divided into these groups: Mozilla applications, Mozilla websites, and Add-ons. Below you'll find the list of all Mozilla projects, their associated l10n tools, and links to tutorials outlining their workflows.</p> - -<h3 id="Mozilla_applications" name="Mozilla_applications">Mozilla のアプリケーション</h3> - -<p>So you're interested in localizing Mozilla applications. Each l10n tool follows a different workflow for localizing Mozilla application projects. We've linked a brief tutorial to each l10n tool name below. Follow the tutorials to help you decide which l10n tool fits your specific needs.</p> - -<p>These are the l10n tools we use to localize Mozilla applications:</p> - -<dl> - <dt style="margin-left: 40px;"><a class="external" href="http://translate.sourceforge.net/wiki/guide/mozilla" title="http://translate.sourceforge.net/wiki/guide/mozilla">Pootle</a></dt> - <dd style="margin-left: 40px;">A user-friendly web portal built on the Translate Toolkit API. This tool includes workspaces for translating strings, reviewing string submissions, and project dashboards. See the <a class="external" href="http://pootle.locamotion.org/" title="http://pootle.locamotion.org/">instance of Pootle used to localize Mozilla applications</a>.</dd> -</dl> - -<dl> - <dt style="margin-left: 40px;"><a href="/en/Localizing_with_Koala" title="https://developer.mozilla.org/en/Localizing_with_Koala">Koala</a></dt> - <dd style="margin-left: 40px;">A l10n add-on for the offline, stand-alone Komodo Edit text editor.</dd> - <dt style="margin-left: 40px;"><a class="external" href="/en/Localizing_with_Mozilla_Translator" title="https://developer.mozilla.org/en/Localizing_with_Mozilla_Translator">Mozilla Translator</a></dt> - <dd style="margin-left: 40px;">Am offline, stand-alone, Java-based l10n tool that helps you translate and integrates with your repositories. Visit the <a class="external" href="http://kenai.com/projects/moztrans/downloads" title="http://kenai.com/projects/moztrans/downloads">Mozilla Translator (MT) download page</a> to get your own MT client. Version 5.26 is the latest version.</dd> - <dt style="margin-left: 40px;">Virtaal</dt> - <dd style="margin-left: 40px;">An offline, stand-alone version of Pootle that is also built on the Translate Toolkit API.</dd> -</dl> - -<p>These are the Mozilla application projects that are localized using the l10n tools above:</p> - -<dl> - <dt style="margin-left: 40px;">Firefox</dt> - <dd style="margin-left: 40px;">The award-winning Firefox® Web browser has security, speed and new features that will change the way you use the Web. <span style="color: #daa520;">See the <a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/firefox.phaselist" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/firefox.phaselist">list of the most critical strings for localizing in Firefox</a></span><span style="color: #daa520;">, as well as <a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/phases" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/phases">a guide to understanding how they're organized</a></span><span style="color: #daa520;">.</span></dd> - <dt style="margin-left: 40px;">Thunderbird</dt> - <dd style="margin-left: 40px;">Enjoy safe, fast and easy email, Mozilla-style. The Thunderbird® email client includes intelligent spam filters, powerful search and customizable views.</dd> - <dt style="margin-left: 40px;">Seamonkey</dt> - <dd style="margin-left: 40px;">SeaMonkey® is the all-in-one application formerly known as the "Mozilla Application Suite", containing a web browser, a mail and newsgroups client, an HTML editor, web development tools, and an IRC chat client.</dd> - <dt style="margin-left: 40px;">Firefox Mobile</dt> - <dd style="margin-left: 40px;">By adding Firefox® to your mobile phone, you can access rich Web content and enjoy your favorite Firefox features wherever you go.</dd> - <dt style="margin-left: 40px;">Lightning</dt> - <dd style="margin-left: 40px;">Lightning is a popular calendaring, scheduling and task management extension.</dd> -</dl> - -<p><span style="color: #0000ff;">If your locale has an hg repository hosted on the Mozilla servers, you can track your localization's current progress by visiting the </span><a class="link-https" href="https://l10n.mozilla.org/teams/" title="https://l10n.mozilla.org/teams/"><span style="color: #0000ff;">l10n dashboards</span></a><span style="color: #0000ff;">.</span></p> - -<div class="note"> -<p><strong>Note:</strong> <span style="color: #ff8c00;">If you are starting a new localization and decide to use an offline tool for localizing Mozilla applications, you will need to become familiar with using Mercurial (hg). Visit the </span><a href="https://developer.mozilla.org/ja/docs/Localizing_with_Mercurial" title="https://developer.mozilla.org/ja/docs/Localizing_with_Mercurial"><span style="color: #ff8c00;">tutorial on using hg in your localization efforts here</span></a><span style="color: #ff8c00;">. </span></p> -</div> - -<h3 id="Mozilla_websites" name="Mozilla_websites">Mozilla のウェブサイト</h3> - -<p>So you're interested in localizing Mozilla websites. Each l10n tool follows a different workflow for localizing Mozilla web projects. We've linked a brief tutorial to each l10n tool name below. Follow the tutorials to help you decide which l10n tool fits your specific needs.</p> - -<p>These are the l10n tools we use to localize Mozilla web projects:</p> - -<dl> - <dt style="margin-left: 40px;"><a href="/ja/docs/Localizing_with_Pontoon" title="/ja/docs/Localizing_with_Pontoon">Pontoon</a></dt> - <dd style="margin-left: 40px;">A web-based, What-You-See-Is-What-You-Get (WYSIWYG) l10n tool that allows you to localize Mozilla websites within the site itself. Visit <a class="external" href="https://pontoon.mozilla.org" title="http://horv.at/pontoon/">Pontoon</a> here. Please note the Pontoon is not available for all web projects yet.</dd> -</dl> - -<p>These are the Mozilla web projects that are localized using the l10n tools above:</p> - -<dl> - <dt style="margin-left: 40px;">mozilla.org</dt> - <dd style="margin-left: 40px;">Every user's first Mozilla experience.</dd> - <dt style="margin-left: 40px;">addons.mozilla.org (AMO)</dt> - <dd style="margin-left: 40px;">A portal for all users interested in finding add-ons for their local Mozilla applications. Read the <a class="link-https" href="https://addons.mozilla.org/ja/localizers/" title="https://addons.mozilla.org/ja/localizers/">guidelines on localizing AMO</a>, straight from the AMO team.</dd> - <dt style="margin-left: 40px;">developer.mozilla.org (MDN)</dt> - <dd style="margin-left: 40px;">Where you are now! Help localize the MDN user interface for everyone in your region.</dd> - <dt style="margin-left: 40px;">support.mozilla.com (SUMO)</dt> - <dd style="margin-left: 40px;">A portal for anyone who needs technical support for their Mozilla applications. Help localize the SUMO user interface for everyone in your region.</dd> - <dt style="margin-left: 40px;">Mozilla Engagement Campaigns</dt> - <dd style="margin-left: 40px;">Individual campaigns created by Mozilla to attract new contributors.</dd> - <dt style="margin-left: 40px;">hacks.mozilla.org</dt> - <dd style="margin-left: 40px;">For everyone interested in the leading-edge stuff that people are doing with Mozilla Firefox and the open web.</dd> - <dt style="margin-left: 40px;">In-product pages</dt> - <dd style="margin-left: 40px;">A set of pages used to interact with and give information to the end-user as part of their first experience with their Mozilla applications.</dd> -</dl> - -<p><span style="color: #ff8c00;">If you are creating your own localization, there are a number of Mozilla websites that need to be localized before your efforts become an officially released localization. See the</span><span style="color: #ff8c00;"> <a class="link-https" href="https://wiki.mozilla.org/L10n:Web_parts#Firefox_in-product_pages" title="https://wiki.mozilla.org/L10n:Web_parts#Firefox_in-product_pages">list of localized Mozilla websites</a>. </span></p> - -<p>You should also read <a class="link-https" href="https://wiki.mozilla.org/L10n:Web_parts" title="https://wiki.mozilla.org/L10n:Web_parts">more information on localizing Mozilla web projects</a>.</p> - -<dl> - <dt> </dt> -</dl> - -<h3 id="Add-ons" name="Add-ons">アドオン</h3> - -<p>l10n for add-ons is handled by at least two other organizations/services called Babelzilla and Adofex. They both have created comprehensive programs and l10n tools for localizing any and all third-party add-ons for Mozilla applications. Visit their websites to learn how to get involved.</p> - -<ul> - <li><a class="external" href="http://babelzilla.org" title="http://babelzilla.org">Babelzilla</a></li> - <li><a class="external" href="http://adofex.clear.com.ua/" title="http://adofex.clear.com.ua/">Adofex</a></li> -</ul> - -<h2 id="Tool-independent_localization" name="Tool-independent_localization">ツールに依存しないローカライズ</h2> - -<p>Are you a command-line master? Do you prefer Unicode text editors to any other applications on Earth? Do you have a pet CAT (computer-assisted translation) tool, like OmegaT? Then you may not be interested in using any of the tools listed above for your localizations. If that is the case, then this section is for you!</p> - -<p>For localizers who prefer localizing without a specialized tool the workflows for localizing Mozilla applications and Mozilla websites are essentially the same.<a href="/en/Localizing_without_a_specialized_tool" title="https://developer.mozilla.org/en/Localizing_without_a_specialized_tool"> This tutorial</a> should provide you with all of the technical information you need to secure and maintain your tool independence.</p> - -<h2 id="製品化">製品化</h2> - -<p>Productization is an essential part of localizing Mozilla products. This is where you research and select the search plugins, content and protocol handlers, bookmarks, and links to recommended sites on the in-product pages that your locale's users will find in their Mozilla products.</p> - -<p><a href="https://developer.mozilla.org/ja/docs/Productization_guide" title="https://developer.mozilla.org/en/Productization_patches">This tutorial will walk you through performing these productization tasks</a>, creating productization patches, and submitting them for review.</p> - -<p>{{ PreviousNext("Localization_Quick_Start_Guide/Initial_setup", "Localization_Quick_Start_Guide/QA_phase") }}</p> diff --git a/files/ja/mozilla/marketplace/options/open_web_apps_for_desktop/index.html b/files/ja/mozilla/marketplace/options/open_web_apps_for_desktop/index.html deleted file mode 100644 index 5781937470..0000000000 --- a/files/ja/mozilla/marketplace/options/open_web_apps_for_desktop/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Open Web Apps for Desktop -slug: Mozilla/Marketplace/Options/Open_web_apps_for_desktop -translation_of: Archive/Marketplace/Options/Open_web_apps_for_desktop ---- -<div class="summary"> -<p>デスクトップ版Firefoxのユーザーはフリーのマーケットプレイスアプリを'通常'のWindowsアプリ・Mac/Linuxアプリとしてインストールできます。これらのアプリは、デスクトップ版Webランタイム上で動作し、デスクトップ版Firefoxの機能を使ってインストールしています。Firefoxマーケットプレイス以外でもこの機能を使う事はできます。</p> -</div> - -<h2 id="デスクトップの_Open_Web_Appsとは?">デスクトップの Open Web Appsとは?</h2> - -<p>デスクトップのOpen Web AppsはWindows/Mac/Linuxコンピューターユーザーマーケットプレイスアプリをインストールできるようにしています。一度インストールされたアプリは、通常のデスクトップアプリとして起動することが出来ます。<br> - アプリはデスクトップ版Firefoxに含まれるデスクトップ版Webランタイム上で実行されます。</p> - -<p>デスクトップのOpen Web Apps開発時には、デスクトップ開発知識や、特殊な開発ステップ、'ネイティブ'デスクトップアプリの配信の知識などは不要です。</p> - -<div class="note"> -<p><strong>Note</strong>: デスクトップのOpen Web Appsは、デスクトップ版Firefox 29以降でサポートしています。</p> -</div> - -<p>デスクトップ版Webランタイムはデスクトップの機能(<a href="/ja/docs/IndexedDB">IndexedDB</a>, <a href="/en-US/docs/Web/API/Geolocation">Geolocation</a>, <a href="/ja/docs/WebAPI/Battery_Status">Battery status</a>など。)にアクセスするための12個のAPIをサポートしています。<br> - APIの詳細についは<a href="https://wiki.mozilla.org/WebAPI#APIs">complete list of supported APIs</a> を御覧ください。"Available"列の"D"セルがデスクトップ版Webランタイムでの各APIの対応状況を示しています。緑色のセルは全機能をサポートしてます。マウスをかざすとさらなる情報が表示されます。</p> - -<p>近い将来、デスクトップ版WebランタイムでサポートするAPIをは追加されていきます。</p> - -<div class="note"> -<p><strong>Note</strong>: アプリがレスポンシブデザインで作られていない場合、Firefox OSとデスクトップコンピュータのように、大幅に異なるプラットフォームでは狙ったどおりに表示されません。これは、Firefox OS端末と違ってデスクトップコンピュータユーザの解像度(DPI)やサイズが異なるためです。レスポンシブデザインを考慮した設計をするように常に心がけでください。レスポンシブデザインに関する詳しい情報は<a href="https://developer.mozilla.org/ja/docs/Web/Apps/Design">アプリセンターのデザインセクション</a>を御覧ください。</p> -</div> - -<h2 id="Firefoxマーケットプレイスからデスクトップ版Open_Web_Appsを利用する">Firefoxマーケットプレイスからデスクトップ版Open Web Appsを利用する</h2> - -<p>このセクションではデスクトップ版Open Web Appsの利用方法、Firefoxマーケットプレイスへ与える効果、アプリアップデートの情報を提供します。</p> - -<h3 id="アプリの提出">アプリの提出</h3> - -<p><a href="/ja/docs/Web/Apps/Submitting_an_app">Firefoxマーケットプレイスにアプリを提出する</a>際、デスクトップ版Firefoxを選択することが可能です。</p> - -<h3 id="アプリのレビュー">アプリのレビュー</h3> - -<p>アプリのレビュー時にレビューアは、Firefoxマーケットプレイスのレビューセクションからアプリをインストールします。デスクトップからレビューする際、デスクトップ版Firefoxはレビューアのコンピュータへアプリをインストールします。これにより、通常のアプリ同様完全な動作をレビューする事が可能になります。</p> - -<h3 id="アプリのインストール">アプリのインストール</h3> - -<p>Firefoxマーケットプレイスからユーザーがアプリを選択すると以下の動作をします。</p> - -<ol> - <li><a href="https://marketplace.firefox.com/">Firefoxマーケットプレイス</a>では通常アプリの詳細と<strong>無料</strong>ボタンが表示されます。</li> - <li>ユーザーが無料ボタンをクリックしたら、インストール確認用のFirefox標準ダイアログが表示されます。ダイアログには特権が必要なアプリの場合は必要となるパーミッションのリストが表示されます。このダイアログにはユーザーが懸念していることに関する説明も含まれます。</li> - <li>ユーザーがインストール継続をするためにインストールをクリックすると、<a href="/ja/docs/Web/API/Apps/install" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Apps.install</code></a> / <a href="/ja/docs/Web/API/Apps/installPackage" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Apps.installPackage</code></a>が意図されたとおりに実行され、デスクトップ版FirefoxはFirefoxマーケットプレイスからアプリの詳細を要求します。パッケージがタアプリノ場合はアプリのZipファイルをダウンロードします(これはアプリがホスト型か、パッケージ型かに依存します)。<br> - デスクトップ版FirefoxはデスクトップOSにアプリをインストールします。これによって、オフラインでもアプリを利用することが可能になります。(もし<a href="/ja/docs/Web/Apps/Manifest#appcache_path">AppCacheの記載</a>があれば、パッケージ型の場合はZipを、ホスト型の場合はアプリのアセットをインストールします。)</li> -</ol> - -<p>一度アプリがインストールされると、通常のデスクトップOSのアプリと同じように表示されます。起動と削除方法も他のデスクトップアプリと変わりはありません。</p> - -<h3 id="アプリのアップデート">アプリのアップデート</h3> - -<p>デスクトップ版Webランタイムではアップデート可能なアプリをユーザーへ通知する仕組みを搭載しています。</p> - -<p>もし、ホスト型アプリであれば、いつでもサーバー上のコンテンツを変更すればユーザーの次回起動時に変更が反映されて動作します。</p> - -<p>他の全ての変更についてはFirefoxマーケットプレイスで新しいバージョンを追加する必要があります。</p> - -<ul> - <li>ホスト型アプリの場合、更新するマニフェストファイルを含むサーバー上のアプリへのリンク</li> - <li>パッケージ型アプリの場合、更新するマニフェストとコンテンツが含まれるzipファイル</li> -</ul> - -<p>アプリが動作中の場合、デスクトップ版Webランタイムは毎日アプリのマニフェストファイルのバージョン番号のチェックをします。もし変更されている場合はユーザーに対してアップデートが入手できることを通知します。ユーザーは新しいバージョンをインストールする事を選択する事ができます。</p> - -<h2 id="他のロケーションからデスクトップ版Open_Web_Apps_を利用する">他のロケーションからデスクトップ版Open Web Apps を利用する</h2> - -<p>自身で構築したマーケットプレイスまたはサーバーにホスト型またはパッケージ型のOpen Web Apps を提供する事が可能であれば、そのケースではデスクトップ版 Open Web Appsを利用して自動インストールが可能です。Open Web Apps のオリジナルのロケーションで、新しいバージョンを検知した場合、Firefoxはアプリのアップデートをハンドリングします。</p> - -<h2 id="デスクトップ版Open_Web_Apps_のアプリインストール仕様">デスクトップ版Open Web Apps のアプリインストール仕様</h2> - -<p>このセクションではFirefox がどのように、デスクトップ版Open Web Apps をインストールするかを説明します。</p> - -<ol> - <li>ユーザーがアプリのインストールを選択した場合、上述した通り、デスクトップ版Firefox はホストしているサーバーに対し、アプリのマニフェストファイルやアイコン画像をを要求します。(Firefox Marketplace またはアプリをホストしているサーバーに対して要求) - <ul> - <li>ホスト型アプリの場合はメインのマニフェストファイル</li> - <li>パッケージ型アプリの場合は、ミニマニフェストファイル</li> - </ul> - </li> - <li>パッケージ型アプリでは、ホストしているサーバーに対して デスクトップ版Firefox はアプリのZIp ファイルを要求します。</li> - <li>デスクトップ版Firefoxはアプリのインストール処理をします。 - <ul> - <li>ホスト型アプリの場合、Windows / Mac / Linux で実行可能なURL にラッピングし、デスクトップコンピュータ上に配置する</li> - <li>パッケージ型アプリの場合、Windows / Mac / Linux で実行可能なアプリのコンテンツをラッピングし、デスクトップコンピュータ上に配置する</li> - </ul> - </li> -</ol> - -<p>以下のフロー図は、デスクトップ版Open Web Appsを利用したアプリのインストールワークフローを示したものです。</p> - -<p style="text-align: center;"><img alt="Open Web Apps for Desktop Sequence Diagram" src="https://mdn.mozillademos.org/files/8005/Open%20Web%20Apps%20for%20Desktop%20Sequence%20Diagram%20v4.png" style="height: 633px; width: 623px;"></p> - -<h2 id="FAQ">FAQ</h2> - -<p>ここでは、デスクトップ版Open Web Appsに関してよく聞かれる質問をまとめています。</p> - -<h3 id="アプリ内課金と有料アプリの機能はいつから提供されますか?">アプリ内課金と有料アプリの機能はいつから提供されますか?</h3> - -<p>この機能の実装時期は計画中です。デスクトップ版Open Web Appsに実装された場合信頼されたUIへのアクセスや、<a href="/ja/docs/Web/API/window.navigator.mozPay">mozPay</a>、そしてすべてのアプリ内課金支払いプロセスが提供されます。</p> - -<h3 id="デスクトップで動作させた場合のデバッグはどうすれば良いですか?">デスクトップで動作させた場合のデバッグはどうすれば良いですか?</h3> - -<p>コンソール( 他のリモート開発者ツール )にアクセスして、-debug フラグとオプション定義されたポート番号を使ってコマンドラインからアプリをスタートする事が可能です。<br> - Macの例では、Mykzilla テストアプリを以下のように開始します。</p> - -<p><code>> /Applications/Mykzilla.app/Contents/MacOS/webapprt -debug 6000</code></p> - -<p>そして、Firefox の<strong>開発ツール</strong>メニューの<strong>接続... </strong>をクリックして、localhostの指定したポートに接続します。その後、Firefox の<strong>接続</strong>をクリックして、アプリへ戻り接続状況を確認してください。Firefoxに戻り、"tab"(たとえばアプリの開いているウィンドウ)を選択するかWeb ランタイムのChrome コードをデバッグするための"メインプロセス"を選択します。</p> - -<p>Firefox のリモート開発ツールのコピーは新しいウィンドウとして開くと、"tab"に接続できます。</p> diff --git a/files/ja/mozilla/mathml_project/index.html b/files/ja/mozilla/mathml_project/index.html deleted file mode 100644 index ffe7f765cf..0000000000 --- a/files/ja/mozilla/mathml_project/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Mozilla MathML Project -slug: Mozilla/MathML_Project -tags: - - MathML - - MathML Project - - NeedsTranslation - - TopicStub -translation_of: Mozilla/MathML_Project ---- -<p>The Mozilla MathML project is Mozilla's project to build and enhance <a href="/en-US/docs/Web/MathML" title="/en-US/docs/Web/MathML">MathML</a> support within Firefox and other Mozilla-based applications. For a quick overview, see the <a href="http://fred-wang.github.io/MozSummitMathML/index.html">slides for the innovation fairs at Mozilla Summit 2013</a>.</p> - -<h2 id="Updates">Updates</h2> - -<p><img alt="Mathzilla" class="default internal" src="https://mdn.mozillademos.org/files/6281/mathzilla.svg" style="float: right; height: 150px; width: 150px;"></p> - -<ul> - <li><a href="/docs/Mozilla/MathML_Project/Status" title="Mozilla MathML Project/Status">Status of each tag</a></li> - <li><a href="/docs/Mozilla/MathML_Project/MathML3Testsuite" title="Mozilla MathML Project/MathML3Testsuite">Result of the MathML 3 Testsuite</a></li> - <li><a class="external" href="https://www.wg9s.com/mozilla/firefox/">Unofficial nightly builds with MathML patches applied</a> (maintained by Bill Gianopoulos)</li> - <li><a href="/docs/Mozilla/MathML_Project/Updates" title="Mozilla_MathML_Project/Updates">More updates and archived content</a></li> -</ul> - -<h2 id="Community">Community</h2> - -<ul> - <li>View Mozilla forums... {{DiscussionList("dev-tech-mathml", "mozilla.dev.tech.mathml")}}</li> - <li><a class="link-irc" href="irc://irc.mozilla.org/%23mathml" rel="external" title="irc://irc.mozilla.org/%23mathml">IRC channel</a></li> - <li><a class="link-https" href="https://wiki.mozilla.org/MathML:Home_Page">Wiki used by contributors</a> - check out the latest developments and help us improving MathML in Mozilla.</li> -</ul> - -<h2 id="Links">Links</h2> - -<ul> - <li>Installing <a href="/docs/Mozilla/MathML_Project/Fonts" title="Mozilla MathML Project/Fonts">fonts for Mozilla's MathML engine</a></li> - <li><a class="external" href="http://www.w3.org/TR/MathML3/">MathML Version 3.0</a> - W3C Recommendation, 21 October 2010</li> - <li><a class="external" href="http://www.w3.org/Math/testsuite/"><abbr>W3C</abbr> <abbr>MathML</abbr> Test Suite</a> - Designed to check the implementation of each element one attribute (or built-in rendering behavior) at a time in a fairly thorough manner.</li> - <li><a href="/docs/Web/MathML" title="MathML">MathML in Mozilla Developer Network</a></li> - <li><a href="/en-US/docs/Mozilla/MathML_Project/a11y">MathML Accessibility in Mozilla</a></li> -</ul> - -<h3 id="Sample_MathML_Documents">Sample <abbr>MathML</abbr> Documents</h3> - -<ul> - <li><a href="/docs/Mozilla/MathML_Project/Screenshots" title="Mozilla MathML Project/Screenshots">Screenshots</a></li> - <li><a href="/docs/Mozilla/MathML_Project/Start" title="Mozilla_MathML_Project/Start"><abbr>MathML</abbr> Start Page</a> - with translations in different languages ( <a href="/ar/docs/Mozilla_MathML_Project/Start" title="/ar/Mozilla_MathML_Project/Start">Arabic</a>, <a href="/zh-CN/docs/Mozilla_MathML_Project/Start" title="/zh-CN/Mozilla_MathML_Project/Start">Chinese</a>, <a href="/he/docs/Mozilla_MathML_Project/Start" title="/he/Mozilla_MathML_Project/Start">Hebrew</a>, <a href="/th/docs/Mozilla_MathML_Project/Start" title="/th/Mozilla_MathML_Project/Start">Thai</a>)</li> - <li><a class="external" href="/docs/Mozilla/MathML_Project/Basics">MathML Basics</a> - Document tailored to display correctly with just the Symbol font that is pre-installed by default on most OS configurations.</li> - <li><a class="external" href="/docs/Mozilla/MathML_Project/MathML_Torture_Test"><abbr>MathML</abbr> Torture Test</a> - Comparative testing of MathML rendering against TeX.</li> - <li>Demo of some MathML tags: <a class="external" href="/docs/Mozilla/MathML_Project/mfrac">mfrac</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mo">mo</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mtable">mtable</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mspace">mspace</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mmultiscripts">mmultiscripts</a>, <a class="external" href="/docs/Mozilla/MathML_Project/roots">msqrt-mroot</a>.</li> - <li><a class="external" href="/docs/Mozilla/MathML_Project/Extras">MathML Extras</a> - Technology demonstration of some interesting upshots from building natively upon the browser environment.</li> - <li><a href="/docs/Mozilla/MathML_Project/Various" title="Mozilla_MathML_Project/Various">Various MathML Tests</a> - These pages were imported from <code>layout/mathml/tests/</code>.</li> - <li><a class="external" href="http://golem.ph.utexas.edu/~distler/blog/archives/000104.html">Blog</a> with comments that include MathML.</li> -</ul> - -<h3 id="Create_MathML_Documents">Create <abbr>MathML</abbr> Documents</h3> - -<ul> - <li><a href="/docs/Web/MathML/Authoring" title="Mozilla MathML Project/Authoring">Authoring MathML</a></li> - <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_editors.html">Editors</a></li> - <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_converters.html">Converters</a></li> - <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_stylesheets.html">Stylesheets</a></li> -</ul> - -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - -<ul> - <li>Author(s): Roger B. Sidje</li> - <li>Other Contributors: Frédéric Wang</li> - <li>Last Updated Date: April 4, 2010</li> - <li>Copyright Information: Portions of this content are © 1999–2010 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li> -</ul> -</div> - -<p> </p> diff --git a/files/ja/mozilla/mathml_project/mathml_torture_test/index.html b/files/ja/mozilla/mathml_project/mathml_torture_test/index.html deleted file mode 100644 index fb5e870e38..0000000000 --- a/files/ja/mozilla/mathml_project/mathml_torture_test/index.html +++ /dev/null @@ -1,1322 +0,0 @@ ---- -title: MathML 耐久テスト -slug: Mozilla/MathML_Project/MathML_Torture_Test -tags: - - Intermediate - - MathML -translation_of: Mozilla/MathML_Project/MathML_Torture_Test ---- -<h2 id="MathML_Torture_Test" name="MathML_Torture_Test">MathML 耐久テスト</h2> - -<div style="display: none;"> -<h3 id="HTML_Content">HTML Content</h3> - -<pre class="brush: html"><p> - Render mathematics with: - <select name="MathFont" id="MathFont"> - <option value="Default" selected="selected">Default fonts</option> - <option value="Asana">Asana</option> - <option value="Cambria">Cambria</option> - <option value="LatinModern">Latin Modern</option> - <option value="LucidaBright">Lucida Bright</option> - <option value="Minion">Minion</option> - <option value="STIX">STIX</option> - <option value="TeXGyreBonum">TeX Gyre Bonum</option> - <option value="TeXGyrePagella">TeX Gyre Pagella</option> - <option value="TeXGyreSchola">TeX Gyre Schola</option> - <option value="TeXGyreTermes">TeX Gyre Termes</option> - <option value="XITS">XITS</option> - <option value="XITSRTL">XITS RTL</option> - </select> <br/> -</p> - -<table> - -<tr> -<td></td> -<th scope="col">As rendered by TeX</th> -<th scope="col">As rendered by your browser</th></tr> - -<tr> -<td>1</td> - -<td><img src="https://developer.mozilla.org/@api/deki/files/4578/=ex1.png" width="38" height="22" -alt="TeXbook, 16.2-16.3" /></td> -<td> -<math display="block"> -<mrow> - <msup> - <mi>x</mi> - <mn>2</mn> - </msup> - <msup> - <mi>y</mi> - - <mn>2</mn> - </msup> -</mrow> -</math> -</td></tr> - -<tr> -<td>2</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4579/=ex2.png" width="30" height="17" alt="TeXbook, 16.2-16.3" /></td> -<td> -<math display="block"> -<!-- -<mrow> - <msub><mi></mi><mn>2</mn></msub> - <msub><mi>F</mi><mn>3</mn></msub> -</mrow> ---> -<mrow> - - <mmultiscripts> - <mi>F</mi> - <mn>3</mn><none/> - <mprescripts/> - <mn>2</mn><none/> - </mmultiscripts> -</mrow> -</math> - -</td></tr> - -<tr> -<td>3</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4586/=ex21.png" width="58" height="47" alt="TeXbook, 17-17.1" /></td> -<td> -<math display="block"> -<mrow> - <mfrac> - <mrow> - <mi>x</mi> - <mo>+</mo> - - <msup> - <mi>y</mi> - <mn>2</mn> - </msup> - </mrow> - <mrow> - <mi>k</mi> - - <mo>+</mo> - <mn>1</mn> - </mrow> - </mfrac> -</mrow> -</math> -</td></tr> - -<tr> -<td>4</td> - -<td><img src="https://developer.mozilla.org/@api/deki/files/4587/=ex22.png" width="76" height="25" alt="TeXbook, 17-17.1" /></td> -<td> -<math display="block"> -<mrow> - <mi>x</mi> - <mo>+</mo> - <msup> - <mi>y</mi> - <mfrac> - - <mn>2</mn> - <mrow> - <mi>k</mi> - <mo>+</mo> - <mn>1</mn> - </mrow> - </mfrac> - - </msup> -</mrow> -</math> -</td></tr> - -<tr> -<td>5</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4588/=ex23.png" width="30" height="42" alt="TeXbook, 17-17.1" /></td> -<td> -<math display="block"> -<mrow> - <mfrac> - <mi>a</mi> - - <mrow> - <mi>b</mi> - <mo>/</mo> - <mn>2</mn> - </mrow> - </mfrac> -</mrow> -</math> - -</td></tr> - -<tr> -<td>6</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4589/=ex24.png" width="220" height="138" alt="TeXbook, 17.5-17.6" /></td> -<td> -<math display="block"> -<mrow> - <msub> - <mi>a</mi> - <mn>0</mn> - - </msub> - <mo>+</mo> - <mfrac> - <mn>1</mn> - <mstyle displaystyle="true" scriptlevel="0"> - <msub> - <mi>a</mi> - - <mn>1</mn> - </msub> - <mo>+</mo> - <mfrac> - <mn>1</mn> - <mstyle displaystyle="true" scriptlevel="0"> - <msub> - - <mi>a</mi> - <mn>2</mn> - </msub> - <mo>+</mo> - <mfrac> - <mn>1</mn> - <mstyle displaystyle="true" scriptlevel="0"> - - <msub> - <mi>a</mi> - <mn>3</mn> - </msub> - <mo>+</mo> - <mfrac> - <mn>1</mn> - - <mstyle displaystyle="true" scriptlevel="0"> - <msub> - <mi>a</mi> - <mn>4</mn> - </msub> - </mstyle> - </mfrac> - </mstyle> - </mfrac> - - </mstyle> - </mfrac> - </mstyle> - </mfrac> -</mrow> -</math> -</td></tr> - -<tr> -<td>7</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4590/=ex25.png" width="200" height="85" alt="TeXbook, 17.5-17.6" /></td> -<td> - -<math> -<mrow> - <msub> - <mi>a</mi> - <mn>0</mn> - </msub> - <mo>+</mo> - <mfrac> - - <mn>1</mn> - <mrow> - <msub> - <mi>a</mi> - <mn>1</mn> - </msub> - <mo>+</mo> - - <mfrac> - <mn>1</mn> - <mrow> - <msub> - <mi>a</mi> - <mn>2</mn> - </msub> - - <mo>+</mo> - <mfrac> - <mn>1</mn> - <mrow> - <msub> - <mi>a</mi> - <mn>3</mn> - - </msub> - <mo>+</mo> - <mfrac> - <mn>1</mn> - <mrow> - <msub> - <mi>a</mi> - - <mn>4</mn> - </msub> - </mrow> - </mfrac> - </mrow> - </mfrac> - </mrow> - </mfrac> - - </mrow> - </mfrac> -</mrow> -</math> -</td></tr> - -<tr> -<td>8</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4591/=ex26.png" width="54" height="50" alt="TeXbook, 17.5-17.6" /></td> -<td> -<math display="block"> -<mrow> - <mo>(</mo> - - <mfrac linethickness="0px"> - <mi>n</mi> - <mrow> - <mi>k</mi> - <mo>/</mo> - <mn>2</mn> - </mrow> - - </mfrac> - <mo>)</mo> -</mrow> -</math> -</td></tr> - -<tr> -<td>9</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4592/=ex27.png" width="237" height="50" alt="TeXbook, 17.7" /></td> -<td> -<math display="block"> -<mrow> - <mrow> - - - <mo>(</mo> - <mfrac linethickness="0px"> - <mi>p</mi> - <mn>2</mn> - </mfrac> - <mo>)</mo> - </mrow> - - <msup> - <mi>x</mi> - <mn>2</mn> - </msup> - <msup> - <mi>y</mi> - <mrow> - - <mi>p</mi> - <mo>-</mo> - <mn>2</mn> - </mrow> - </msup> - <mo>-</mo> - <mfrac> - - <mn>1</mn> - <mrow> - <mn>1</mn> - <mo>-</mo> - <mi>x</mi> - </mrow> - </mfrac> - - <mfrac> - <mn>1</mn> - <mrow> - <mn>1</mn> - <mo>-</mo> - <msup> - <mi>x</mi> - - <mn>2</mn> - </msup> - </mrow> - </mfrac> -</mrow> -</math> -</td></tr> - -<tr> -<td>10</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4593/=ex29.png" width="116" height="63" alt="TeXbook, 17.7-17.8" /></td> - -<td> -<math display="block"> -<mrow> - <munder> - <mo>&sum;</mo> - <mrow> - <mfrac linethickness="0px"> - <mrow> - <mn>0</mn> - <mo>&leq;</mo> - - <mi>i</mi> - <mo>&leq;</mo> - <mi>m</mi> - </mrow> - <mrow> - <mn>0</mn> - <mo>&lt;</mo> - - <mi>j</mi> - <mo>&lt;</mo> - <mi>n</mi> - </mrow> - </mfrac> - </mrow> - </munder> - <mi>P</mi> - - <mo stretchy="false">(</mo> - <mi>i</mi> - <mo>,</mo> - <mi>j</mi> - <mo stretchy="false">)</mo> -</mrow> -</math> - -</td></tr> - -<tr> -<td>11</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4580/=ex3.png" width="27" height="18" alt="TeXbook, 16.2-16.3" /></td> -<td> -<math display="block"> -<mrow> -<msup> - <mi>x</mi> - <mrow> - <mn>2</mn> - - <mi>y</mi> - </mrow> -</msup> -</mrow> -</math> -</td></tr> - -<tr> -<td>12</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4594/=ex30.png" width="175" height="61" alt="TeXbook, 17.8" /></td> -<td> -<math display="block"> -<mrow> - - <munderover> - <mo>&sum;</mo> - <mrow> - <mi>i</mi> - <mo>=</mo> - <mn>1</mn> - </mrow> - - <mi>p</mi> - </munderover> - <munderover> - <mo>&sum;</mo> - <mrow> - <mi>j</mi> - <mo>=</mo> - - <mn>1</mn> - </mrow> - <mi>q</mi> - </munderover> - <munderover> - <mo>&sum;</mo> - <mrow> - <mi>k</mi> - - <mo>=</mo> - <mn>1</mn> - </mrow> - <mi>r</mi> - </munderover> - <msub> - <mi>a</mi> - - <mrow> - <mi>i</mi> - <mi>j</mi> - </mrow> - </msub> - <msub> - <mi>b</mi> - - <mrow> - <mi>j</mi> - <mi>k</mi> - </mrow> - </msub> - <msub> - <mi>c</mi> - - <mrow> - <mi>k</mi> - <mi>i</mi> - </mrow> - </msub> -</mrow> -</math> -</td></tr> - -<tr> - -<td>13</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4595/=ex31.png" width="405" height="100" alt="TeXbook, 17.9-17.10" /></td> -<td> -<math display="block"> -<mrow> - <msqrt> - <mn>1</mn> - <mo>+</mo> - <msqrt> - <mn>1</mn> - - <mo>+</mo> - <msqrt> - <mn>1</mn> - <mo>+</mo> - <msqrt> - <mn>1</mn> - <mo>+</mo> - - <msqrt> - <mn>1</mn> - <mo>+</mo> - <msqrt> - <mn>1</mn> - <mo>+</mo> - <msqrt> - - <mn>1</mn> - <mo>+</mo> - <mi>x</mi> - </msqrt> - </msqrt> - </msqrt> - </msqrt> - - </msqrt> - </msqrt> - </msqrt> -</mrow> -</math> -</td></tr> - -<tr> -<td>14</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4596/=ex34.png" width="272" height="50" alt="TeXbook, 17.10" /></td> -<td> -<math display="block"> -<mrow> - - <mrow> - <mo>(</mo> - <mfrac> - <msup> - <mo>&part;</mo> - <mn>2</mn> - </msup> - <mrow> - - <mo>&part;</mo> - <msup> - <mi>x</mi> - <mn>2</mn> - </msup> - </mrow> - </mfrac> - <mo>+</mo> - - <mfrac> - <msup> - <mo>&part;</mo> - <mn>2</mn> - </msup> - <mrow> - <mo>&part;</mo> - <msup> - - <mi>y</mi> - <mn>2</mn> - </msup> - </mrow> - </mfrac> - <mo>)</mo> - </mrow> - - <msup> - <mrow> - <mo minsize="150%">|</mo> - <mi>&#x3C6; <!-- \varphi --></mi> - <mo stretchy="false">(</mo> - <mi>x</mi> - <mo>+</mo> - - <mi mathvariant="normal">i</mi> - <mi>y</mi> - <mo stretchy="false">)</mo> - <mo minsize="150%">|</mo> - </mrow> - <mn>2</mn> - - </msup> - <mo>=</mo> - <mn>0</mn> -</mrow> -</math> -</td></tr> - -<tr> -<td>15</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4581/=ex4.png" width="31" height="22" alt="TeXbook, 16.2-16.3" /></td> -<td> - -<math display="block"> -<mrow> - <msup> - <mn>2</mn> - <msup> - <mn>2</mn> - <msup> - <mn>2</mn> - - <mi>x</mi> - </msup> - </msup> - </msup> -</mrow> -</math> -</td></tr> - -<tr> -<td>16</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4597/=ex40.png" width="55" height="49" alt="TeXbook, 18.10-18.11" /></td> - -<td> -<math display="block"> -<mrow> - <msubsup> - <mo stretchy="false">&int;</mo> - <mn>1</mn> - <mi>x</mi> - </msubsup> - <mfrac> - - <mrow><mi>d</mi><mi>t</mi></mrow> - <mi>t</mi> - </mfrac> -</mrow> -</math> -</td></tr> - -<tr> -<td>17</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4599/=ex41.png" width="91" height="47" alt="TeXbook, 18.12-18.13" /></td> -<td> - -<math display="block"> -<mrow> - <msub> - <mo>&#x222C; <!-- \iint --></mo> - <mi>D</mi> - </msub> - <mi>d</mi><mi>x</mi> - <mspace width="thinmathspace"/> - - <mi>d</mi><mi>y</mi> -</mrow> -</math> -</td></tr> - -<tr> -<td>18</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4600/=ex43.png" width="250" height="66" alt="TeXbook, 18.23" /></td> -<td> -<math display="block"> -<mrow> - <mi>f</mi> - - <mo stretchy="false">(</mo> - <mi>x</mi> - <mo stretchy="false">)</mo> - <mo>=</mo> - <mrow> - <mo>{</mo> - - <mtable> - <mtr> - <mtd columnalign="center"> - <mrow> - <mn>1</mn> - <mo>/</mo> - <mn>3</mn> - - </mrow> - </mtd> - <mtd columnalign="left"> - <mrow> - <mtext>if&nbsp;</mtext> - <mn>0</mn> - <mo>&leq;</mo> - <mi>x</mi> - - <mo>&leq;</mo> - <mn>1</mn> - <mo>;</mo> - </mrow> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - - <mrow> - <mn>2</mn> - <mo>/</mo> - <mn>3</mn> - </mrow> - </mtd> - <mtd columnalign="center"> - - <mrow> - <mtext>if&nbsp;</mtext> - <mn>3</mn> - <mo>&leq;</mo> - <mi>x</mi> - <mo>&leq;</mo> - <mn>4</mn> - - <mo>;</mo> - </mrow> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <mn>0</mn> - </mtd> - - <mtd columnalign="left"> - <mtext>elsewhere.</mtext> - </mtd> - </mtr> - </mtable> - </mrow> -</mrow> -</math> -</td></tr> - -<tr> -<td>19</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4601/=ex44.png" width="101" height="44" alt="TeXbook, 18.23-18.24" /></td> -<td> -<math display="block"> -<mover> - <mrow> - <mi>x</mi> - <mo>+</mo> - <mo>...</mo> - - <mo>+</mo> - <mi>x</mi> - </mrow> - <mover> - <mo>&OverBrace;</mo> - <mrow><mi>k</mi> <mspace width="thinmathspace"/> <mtext>times</mtext></mrow> - </mover> - -</mover> -</math> -</td></tr> - -<tr> -<td>20</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4582/=ex5.png" width="25" height="13" alt="TeXbook, 16.2-16.3" /></td> -<td> -<math display="block"> -<mrow> - <msub> - <mi>y</mi> - <msup> - - <mi>x</mi> - <mn>2</mn> - </msup> - </msub> -</mrow> -</math> -</td></tr> - -<tr> -<td>21</td> - -<td><img src="https://developer.mozilla.org/@api/deki/files/4602/=ex51.png" width="253" height="56" alt="TeXbook, 18.40" /></td> -<td> -<math display="block"> -<mrow> - <munder> - <mo>&sum;</mo> - <mrow> - <mi>p</mi> - <mtext>&nbsp;prime</mtext> - </mrow> - - </munder> - <mi>f</mi> - <mo stretchy="false">(</mo> - <mi>p</mi> - <mo stretchy="false">)</mo> - <mo>=</mo> - - <msub> - <mo stretchy="false">&int;</mo> - <mrow> - <mi>t</mi> - <mo>&gt;</mo> - <mn>1</mn> - </mrow> - </msub> - - <mi>f</mi> - <mo stretchy="false">(</mo> - <mi>t</mi> - <mo stretchy="false">)</mo> - <mspace width="thinmathspace"/> - <mi>d</mi> - <mi>&pi;</mi> - <mo stretchy="false">(</mo> - <mi>t</mi> - <mo stretchy="false">)</mo> -</mrow> -</math> -</td></tr> - -<tr> -<td>22</td> - -<td><img src="https://developer.mozilla.org/@api/deki/files/4603/=ex52.png" width="159" height="81" alt="TeXbook, 18.41" /></td> -<td> -<math display="block"> -<mrow> - <mo stretchy="false">{</mo> - <munder> - <mrow> - <mover> - <mrow> - <mpadded width="0em"><mphantom><mo>(</mo></mphantom></mpadded> - <mi>a</mi> - <mo>,</mo> - <mo>...</mo> - <mo>,</mo> - <mi>a</mi> - </mrow> - - <mover> - <mo>&OverBrace;</mo> - <mrow> - <mi>k</mi> - <mtext>&nbsp;</mtext> - <mi>a</mi> - <mtext>'s</mtext> - - </mrow> - </mover> - </mover> - <mo>,</mo> - <mover> - <mrow> - <mpadded width="0em"><mphantom><mo>(</mo></mphantom></mpadded> - <mi>b</mi> - <mo>,</mo> - <mo>...</mo> - <mo>,</mo> - <mi>b</mi> - </mrow> - - <mover> - <mo>&OverBrace;</mo> - <mrow> - <mi>&ell;</mi> - <mtext>&nbsp;</mtext> - <mi>b</mi> - <mtext>'s</mtext> - </mrow> - - </mover> - </mover> - </mrow> - <munder> - <mo>&UnderBrace;</mo> - <mrow> - <mi>k</mi> - <mo>+</mo> - - <mi>&ell;</mi> - <mtext>&nbsp;elements</mtext> - </mrow> - </munder> - </munder> - <mo stretchy="false">}</mo> -</mrow> -</math> -</td></tr> - -<tr> -<td>23</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4604/=ex53.png" width="213" height="108" alt="TeXbook, 18.42" /></td> -<td> -<math display="block"> -<mrow> - <mo>(</mo> - <mtable> - <mtr> - <mtd columnalign="center"> - - <mrow> - <mo>(</mo> - <mtable> - <mtr> - <mtd columnalign="center"> - <mi>a</mi> - </mtd> - <mtd columnalign="center"> - - <mi>b</mi> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <mi>c</mi> - </mtd> - <mtd columnalign="center"> - - <mi>d</mi> - </mtd> - </mtr> - </mtable> - <mo>)</mo> - </mrow> - </mtd> - <mtd columnalign="center"> - - <mrow> - <mo>(</mo> - <mtable> - <mtr> - <mtd columnalign="center"> - <mi>e</mi> - </mtd> - <mtd columnalign="center"> - - <mi>f</mi> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <mi>g</mi> - </mtd> - <mtd columnalign="center"> - - <mi>h</mi> - </mtd> - </mtr> - </mtable> - <mo>)</mo> - </mrow> - </mtd> - </mtr> - - <mtr> - <mtd columnalign="center"> - <mn>0</mn> - </mtd> - <mtd columnalign="center"> - <mrow> - <mo>(</mo> - <mtable> - - <mtr> - <mtd columnalign="center"> - <mi>i</mi> - </mtd> - <mtd columnalign="center"> - <mi>j</mi> - </mtd> - </mtr> - - <mtr> - <mtd columnalign="center"> - <mi>k</mi> - </mtd> - <mtd columnalign="center"> - <mi>l</mi> - </mtd> - </mtr> - - </mtable> - <mo>)</mo> - </mrow> - </mtd> - </mtr> - </mtable> - <mo>)</mo> -</mrow> - -</math> -</td></tr> - -<tr> -<td>24</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4605/=ex54.png" width="344" height="130" alt="TeXbook, 18.43" /></td> -<td> -<math display="block"> -<mrow> - <mi>det</mi> - <mo>|</mo> - <mtable> - - <mtr> - <mtd columnalign="center"> - <msub> - <mi>c</mi> - <mn>0</mn> - </msub> - </mtd> - <mtd columnalign="center"> - - <msub> - <mi>c</mi> - <mn>1</mn> - </msub> - </mtd> - <mtd columnalign="center"> - <msub> - <mi>c</mi> - - <mn>2</mn> - </msub> - </mtd> - <mtd columnalign="center"> - <mo>&mldr;</mo> - </mtd> - <mtd columnalign="center"> - <msub> - - <mi>c</mi> - <mi>n</mi> - </msub> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <msub> - - <mi>c</mi> - <mn>1</mn> - </msub> - </mtd> - <mtd columnalign="center"> - <msub> - <mi>c</mi> - - <mn>2</mn> - </msub> - </mtd> - <mtd columnalign="center"> - <msub> - <mi>c</mi> - <mn>3</mn> - - </msub> - </mtd> - <mtd columnalign="center"> - <mo>&mldr;</mo> - </mtd> - <mtd columnalign="center"> - <msub> - <mi>c</mi> - - <mrow> - <mi>n</mi> - <mo>+</mo> - <mn>1</mn> - </mrow> - </msub> - </mtd> - - </mtr> - <mtr> - <mtd columnalign="center"> - <msub> - <mi>c</mi> - <mn>2</mn> - </msub> - </mtd> - - <mtd columnalign="center"> - <msub> - <mi>c</mi> - <mn>3</mn> - </msub> - </mtd> - <mtd columnalign="center"> - <msub> - - <mi>c</mi> - <mn>4</mn> - </msub> - </mtd> - <mtd columnalign="center"> - <mo>&mldr;</mo> - </mtd> - <mtd columnalign="center"> - - <msub> - <mi>c</mi> - <mrow> - <mi>n</mi> - <mo>+</mo> - <mn>2</mn> - </mrow> - - </msub> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <mo>&#x22EE;</mo> - </mtd> - <mtd columnalign="center"> - <mo>&#x22EE;</mo> - - </mtd> - <mtd columnalign="center"> - <mo>&#x22EE;</mo> - </mtd> - <mtd columnalign="center"> - </mtd> - <mtd columnalign="center"> - <mo>&#x22EE;</mo> - </mtd> - - </mtr> - <mtr> - <mtd columnalign="center"> - <msub> - <mi>c</mi> - <mi>n</mi> - </msub> - </mtd> - - <mtd columnalign="center"> - <msub> - <mi>c</mi> - <mrow> - <mi>n</mi> - <mo>+</mo> - <mn>1</mn> - - </mrow> - </msub> - </mtd> - <mtd columnalign="center"> - <msub> - <mi>c</mi> - <mrow> - <mi>n</mi> - - <mo>+</mo> - <mn>2</mn> - </mrow> - </msub> - </mtd> - <mtd columnalign="center"> - <mo>&mldr;</mo> - </mtd> - - <mtd columnalign="center"> - <msub> - <mi>c</mi> - <mrow> - <mn>2</mn> - <mi>n</mi> - </mrow> - - </msub> - </mtd> - </mtr> - </mtable> - <mo>|</mo> - <mo>&gt;</mo> - <mn>0</mn> -</mrow> - -</math> -</td></tr> - -<tr> -<td>25</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4598/=ex6.png" width="25" height="14" alt="TeXbook, 16.2-16.3" /></td> -<td> -<math display="block"> -<msub> - <mi>y</mi> - <msub> - <mi>x</mi> - - <mn>2</mn> - </msub> -</msub> -</math> -</td></tr> - -<tr> -<td>26</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4583/=ex7.png" width="90" height="23" alt="TeXbook, 16.4-16.5" /></td> -<td> -<math display="block"> -<mrow> - <msubsup> - - <mi>x</mi> - <mn>92</mn> - <mn>31415</mn> - </msubsup> - <mo>+</mo> - <mi>&pi;</mi> -</mrow> - -</math> -</td></tr> - -<tr> -<td>27</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4584/=ex8.png" width="27" height="36" alt="TeXbook, 16.4-16.5" /></td> -<td> -<math display="block"> -<msubsup> - <mi>x</mi> - <msubsup> - <mi>y</mi> - - <mi>b</mi> - <mi>a</mi> - </msubsup> - <msubsup> - <mi>z</mi> - <mi>c</mi> - <mi>d</mi> - - </msubsup> -</msubsup> -</math> -</td></tr> - -<tr> -<td>28</td> -<td><img src="https://developer.mozilla.org/@api/deki/files/4585/=ex9.png" width="24" height="22" alt="TeXbook, 16.4-16.5" /></td> -<td> -<math display="block"> -<msubsup> - <mi>y</mi> - <mn>3</mn> - <mo>&#x2034;</mo> -</msubsup> -</math> - -</td></tr> -</table></pre> - -<h3 id="CSS_Content">CSS Content</h3> - -<pre class="brush: css"> /* Table style */ - - body { - text-align: center; - } - - table - { - border: solid thin; - border-collapse: collapse; - margin-left: auto; - margin-right: auto; - } - - th - { - background-color: #ddf; - border: solid thin; - color: black; - padding: 5px; - } - - td - { - border: solid thin; - padding: 5px; - text-align: center; - } - - .Asana math { font-family: Asana Math; } - .Cambria math { font-family: Cambria Math; } - .LatinModern math { font-family: Latin Modern Math; } - .LucidaBright math { font-family: Lucida Bright Math; } - .Minion math { font-family: Minion Math; } - .STIX math { font-family: STIX Math; } - .TeXGyreBonum math { font-family: TeX Gyre Bonum Math; } - .TeXGyrePagella math { font-family: TeX Gyre Pagella Math; } - .TeXGyreSchola math { font-family: TeX Gyre Schola Math; } - .TeXGyreTermes math { font-family: TeX Gyre Termes Math; } - .XITS math { font-family: XITS Math; } - .XITSRTL math { font-family: XITS Math; direction: rtl; } -</pre> - -<h3 id="JavaScript_Content">JavaScript Content</h3> - -<pre class="brush: js"> function updateMathFont() - { - var mathFont = document.getElementById("MathFont").value; - if (mathFont == "Default") { - document.body.removeAttribute("class"); - } else { - document.body.setAttribute("class", mathFont); - } - } - - function load() - { - document.getElementById("MathFont"). - addEventListener("change", updateMathFont, false) - } - - window.addEventListener("load", load, false); - -</pre> -</div> - -<p>次のテストは Knuth の TeX 本の TeX の数式のサンプルと MathML による同等の表現を含んでいます。デフォルトの Latin Modern Math フォントを使用した XeTeX エンジンによる描画と、あなたのブラウザがデフォルトの数学フォント又は代わりとなる OpenType MATH フォントを使用して描画する MathML を比較します。良い描画を得るために、適切な<a href="/ja/docs/Mozilla_MathML_Project/Fonts">数学フォント</a>があなたのシステムにインストールされていて、Gecko 31.0 {{GeckoRelease("31.0")}} 以上のような OpenType MATH がサポートされているブラウザを使用していることを確かめてください。また代わりに、ウェブフォントに基づいた <a href="http://fred-wang.github.io/MathFonts/">Mathematical OpenType Fonts のテストページ</a>を試すこともできます。最後に、この Mozilla ブラウザのいろいろなスクリーンリーダでテストがどのように読まれるか比較する<a href="/ja/docs/Mozilla/MathML_Project/a11y#mathml_torture_test">テーブル</a>をチェックしたいかもしれません。</p> - -<p>{{ EmbedLiveSample('MathML_Torture_Test', '100%', '2500px') }}</p> - -<div id="cke_pastebin" style="position: absolute; top: 74.6667px; width: 1px; height: 1px; overflow: hidden; left: -1000px;"> </div> diff --git a/files/ja/mozilla/mobile/firefox_mobile_for_developers/index.html b/files/ja/mozilla/mobile/firefox_mobile_for_developers/index.html deleted file mode 100644 index daf2fce7c9..0000000000 --- a/files/ja/mozilla/mobile/firefox_mobile_for_developers/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Firefox Mobile for developers -slug: Mozilla/Mobile/Firefox_Mobile_for_developers -tags: - - Mobile - - NeedsUpdate -translation_of: Mozilla/Mobile/Firefox_Mobile_for_developers ---- -<h2 id="Compiling_and_testing" name="Compiling_and_testing">Compiling and testing</h2> -<p>Instructions for building and testing Firefox Mobile can be found at <a class="link-https" href="https://wiki.mozilla.org/Mobile/Fennec/Android" rel="freelink">https://wiki.mozilla.org/Mobile/Fennec/Android</a></p> -<h2 id="User_agent" name="User_agent">User agent</h2> -<p>See <a href="/ja/docs/Gecko_user_agent_string_reference" title="Gecko_user_agent_string_reference">Gecko User Agent string reference</a> for details on the User-Agent headers sent by Firefox on mobile devices. For more information about user agents, please see our article on <a href="/ja/docs/Browser_Detection_and_Cross_Browser_Support" title="Browser Detection and Cross Browser Support">Browser Detection</a>.</p> -<h2 id="Mobile-specific_APIs" name="Mobile-specific_APIs">Mobile-specific APIs</h2> -<p>There are some APIs that are specific to mobile, or are more useful to mobile. They are listed below.</p> -<h3 id="CSS_for_touch-specific_UI_elements" name="CSS_for_touch-specific_UI_elements">CSS for touch-specific UI elements</h3> -<p>Mozilla supports the <a href="/ja/docs/CSS/Media_queries#-moz-touch-enabled" title="CSS/Media queries"><code>-moz-touch-enabled</code> CSS media query</a> that you can use to change CSS if you're on a touch device. This is available and will work on Firefox for desktops as well, but is more likely to be useful for mobile devices. You can use this to render larger buttons for people to press.</p> -<h3 id="Viewport_meta_tag" name="Viewport_meta_tag">Viewport meta tag</h3> -<p>Firefox supports the <code>viewport</code> meta tag on Mobile devices. For details, see <a href="/ja/docs/Mobile/Viewport_meta_tag" title="Mobile/Using the viewport meta tag to improve the mobile browsing experience">Using the viewport meta tag to improve the mobile browsing experience</a>.</p> -<p>More information on the <a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html" title="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html">viewport meta tag can be found in the Safari reference documentation</a>.</p> -<div class="note"> - <strong>注記:</strong> The <code>viewport</code> meta tag is ignored on desktop versions of Firefox.</div> -<h3 id="Media_queries" name="Media_queries">Media queries</h3> -<p><a href="/ja/docs/CSS/Media_queries" title="CSS/Media queries">CSS Media queries</a> are supported in Firefox for desktops and mobile devices. They can be used to change layout based on screen size and are the best way to build a UI that will work on desktops and mobile devices.</p> -<h2 id="See_also" name="See_also">関連情報</h2> -<ul> - <li><a href="http://starkravingfinkle.org/blog/2009/11/fennec-mobile-optimzed-web-pages/" title="http://starkravingfinkle.org/blog/2009/11/fennec-mobile-optimzed-web-pages/">Mark Finkle on Mobile Optimized Web pages</a></li> -</ul> diff --git a/files/ja/mozilla/mobile/index.html b/files/ja/mozilla/mobile/index.html deleted file mode 100644 index 5d3f8c6472..0000000000 --- a/files/ja/mozilla/mobile/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Mobile -slug: Mozilla/Mobile -tags: - - Mobile -translation_of: Mozilla/Mobile ---- -<h2 id="Firefox_OS" name="Firefox_OS"><a href="/en-US/docs/Archive/B2G_OS">Firefox OS</a></h2> - -<p>Firefox OS は Linux と Mozilla の Gecko を使ったオープンソースのモバイル OS で、その上で、ユーザーインターフェイスと HTML / CSS / JavaScript のアプリケーションが動作します。</p> - -<p>Firefox OS のインストール方法とアプリの開発方法については、上記文書を参照してください。</p> - -<h2 id="Firefox_for_Android" name="Firefox_for_Android"><a href="/docs/Mozilla/Firefox_for_Android">Andriod 版 Firefox</a></h2> - -<p>Android 版 Firefox は Android 端末向けの Mozilla のモバイルウェブブラウザです。最近、Android のネイティヴ UI に刷新し、より高速・よりコンパクト・よりレスポンシブになっています。そして、カメラや電話帳などの端末機能にアクセスするためのより強力な API をサポートしています。</p> - -<p>Android 版 Firefox の作成方法に関するヘルプや、デバイス API の使い方、モバイル add-on の作り方については、上記文書を参照してください。</p> - -<h2 id="Firefox_for_iOS" name="Firefox_for_iOS"><a href="/docs/Mozilla/Firefox_for_iOS">iOS 版 Firefox</a></h2> - -<p>iOS 版 Firefox は iOS 端末向けに近々リリース予定の Mozilla のモバイルウェブブラウザです。AppStore の制約から、Gecko ではなく iOS が提供している WebView を利用しています。</p> - -<p>iOS 版 Firefox についてのヘルプや、他の iOS アプリとの統合方法については上記文書を参照してください。</p> - -<h2 id="Mobile_web_development" name="Mobile_web_development"><a href="/docs/Web/Guide/Mobile">モバイルウェブ開発</a></h2> - -<p>モバイル端末はデスクトップやラップトップとハードウェアの特徴が異なります。そしてハードウェアを扱うための API の多くは標準化へ向けて作業中です。</p> - -<p>モバイル端末上で動作するようにウェブサイトを開発する用法や、端末の性能を発揮するための作り方については上記文書を参照してください。そしてブラウザーごとに挙動が異なることも学んで臭い。</p> diff --git a/files/ja/mozilla/mobile/viewport_meta_tag/index.html b/files/ja/mozilla/mobile/viewport_meta_tag/index.html deleted file mode 100644 index 04ab7c37b6..0000000000 --- a/files/ja/mozilla/mobile/viewport_meta_tag/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: モバイルブラウザでのレイアウトを制御するために meta タグの viewport を使う -slug: Mozilla/Mobile/Viewport_meta_tag -translation_of: Mozilla/Mobile/Viewport_meta_tag ---- -<p><a class="link-https" href="https://wiki.mozilla.org/Mobile/Fennec">Mobile Firefox (Fennec)</a> 1.1 の来たるリリースでは、 <a href="/en-US/docs/Web/HTML/Element/meta#Attributes"><code><meta name="viewport"></code></a> タグのサポートを強化しています。Fennec の前のバージョンでは、width、height、そして initial-scale といったビューポートのプロパティをサポートしていました。しかし、iPhone や Android ブラウザ用につくられたいくつかのサイトでは<a class="external" href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/">不具合</a>が出ていました。新しいバージョンでは Mobile Safari の同様のプロパティをサポートしました。また Fennec では、異なるサイズと解像度の画面でも、モバイルサイトをより同じように表示できるように変更しました。</p> - -<p class="caption">touch.facebook.com のこれまでの表示:</p> - -<p class="figure"><img alt="05-11-fennec-meta-viewport-2.png" class="default internal" src="/@api/deki/files/4371/=05-11-fennec-meta-viewport-2.png"></p> - -<p class="caption">touch.facebook.com の新しい表示:</p> - -<p class="figure"><img alt="05-11-fennec-meta-viewport-1.png" class="default internal" src="/@api/deki/files/4372/=05-11-fennec-meta-viewport-1.png"></p> - -<p>あなたは、これらの変更点を、Maemo、Windows、Mac、そして Linux のそれぞれで、<a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-1.9.2/">Fennec 1.1</a> の最新版と、<a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/">Trunk</a> の最新版のコードからビルドした版で、確認することができます。</p> - -<h2 id="背景">背景</h2> - -<p>Fennec のようなモバイルブラウザは、視覚的な「窓」(=ビューポート)のなかに、ページとして表示するので、ページはたいていは画面よりも幅が広いものの、モバイルブラウザは狭い窓のなかにそれぞれのページを割り付けるように押し込む必要はありません。(そして、それは多くのモバイルに最適化されていないサイトが崩れることにもなっています) ユーザーは、ページのそれぞれの領域を見るために、上下左右に動かしたり、ズームすることができます。</p> - -<p>Mobile Safari は、ウェブ開発者がビューポートのサイズと拡大率を制御できるよう、「viewport meta タグ」を導入しました。これはウェブ標準の何かではありませんが、他の多くのモバイルブラウザが、今ではこのタグをサポートしています。Apple の<a class="external" href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW29">解説文書</a>は、ウェブ開発者がこのタグをどのように使えばよいかを、良く説明しています。しかし、Fennec でそれがどのように実装されているかを正確に理解するために、いくつかの検証をしなければなりませんでした。例えば、Safari の文書では、中身は「コンマで区切られたリスト」とされています。しかし、既存のブラウザとウェブページは、コンマとセミコロン、半角スペースの混在で区切られています。</p> - -<p>quirksmode.org の「<a class="external" href="http://www.quirksmode.org/mobile/viewports2.html" title="http://www.quirksmode.org/mobile/viewports2.html">A Tale of Two Viewports</a>」という記事で、異なるモバイルブラウザでのビューポートについて、より詳しく知ることができます。</p> - -<h2 id="ビューポートの基本">ビューポートの基本</h2> - -<p>モバイルに最適化したサイトは、次のような記述を含んでいるのが典型的です:</p> - -<pre><meta name="viewport" content="width=device-width, initial-scale=1"></pre> - -<p><code>width</code> プロパティはビューポートのサイズを制御します。例えば、<code>width=600</code> というような任意のピクセル数を設定するか、<code>device-width</code> という、拡大率が 100% のときの、CSS ピクセルでの画面の幅を示す定数を設定します。(<code>height</code> と <code>device-height</code> 定数も紐づいています。こちらは、ビューポートの高さによって大きさや位置が変わる要素のあるページで便利でしょう)</p> - -<p><code>initial-scale </code>プロパティは、ページが最初にロードされたときの拡大率を制御します。<code>maximum-scale</code>、<code>minimum-scale</code>、そして <code>user-scalable</code> プロパティは、ページをズームインまたはズームアウトできるかどうかを制御します。</p> - -<h2 id="「1ピクセル」は1ピクセルではない">「1ピクセル」は1ピクセルではない</h2> - -<p>The iPhone and many popular Android phones have 3- to 4-inch (7–10 cm) screens with 320—480 pixels (~160 dpi). Firefox for Maemo runs on the Nokia N900, which has the same physical size but 480—800 pixels (~240 dpi). Because of this, the last version of Fennec displayed many pages about one third smaller (in actual, physical size) than iPhone or Android. This caused usability and readability problems on many touch-optimized web sites. Peter-Paul Koch wrote about this problem in <a class="external" href="http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html">A pixel is not a pixel</a>.</p> - -<p>Fennec 1.1 for Maemo will use 1.5 hardware pixels for each CSS "pixel," following the lead of Android's WebKit-based browser. This means a page with <code>initial-scale=1</code> will render at close to the same physical size in Fennec for Maemo, Mobile Safari for iPhone, and the Android Browser on both <a class="external" href="http://developer.android.com/guide/practices/screens_support.html#range">HDPI and MDPI</a> phones. This is consistent with the <a class="external" href="http://www.w3.org/TR/CSS2/syndata.html#length-units">CSS 2.1 specification</a>, which says:</p> - -<blockquote> -<p>If the pixel density of the output device is very different from that of a typical computer display, the user agent should rescale pixel values. It is recommended that the pixel unit refer to the whole number of device pixels that best approximates the reference pixel. It is recommended that the reference pixel be the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm's length.</p> -</blockquote> - -<p>For web developers, this means that 320px be full width in portrait mode at scale=1, on all of the above-mentioned handheld devices, and they may size their layouts and images accordingly. But remember that not all mobile devices are the same width; you should also make sure that your pages work well in landscape mode, and on larger devices like the iPad and Android tablets.</p> - -<p>On 240-dpi screens, pages with <code>initial-scale=1</code> will effectively be zoomed to 150% by both Fennec and Android WebKit. Their text will be smooth and crisp, but their bitmap images will probably not take advantage of the full screen resolution. To get sharper images on these screens, web developers may want to design images – or whole layouts – at 150% of their final size (or 200%, to support 320-dpi devices such as a retina display iPhone) and then scale them down using CSS or viewport properties.</p> - -<p>The default ratio depends on the display density. On a display with density less than 200dpi, the ratio is 1.0. On displays with density between 200 and 300dpi, the ratio is 1.5. For displays with density over 300dpi, the ratio is the integer floor(<em>density</em>/150dpi). Note that the default ratio is true only when the viewport scale equals 1. Otherwise, the relationship between CSS pixels and device pixels depends on the current zoom level.</p> - -<h2 id="Viewport_width_and_screen_width">Viewport width and screen width</h2> - -<p>Many sites set their viewport to <code>"width=320, initial-scale=1"</code> to fit precisely onto the iPhone display in portrait mode. As mentioned above, this caused <a class="external" href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/">problems</a> when Fennec 1.0 rendered these sites, especially in landscape mode. To fix this, Fennec 1.1 will expand the viewport width if necessary to fill the screen at the requested scale. This matches the behavior of Android and Mobile Safari, and is especially useful on large-screen devices like the iPad. (Allen Pike's <a class="external" href="http://www.antipode.ca/2010/choosing-a-viewport-for-ipad-sites/">Choosing a viewport for iPad sites</a> has a good explanation for web developers.)</p> - -<p>For pages that set an initial or maximum scale, this means the <code>width</code> property actually translates into a <em>minimum</em> viewport width. For example, if your layout needs at least 500 pixels of width then you can use the following markup. When the screen is more than 500 pixels wide, the browser will expand the viewport (rather than zoom in) to fit the screen:</p> - -<pre><meta name="viewport" content="width=500, initial-scale=1"></pre> - -<p>Fennec 1.1 also adds support for <code>minimum-scale</code>, <code>maximum-scale</code>, and <code>user-scalable</code>, with defaults and limits similar to <a class="external" href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html">Safari's</a>. These properties affect the initial scale and width, as well as limiting changes in zoom level.</p> - -<p>Mobile browsers handle orientation changes slightly differently. For example, Mobile Safari often just zooms the page when changing from portrait to landscape, instead of laying out the page as it would if originally loaded in landscape. If web developers want their scale settings to remain consistent when switching orientations on the iPhone, they must add a <code>maximum-scale</code> value to prevent this zooming, which has the sometimes-unwanted side effect of preventing users from zooming in:</p> - -<pre><meta name="viewport" content="initial-scale=1, maximum-scale=1"></pre> - -<p>This is not necessary in Fennec; when the device changes orientation, Fennec updates the viewport size, the page layout, and JavaScript/CSS properties like <code>device-width</code>, based on its new window dimensions.</p> - -<h2 id="Common_viewport_sizes_for_mobile_and_tablet_devices">Common viewport sizes for mobile and tablet devices</h2> - -<p>If want to know what mobile and tablet devices have which viewport widths, there is a comprehensive list of <a href="http://viewportsizes.com/" title="http://viewportsizes.com/">mobile and tablet viewport sizes here</a>. This gives information such as viewport width on portrait and landscape orientation as well as physical screen size, operating system and the pixel density of the device.</p> - -<h2 id="Specifications">Specifications</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Specification</th> - <th scope="col">Status</th> - <th scope="col">Comment</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('CSS3 Device', '#viewport-meta', '<meta name="viewport">')}}</td> - <td>{{Spec2('CSS3 Device')}}</td> - <td>Non-normatively describes the Viewport META element</td> - </tr> - </tbody> -</table> - -<p>There is clearly demand for the viewport meta tag, since it is supported by most popular mobile browsers and used by thousands of web sites. It would be good to have a true standard for web pages to control viewport properties. As the standardization process proceeds, we at Mozilla will work to make sure we can implement any changes made during standardization.</p> diff --git a/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html b/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html deleted file mode 100644 index 8b7506683f..0000000000 --- a/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Adding a new Telemetry probe -slug: Mozilla/Performance/Adding_a_new_Telemetry_probe -tags: - - data - - ガイド - - テレメトリ -translation_of: Mozilla/Performance/Adding_a_new_Telemetry_probe ---- -<p>Firefox では、テレメトリシステムが Firefox のパフォーマンス、ハードウェア、使用状況、カスタマイズのさまざまな測定値を収集し、Mozilla に送信します。 この記事では、ドキュメントへのポインタを提供します。</p> - -<div class="note"> -<p><strong>メモ: </strong>Firefoxのすべての新しいデータコレクションには、データコレクションピアからの<a href="https://wiki.mozilla.org/Firefox/Data_Collection#Requesting_Approval">データコレクションレビュー</a>が必要になりました。データピアの1つに feedback? フラグを設定するだけです。1営業日以内に返信を試みます。</p> -</div> - -<h2 id="はじめに">はじめに</h2> - -<p>新しい Telemetry プローブの追加は、<a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/start/adding-a-new-probe.html">Mozilla Source Tree のドキュメント</a>に記載されています。</p> - -<p>その他のテレメトリツールとドキュメントを見つけるには、<a href="https://telemetry.mozilla.org/">テレメトリポータル</a>にアクセスしてください。</p> - -<h2 id="助けを得る">助けを得る</h2> - -<p>テレメトリチームが問題の解決を支援します。私たちに接触することができます:</p> - -<ul> - <li>IRC の <em>#telemetry</em></li> - <li>Slack の <em>#fx-metrics</em></li> - <li>the <a href="https://mail.mozilla.org/listinfo/fx-data-dev">fx-data-dev mailing list</a></li> - <li>flags for <a href="https://wiki.mozilla.org/Modules/Toolkit#Telemetry">one of the peers</a> on Bugzilla or direct e-mail</li> -</ul> diff --git a/files/ja/mozilla/performance/gecko_profiler_faq/index.html b/files/ja/mozilla/performance/gecko_profiler_faq/index.html deleted file mode 100644 index 5648673301..0000000000 --- a/files/ja/mozilla/performance/gecko_profiler_faq/index.html +++ /dev/null @@ -1,415 +0,0 @@ ---- -title: Gecko Profiler のFAQ -slug: Mozilla/Performance/Gecko_Profiler_FAQ -translation_of: Mozilla/Performance/Gecko_Profiler_FAQ ---- -<p>This documents lists a number of questions asked by people in preparation for a tutorial session about the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler</a>. mstange and ehsan tried to respond to some of the questions in advance in writing, and you can find the answers below.</p> - -<ul id="docs-internal-guid-81b866d2-12e9-cfc9-07fb-bc00c016f7e3" style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it possible to locate hot spots occurring within a single function?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler currently doesn’t have the ability to show you information about line numbers, neither for JS code nor for native code.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For JS code, the profiler platform doesn’t capture any information about lines. It only knows what function was executed and what line this function starts at.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For native code, the profiler captures the necessary information but doesn’t have a way to display it.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Similarly it also can’t show you instruction level information about where each sample was captured (this is why there is no support for line-level sampling for native code either.) At this point the granularity of each sample it displays is a native function.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Therefore the Gecko Profiler is not a suitable tool for finding hotspots within a single function. For this purpose you should try to use a native profiler on your platform of choice (for example xperf/vtune on Windows, Instruments on OSX, and perf/Zoom on Linux.)</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">One workaround is to break the hot function into several explicitly-non-inline helpers, recompile, and re-profile. This can change some performance characteristics, but is a decent way to get a sense of which parts of a large function are expensive.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How to profile startup code that regresses just a little (<10-15ms ts_paint/tpaint)</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] We currently don’t have a good way to do that. You can write your own tools to assist you in this process, though. I did something like this a few years ago with the old profiler and I think something similar would work here:</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">I think there are three main challenges here. You need deterministic profiles that can be compared meaningfully, you need to gather enough data / samples, and you need a way to compare profiles.</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">To increase determinism, you really want an automated way of gathering the data. And you’ll want to make sure the profiles only contain data for the time range you’re interested in. To stop the profiler from gathering more samples after the “startup end” marker that you’re interested in, you can call Services.profiler.pause(); or you can insert a marker with a special string and then write a script that filters out all samples that were gathered after your marker.</span></p> - </li> - <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">To increase the amount of data, you should run your automated gathering procedure many times, and then combine multiple profiles into one. We don’t have a script that combines profiles, but I can help you write one if you’re interested. In the end, you should have one big “before” profile and one big “after” profile.</span></p> - </li> - <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profile comparison is tricky. The only way that I’ve tried before is to use a “difference calltree”: In the regular call tree, each node of the calltree is assigned a weight which is just the number of samples that were under this call stack. In a difference call tree, each node’s weight instead is computed as <number of samples under this stack in the “after” profile> minus <number of samples under this stack in the “before” profile>. That tree is then displayed in the usual way, with weights in decreasing order from top to bottom. Then the call stacks whose cost increased the most in the “after” profile will be at the top, and those are the ones you usually want to look at if you caused a regression.</span><br> - <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">In this view, the timestamps of individual samples / stacks will not be meaningful.</span><br> - <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Perf.html does not have a comparison view at the moment. I can help you add one, though.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There is </span><a href="https://github.com/devtools-html/perf.html/blob/master/docs/gecko-profile-format.md" style="text-decoration: none;"><u>documentation for the Gecko profile format</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it worth slowing down CPU to increase the profiler resolution?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">It depends on what you are trying to profile to some extent. Usually you should be really careful when changing the characteristics of the environment that you are trying to measure to avoid measuring the wrong thing.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If the issue you are trying to avoid is not profiling on fast machines that Mozilla developers typically use to build Firefox on, a better solution may be using a less high-end machine that actually has lower spec’d hardware instead of artificially slowing down just the CPU.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Another approach to get more precision is also raising the sampling frequency to sub-millisecond ranges (it won’t work on Windows.) High frequency sampling may also be an area where native profilers are a useful alternative tool to try.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we profile "leaks" that show up after running Firefox for > 40 mins?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler has been designed specifically for the use case of having it run always in the background, and it’s pretty good at that! It is quite reasonable to actually run the browser for 40 minutes and once the said leaks have happened capture the profiles and study what went wrong.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] I have been profiling my real browser usage for months now, and so can you. :-)</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">However, if it’s really just “leaks” that are the problem, it’s possible that those profiles only show you that we spend a lot of time in GC / CC. In that case, the Gecko Profiler is the wrong tool to debug this. Even about:memory would be more useful.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Overview of the changes in the last (year?) to Cleopatra/etc</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Faster, hopefully more reliable</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Has a Timeline tab</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Lets you hide threads with a context menu</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Supports symbolication for local builds on Windows if you run “mach buildsymbols” first</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profiling non-nsThreads?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The current setup requires each thread that you want to profile to notify the profiler about its existence. We have this hooked up for nsThreads, and as of very recently also for rayon threads (used in stylo). We have not attempted to register other threads with the profiler. </span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1341811" style="text-decoration: none;"><u>Bug 1341811</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> suggests hooking platform thread spawning functions but nobody has looked at it yet.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profiling all nsThreads - how bad is the overhead?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know. I think Julian Seward has done some measurements on this, I think.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Try clicking the toolbar icon for the extension, expanding the Settings section, and enter the secret cheat code “,” in the Threads field and click on “Apply (Restart Profiler)”. This will capture all of the threads that the Gecko Profiler has been hooked to.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">This mode is usually recommended when you want to find a thread you want to do more focused profiling on, so that you can find its name and then construct a more useful thread filter string based on the found thread name.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How can I run (micro-?) benchmarks on the memory allocator to see if changes in it (or entire allocator replacements) are slower/faster?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What you *don’t* want to do is writing a micro-benchmark that call malloc/free in a loop and the like and call it a day!</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">A better idea would be picking up a real browser workload where through previous profiling we know that malloc overhead contributes a measurable percentage of overhead to the overall time and then study the change to that workload after replacing the allocator.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You do want to think about various characteristics of an allocator which may have an impact on performance. For example, see Julian’s great investigation on the impact of cache line sharing across multiple cores on jemalloc’s multi-core performance in </span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1291355#c26" style="text-decoration: none;"><u>https://bugzilla.mozilla.org/show_bug.cgi?id=1291355#c26</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to measure the cost of new compiler flags (that affect all or most functions)?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] This is similar to the previous question to some extent, but the specific answer really depends on what kind of compiler flag we’re talking about and what performance impact we’re interested to study. But the short answer is picking up real browser workloads, and finding ways to split out the overall cost contributed by the thing that your change is going to affect and compare things before and after.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] This question is more about benchmarking than about profiling. If you want to measure things, please measure without the profiler running, because the profiler can add its own overhead.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we find performance regressions caused by third-party and system addons, especially ones that only show up after extended uptime?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">By running into them. I wish I had a better answer to this question. In general, the Gecko Profiler is a profiling tool that helps you figure out what happens inside the browser as a performance issue is happening, it doesn’t help with reproducing the performance issues in the first place.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer: how to diagnose dispatch delays? (a demo)</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer is currently not in a usable state. Sorry.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer: from the above, how do we decide on prioritization on the same thread event queue?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">See above.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Do we profile memory page faults? (i.e. when we are accessing a virtual memory page that needs to reload from disk)</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler does not know about page faults. On Linux, perf does a good job at visualizing page faults, for example, they will show up as part of the same call stack as the user-space call stack for the program you are profiling.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If so, how complicated is to find out the reason the page has been purged?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] I don’t think this is very interesting in the general situation, since OSes can basically decide to swap out part of your virtual address space and you’d page fault when you access that page next and there is very little that the program can do about that. Many times the reason you incur a page fault is merely that you are touching a memory page that hasn’t been touched in awhile. For example, we have observed that the first access to large hashtables when doing a hashtable lookup can incur a page fault in many cases, and while the specific reason behind each one of those page faults may be different, the general conclusion from that observation would be something about the overall efficiency of your memory access patterns. Typically we wouldn’t be optimizing away a single page fault anyway.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What is the status of I/O detection, on any thread?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko profiler has a “mainthreadio” feature which will cause markers for main thread IO to be inserted into the profile. However, the profiler add-on currently doesn’t have a checkbox to enable this feature.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Are the timer probes synchronized, or random/independent? (I'd guess they're independent). When profiling hundred(s) of threads at low intervals, does this distort the measurement or operation? (I.e. I want to profile all threads, not just Main plus a couple of others)</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">We haven’t done any measurements of how frequent sampling distorts measurement or operation.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There is only one sampler thread. It runs a loop that works like this:</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Iterate over all threads. For each thread, suspend it, walk its stack, resume it.</span></p> - </li> - <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Sleep until the next sample is due. Then go to the previous step.</span></p> - </li> - </ul> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">I there an equivalent to ITIMER_PROF vs ITIMER_REAL settings? (ITIMER_PROF interrupts every N ms regardless of which thread used the time, REAL interrupts every Nms of wall-clock time)</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko profiler does not know which thread is used at which time. It interrupts all threads based on wall-clock time.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[jesup] Ok, that's the equivalent to ITIMER_REAL, kinda, except that per the previous question it doesn't interrupt every thread at once and snapshot the thread you started the itimer on, it interrupts each thread one at a time, which likely means distortion of the measurement if the number of threads monitored is significant (especially at high sample rates). A cleaner snapshot would stop all threads, walk all their stacks, and then resume all threads, especially on high-core systems. (ITIMER_REAL (due to posix) requires the signal occur on the calling thread, not a random thread. ITIMER_PROF interrupts the then-running thread, whichever one it is.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is there a way to isolate or filter a profile (at least of mainthread and maybe one or two other ones that make sense) to a specific tab/document/eventqueue?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Currently not. Some functions (reflow, painting, JS excecution) insert the URL of the associated document into the call stack frame, so you can get a rough idea, but we don’t have instrumentation at the tab/document/eventqueue level.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For isolated profiles I recommend profiling a separate browser instance with only the tab that you’re interested in.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What are the recommended native profilers across all OS's?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Mac: Instruments; Linux: perf, zoom, callgrind; Windows: Concurrency Visualizer, VTune, xperf</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">When to use Gecko profiler vs. native profilers?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Gecko profiler: If you need JS callstacks or Gecko-specific instrumentation, or need to use any of its nifty UI features.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Native profilers: If you’re interested in lower-level information or are running into the Gecko profiler’s limitations. (See many of the questions above for examples of such limitations.)</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Note that these tools should all be considered as complementary, it’s typical to capture a profile in Gecko Profiler and based on some investigations decide to delve into some part of it using a native profiler, etc.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Nothing stands out in the profile, how can I accurately find the next bottleneck?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">This is a hard question.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You’ll probably want to accumulate costs that are somehow “similar” or “in the same bucket” but distributed over different parts of the call tree / time line, and then attack the biggest bucket.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Neither the process of accumulation, nor the process of assigning things to buckets, is easily doable with the current UI.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There are many cases where code is slow due to a death by a thousand cuts scenario, in which case you would need to find many micro-optimizations that overall amount to something significant.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How to go from a web-page to a micro-benchmark which is representative of the web-page?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Please let me know if you find a way to do this. It would make our job a lot easier.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">In the off-chance where we have been able to do this, it typically happens as one of the last stages of the work, since you’d typically have finished fully analyzing the issue and through that have managed to figure out how to write a micro-benchmark that reproduces the exact issue.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">It’s better to start getting used to profiling and analyzing real pages more. :-)</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to profile startup performance?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Install the Gecko profiler add-on. Quit the browser. Start the browser with the environment variable MOZ_PROFILER_STARTUP=1 set. As soon as startup is done, collect a profile.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to do repeatable tests? ie: I want to measure perf of loading the same page with different stylo configurations.</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Probably by using Talos, especially if you want to measure and not profile.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You can make your own Talos pageload test which has just the one page that you’re interested in in its manifest.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What actually means the percentage of the running time?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The percentage of samples with stacks under this stack.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How you identify a user action in the main thread </span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">We’re missing UI for this at the moment. The profile contains markers for DOM events, and those include user-generated events like mouse clicks, but these markers are only exposed as a huge unsearchable list in the Markers tab.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If you have a rough idea of what the user was doing, try searching for functions that you’d expect in the call tree and see where they are in the thread timeline.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What is a suggested comprehensive performance analysis workflow for code changes that impact UI?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know if anybody has written down such a workflow.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">My usual, very unscientific approach is: Use it for a while, and if you notice slowness, profile it. Pay attention to the red jank markers at the top.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Mike Conley’s </span><a href="https://mikeconley.github.io/ohnoreflow/" style="text-decoration: none;"><u>Oh No Reflow! Add-on</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> is helpful.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we know when profiler output is statistically significant (for comparing across runs / across machines)?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] Hard to say. Prefer to do comparisons by measuring your timings with code instead of by inspecting profiles. Always keep in mind that profiler overhead has the potential to skew the results.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it better to profile across multiple platforms, or to focus time on Windows (since that's the bulk of our users)?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] In my opinion, as long as you double-check that the problems you find are actually present on Windows, it doesn’t matter much what platform you find them on.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] That being said, we do see a lot of Windows-specific issues that you will not find on other platforms, for example sometimes code calls into a Windows API that requires loading a DLL the first time you call it that takes 10s of milliseconds to finish, etc. Unless if you profile on Windows you will never find those specific issues.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">And when you get to the platform specific parts of the browser stack (such as graphics, media, etc.) then profiling on Windows would be certainly a lot more valuable than on other platforms.</span></p> - </li> - </ul> - </li> - <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Should I profile known to be slow sites on slower hardware to get a better signal?</span></p> - - <ul style="margin-top: 0pt; margin-bottom: 0pt;"> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] That’s probably a good idea. As long as the slower hardware is still capable enough that the profiler can successfully complete symbolication.</span></p> - </li> - <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"> - <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Performance issues are just much easier to spot on slower hardware, so if nothing else, using slower hardware will help </span><em>you</em><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> find problems easier. And don’t forget that if you’re interested in finding IO slowness issues, profiling on a machine with a fast SSD isn’t recommended.</span></p> - </li> - </ul> - </li> -</ul> - -<p> </p> diff --git a/files/ja/mozilla/performance/index.html b/files/ja/mozilla/performance/index.html deleted file mode 100644 index dc454cda2e..0000000000 --- a/files/ja/mozilla/performance/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Performance -slug: Mozilla/Performance -tags: - - Add-ons - - Debugging - - Development - - Mozilla - - Performance -translation_of: Mozilla/Performance ---- -<p>ここからリンクされている記事は、コアな Mozilla のコードやアドオン開発をしていなくてもパフォーマンスを改善する手助けになります。</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h3 id="Documentation" name="Documentation">ドキュメンテーション</h3> - - <dl> - <dt><a href="/ja/Performance/Reporting_a_Performance_Problem">パフォーマンスの問題を報告する</a></dt> - <dd>A user friendly guide to reporting a performance problem. A development environment is not required.</dd> - <dt><a href="Benchmarking" title="Performance/Benchmarking advice">Benchmarking</a></dt> - <dd>Tips on generating valid performance metrics.</dd> - <dt><a href="/ja/Extensions/Performance_best_practices_in_extensions" title="en/Extensions/Performance best practices in extensions">Performance best practices in extensions</a></dt> - <dd>A performance "best practices" guide for extension developers.</dd> - <dt><a href="/ja/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">Measuring Add-on Startup Performance</a></dt> - <dd>A guide for add-on developers on how to set up a performance testing environment.</dd> - <dt><a href="/ja/XUL_School/Appendix_A:_Add-on_Performance" title="en/XUL School/Appendix A: Add-on Performance">XUL School: Add-on Performance</a></dt> - <dd>Tips for add-on developers to help them avoid impairing application performance.</dd> - <dt><a href="/ja/Performance/GPU_performance">GPU パフォーマンス</a></dt> - <dd>Tips for profiling and improving performance when using a GPU.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/ScrollLinkedEffects">Scroll-Linked Effects</a></dt> - <dd>Information on scroll-linked effects, their effect on performance, related tools, and possible mitigation techniques.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/Automated_Performance_Testing_and_Sheriffing">Automated Performance Testing and Sheriffing</a></dt> - <dd>Information on automated performance testing and sheriffing at Mozilla.</dd> - <dt><a href="/ja/docs/Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers">Best practices for Front-end Engineers</a></dt> - <dd>Tips for reducing impacts on browser performance in front-end code.</dd> - </dl> - - <p><span class="alllinks"><a class="internal" href="/Special:Tags?tag=Performance" title="Special:Tags?tag=Performance">View all pages tagged with "Performance"...</a></span></p> - - <h3 id="Memory_profiling_and_leak_detection_tools" name="Memory_profiling_and_leak_detection_tools">メモリープロファイリングとリーク検出ツール</h3> - - <dl> - <dt><a href="https://developer.mozilla.org/ja/docs/Tools/Memory" title="en/Performance/Profiling with the Built-in Profiler">開発者ツールの "メモリー" パネル</a></dt> - <dd>The memory panel in the devtools supports taking heap snapshots, diffing them, computing dominator trees to surface "heavy retainers", and recording allocation stacks.</dd> - </dl> - - <dl> - <dt><a href="/ja/docs/Mozilla/Performance/about:memory">about:memory</a></dt> - <dd>about:memory is the easiest-to-use tool for measuring memory usage in Mozilla code, and is the best place to start. It also lets you do other memory-related operations like trigger GC and CC, dump GC & CC logs, and dump DMD reports. about:memory is built on top of Firefox's <a href="/ja/docs/Mozilla/Performance/Memory_reporting">memory reporting</a> infrastructure.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/DMD">DMD</a></dt> - <dd>DMD is a tool that identifies shortcomings in about:memory's measurements, and can also do multiple kinds of general heap profiling.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/AWSY">Are We Slim Yet</a></dt> - <dd>areweslimyet.com (a.k.a. AWSY) is a memory usage and regression tracker.</dd> - <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Performance/BloatView">BloatView</a></dt> - <dd>BloatView prints per-class statistics on allocations and refcounts, and provides gross numbers on the amount of memory being leaked broken down by class. It is used as part of Mozilla's continuous integration testing.</dd> - <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Performance/Refcount_tracing_and_balancing">Refcount tracing and balancing</a></dt> - <dd>Refcount tracing and balancing are ways to track down leaks caused by incorrect uses of reference counting. They are slow and not particular easy to use, and thus most suitable for use by expert developers.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/GC_and_CC_logs">GC と CC のログ</a></dt> - <dd>GC and CC logs can be generated and analyzed to in various ways. In particular, they can help you understand why a particular object is being kept alive.</dd> - <dt><a href="/ja/docs/Mozilla/Testing/Valgrind">Valgrind</a></dt> - <dd><a class="external text" href="http://valgrind.org/" rel="nofollow">Valgrind</a> is a tool that detects various memory-related problems at runtime, including leaks. Valgrind is used as <a class="external text" href="/ja/docs/Valgrind_test_job" rel="nofollow">part</a> of Mozilla's continuous integration testing, though the coverage is limited because Valgrind is slow.</dd> - <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer#LeakSanitizer">LeakSanitizer</a></dt> - <dd><span class="external text">LeakSanitizer</span> (a.k.a. LSAN) is similar to Valgrind, but it runs faster because it uses static source code instrumentation. LSAN is part of Mozilla's continuous integration testing, with most tests running through it as part of the AddressSanitizer (a.k.a. ASAN) test jobs.</dd> - <dt><a href="https://developer.apple.com/documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html">Apple のツール</a></dt> - <dd>Apple は、Mac OS X 向けに LSAN や Valgrind によってレポートされる問題と似た問題をレポートするツールを提供します。この「リーク」ツールは、SpiderMonkey や Firefox で使用することは推奨されません。タグ付けされたポインターによって混乱し、オブジェクトが存在しない場合、リークを引き起こすためです (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=390944" rel="nofollow">bug 390944</a> をご覧ください)。</dd> - <dt><a href="/ja/docs/Mozilla/Performance/Leak_Gauge">Leak Gauge</a></dt> - <dd>Leak Gauge は、ドキュメント、ウィンドウオブジェクト、docshell を含む、Gecko 内の特定の種類のリークを検出するのに使用できます。</dd> - <dt><a href="https://dxr.mozilla.org/mozilla-central/source/memory/replace/logalloc/README">LogAlloc</a></dt> - <dd>LogAlloc は、Gecko 内のメモリー割り当てのログのダンプを取得するツールです。That log can then be replayed against Firefox's default memory allocator independently or through another replace-malloc library, allowing the testing of other allocators under the exact same workload.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/Memory_Profiler">メモリープロファイラー</a></dt> - <dd>The memory profiler samples allocation events and provides different views to analyze the allocation characteristic.</dd> - </dl> - - <p>See also the documentation on <a href="/ja/docs/Mozilla/Performance/Leak-hunting_strategies_and_tips">Leak-hunting strategies and tips.</a></p> - </td> - <td> - <h3 id="Profiling_and_performance_tools" name="Profiling_and_performance_tools">プロファイリングツールとパフォーマンスツール</h3> - - <dl> - <dt><a href="https://developer.mozilla.org/ja/docs/Tools/Performance" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Developer Tools Profiler</a></dt> - <dd>The profiler built into the developer tools has a high-level waterfall, detailed call tree, allocations and GC profiling, and flame graphs. It is available on all platforms and release channels, and also supports remote profiling b2g and Fennec.</dd> - </dl> - - <dl> - <dt><a href="/ja/Performance/Profiling_with_the_Built-in_Profiler" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Gecko Profiler Addon</a> {{ gecko_minversion_inline("16.0") }}</dt> - <dd>The Gecko Profiler Addon is a good tool to start with.</dd> - <dt><a href="/ja/Performance/Profiling_with_Instruments" title="en/Performance/Profiling with Instruments">Profiling with Instruments</a></dt> - <dd>How to use Apple's Instruments tool to profile Mozilla code.</dd> - <dt><a href="/ja/Performance/Profiling_with_Xperf" title="en/Performance/Profiling with Xperf">Profiling with Xperf</a></dt> - <dd>How to use Microsoft's Xperf tool to profile Mozilla code.</dd> - <dt><a href="/ja/docs/Performance/Profiling_with_Concurrency_Visualizer" title="en/Performance/Profiling with Concurrency Visualizer">Profiling with Concurrency Visualizer</a></dt> - <dd>How to use Visual Studio's Concurrency Visualizer tool to profile Mozilla code.</dd> - <dt><a href="/ja/Performance/Profiling_with_Zoom" title="en/Performance/Profiling with Zoom">Profiling with Zoom</a></dt> - <dd>Zoom is a profiler for Linux done by the people who made Shark</dd> - <dt><a href="/ja/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a> {{ gecko_minversion_inline("2.0") }}</dt> - <dd>Using <a href="/jaJavaScript_code_modules/PerfMeasurement.jsm" title="en/JavaScript code modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> to measure performance data in your JavaScript code.</dd> - <dt><a href="/ja/docs/Performance/Adding_a_new_Telemetry_probe" title="https://developer.mozilla.org/ja/docs/Performance/Adding_a_new_Telemetry_probe">Adding a new Telemetry probe</a></dt> - <dd>Information on how to add a new measurement to the Telemetry performance-reporting system</dd> - <dt><a href="/ja/Performance/Profiling_JavaScript_with_Shark" title="en/Performance/Profiling JavaScript with Shark">Profiling JavaScript with Shark</a> {{ gecko_minversion_inline("1.9") }}</dt> - <dd>How to use the Mac OS X Shark profiler to profile JavaScript code in Firefox 3.5 or later.</dd> - <dt><a href="/ja/Performance/Profiling_with_Shark" title="en/Performance/Profiling with Shark">Profiling with Shark</a></dt> - <dd>How to use Apple's Shark tool to profile Mozilla code.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/Investigating_CSS_Performance">Investigating CSS Performance</a></dt> - <dd>How to figure out why restyle is taking so long</dd> - </dl> - - <h3 id="Power_profiling">Power profiling</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Performance/Power_profiling_overview">Power profiling overview</a></dt> - <dd>This page provides an overview of relevant information, including details about hardware, what can be measured, and recommended approaches. It should be the starting point for anybody new to power profiling.</dd> - <dt><code><a href="/ja/docs/Mozilla/Performance/tools_power_rapl">tools/power/rapl</a></code> (Mac, Linux)</dt> - <dd><code>tools/power/rapl</code> is a command-line utility in the Mozilla codebase that uses the Intel RAPL interface to gather direct power estimates for the package, cores, GPU and memory.</dd> - <dt><code><a href="/ja/docs/Mozilla/Performance/powermetrics">powermetrics</a></code> (Mac-only)</dt> - <dd><code>powermetrics</code> is a command-line utility that gathers and displays a wide range of global and per-process measurements, including CPU usage, GPU usage, and various wakeups frequencies.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/TimerFirings_logging">TimerFirings logging</a> (All platforms)</dt> - <dd>TimerFirings logging is a built-in logging mechanism that prints data on every time fired.</dd> - <dt><code><a href="/ja/docs/Mozilla/Performance/dtrace">dtrace</a></code> (Mac-only)</dt> - <dd><code>dtrace</code> is a powerful kernel instrumentation tool. One of its many features is the ability to instrument wakeups in a high-context fashion.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/Activity_Monitor_and_top">Activity Monitor, Battery Status Menu and <code>top</code></a> (Mac-only)</dt> - <dd>The battery status menu, Activity Monitor and <code>top</code> are three related Mac tools that have major flaws but often consulted by users, and so are worth understanding.</dd> - <dt><a href="/ja/docs/Mozilla/Performance/Intel_Power_Gadget">Intel Power Gadget</a> (Windows, Mac, Linux)</dt> - <dd>Intel Power Gadget provides real-time graphs for package and processor RAPL estimates. It also provides an API through which those estimates can be obtained.</dd> - <dt><code><a href="/ja/docs/Mozilla/Performance/perf">perf</a></code> (Linux-only)</dt> - <dd><code>perf</code> is a powerful command-line utility that can measure many different things, including energy estimates and high-context measurements of things such as wakeups.</dd> - <dt><code><a href="/ja/docs/Mozilla/Performance/turbostat">turbostat</a></code> (Linux-only)</dt> - <dd><code>turbostat</code> is a command-line utility that gathers and displays various power-related measurements, with a focus on per-CPU measurements such as frequencies and C-states.</dd> - <dt><code><a href="https://01.org/powertop">powertop</a></code> (Linux-only)</dt> - <dd><code>powertop</code> is an interactive command-line utility that gathers and displays various power-related measurements.</dd> - </dl> - - <h3 id="Related_Topics" name="Related_Topics">関連トピック</h3> - - <dl> - <dd><a href="/ja/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/ja/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/ja/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a>, <a href="/ja/Extensions" title="en/Extensions">Extensions</a>, <a href="/ja/Addons" title="en/Addons">Addons</a></dd> - </dl> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html b/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html deleted file mode 100644 index c5bb8e1b80..0000000000 --- a/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html +++ /dev/null @@ -1,360 +0,0 @@ ---- -title: Geckoプロファイラでプロファイリングする -slug: Mozilla/Performance/Profiling_with_the_Built-in_Profiler -translation_of: Mozilla/Performance/Profiling_with_the_Built-in_Profiler ---- -<p>{{ gecko_minversion_header("16.0") }}</p> - -<div class="summary"> -<p><span class="seoSummary">Gecko ProfilerはFirefoxに組み込まれたプロファイラです。外部のプロファイラよりも Firefoxとの統合が強化されており、開発者以外のマシンやロックされたAndroid端末など、外部プロファイラが利用できない状況でも利用できます。 </span></p> -</div> - -<div class="note"> -<p>Gecko Profilerは以前は「SPS」と「組み込みプロファイラ」として知られていました。私たちは可能な限り多くの古い名前への参照を変更しましたが、まだまだあります。</p> -</div> - -<h2 id="Gecko_Profilerアドオンの入手">Gecko Profilerアドオンの入手</h2> - -<p>まず最初に、Firefoxの正しいビルドを使用しているかどうかを確認する必要があります。公式のNightlyまたはBetaまたはReleaseビルドが動作します。ローカルビルドを使用している場合は、mozconfigで--enable-profilingオプションを有効にしてください。</p> - -<p>Gecko Profilerには2つのインターフェースがあります:</p> - -<ol> - <li>Web 開発者にとっては、ツール > Web 開発 > パフォーマンス のメニューから開くことができる簡略化されたプロファイラがあります</li> - <li><a href="https://perf-html.io/">Gecko Profiler アドオン</a>をインストールすることで、Mozillaの内部の開発者用のより高度なインターフェースにアクセスすることができます(<a href="/ja/docs/Mozilla/Performance/Reporting_a_Performance_Problem">インストールの詳細が利用できます</a>)。</li> -</ol> - -<div class="note"> -<p><a href="/ja/docs/Mozilla/Performance/Reporting_a_Performance_Problem">パフォーマンスの問題を報告</a>するときに、Firefox開発者からリクエストされたときにプロファイルを入手するためのステップバイステップガイドがあります。</p> - -<p><a href="/ja/docs/Mozilla/Performance/Reporting_a_Thunderbird_Performance_Problem_with_G">Thunderbirdのパフォーマンスの問題を報告</a>するときに、Thunderbird開発者が要求したときにプロファイルを取得するためのステップバイステップガイドがあります。</p> -</div> - -<h2 id="プロファイルの理解">プロファイルの理解</h2> - -<p>Gecko Profilerに関する<a href="/ja/docs/Mozilla/Performance/Gecko_Profiler_FAQ">よくある質問</a>を確認することができます。</p> - -<p>Ehsanのビデオをいくつか調べてみましょう。</p> - -<p> - <video controls src="https://vid.ly/e6v7s4?content=video&format=hd_webm">Your browser doesn't appear to support WebM video playback.</video> -</p> - -<div class="note"> -<p>役に立つと思われる機能がある場合は、<a href="https://github.com/mstange/Gecko-Profiler-Addon/">詳細とともにバグを記録</a>してください。</p> -</div> - -<h3 id="インターフェイス">インターフェイス</h3> - -<h4 id="1._タイムライン">1. タイムライン</h4> - -<p><img alt="" src="https://mdn.mozillademos.org/files/14877/profiler-timeline.png" style="height: 327px; width: 1751px;"></p> - -<p>タイムラインには、興味深いイベントを示すトレースマーカー(色付きセグメント)の行がいくつかあります。より多くの情報を表示するには、それらの上にカーソルを置きます。トレースマーカーの下には、さまざまなスレッドのアクティビティに対応する行があります。</p> - -<div class="note"> -<p><strong>Tip</strong>: [default] と注釈されたスレッドは、親プロセス(「UI」、別名「ブラウザクロム」、別名「メイン」)プロセスにあり、[tab] で注釈付けされたスレッドはWebコンテンツ ")プロセス。</p> -</div> - -<div class="note"> -<p><strong>Tip</strong>: 親プロセスの長時間実行されるタスクはブラウザUI(「UIジャンク」とも呼ばれます)ですべての入力または描画をブロックしますが、コンテンツプロセスで長時間実行されるタスクはページとの対話性をブロックしますが、 APZのおかげです。</p> -</div> - -<h5 id="トレースマーカー">トレースマーカー</h5> - -<ul> - <li>赤色:イベントループが応答していないことを示します。 vsyncなどの優先度の高いイベントはここには含まれていないことに注意してください。また、これは待っているイベントがあった場合に起こったことを示しており、必ずしもそれが保留中のイベントがあるとは限りません。</li> - <li>ブラック:同期IPCコールを示します。</li> -</ul> - -<h5 id="範囲">範囲</h5> - -<p><img alt="Timeline showing ranged breadcrumbs and zoom icon" src="https://mdn.mozillademos.org/files/14893/profiler-breadcrumbsandzoom.png" style="height: 490px; width: 2450px;"></p> - -<p>トレースマーカーまたはスレッド領域の任意の場所をクリックしてドラッグすると、時間の範囲を拡大できます。範囲が選択されると、その範囲にズームする拡大鏡が表示されます。トレースマーカーをクリックすると、その期間に対応する選択肢が作成され、興味のある時間の範囲を容易にズームインできます。範囲を拡大すると、以前選択した範囲またはプロファイル全体(「フルレンジ」と表示されます)に簡単に戻ることができるパンくずリストが作成されます。</p> - -<div class="note"> -<p><strong>Tip</strong>: While zooming out to a previously-selected range deletes the narrower range, the browser back button can be used to restore the narrower range.</p> -</div> - -<h5 id="Thread_Timeline(s)">Thread Timeline(s)</h5> - -<p><strong>Thread/Process Timelines</strong>: Below the tracing markers we have a list of profiled threads. These threads may come from different processes. In this case, we have the 'GeckoMain [default]' process' main thread, a content process' main thread, and the main thread of the compositor process. Each of these timelines is aligned with wall clock time. So, for example, when a thread is blocked, like 'GeckoMain [tab]', on a thread like 'GeckoMain [default]', we can see what's occurring on the latter thread that is preventing it from responding to the former.</p> - -<p><strong>X (Time) axis</strong>: The timelines go from left to right as wall clock time increases along the X axis. Elements in the timeline are spaced at the sampling frequency with an attempt to align them with time. Factors such as sampling or stack-walking variance and system load can lead to sampling delays which manifest as gaps in the timeline.</p> - -<div class="note"> -<p><strong>Note:</strong> because this is a sampling profiler, be cautious when examining running time that is equal to the sampling interval. For very time-sensitive profiling, you may want to consider a non-sampling profiler.</p> -</div> - -<p><strong>Y (Stack) axis: </strong>The Y axis is the stack depth, not the CPU activity. The change in stack height is useful to find patterns like long blocking calls (long flatlines) or very tall spiky blocks (recursive calls and JS). With more experience you can read profiles faster by recognizing patterns. Also note that you can click on timeline elements (the selected element gets darker when selected) and the tree view (see below) reflects the selected element.</p> - -<ul> -</ul> - -<h4 id="2._コールツリー">2. コールツリー</h4> - -<p><img alt="" src="https://mdn.mozillademos.org/files/14895/profiler-calltree.png" style="height: 726px; width: 1751px;"></p> - -<p>The Call Tree shows the samples organized by 'Running Time' which will show the data by wall clock time. There are lighter grey names to the right of tree elements that indicate where the code comes from. Be aware that elements can be from JavaScript, Gecko, or system libraries. Note that if some functions are not yet named properly, symbolication may not yet be finished.</p> - -<div class="note"> -<p>Tip: You can right-click on a function name to get an option to copy its name to the clipboard.</p> -</div> - -<p>A significant portion of time can be spent in idle, blocking calls like waiting for events. This is ideal for a responsive application to be ready to service incoming events. There are OS-specific waiting functions like <code>NtWaitForMultipleObjects </code>seen in the example above taken on Windows or <code>mach_msg_trap</code> on macOS.</p> - -<div class="note"> -<p>Tip: You can quickly go deeper into the call tree by holding down your right arrow key. Alternatively, expand an entire tree segment by holding Alt and clicking on the arrow to the left of the collapsed tree segment.</p> -</div> - -<p>As we progress into a more specific part of the tree, you'll notice that the 'Running time' decreases. This happens when a function has 2 or more non-trivial calls: the running time will be split between its children.</p> - -<div class="note"> -<p>Tip: Focus on one section of the tree by clicking on the "arrow-in-a-circle" icon that appears to the right of the tree element as you hover over it. A "tree breadcrumb" will appear similar to the range breadcrumbs noted above.</p> -</div> - -<p>Clicking the "JavaScript only" option will only show JavaScript code in the Call Tree. You could compare the time with this option checked and the total time to get an idea of how much time was spent running JS. Note that long-running JS function execution may not actually be taking as long as you think because further down the call stack there may be something like painting happening.</p> - -<p>Clicking the "Invert call stack" option will sort by the time spent in a function in descending order. Note that the running time here is only the running time of that particular frame and not the total of all called instances of that function. You can see the samples in the Timeline get darker as you select different functions in the Call Tree; these are samples that were taken when the selected function was running.</p> - -<p>"Filter stacks" will allow you to search for functions by name. One of the easiest ways to find slowness caused by a page's JS is to type its URL into the "Filter stacks" box. You can then select corresponding Call Tree entries and watch the Timeline for entries in the content process main thread that get darker as you select Call Tree entries.</p> - -<div class="note"> -<p>Tip: If things are blank elsewhere in the UI, you may have text entered into the "Filter stacks" box.</p> -</div> - -<h5 id="Custom_Annotations">Custom Annotations</h5> - -<p>In <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1334218">bug 1334218</a> an annotation was added to <code>PresShell::Paint</code> to show the URL of the document being painted. These annotations are not too complex to add so if you would like something added, <a href="https://bugzilla.mozilla.org/enter_bug.cgi">file a bug</a>.</p> - -<h4 id="3._Sharing_the_profile">3. Sharing the profile</h4> - -<p>Click "Share..." > Share acknowledging that the URLs you had open and your Firefox extensions will be included in the profile data sent to the server. If you select a different time range, the URL revealed by pressing "Permalink" will change so that you can be sure the recipient of the URL will see the same things you are seeing.</p> - -<h3 id="Tips">Tips</h3> - -<p>Understanding profiles can be difficult. If you're unfamiliar with Gecko's internals, you can click the <em>JavaScript only</em> button to see where your JavaScript code is slow. Each entry in the Call Tree shows a call stack and how much time is spent in that call stack. For example:<img alt="" src="https://mdn.mozillademos.org/files/14905/profiler-timespent.png" style="display: block; height: 382px; margin: 0px auto; width: 1180px;">In the results above we can see that we're spending ~287 milliseconds in <code>Startup::XRE_InitChildProcess</code>, 194 ms of which are spent in <code>PVsync::Msg_Notify</code> and <strong>all</strong> child functions that it calls. It is useful to scan down the "Running Time" column and look for when the time changes. While looking for performance problems, you're looking for the processes that are taking the most time; then you can figure out how to optimize them.</p> - -<h3 id="Common_Performance_Bugs_in_Firefox">Common Performance Bugs in Firefox</h3> - -<p>Inefficient code that is on the reflow or restyle paths is often to blame for jank. So is code that is run often in the parent process or in parts of the codebase that apply to many users.</p> - -<p>Synchronous re-flow can be caused by JS that, for example, makes changes to the page content in a loop and queries about the layout of the page in that same loop.</p> - -<p>A PresShell:Flush means that we are either recomputing styles or recomputing layout. These sorts of flushes should be avoided if possible, as they can be quite expensive. Keep your eyes out for flushes like this that are blocking the main thread for a long time. If you notice these things happening in a loop, that's a bug to be fixed, since we're likely "layout thrashing".</p> - -<p>Some more tips and answers to common questions are available in a <a href="/en-US/docs/Mozilla/Performance/Gecko_Profiler_FAQ">mid-2017 FAQ document</a>.</p> - -<p>It's a good idea to search <a href="https://bugzilla.mozilla.org/">bugzilla</a> before filing a bug about a performance problem in Firefox but sometimes it's hard to find issues that have already been reported. Therefore, it's usually a good idea to <a href="https://bugzilla.mozilla.org/enter_bug.cgi">file a bug</a>.</p> - -<h2 id="ローカルWindowsビルドのプロファイリング">ローカルWindowsビルドのプロファイリング</h2> - -<p>If you built Firefox for Windows <strong>locally</strong> and you would like to use the local symbols with the profiler, you will need to run an additional tool; see <a href="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler_and_Local_Symbols_on_Windows" title="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler_and_Local_Symbols_on_Windows">Profiling with the Gecko Profiler and Local Symbols on Windows</a>.</p> - -<h2 id="ビルドをプロファイリングする">ビルドをプロファイリングする</h2> - -<p>The profiler currently doesn't really support symbolication for profiles from Try builds. For Linux builds, there seem to be symbols inside the binaries, which the profiler should pick up correctly. But on Windows and macOS, you'll have to do some tricks to make it work:</p> - -<ol> - <li><span>Put your firefox build into a directory with the name <code>dist</code>.</span></li> - <li><span>Download the crashreporter symbols zip for your build. It should be one of the "artifacts" of the build job of your try build.</span></li> - <li><span>Unzip the crashreporter symbols into <code>dist/crashreporter-symbols/</code>.</span></li> - <li><span>Now profile as usual.</span></li> -</ol> - -<p>(This abuses the symbolication logic for local builds. It's at <a href="http://searchfox.org/mozilla-central/rev/51b3d67a5ec1758bd2fe7d7b6e75ad6b6b5da223/browser/components/extensions/ext-geckoProfiler.js#172">ext-geckoProfiler.js</a> and may stop working at any time.)</p> - -<h2 id="Firefoxモバイルのプロファイリング">Firefoxモバイルのプロファイリング</h2> - -<p>Firefox 61 for Android supports Gecko profiler again; see <a href="https://perf-html.io/docs/#/./guide-remote-profiling">Remote profiling on Android</a> for details.</p> - -<p>The following information is old version of Firefox for Android.</p> - -<ol> - <li>For local builds of Fennec, you should build with optimization and <code>STRIP_FLAGS="--strip-debug"</code> but <strong>NOT</strong> with <code>--enable-profiling</code>. Nightly builds are already built with the appropriate flags.</li> - <li>You'll need to have <code>adb</code> and <code>arm-eabi-addr2line</code> (which is part of the <a href="http://developer.android.com/tools/sdk/ndk/index.html#Installing" title="http://developer.android.com/tools/sdk/ndk/index.html#Installing">Android NDK</a>) in your bash <code>PATH</code>, so use <code>locate arm-eabi-addr2line</code> (on Linux) or<code> mdfind name:arm-eabi-addr2line</code> (on OS X) and stick an export to its location in <code>~/.bash_profile</code>. The extension will invoke bash to use <code>adb</code> and <code>addr2line</code>.</li> - <li>Install the <a href="https://github.com/bgirard/Gecko-Profiler-Addon/raw/master/geckoprofiler.xpi" title="https://github.com/bgirard/Gecko-Profiler-Addon/raw/master/geckoprofiler.xpi">latest pre-release build</a> in your host machine's Firefox browser that has your phone reachable via <a href="/en-US/Firefox_OS/Debugging/Installing_ADB">ADB</a>. This will add a icon in the top right of the browser.</li> - <li>Set <code>devtools.debugger.remote-enabled</code> to <code>true</code> in <code>about:config</code> for Fennec.</li> - <li>Select target <em>Mobile USB</em> and press <em>Connect</em>. The first run will take an additional 1 minute or so to pull in the required system libraries.</li> -</ol> - -<h2 id="Firefoxの起動のプロファイリング">Firefoxの起動のプロファイリング</h2> - -<ol> - <li>Start your Firefox with the environment variable <code>MOZ_PROFILER_STARTUP=1</code> set. This way the profiler is started as early as possible during startup.</li> - <li>Then capture the profile using the add-on as usual.</li> -</ol> - -<p>Startup profiling does not use the settings that you configured in the add-on's panel. It uses settings that can be configured with the environment variables <code>MOZ_PROFILER_STARTUP_ENTRIES</code> and <code>MOZ_PROFILER_STARTUP_INTERVAL</code>:</p> - -<ul> - <li>If it looks like the buffer is not large enough, you can tweak the buffer size with the env var <code>MOZ_PROFILER_STARTUP_ENTRIES</code>. This defaults to 1000000, which is 9MB. If you want 90MB use 10000000, and 20000000 for 180MB, which are good values to debug long startups.</li> - <li>If you'd like a coarser resolution, you can also choose a different interval using <code>MOZ_PROFILER_STARTUP_INTERVAL</code>, which defaults to 1 (unit is millisecond). You can't go below 1 ms but you can use e.g. 10 ms.</li> -</ul> - -<h2 id="JSベンチマーク(xpcshell)のプロファイリング">JSベンチマーク(xpcshell)のプロファイリング</h2> - -<ol> - <li>To profile the script <code>run.js</code> with IonMonkey (<code>-I</code>), type inference (<code>-n</code>) and JäegerMonkey (<code>-m</code>). Thgis requires the following command: - - <pre><code class="brush: bash">$ xpcshell -m -I -n -e ' - const Ci = Components.interfaces; - const Cc = Components.classes; - var profiler = Cc["@mozilla.org/tools/profiler;1"].getService(Ci.nsIProfiler); - profiler.StartProfiler( - 10000000 /* = profiler memory */, - 1 /* = sample rate: 100µs with patch, 1ms without */, - ["stackwalk", "js"], 2 /* = features, and number of features. */ - ); - ' -f ./run.js -e ' - var profileObj = profiler.getProfileData(); - print(JSON.stringify(profileObj)); - ' | tail -n 1 > run.cleo</code></pre> - The xpcshell output all benchmark information and on its last line it output the result of the profiling, you can filter it with <code>tail -n 1</code> and redirect it to a file to prevent printing it in your shell. The expected size of the output is around 100 of MB.</li> - <li>To add symbols to your build, you need to call <code>./scripts/profile-symbolicate.py</code> available in B2G repository. - <pre><code>$ GECKO_OBJDIR=<objdir> PRODUCT_OUT=<objdir> TARGET_TOOLS_PREFIX= \ - ./scripts/profile-symbolicate.py -o run.symb.cleo run.cleo</code></pre> - </li> - <li><a href="https://github.com/bgirard/cleopatra" title="https://github.com/bgirard/cleopatra">Clone Cleopatra</a> and start the server with <code>./run_webserver.sh</code>.</li> - <li>Access Cleopatra from your web browser by loading the page <code>localhost:8000</code>, and upload <code>run.symb.cleo</code> to render the profile with most of the symbol information.</li> -</ol> - -<h2 id="ネイティブスタックとラベルスタック">ネイティブスタックとラベルスタック</h2> - -<p>The profiler periodically samples the stack of the selected threads in Firefox and collects a stack trace. This stack trace is the combined stack of three different stacks: The native stack, the JavaScript stack, and the label stack.</p> - -<h3 id="Native_stack">Native stack</h3> - -<p>The native stack is the regular C / C++ / rust function stack that you know from your debugger. It's only collected if the "Stack walk" checkbox in the gecko profiler add-on's settings is checked.</p> - -<h3 id="JavaScript_stack">JavaScript stack</h3> - -<p>The JavaScript stack is collected by the JS engine. This is controlled by the "JavaScript" checkbox in the gecko profiler add-on's settings panel.</p> - -<h3 id="Label_stack">Label stack</h3> - -<p>The label stack (formerly called "Pseudo stack") uses function entry/exit tags added by hand to important points in the code base. The stacks you see in the UI are chains of these tags. This is good for highlighting particularly interesting parts of the code, but they miss out on un-annotated areas of the code base, and give no visibility into system libraries or drivers.</p> - -<p>Tagging is done by adding macros of the form <code>AUTO_PROFILER_LABEL("NAMESPACE", "NAME")</code>. These add RAII helpers, which are used by the profiler to track entries/exits of the annotated functions. For this to be effective, you need to liberally use <code>AUTO_PROFILER_LABEL</code> throughout the code. See <code>GeckoProfiler.h</code> for more variations like <code>AUTO_PROFILER_LABEL_DYNAMIC</code>.</p> - -<p>Because of the non-zero overhead of the instrumentation, the sample label shouldn't be placed inside hot loops. A profile reporting that a large portion is spent in "Unknown" code indicates that the area being executed doesn't have any sample labels. As we focus on using this tool and add additional sample labels coverage should improve.</p> - -<h2 id="Sharing_saving_and_loading_profiles">Sharing, saving and loading profiles</h2> - -<p>After capturing and viewing a profile you will see "Share..." and "Save as file..." buttons in the top-right of the window. Sharing will upload your profile to perf-html.io and make it public. More <a href="/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem#Capturing_and_sharing_a_profile">information on sharing profiles</a> is available.</p> - -<h2 id="ハングしたプロセスのプロファイリング">ハングしたプロセスのプロファイリング</h2> - -<p>It is possible to get profiles from hung Firefox processes using lldb<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn1-2699" rel="footnote" title="Unfortunately, this technique will not work for Windows. ">1</a></sup>.</p> - -<ol> - <li>After the process has hung, <a href="https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-terminal-workflow-tutorial.html#//apple_ref/doc/uid/TP40012917-CH4-SW5">attach lldb</a>.</li> - <li>Type in<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn2-2699" rel="footnote" title="Assuming you’re running a build after this revision landed.">2</a></sup>, : - <pre>p (void)<code id="line-232">profiler_save_profile_to_file</code>("somepath/profile.txt")</pre> - </li> - <li><a href="https://github.com/mstange/analyze-tryserver-profiles">Clone mstange’s handy profile analysis repository.</a></li> - <li>Run: - <pre>python symbolicate_profile.py somepath/profile.txt</pre> - - <p>To graft symbols into the profile. mstange’s scripts do some fairly clever things to get those symbols – if your Firefox was built by Mozilla, then it will retrieve the symbols from the Mozilla symbol server. If you built Firefox yourself, it will attempt to use some cleverness<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn3-2699" rel="footnote" title="A binary called dump_syms_mac in mstange’s toolkit, and nm on Linux">3</a></sup> to grab the symbols from your binary.</p> - - <p>Your profile will now, hopefully, be updated with symbols. Upload it for further analysis!</p> - - <p>I haven’t yet had the opportunity to try this, but I hope to next week. I’d be eager to hear people’s experience giving this a go – it might be a great tool in determining what’s going on in Firefox when it’s hung!</p> - </li> -</ol> - -<h2 id="スレッドのプロファイリング">スレッドのプロファイリング</h2> - -<p>The Gecko Profiler has rudimentary support for profiling multiple threads. To enable it, check the 'Multi-Thread' box then enter one or more thread names into the textbox beside it. Thread names are the strings passed to the base::Thread class at initialization. At present there is no central list of these thread names, but you can find them by grepping the source.</p> - -<p>Examples: <a href="http://mxr.mozilla.org/mozilla-central/source/ipc/glue/BrowserProcessSubThread.cpp#24">1</a> <a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/ipc/CompositorParent.cpp#133">2</a></p> - -<p>If the filter you entered is invalid, no threads will be profiled. You can identify this by hitting Analyze (Cleopatra will show you an error message). If the filter is left empty, only the main thread is captured (as if you had not enabled Multi-Thread.)</p> - -<h2 id="プロファイラの機能">プロファイラの機能</h2> - -<p>The profiler supports several features. These are options to gather additional data in your profiles. Each option will increase the performance overhead of profiling so it's important to activate only options that will provide useful information for your particular problem to reduce the distortion.</p> - -<h3 id="Stackwalk">Stackwalk</h3> - -<p>When taking a sample the profiler will attempt to unwind the stack using platform specific code appropriate for the ABI. This will provide an accurate callstack for most samples. On ABIs where framepointers are not avaiable this will cause a significant performance impact.</p> - -<h3 id="JS_Profiling">JS Profiling</h3> - -<p>Javascript callstacks will be generated and interleaved with the c++ callstacks. This will introduce an overhead when running JS.</p> - -<h3 id="GC_Stats">GC Stats</h3> - -<p>Will embed GC stats from 'javascript.options.mem.notify' in the profile.</p> - -<h3 id="Main_Thread_IO">Main Thread IO</h3> - -<p>This will interpose file I/O and report them in the profiles.</p> - -<h3 id="Multi-Thread">Multi-Thread</h3> - -<p>This will sample other threads. This fields accept a comma seperated list of thread names. A thread can only be profiled if it is registered to the profiler.</p> - -<h3 id="GPU">GPU</h3> - -<p>This will insert a timer query during compositing and show the result in the Frames view. This will appropriate how much GPU time was spent compositing each frame.</p> - -<h3 id="Layers_Texture">Layers & Texture</h3> - -<p>The profiler can be used to view the layer tree at each composite, optionally with texture data. This can be used to debug correctness problems.</p> - -<h4 id="Viewing_the_Layer_Tree">Viewing the Layer Tree</h4> - -<p>To view the layer tree, the <code>layers.dump</code> pref must be set to <code>true</code> in the Firefox or B2G program being profiled.</p> - -<p>In addition, both the compositor thread and the content thread (in the case of B2G, the content thread of whichever app you're interested in) must be profiled. For example, on B2G, when profiling the Homescreen app, you might start the profiler with:</p> - -<pre>./profile.sh start -p b2g -t Compositor && ./profile.sh start -p Homescreen -</pre> - -<p>Having gotten a profile this way, the layer tree for a composite can be seen by clicking on a composite in the "Frames" section of Cleopatra (you may need to a sub-range of samples to make individual composites large enough to be clicked). This will activate the "LayerTree" tab:</p> - -<p><img alt="Screenshot of layer tree view in Cleopatra, with no textures." src="https://mdn.mozillademos.org/files/10327/cleopatra-layer-tree-hilite.png" style="height: 1029px; width: 1923px;"></p> - -<p>In this screenshot, Composite #143 has been selected. The layer tree structure can be seen in the left panel. It contains, for each layer, the type of the layer, and various metrics about the layer, such as the visible region and any transforms. In the right panel, a visualization of the layer tree (based entirely on the aforementioned metrics) is shown. Hovering over a layer in the left panel highlights the layer in the right panel. This is useful for identifying what content each layer corresponds to. Here, I'm hovering over the last layer in the layer tree (a PaintedLayerComposite), and a strip at the top of the right panel is highlighted, telling me that this layer is for the system notification bar in B2G.</p> - -<h4 id="Viewing_Textures">Viewing Textures</h4> - -<p>Sometimes, it's useful to see not only the structure of the layer tree for each composite, but also the rendered textures for each layer. This can be achieved by additionally setting the <code>layers.dump-texture</code> pref to <code>true</code>, or by adding <code>-f layersdump </code>to the profiler command line (the latter implies both the <code>layers.dump</code> and <code>layers.dump-texture</code> prefs).</p> - -<div class="warning"> -<p>警告: テクスチャデータをダンプすると、パフォーマンスが大幅に低下し、プロファイルファイルに多くの記憶領域が必要になります。 このようにプロファイリングする際には、フレームレートを大幅に下げてレンダリングを実行し、キャプチャ時間を短くして、関心のあるサンプルが上書きされないようにします。</p> -</div> - -<p>Here's how the Layer Tree view looks in Cleopatra with texture data:</p> - -<p><img alt="Screenshot of layer tree view in Cleopatra, with textures." src="https://mdn.mozillademos.org/files/10329/cleopatra-layer-tree-textures.png" style="height: 1037px; width: 1920px;"></p> - -<p>This time, the visualization in right panel shows the actual textures rather than just the outlines of the layers. This can be very useful for debugging correctness problems such as a temporary visual/rendering glitch, because it allows you to find the precise composite that shows the glitch, and look at the layer tree for that composite.</p> - -<h4 id="Visualizing_a_layer_tree_without_a_profile">Visualizing a layer tree without a profile</h4> - -<p>If you have a layer dump from somewhere (such as from <code>adb logcat</code> on B2G), you can get Cleopatra to visualize it (just the structure of course, not textures) without needing a profile. To do so, paste the layer dump into the "Enter your profile data here" text field on the front page of Cleopatra:</p> - -<p><img alt="Screenshot of front page of Cleopatra, with pasted layer dump." src="https://mdn.mozillademos.org/files/10331/cleopatra-layer-tree-noprofile.png" style="height: 596px; width: 1020px;"></p> - -<p>The resulting "profile" will have the Layer Tree view enabled (but nothing else). This is useful in cases where you want to gain a quick visual understanding of a layer dump without having to take a profile.</p> - -<div class="note"> -<p>On B2G, each line of a layer dump in <code>adb logcat</code> output is prefixed with something like <code>I/Gecko (30593):</code>. Cleopatra doesn't currently understand this prefix, so it needs to be removed before pasting.</p> -</div> - -<h3 id="Display_List">Display List</h3> - -<p>Dump the display list after each refresh with the texture data. This can be used to debug correctness problems.</p> - -<h2 id="Contribute">Contribute</h2> - -<ul> - <li>Source is located in {{ Source("tools/profiler") }}.</li> - <li>The Bugzilla component is Core::Gecko Profile.</li> - <li>The profiler add-on repository can be found here: <a class="link-https" href="https://github.com/devtools-html/Gecko-Profiler-Addon" rel="freelink">https://github.com/devtools-html/Gecko-Profiler-Addon</a>.</li> - <li>The Cleopatra repository can be found here: <a class="link-https" href="https://github.com/devtools-html/perf.html" rel="freelink">https://github.com/devtools-html/perf.html</a></li> -</ul> diff --git a/files/ja/mozilla/performance/reporting_a_performance_problem/index.html b/files/ja/mozilla/performance/reporting_a_performance_problem/index.html deleted file mode 100644 index 3333b1efc5..0000000000 --- a/files/ja/mozilla/performance/reporting_a_performance_problem/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: パフォーマンスの問題を報告する -slug: Mozilla/Performance/Reporting_a_Performance_Problem -translation_of: Mozilla/Performance/Reporting_a_Performance_Problem ---- -<p>この記事では、<a href="/ja/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler拡張機能</a>を使用してパフォーマンスの問題を報告する方法について説明します。 あなたが読むよりそれを好むなら<a href="https://www.youtube.com/watch?v=kGBs0BQsoQg">ビデオチュートリアル</a>もあります。</p> - -<h2 id="Gecko_Profilerの拡張機能を設定する">Gecko Profilerの拡張機能を設定する</h2> - -<ol> - <li>Download and install the <a class="external" href="https://perf-html.io/" title="geckoprofiler.xpi">latest version of the Gecko Profiler extension</a></li> - <li>The profiler extension will show up in the top right of the URL bar as a globe icon (if not, <a href="https://support.mozilla.org/en-US/kb/how-customize-toolbars#w_how-do-i-customize-or-rearrange-toolbar-items">drag it there from the Customize window</a>).<br> - <br> - <img alt="The Gecko Profiler Add-on installed and visible within the Nightly toolbar." src="https://mdn.mozillademos.org/files/14859/Gecko%20Profiler%20Toolbar%20Button.PNG" style="height: 139px; width: 254px;"></li> - <li><strong>Remember to disable or uninstall the extension if you're not using it.</strong></li> -</ol> - -<p><em>macOS only, or to check whether a problem has been fixed in a later Firefox version (macOS release builds will currently produce profiles missing some important information):</em></p> - -<ol> - <li>Download and start the <a class="external" href="http://nightly.mozilla.org/" title="http://nightly.mozilla.org/">nightly build</a> for your platform. You will have to close all running instance(s) of Firefox before launching nightly.</li> - <li>Nightly is a development version, which may contain bugs, so <a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">test with a new profile or back up your data</a>.</li> - <li>Verify that it is running correctly by going to 'About Nightly' by looking for 'nightly' as the update channel (3rd line). The icon should be a blue globe.</li> -</ol> - -<h2 id="Using_the_Add-on">Using the Add-on</h2> - -<p>Once installed, the profiler becomes active immediately (the icon being blue indicates it is active). The profiler uses a fixed size buffer to store sample data. When it runs out of space in its buffer, it discards old entries so you may want to increase the buffer size if you find you are unable to capture the profile quickly enough after you notice a performance problem. In the Settings part of the UI you can adjust the size of the buffer (presently defaults to 9 MB) and the time interval between data collection (presently defaults to 1 ms). Note that increasing the buffer size uses more memory and can make capturing a profile take longer.</p> - -<p><img alt="Profiler UI" src="https://perf-html.io/e9a699daa7c33fcf80c361278055c65d.png" style="height: 376px; width: 546px;"></p> - -<p>Using the keyboard shortcuts is often more convenient than using the mouse to interact with the UI:</p> - -<ul> - <li><code>Ctrl+Shift+1</code> - Start/Stop the profiler</li> - <li><code>Ctrl+Shift+2</code> - Take a profile and launch Cleopatra to view it</li> -</ul> - -<h2 id="Capturing_and_sharing_a_profile">Capturing and sharing a profile</h2> - -<ol> - <li>Reproduce the performance problem. If possible let the problem manifest itself for 5-10 seconds.</li> - <li>Press <code>Ctrl+Shift+2</code> or click on the 'Globe' icon in the top right and select 'Capture Profile'. Try to do this within a few seconds from reproducing the performance problem as only the last few seconds are recorded. If the timeline has a large red block it's a good sign.<br> - <img alt="Jank markers appearing in the Perf.html profile analysis tool." src="https://mdn.mozillademos.org/files/14861/Perf%20Dot%20HTML%20Red%20Lines.PNG" style="height: 238px; width: 558px;"></li> - <li>The data will open in a new tab. Wait until the "Waiting for symbol tables for library libxul.pdb..." notification disappears before sharing the profile.</li> - <li>There will be a button in the top right labeled 'Share' which will upload this profile and once completed will write out a link. Copy this URL to your clipboard by right clicking and add the profile URL to the bug for your performance problem and/or send it to the appropriate person. Try to give some context about what you were doing when the performance problem arose such as the URL you were viewing and what actions were you doing (ex. scrolling on gmail.com).<br> - <img alt="The button for sharing a profile." src="https://mdn.mozillademos.org/files/14863/Share.PNG" style="height: 142px; width: 329px;"></li> -</ol> - -<h2 id="Viewing_addon_performance_in_GeckoView">Viewing addon performance in GeckoView</h2> - -<p>Sometimes an addon or more are slowing down Firefox. These addons might be using the extension API in ways that were not meant to. You can see which of these addons are causing problems by adding the "moz-extension" filter.</p> - -<p><img alt="moz-extension filter print screen" src="https://i.imgur.com/EJCrt4N.png" style="height: 287px; width: 1217px;"></p> - -<p>Make sure you are selecting the process that is using up the CPU since all of the processes are shown. You might have a content process using up the CPU and not the main one.</p> - -<p>Make sure you are doing whatever it is that slows down Firefox while recording the profile. For example you might have one addon that <a href="https://vimeo.com/269371096">slows down page load</a> and <a href="https://vimeo.com/269371201">another one that slows down tab switch</a>.</p> - -<p>Your first reflex once you find what addon is slowing down the profile might be to disable it and search for alternatives. Before you do this, please share the performance profile with the addon authors trough a bug report. Gecko profiler allows you to share a link with the profile.</p> - -<p> </p> diff --git a/files/ja/mozilla/performance/scroll-linked_effects/index.html b/files/ja/mozilla/performance/scroll-linked_effects/index.html deleted file mode 100644 index a26aa29a9d..0000000000 --- a/files/ja/mozilla/performance/scroll-linked_effects/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: スクロール連動エフェクト -slug: Mozilla/Performance/Scroll-linked_effects -tags: - - CSS - - JavaScript - - Performance - - Scroll - - Scroll-Linked Effects - - Web Animations - - compositor -translation_of: Mozilla/Performance/Scroll-linked_effects ---- -<p class="summary">スクロール連動エフェクトはスクロール位置に基づいて Web ページを変化させるエフェクト実装です。(例えば、スクロールによる視差エフェクトを生み出すために位置プロパティを更新させるなど) この記事はスクロール連動エフェクトについてパフォーマンス・関連するツール・移行技術の可能性について記載しています。</p> - -<h2 id="スクロールエフェクトとは">スクロールエフェクトとは</h2> - -<p>時々スクロールエフェクトは {{event("scroll")}} イベントを監視し、いくつかの手段(通常は CSS の {{cssxref("position")}} や {{cssxref("transform")}} プロパティ)でページ内の要素を更新して実装されます。このようなエフェクトは <a href="https://github.com/RByers/css-houdini-drafts/blob/master/css-scroll-api/UseCases.md">CSS Scroll API: Use Cases</a> でサンプルを見ることができます。</p> - -<p>これらのエフェクトは、スクロールがブラウザのメインスレッドで同期的に完了するブラウザの場合はうまく動作します。しかし、現在多くのブラウザはユーザに一貫した 60 FPS の体験を提供するために何らかの非同期スクロールを提供しています。非同期スクロールモデルでは、表示されているスクロールポジションはコンポジタースレッドで更新されて {{event("scroll")}} イベントが DOM 内で更新されメインスレッドで発火される以前にユーザーに表示されます。これは、実装されたエフェクトがユーザーが更新されたスクロール位置を見るよりも少し遅れることになります。これはエフェクトが遅延したり、カクカクしたり、ユーザーをイライラさせます。つまりできることなら避けたい事象です。</p> - -<p>以下は非同期スクロールでうまく動作しないエフェクト例と、適切に動作するサンプルです。</p> - -<h3 id="Example_1_Sticky_位置">Example 1: Sticky 位置</h3> - -<p>これはスクロールダウンしても "toolbar" div がスクリーンの上部に固定される sticky 位置エフェクトの実装です。</p> - -<pre class="brush: html"><body style="height: 5000px" onscroll="document.getElementById('toolbar').style.top = Math.max(100, window.scrollY) + 'px'"> - <div id="toolbar" style="position: absolute; top: 100px; width: 100px; height: 20px; background-color: green"></div> -</body></pre> - -<p>この sticky 位置の実装は "toolbar" div の再配置を監視するスクロールイベントリスナーに基づいています。スクロールイベントリスナーがブラウザーのメインスレッドで動作する JavaScript で動く限り、ユーザーが見えているスクロールとは非同期処理になります。したがって非同期スクロールにおいて、イベントハンドラーはユーザーに見えているスクロールの動きとは相対的に遅延して、div は意図したとおり固定された表示になりません。代わりに、ユーザーのスクロールによって div は移動して、スクロールインベントハンドラーが実行されたときにスクリーンジョブに "すばやく戻ります"。この一連の動きと素早い動作はかくかくした視覚エフェクトになります。スクロールイベントリスナーを利用しない 1 つの実装は、これを目的とした CSS プロパティーを利用する方法です。</p> - -<pre class="brush: html"><body style="height: 5000px"> - <div id="toolbar" style="position: sticky; top: 0px; margin-top: 100px; width: 100px; height: 20px; background-color: green"></div> -</body></pre> - -<p>このバージョンは、ユーザーのスクロールによる "toolbar" div の位置更新をブラウザ自身が行うため、非同期スクロールでもうまく動作します。</p> - -<h3 id="Example_2_スクロールスナップ">Example 2: スクロールスナップ</h3> - -<p class="summary">Thisこの機能は Web 標準から削除されています。いくつかのブラウザではまだサポートされていますが機能削除の最中です。可能ならば利用を避け既存コードを更新してください。<a href="https://developer.mozilla.org/ja-JP/docs/Web/CSS/scroll-snap-coordinate#Browser_compatibility">https://developer.mozilla.org/ja-JP/docs/Web/CSS/scroll-snap-coordinate#Browser_compatibility</a></p> - -<p>以下はスクロールスナップの実装で、目的の位置近くでスクロールをユーザーが止めたときに指定した目的のスクロールポジション目的位置に移動するものです。</p> - -<pre class="brush: html"><body style="height: 5000px"> - <script> - function snap(destination) { - if (Math.abs(destination - window.scrollY) < 3) { - scrollTo(window.scrollX, destination); - } else if (Math.abs(destination - window.scrollY) < 200) { - scrollTo(window.scrollX, window.scrollY + ((destination - window.scrollY) / 2)); - setTimeout(snap, 20, destination); - } - } - var timeoutId = null; - addEventListener("scroll", function() { - if (timeoutId) clearTimeout(timeoutId); - timeoutId = setTimeout(snap, 200, parseInt(document.getElementById('snaptarget').style.top)); - }, true); - </script> - <div id="snaptarget" class="snaptarget" style="position: relative; top: 200px; width: 100%; height: 200px; background-color: green"></div> -</body></pre> - -<p>このサンプルでは、スクロールしたときのポジションが "snaptarget" div の上部 200 ピクセルいないだった場合を検知するスクロールイベントリスナーが存在します。もしその条件だった場合、div の上部へスクロール位置を移動するアニメーションを動かします。アニメーションはブラウザのメインスレッド JavaScript で動作するため、他のタブやウィンドウで動作している JavaScript によって割り込まれるかもしれません。従って、期待通りにスムーズに動かなかったりカクカク動作するようになります。代わりに CSS sap-point プロパティを利用することで、アニメーションを非同期で動作させることをブラウザに許可し、ユーザーにスムーズな視覚エフェクトを提供します。</p> - -<pre class="brush: html"><body style="height: 5000px"> - <style> - body, /* blink currently has bug that requires declaration on `body` */ - html { - scroll-snap-type: y proximity; - } - .snaptarget { - scroll-snap-align: start; - position: relative; - top: 200px; - height: 200px; - background-color: green; - } - </style> - <div class="snaptarget"></div> -</body></pre> - -<p>このバージョンはブラウザのメインスレッドで重たい JavaScript が動作していたとしてもスムーズにブラウザで動作することが可能です。</p> - -<h3 id="他のエフェクト">他のエフェクト</h3> - -<p>多くの場合、スクロール連動エフェクトは CSS を利用したりコンポジットスレッドで動作させることで再実装可能です。しかし、いくつかのケースにおいて現在ブラウザが提供している API では許可されない物が有ります。しかし全ての場合において Firefox はスクロール連動エフェクトをページ上で検知すると開発コンソールに警告を表示します。(バージョン 46 以降) JavaScript でスクロールイベントを使わない JavaScript を使ったスクロールエフェクトの場合は警告は表示されません。他の CSS を利用した実装でカクカクした動作を防ぐサンプルを知りたい場合は、<a href="https://staktrace.com/spout/entry.php?id=834">Firefox における非同期スクロール</a> というブログを見てください。</p> - -<h2 id="機能改善">機能改善</h2> - -<p>更に我々はコンポジターでのさらなるエフェクトをサポートする予定です。これを実現するために、あなたが実装しようとしているスクロール連動エフェクトの種類に関する情報提供を必要としており、それは実現するための手助けになります。現在そのようなエフェクトを許可するためのいくつかの提案があり、これらにはメリット/デメリットがあります。この提案は現在以下の仕様で議論されています。</p> - -<ul> - <li><a href="https://w3c.github.io/web-animations/">Web Animations</a>: JavaScript で Web アニメーションを正確にコントロールする新しい API です。その<a href="https://wiki.mozilla.org/Platform/Layout/Extended_Timelines">追加提案</a>はスクロール位置と時間をマッピングし、アニメーションのタイムラインとして扱います。</li> - <li><a href="https://docs.google.com/document/d/18GGuTRGnafai17PDWjCHHAvFRsCfYUDYsi720sVPkws/edit?pli=1#heading=h.iy9r1phg1ux4">CompositorWorker</a>: 小さい単位で JavaScript をコンポジタースレッドで動かすことを許容し、フレームレートを落とすことがなくなります。</li> - <li><a href="https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY/edit?pli=1">Scroll Customization</a>: コンテンツ用の新しい API を利用することでスクロール差分の適用と利用を指定します。この記事を書いている時点で Mozilla はこの提案をサポートする予定はありませんが、この提案は未完成です。</li> -</ul> - -<h3 id="Call_to_action実施要請">Call to action(実施要請)</h3> - -<p>以下の事を考えや意見がある場合、</p> - -<ul> - <li>スクロール連動エフェクトのコンテキストについて上記いずれかの提案</li> - <li>スクロール連動エフェクトを実装しようとしている</li> - <li>関連する問題やアイデアがある</li> -</ul> - -<p>我々に情報提供してください。<a href="https://lists.w3.org/Archives/Public/public-houdini/">public-houdini</a> メーリングリスト上での議論に参加可能です。</p> diff --git a/files/ja/mozilla/persona/browser_compatibility/index.html b/files/ja/mozilla/persona/browser_compatibility/index.html deleted file mode 100644 index e59ad2f5a1..0000000000 --- a/files/ja/mozilla/persona/browser_compatibility/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: ブラウザの互換性 -slug: Mozilla/Persona/Browser_compatibility -tags: - - Persona - - 要更新 -translation_of: Archive/Mozilla/Persona/Browser_compatibility ---- -<h2 id="Supported_Browsers" name="Supported_Browsers">サポートされたブラウザ</h2> -<p>Persona は、以下のブラウザで開発、テスト、サポートされています。Persona のクロスプラットフォームの JavaScript ライブラリのおかげで、ユーザは Persona を使うためにアドオンをインストールする必要はありません。</p> -<table> - <tbody> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>デスクトップブラウザ</strong></th> - </tr> - <tr> - <th scope="row"><strong>Internet Explorer</strong></th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">8.0<sup>*</sup>, 9.0<sup>†</sup> 10.0<sup>**</sup></td> - </tr> - <tr> - <th scope="row"><strong>Firefox</strong></th> - <td colspan="2" style="background-color: #8ae234;">現在の安定版、Beta、Aurora、Nightly、ESR<br> - 以前の安定リリース版</td> - </tr> - <tr> - <th scope="row"><strong>Chrome</strong></th> - <td colspan="2" style="background-color: #8ae234;">最新の安定リリース版</td> - </tr> - <tr> - <th scope="row"><strong>Safari</strong></th> - <td colspan="2" style="background-color: #8ae234;">最新の安定リリース版</td> - </tr> - <tr> - <th scope="row"><strong>Opera</strong></th> - <td colspan="2" style="background-color: #8ae234;">最新の安定リリース版<sup>‡</sup></td> - </tr> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>iOS ブラウザ</strong></th> - </tr> - <tr> - <th scope="row"><strong>Mobile Safari</strong></th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">iOS 5.x — 6.x</td> - </tr> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>Android ブラウザ</strong></th> - </tr> - <tr> - <th scope="row"><strong>デフォルトブラウザ</strong></th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">2.x — 4.x</td> - </tr> - <tr> - <th scope="row"><strong>Firefox</strong></th> - <td colspan="2" style="background-color: #8ae234;">現在の安定版、Beta、Aurora、Nightly、ESR<br> - 以前の安定リリース版</td> - </tr> - <tr> - <th scope="row"><strong>Chrome</strong></th> - <td colspan="2" style="background-color: #8ae234;">最新の安定リリース版</td> - </tr> - </tbody> -</table> -<p><sup>*</sup>: Windows XP 向け。 <sup>†</sup>: Windows Vista および Windows 7 向け。 <sup>‡</sup>: 時間の許す限り。</p> -<h2 id="Internet_Explorer_.22Compatibility_Mode.22" name="Internet_Explorer_.22Compatibility_Mode.22">Internet Explorer "Compatibility Mode"</h2> -<p>From version 8.0 onwards Internet Explorer supports a feature called Compatibility Mode, in which the browser may be instructed to emulate a pre-8.0 version when rendering a page. This feature may be controlled in three different ways</p> -<ol> - <li>as a local setting in the browser</li> - <li>based on the presence and value of the <a href="https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode" title="https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode">DOCTYPE</a> declaration in the page</li> - <li>as an instruction sent from the site, using the <a href="http://msdn.microsoft.com/library/cc288325%28v=vs.85%29.aspx" title="http://msdn.microsoft.com/library/cc288325%28v=vs.85%29.aspx">"X-UA-Compatible"</a> header either as an HTTP header or as a <a href="https://developer.mozilla.org/docs/HTML/Element/meta" title="https://developer.mozilla.org/docs/HTML/Element/meta"><code><meta></code></a> tag in the page. This method overrides the other two.</li> -</ol> -<p>Because versions of Internet Explorer earlier than 8.0 are not supported by Persona, any version of Internet Explorer which is configured to emulate a pre-8.0 version will also not function with Persona. This is typically for one of the following reasons:</p> -<ul> - <li>your site is using "X-UA-Compatible" to explicitly instruct the browser to emulate a pre-8.0 version</li> - <li>your site's pages omit the DOCTYPE, do not have the DOCTYPE as the first line of the page, or set the browser to quirks mode, and your site is not setting "X-UA-Compatible" to IE version 8.0 or higher</li> - <li>the browser is locally configured to use a pre-8.0 Compatibility Mode, and your site is not overriding this by setting "X-UA-Compatible" to IE version 8.0 or higher</li> -</ul> -<p>For more information, see <a href="https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx?Redirected=true" title="https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx?Redirected=true">"Understanding Compatibility Modes in Internet Explorer 8"</a> and <a href="http://hsivonen.iki.fi/doctype/index.html#ie8" title="http://hsivonen.iki.fi/doctype/index.html#ie8">"IE8 and IE9 Complications"</a>.</p> -<h2 id="Unsupported_Browsers" name="Unsupported_Browsers">サポートされていないブラウザ</h2> -<ul> - <li>Internet Explorer バージョン 6.0 および 7.0 はサポートされていません。ユーザはブラウザのアップグレードを求められます。</li> - <li>Google Chrome Frame はサポートされておらず機能しません。後でサポートが追加される予定です (<a href="https://github.com/mozilla/browserid/issues/796" title="https://github.com/mozilla/browserid/issues/796">Issue #796</a>)。</li> - <li>iOS 上のサードパーティ製ブラウザはサポートされておらず機能しません。後でサポートが追加される予定です (<a href="https://github.com/mozilla/browserid/issues/1870" title="https://github.com/mozilla/browserid/issues/1870">Issue #1870</a>, <a href="https://github.com/mozilla/browserid/issues/2034" title="https://github.com/mozilla/browserid/issues/2034">Issue #2034</a>)。</li> -</ul> -<h2 id="Other_Browsers" name="Other_Browsers">他のブラウザ</h2> -<p>サポートされていないブラウザでも、{{domxref("window.postMessage()")}} と {{domxref("Storage", "localStorage")}} が実装されていれば動作します。これらの API は 2010 年 3 月以降のすべての主要なブラウザで利用可能です。</p> -<h2 id="Known_Issues" name="Known_Issues">既知の問題</h2> -<ul> - <li>すべての機能を動作させるには、ブラウザでサードパーティの Cookie を許可する必要があります (<a href="https://github.com/mozilla/browserid/issues/1352" title="https://github.com/mozilla/browserid/issues/1352">Issue #1352</a>)。</li> - <li>デフォルトのブラウザを選択していない Android 2.x ユーザはログインできません (<a href="https://github.com/mozilla/browserid/issues/1854" title="https://github.com/mozilla/browserid/issues/1854">Issue #1854</a>)。</li> - <li>Internet Explorer 9 で IE8 のエミュレートを強制した場合、サイトへのログインに失敗する可能性があります。</li> -</ul> diff --git a/files/ja/mozilla/persona/faq/index.html b/files/ja/mozilla/persona/faq/index.html deleted file mode 100644 index ee4de1f8e7..0000000000 --- a/files/ja/mozilla/persona/faq/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: FAQ -slug: Mozilla/Persona/FAQ -translation_of: Archive/Mozilla/Persona/FAQ ---- -<h2 id="BrowserID_との違いは何ですか?">BrowserID との違いは何ですか?</h2> -<p>Persona は Mozilla による新しい分散ログインシステムの完全な実装です。</p> -<p>BrowserID は Persona がどのように動作するかを規定するオープンなプロトコルです。</p> -<p>Persona は BrowserID の実装によって Web サイトにユーザーがログインできるようにするものです。それに類似する関係として、Firefox は HTTP の実装によって、ユーザーが Web を閲覧できるようにするものです。</p> -<h2 id="OpenID_との違いは何ですか?">OpenID<span style="font-size: 2.14285714285714rem;"> との違いは何ですか?</span></h2> -<p>Persona と OpenID の目的と構造は非常に似ています。どちらのシステムも、ユーザーが所持しなければならないパスワードを減らすことができます。また、どちらも非集中型のシステムとして設計されています。<span style="line-height: 1.5;">This means that any domain can present itself as an Identity Provider without relying on a central authority.</span></p> -<p>Despite these similarities, Persona is easier to use and easier to add to websites. Persona also does a better job of protecting user privacy. Specifically:</p> -<dl> - <dt> - Persona はユーザーに易しいシステムです</dt> - <dd> - Persona identifies users based on email addresses, which users already know, understand, and naturally associate with online identities. With OpenID, users are forced to learn a new username: an unintuitive URL.</dd> - <dd> - Logging in with Persona is also easier: it just takes 2 clicks after a one-time setup process.</dd> - <dt> - Persona <span style="line-height: 1.5;">は開発者に易しいシステムです</span></dt> - <dd> - Persona has a {{ domxref("navigator.id", "simple API") }} that only takes an afternoon to get started with.</dd> - <dd> - Persona identities <em>are</em> email addresses, so websites don't have to ask users for additional contact information during signup.</dd> - <dd> - Because users know and understand their email address, developers don't have to build complex pages with login buttons for all the popular OpenID providers.</dd> - <dt> - Persona はより適切にユーザーのプライバシーを保護します</dt> - <dd> - By design, OpenID allows Identity Providers to track their users around the web: whenever a user logs into a website, their browser gets redirected from that site to the user's Identity Provider, and then back to the site that the user requested. These redirects fully expose to the Identity Provider where the user is going.</dd> - <dd> - In contrast, the BrowserID protocol never leaks tracking information back to the Identity Provider. Rather, it behaves similarly to an ID card: users obtain signed credentials from their Identity Providers which can be presented to websites as a proof of identity. Websites can check the validity of these credentials without ever revealing a user's identity to their identity provider.</dd> -</dl> -<h2 id="なぜ_Persona_には_JavaScript_が必要なのですか?">なぜ <span style="font-size: 2.14285714285714rem;">Persona</span><span style="font-size: 2.14285714285714rem;"> </span><span style="font-size: 2.14285714285714rem;">には</span><span style="font-size: 2.14285714285714rem;"> JavaScript が必要なのですか?</span></h2> -<p>Persona requires JavaScript, but some users choose to selectively block JavaScript by using browser add-ons like NoScript. Many of these users are concerned about the privacy implications of enabling JavaScript, since it is often used to track visitors across websites.</p> -<p>However, in the case of Persona, JavaScript is actually used to enhance user privacy, as it allows the browser to perform cryptographic operations completely on the client side. By doing these operations on the client, Persona avoids the need to store secret keys anywhere other than in the user's own browser.</p> -<h2 id="Persona_は登録されたメールアドレスが現在使用されているかどうかを確認しますか?">Persona は<span style="font-size: 2.14285714285714rem;">登録された</span><span style="font-size: 2.14285714285714rem;">メールアドレスが</span><span style="font-size: 2.14285714285714rem;">現在使用されているかどうかを確認しますか?</span></h2> -<p>No, Persona only guarantees the user's association with an address. As with any email address in any login system, it's possible that the address no longer works or is not regularly checked by the user. For most users, the email address will be functional.</p> -<h2 id="どのようにしてメールアドレスから所属団体を確かめるのですか?">どのようにしてメールアドレスから所属団体を確かめるのですか?</h2> -<p>Persona asks the address's domain, which is free to verify its users in any way it chooses. If a domain is not a native Identity Provider, and thus can't verify its own users, the browser asks for verification from Persona's fallback Identity Provider at <a href="https://login.persona.org" title="https://login.persona.org">https://login.persona.org</a>. Before certifying a user's identity, the fallback Identity Provider does test the address by sending an email to it and asking the user to click a link contained within.</p> -<h2 id="どのような方法で、ユーザーが管理できなくなったメールアドレスのアカウントを復旧させることができますか?">どのような方法で、ユーザーが管理できなくなったメールアドレスのアカウントを復旧させることができますか?</h2> -<p>The best way to do this is to allow your users to add a secondary email address to their account. See <a href="/en-US/docs/Persona/The_implementor_s_guide/Adding_extra_email_addresses_with_Persona" title="/en-US/docs/Persona/The_implementor_s_guide/Adding_extra_email_addresses_with_Persona">"Adding extra email addresses with Persona"</a>.</p> -<h2 id="include.js_を独自にホストすることはできますか?_あるいは、httpslogin.persona.org_にあるものを使用しなければなりませんか?">include.js を独自にホストすることはできますか? あるいは、<a class="link-https" href="https://login.persona.org" rel="freelink">https://login.persona.org</a> にあるものを使用しなければなりませんか?</h2> -<p>The code in <code>include.js</code> is still subject to change. It's not yet recommended that you host it yourself.</p> -<h2 id="アサーションをローカルで確認することはできますか?_あるいは、リモートの確認サービスを使う必要がありますか?">アサーションをローカルで確認することはできますか? あるいは、リモートの確認サービスを使う必要がありますか?</h2> -<p>To ensure user privacy, it's important that identity assertions are verified locally rather than with the remote verification service. However, the format of assertions is still subject to change, so local verification is not yet recommended. Even with remote verification, Persona protects the user from tracking by their identity provider.</p> -<p>Once the protocol has stabilized, libraries will be available to simplify local verification. Follow the <a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">Identity Blog</a> to find out when local verification is recommended.</p> -<h2 id="ほかのサインイン手段を利用しているユーザーが移行するために何か良い方法はありますか?">ほかのサインイン手段を利用しているユーザーが移行するために何か良い方法はありますか?</h2> -<p>Despite Persona's benefits, it's never easy to move all of your users to a new login system. Conveniently, Persona's focus on email addresses makes it easy to use alongside existing login systems, so you don't have to switch all at once.</p> -<p>One particularly low-friction approach is to suggest Persona to users who forget their password. Instead of resetting passwords, users can simply log in with Persona.</p> -<h2 id="新規アカウントを作成する際にも「サインイン」として扱われることを、どのようにして知らせるべきですか?">新規アカウントを作成する際にも<span style="font-size: 2.14285714285714rem;">「サインイン」として扱われることを</span><span style="font-size: 2.14285714285714rem;">、どのようにして知らせるべきですか?</span></h2> -<h2 id="新しい_API_や非推奨の_API_など、BrowserID_との主な違いはどのようにして調べられますか?"><span style="font-size: 2.14285714285714rem;">新しい API や非推奨の API など、</span><span style="font-size: 2.14285714285714rem;">BrowserID との主な違いはどのようにして調べられますか?</span></h2> -<p>All major, backwards incompatible changes and deprecations are announced on the low-volume <a href="https://mail.mozilla.org/listinfo/persona-notices" title="https://mail.mozilla.org/listinfo/persona-notices">persona-notices</a> mailing list. Please subscribe to it.</p> -<p>To find out about new features and enhancements, follow the the <a href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">Identity team blog</a>.</p> -<p>For development discussion, subscribe to the <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">dev-identity</a><span class="link-https"> mailing list</span>.</p> diff --git a/files/ja/mozilla/persona/index.html b/files/ja/mozilla/persona/index.html deleted file mode 100644 index 64ce7689e6..0000000000 --- a/files/ja/mozilla/persona/index.html +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: Persona -slug: Mozilla/Persona -tags: - - Persona -translation_of: Archive/Mozilla/Persona ---- -<div class="callout-box"> - <p><strong>Stay in touch or get help!</strong></p> - <p>Follow <a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">our blog</a>, join <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">our mailing list</a>, or find us in <a class="link-irc" href="irc://irc.mozilla.org/identity" title="irc://irc.mozilla.org/identity">#identity</a> on <a class="link-https" href="https://wiki.mozilla.org/IRC" title="https://wiki.mozilla.org/IRC"> IRC</a>.</p> -</div> -<p><a class="link-https" href="https://www.mozilla.org/persona/" title="https://www.mozilla.org/persona/">Mozilla Persona</a> は、オープンな BrowserID 規格に基づいた、Web サービス向けの完全に分散化された、安全な認証システムです。Persona がどのようなサイトでも、また誰が使おうとも確実に動作するように、Mozilla では現在、<a href="/ja/docs/Persona/Bootstrapping_Persona" title="Persona/Bootstrapping_Persona">小規模なサイトを運営しています。</a></p> -<p>なぜ、あなたのサイトで Persona を使うべきなのでしょう?</p> -<ol> - <li><strong>Persona を使うことで、サイトごとにパスワードを管理する必要がなくなります。</strong>ユーザ、Web サイト運営者ともに、パスワードの作成、管理、セキュリティ強度といったことに頭を悩ませる必要がなくなります。</li> - <li><strong>Persona は簡単に使うことができます。</strong>Persona を使うユーザなら、例えば <a href="http://voo.st" title="http://voo.st">Voost</a> や <a href="http://crossword.thetimes.co.uk/" title="http://crossword.thetimes.co.uk/">The Times Crossword</a> といったサイトに新たに登録する際にも、ほんの2クリックの作業だけでログインすることができます。もう繁雑な登録作業は不要です。</li> - <li><strong>Persona は実装するのも簡単です。</strong>Web サイトに Persona を導入する作業は、わずか半日で完了します。</li> - <li>特筆すべき長所として、<strong>アカウントの閉め出し</strong>の心配がありません。Persona を使うことで、Web サイトの運営者が全登録ユーザの有効なメールアドレスを取得することができます。また、ユーザはどんなメールアドレスでも登録することができます。</li> - <li><strong>Persona は BrowserID に準拠しています。</strong>主要なブラウザベンダが BrowserID を実装してしまえば、<b>ログインにあたって Mozilla に依存し続ける必要はなくなります。</b></li> -</ol> -<p>Read on to get started!</p> -<div class="note"> - <strong>注意:</strong> Persona は現在活発に開発が進められています。新しい機能については、<a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">私たちのブログ</a> をご覧ください。また、<a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">メーリングリスト</a> にてフィードバックをお寄せください!</div> -<h2 id="Using_Persona_on_your_site" name="Using_Persona_on_your_site">あなたのサイトで Persona を使うために</h2> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h3 id="Getting_started" name="Getting_started">はじめに</h3> - <dl> - <dt> - <a href="/ja/docs/Persona/Why_Persona" title="Persona/Why_Persona">なぜ Persona?</a></dt> - <dd> - まずはあなたのサイトを Persona に対応させる利点について説明します。また、他の認証システムとの比較も紹介します。</dd> - <dt> - <a href="/ja/docs/Persona/Quick_Setup" title="Persona/Quick setup">クイックセットアップ</a></dt> - <dd> - Web サイトで Persona をサポートする手順について、簡単に説明します。</dd> - </dl> - </td> - <td> - <h3 id="Persona_API_reference" name="Persona_API_reference">Persona API リファレンス</h3> - <dl> - <dt> - <a href="/ja/docs/DOM/navigator.id" title="DOM/navigator.id">navigator.id API リファレンス</a></dt> - <dd> - <code>navigator.id</code> オブジェクトのリファレンスです。 Persona についての作業はここが起点となります。</dd> - <dt> - <a href="/ja/docs/Persona/Remote_Verification_API" title="Persona/Remote_Verification_API">Verification API リファレンス</a></dt> - <dd> - <code>https://verifier.login.persona.org/verify</code> でホストされたリモート検証 API のリファレンスです。</dd> - </dl> - </td> - </tr> - <tr> - <td> - <h3 id="Guides" name="Guides">ガイド</h3> - <dl> - <dt> - <a href="/ja/docs/Persona/Security_Considerations" title="Persona/Security considerations">セキュリティについて考慮すべき事柄</a></dt> - <dd> - Practices and techniques to make sure your Persona deployment is secure.</dd> - <dt> - <a href="/ja/docs/Persona/Browser_compatibility" title="Persona/Browser_compatibility">ブラウザの互換性</a></dt> - <dd> - Persona をサポートしているブラウザのリスト。</dd> - <dt> - <a href="/ja/docs/Persona/Internationalization" title="Persona/Internationalization">国際化</a></dt> - <dd> - Persona の異なる言語の扱いについて。</dd> - </dl> - </td> - <td> - <h3 id="Resources" name="Resources">リソース</h3> - <dl> - <dt> - <a class="link-https" href="https://github.com/mozilla/browserid/wiki/Persona-Libraries" title="https://github.com/mozilla/browserid/wiki/BrowserID-Libraries">ライブラリとプラグイン</a></dt> - <dd> - Find a drop-in library for your favorite programming language, web framework, blog, or content management system.</dd> - <dt> - <a class="link-https" href="https://github.com/mozilla/browserid-cookbook" title="https://github.com/mozilla/browserid-cookbook">Persona cookbook</a></dt> - <dd> - Example source code for Persona sites. Includes snippets in PHP, Node.JS, and more.</dd> - <dt> - <a href="/ja/docs/Persona/branding" title="persona/branding">ブランドリソース</a></dt> - <dd> - Sign in buttons and other graphics to help present Persona to your users.</dd> - </dl> - </td> - </tr> - </tbody> -</table> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 id="Information_for_Identity_Providers" name="Information_for_Identity_Providers">ID プロバイダについての情報</h2> - <p>If you're an email provider or another identity-providing service, check out the links below to learn about becoming a Persona Identity Provider.</p> - <dl> - <dt> - <a href="/ja/docs/Persona/Identity_Provider_Overview" title="IdP Overview">IdP の概要</a></dt> - <dd> - A high level view of Persona Identity Providers.</dd> - <dt> - <a href="/ja/docs/Persona/Implementing_a_Persona_IdP" title="Guide to Implementing a Persona IdP">IdP の実装方法</a></dt> - <dd> - A detailed guide to the technical details of becoming an IdP.</dd> - <dt> - <a href="/ja/docs/Persona/IdP_Development_tips" title="Developer tips">開発のヒント</a></dt> - <dd> - A set of tips and tricks useful while developing a new Identity Provider.</dd> - <dt> - <a href="/ja/docs/Persona/.well-known-browserid" title="Persona/.well-known-browserid">.well-known/browserid</a></dt> - <dd> - An overview of the structure and purpose of the <code>.well-known/browserid</code> file, which IdPs use to advertise their support for the protocol.</dd> - </dl> - </td> - <td> - <h2 id="The_Persona_Project" name="The_Persona_Project">Persona プロジェクト</h2> - <dl> - <dt> - <a href="/ja/docs/Persona/Glossary" title="/Persona/Glossary">用語集</a></dt> - <dd> - BrowserID and Persona terminology defined.</dd> - <dt> - <a href="/ja/docs/Persona/FAQ" title="/Persona/FAQ">よくある質問</a></dt> - <dd> - よくある質問への回答</dd> - <dt> - <a href="/ja/docs/Persona/Protocol_Overview" title="/Persona/Protocol overview">プロトコルの概要</a></dt> - <dd> - A mid-level technical overview of the underlying BrowserID protocol.</dd> - <dt> - <a href="/ja/docs/Persona/Crypto" title="Persona/Crypto">Crypto</a></dt> - <dd> - A look at the cryptographic concepts behind Persona and BrowserID.</dd> - <dt> - <a class="link-https" href="https://github.com/mozilla/id-specs/blob/master/browserid/index.md" title="https://github.com/mozilla/id-specs/blob/master/browserid/index.md">仕様書</a></dt> - <dd> - ここには深い技術の詳細が書かれています。</dd> - <dt> - <a href="/ja/docs/Persona/Bootstrapping_Persona" title="/Persona/Bootstrapping_Persona">Persona の Web サイト</a></dt> - <dd> - To get Persona going, we're hosting three services at <a class="link-https" href="https://login.persona.org" rel="freelink">https://login.persona.org</a>: a fallback Identity Provider, a portable implementation of the {{domxref("navigator.id")}} APIs, and an identity assertion verification service.</dd> - <dt> - <a href="https://github.com/mozilla/browserid">Persona のソースコード</a></dt> - <dd> - The code behind the Persona website lives in a repository on GitHub. Patches welcome!</dd> - </dl> - </td> - </tr> - </tbody> -</table> -<p> </p> -<p><img id="firefoxsddsinfoimg" style="display: none; position: absolute; top: 0px; left: 0px; width: 32px; height: 32px;"><img id="firefoxsddsarrowimg" style="display: none; position: absolute; top: 1885px; left: 534px; width: 32px; height: 32px;"></p> diff --git a/files/ja/mozilla/persona/internationalization/index.html b/files/ja/mozilla/persona/internationalization/index.html deleted file mode 100644 index 81f3e2c95d..0000000000 --- a/files/ja/mozilla/persona/internationalization/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: I18N -slug: Mozilla/Persona/Internationalization -tags: - - BrowserID - - Persona - - l10n -translation_of: Archive/Mozilla/Persona/Internationalization ---- -<h2 id="Persona_のローカライズ">Persona のローカライズ</h2> -<p>将来、Persona によるサインインのユーザインターフェースがブラウザに統合され、Persona のローカライズはブラウザアプリケーションのローカライズと一緒に行われるようになるでしょう。Persona が統合されていないブラウザにおける Persona のユーザインターフェースは <a href="https://login.persona.org" title="https://login.persona.org">login.persona.org</a> からのダイアログで構成されます。これらのダイアログは、コミュニティのボランティアチームにより翻訳されており、現在 45 か国の言語で <a href="https://github.com/mozilla/browserid/blob/dev/config/l10n-prod.json" title="https://github.com/mozilla/browserid/blob/dev/config/l10n-prod.json">提供されています</a>。</p> -<h2 id="Persona_の言語選択について">Persona の言語選択について</h2> -<p>Persona サービスは、ブラウザ側の要求により送信された <code>Accept-Language</code> ヘッダを利用して言語を選択します。<code>Accept-Language</code> ヘッダを言語に割り当てるアルゴリズムは、<code>mozilla.org</code> で使用されているものと同じです:</p> -<ol> - <li><code>Accept-Language</code> ヘッダの各言語タグに対して: - <ul> - <li>言語タグにより認識された言語と一致するローカライズ済みの言語があるか確認する</li> - <li>言語タグの最初の部分により認識された言語と一致するローカライズ済みの言語があるか確認する</li> - </ul> - </li> - <li>ルール (1) で一致しなかった場合は en-US にフォールバックします。しかしながら、en や en-US はブラウザから送信される accept-lang ヘッダの最後に書かれていることがほとんどです。</li> -</ol> -<p>例えば、以下の表は、<code>en-US, es, es-MX</code> がサポートされている場合に、送信された <code>Accept-Language</code> ヘッダから選択される言語のリストです:</p> -<table> - <thead> - <tr> - <th scope="col"><strong>Accept-Language ヘッダ</strong></th> - <th scope="col"><strong>選択される言語</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td><code>es-AR,es;q=0.8,en-us;q=0.5</code></td> - <td><code>es</code></td> - </tr> - <tr> - <td><code>es-MX,es;q=0.8,en-us;q=0.5</code></td> - <td><code>es-MX</code></td> - </tr> - <tr> - <td><code>e</code><code>s-es,en-us;q=0.5</code></td> - <td><code>en-US</code></td> - </tr> - <tr> - <td><code>e</code><code>s-es</code></td> - <td><code>en-US</code></td> - </tr> - </tbody> -</table> -<p>現在は、Web サイト側からダイアログを別の言語に変更する方法はありません。これは、Persona の UI が論理的にブラウザの一部である (将来、ブラウザにネイティブ実装される) ことが理由です。そのため、ダイアログの言語はブラウザの UI と同じ言語であるべきです。</p> -<h2 id="ローカライズに協力するには">ローカライズに協力するには</h2> -<p>Persona は、Mozilla Verbatim を利用してボランティアが新しい言語を追加できるようにしています。ローカライズに協力したい方は、<a href="/docs/Localizing_with_Verbatim" title="/docs/Localizing_with_Verbatim">はじめての Verbatim</a> をお読みください。実際の作業は、Verbatim サイトの <a href="https://localize.mozilla.org/projects/browserid/" title="https://localize.mozilla.org/projects/browserid/">"BrowserID" プロジェクト</a> で行います。</p> diff --git a/files/ja/mozilla/persona/quick_setup/index.html b/files/ja/mozilla/persona/quick_setup/index.html deleted file mode 100644 index 00fecb5c44..0000000000 --- a/files/ja/mozilla/persona/quick_setup/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: クイックセットアップ -slug: Mozilla/Persona/Quick_Setup -tags: - - Persona -translation_of: Archive/Mozilla/Persona/Quick_Setup ---- -<p>たった 5 つの手順であなたのサイトに Persona のログインシステムを追加できます:</p> - -<ol> - <li>Persona の JavaScript ライブラリをページに含める。</li> - <li>ログインボタンとログアウトボタンを追加する。</li> - <li>ログインとログアウトの操作を監視する。</li> - <li>ユーザの信用情報を検証する。</li> - <li>ベストプラクティスを見直す。</li> -</ol> - -<p>Persona は、半日もあればあなたのサイトに追加できます。ただし、重要なものから順番に行ってください: Persona をあなたのサイトで利用しようとするときは、その前に <a href="https://mail.mozilla.org/listinfo/persona-notices">Persona notices</a> メーリングリストを購読してください。メールのやりとりはとても少ないですが、あなたのサイトに悪影響を及ぼす可能性のある変更をアナウンスするために使われます。</p> - -<h2 id="Step_1.3A_Include_the_Persona_library" name="Step_1.3A_Include_the_Persona_library">ステップ 1: Persona ライブラリを含める</h2> - -<p>Persona は、ブラウザ中立で設計されており、<a href="/ja/docs/persona/Browser_compatibility">すべての主要なデスクトップ版とモバイル版</a><a href="/ja/docs/persona/Browser_compatibility">のブラウザ</a> で動作します。</p> - -<p>私たちは将来、ブラウザ群がPersonaに母国語の支援を提供するだろうと考えていますが、その間、私たちはユーザーインターフェースとクライアント側のプロトコルを全て備えたJavascriptのライブラリを提供します。</p> - -<p>このライブラリが一度ページに読み込まれれば、必要な Persona 関数 ({{domxref("navigator.id.watch()", "watch()")}} および {{domxref("navigator.id.request()", "request()")}}, {{domxref("navigator.id.logout()", "logout()")}}) がグローバルな <code>navigator.id</code> オブジェクトで利用可能になります。</p> - -<p>Persona JavaScript ライブラリをページに含めるには、以下の <code>script</code> タグをページのヘッダ(page bodyの末尾)に置いてください:</p> - -<pre class="brush: html;"><script src="https://login.persona.org/include.js"></script> -</pre> - -<p>このコードは、{{domxref("navigator.id")}} 関数を使用するすべてのページに <strong>含めなければなりません</strong>。なぜならPersona はまだ開発段階であり、<code>include.js</code> ファイルをあなた自身でホストすべきではないからです。</p> - -<h3 id="Suppressing_Compatibility_Mode" name="Suppressing_Compatibility_Mode">互換性モードの制限</h3> - -<p>Personaを破綻させるため、Internet Explorerのユーザーが互換性モードを使用できないことも確認すべきです。以下をしてください。</p> - -<ul> - <li><code>すべてscript elementsの前に<meta http-equiv="X-UA-Compatible" content="IE=Edge"></code> をあなたのページに含める。</li> - <li>もしくはあなたのページに以下のHTTP ヘッダを設定する。 <code>X-UA-Compatible: IE=Edge</code>.</li> -</ul> - -<p>For more information, see the notes in <a href="/ja/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22" title="persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22">IE Compatibility Mode</a> and <a href="http://hsivonen.iki.fi/doctype/index.html#ie8" title="http://hsivonen.iki.fi/doctype/index.html#ie8">"IE8 and IE9 Complications"</a>.</p> - -<h2 id="Step_2.3A_Add_login_and_logout_buttons" name="Step_2.3A_Add_login_and_logout_buttons">ステップ 2: ログインとログアウトのボタンを追加する</h2> - -<p>Persona は DOM API として設計されているため、ユーザがサイト上のログインまたはログアウトボタンをクリックした時に関数を呼び出さなければなりません。Persona ダイアログを開いてユーザがログインできるようにするには、{{domxref("navigator.id.request()")}} を呼び出します。ログアウトする時は {{domxref("navigator.id.logout()")}} を呼び出します。</p> - -<p>Note, the call to {{ domxref("navigator.id.logout()", "logout()") }} <em>must</em> be made in the click handler of the logout button.</p> - -<p>コード例:</p> - -<pre class="brush: js;">var signinLink = document.getElementById('signin'); -if (signinLink) { - signinLink.onclick = function() { navigator.id.request(); }; -}; - -var signoutLink = document.getElementById('signout'); -if (signoutLink) { - signoutLink.onclick = function() { navigator.id.logout(); }; -}; -</pre> - -<p>これらのボタンの外観については、<a href="/ja/docs/persona/branding">ブランドリソース</a> ページのボタン画像や CSS ベースのボタンをご利用ください。</p> - -<h2 id="Step_3.3A_Watch_for_login_and_logout_actions" name="Step_3.3A_Watch_for_login_and_logout_actions">ステップ 3: ログインとログアウトの操作を監視する</h2> - -<p>Persona を機能させるために、ユーザがログインまたはログアウトした時に何を行うかを知らせる必要があります。これは、{{domxref("navigator.id.watch()")}} 関数に 3 個の引数を与えて呼び出すことにより行えます:</p> - -<ol> - <li>コンピューターから現在あなたのサイトにログインしているユーザーのemailアドレス。ユーザがいない場合は <code>null</code> です。例えば、誰がサインインしているのか確かめるためにブラウザのCookieを調べることでしょう。</li> - <li><code>onlogin</code> 操作のトリガーが引かれた時に呼び出す関数。この関数には、検証された「ID アサーション」の引数を 1 個渡します。</li> - <li><code>onlogout</code> 操作のトリガーが引かれた時に呼び出す関数。この関数には引数を渡しません。</li> -</ol> - -<div class="note style-wrap"> -<p><strong>注意:</strong> {{domxref("navigator.id.watch()")}} を呼び出した時は、常に <code>onlogin</code> と <code>onlogout</code> の両方を含めなければなりません。</p> -</div> - -<p>例えば、あなたが"Bob"で現在あなたのサイトにログインしていると考える場合、次のように書きます:</p> - -<pre class="brush: js;">var currentUser = 'bob@example.com'; - -navigator.id.watch({ - loggedInUser: currentUser, - onlogin: function(assertion) { - // ユーザがログインしました! ここで必要なことは: - // 1. 検証してセッションを作成するため、アサーションをバックエンドに送信する。 - // 2. UI を更新する。 - $.ajax({ /* <-- この例では jQuery を使いますが、他のものも使えます */ - type: 'POST', - url: '/auth/login', // これは、あなたの Web サイト上の URL です。 - data: {assertion: assertion}, - success: function(res, status, xhr) { window.location.reload(); }, - error: function(res, status, xhr) { alert("login failure" + res); } - }); - }, - onlogout: function() { - // ユーザがログアウトしました! ここで必要なことは: - // リダイレクトするかバックエンドの呼び出しを行って、ユーザのセッションを破棄する。 - $.ajax({ - type: 'POST', - url: '/auth/logout', // これは、あなたの Web サイト上の URL です。 - success: function(res, status, xhr) { window.location.reload(); }, - error: function(res, status, xhr) { alert("logout failure" + res); } - }); - } -}); -</pre> - -<p>このコード例では、非同期の <code>POST</code> リクエストをサイトのバックエンドで行う <code>onlogin</code> と <code>onlogout</code> の両方が実装されています。バックエンドでは、セッション Cookie 内の情報を設定または削除することによりユーザのログインまたはログインが記録されます。そして、すべてが正しく一致したら、ページが再読み込みしてアカウントを新しいログイン状態にします。</p> - -<p>もちろん、AJAX を用いて再読み込みやリダイレクトなしでこれを実装することもできますが、このチュートリアルでは扱いません。</p> - -<p>もしID assertionが証明できなかったとき、{{ domxref("navigator.id.logout()") }}を呼びだすべきことに注意してください。これはPersonaに現在誰もログインしていないことを教える働きがあり、それをしないと、Personaは同じassertionでonloginをまた直ちに呼び出し、それが<a href="https://developer.mozilla.org/en-US/docs/Persona/The_implementor_s_guide/Call_logout%28%29_after_a_failed_login" title="/en-US/docs/Persona/The_implementor_s_guide/Call_logout()_after_a_failed_login">endless loop of failed logins</a>につながるかもしれません。</p> - -<p>次の例を示します。今度はjQueryをつかいません。</p> - -<pre class="brush: js; language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">simpleXhrSentinel<span class="punctuation token">(</span></span>xhr<span class="punctuation token">)</span> <span class="punctuation token">{</span> - <span class="keyword token">return</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span>xhr<span class="punctuation token">.</span>readyState <span class="operator token">==</span> <span class="number token">4</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span>xhr<span class="punctuation token">.</span>status <span class="operator token">==</span> <span class="number token">200</span><span class="punctuation token">)</span><span class="punctuation token">{</span> - <span class="comment token"> // reload page to reflect new login state -</span> window<span class="punctuation token">.</span>location<span class="punctuation token">.</span><span class="function token">reload<span class="punctuation token">(</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - <span class="keyword token">else</span> <span class="punctuation token">{</span> - navigator<span class="punctuation token">.</span>id<span class="punctuation token">.</span><span class="function token">logout<span class="punctuation token">(</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">alert<span class="punctuation token">(</span></span><span class="string token">"XMLHttpRequest error: "</span> <span class="operator token">+</span> xhr<span class="punctuation token">.</span>status<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - <span class="punctuation token">}</span> - <span class="punctuation token">}</span> - <span class="punctuation token">}</span> - -<span class="keyword token">function</span> <span class="function token">verifyAssertion<span class="punctuation token">(</span></span>assertion<span class="punctuation token">)</span> <span class="punctuation token">{</span> - <span class="comment token"> // Your backend must return HTTP status code 200 to indicate successful -</span> <span class="comment token"> // verification of user's email address and it must arrange for the binding -</span> <span class="comment token"> // of currentUser to said address when the page is reloaded -</span> <span class="keyword token">var</span> xhr <span class="operator token">=</span> <span class="keyword token">new</span> <span class="class-name token">XMLHttpRequest</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - xhr<span class="punctuation token">.</span><span class="function token">open<span class="punctuation token">(</span></span><span class="string token">"POST"</span><span class="punctuation token">,</span> <span class="string token">"/xhr/sign-in"</span><span class="punctuation token">,</span> <span class="keyword token">true</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="comment token"> // see http://www.openjs.com/articles/ajax_xmlhttp_using_post.php -</span> <span class="keyword token">var</span> param <span class="operator token">=</span> <span class="string token">"assertion="</span><span class="operator token">+</span>assertion<span class="punctuation token">;</span> - xhr<span class="punctuation token">.</span><span class="function token">setRequestHeader<span class="punctuation token">(</span></span><span class="string token">"Content-type"</span><span class="punctuation token">,</span> <span class="string token">"application/x-www-form-urlencoded"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - xhr<span class="punctuation token">.</span><span class="function token">setRequestHeader<span class="punctuation token">(</span></span><span class="string token">"Content-length"</span><span class="punctuation token">,</span> param<span class="punctuation token">.</span>length<span class="punctuation token">)</span><span class="punctuation token">;</span> - xhr<span class="punctuation token">.</span><span class="function token">setRequestHeader<span class="punctuation token">(</span></span><span class="string token">"Connection"</span><span class="punctuation token">,</span> <span class="string token">"close"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - xhr<span class="punctuation token">.</span><span class="function token">send<span class="punctuation token">(</span></span>param<span class="punctuation token">)</span><span class="punctuation token">;</span><span class="comment token"> // for verification by your backend -</span> - xhr<span class="punctuation token">.</span>onreadystatechange <span class="operator token">=</span> <span class="function token">simpleXhrSentinel<span class="punctuation token">(</span></span>xhr<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="punctuation token">}</span> - -<span class="keyword token">function</span> <span class="function token">signoutUser<span class="punctuation token">(</span></span><span class="punctuation token">)</span> <span class="punctuation token">{</span> - <span class="comment token"> // Your backend must return HTTP status code 200 to indicate successful -</span> <span class="comment token"> // sign out (usually the resetting of one or more session variables) and -</span> <span class="comment token"> // it must arrange for the binding of currentUser to 'null' when the page -</span> <span class="comment token"> // is reloaded -</span> <span class="keyword token">var</span> xhr <span class="operator token">=</span> <span class="keyword token">new</span> <span class="class-name token">XMLHttpRequest</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - xhr<span class="punctuation token">.</span><span class="function token">open<span class="punctuation token">(</span></span><span class="string token">"GET"</span><span class="punctuation token">,</span> <span class="string token">"/xhr/sign-out"</span><span class="punctuation token">,</span> <span class="keyword token">true</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - xhr<span class="punctuation token">.</span><span class="function token">send<span class="punctuation token">(</span></span><span class="keyword token">null</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - xhr<span class="punctuation token">.</span>onreadystatechange <span class="operator token">=</span> <span class="function token">simpleXhrSentinel<span class="punctuation token">(</span></span>xhr<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="punctuation token">}</span> -<span class="comment token"> -// Go! -</span>navigator<span class="punctuation token">.</span>id<span class="punctuation token">.</span><span class="function token">watch<span class="punctuation token">(</span></span> <span class="punctuation token">{</span> - loggedInUser<span class="punctuation token">:</span> currentUser<span class="punctuation token">,</span> - onlogin<span class="punctuation token">:</span> verifyAssertion<span class="punctuation token">,</span> - onlogout<span class="punctuation token">:</span> signoutUser <span class="punctuation token">}</span> <span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> - -<p> </p> - -<p>すべてのページ上のログインボタンまたはログアウトボタンで<code>navigator.id.watch()を</code> <strong>呼び出さなければなりません</strong>。サイトのユーザのための、自動ログインやグローバルログアウトのような Persona の機能をサポートするには、この関数をあなたのサイトのすべてのページ上で <strong>呼び出してください</strong>。</p> - -<h2 id="Step_4.3A_Verify_the_user.E2.80.99s_credentials" name="Step_4.3A_Verify_the_user.E2.80.99s_credentials">ステップ 4: ユーザの信用情報を検証する</h2> - -<p>Persona は、パスワードの代わりに「ID アサーション」を使います。これは、ユーザのメールアドレスに結び付けられた、一つのサイトで一回だけ使えるパスワードのようなものです。ユーザがログインしようとする時、このユーザからのアサーションと共に <code>onlogin</code> コールバックが呼びされます。彼らをログインさせる前に、アサーションが正しいか検証しなければなりません。</p> - -<p>アサーションを、ユーザのブラウザ上で実行している JavaScript ではなく、あなたのサーバ上で検証することは <em>とても重要</em> です。ユーザのブラウザ上では簡単に偽造できてしまうからです。上記の例では、jQuery の <code>$.ajax()</code> ヘルパーを使ってアサーションをサイトのバックエンドに手放し、<code>/auth/login</code> に <code>POST</code> しました。</p> - -<p>あなたのサーバにアサーションが渡ったら、それをどのように検証したらよいでしょうか? 最も簡単な方法は、Mozilla が提供するヘルパーサービスを使うことです。単純にアサーションを 2 個の引数と共に <code>https://verifier.login.persona.org/verify</code> に <code>POST</code> するだけです:</p> - -<ol> - <li><code>assertion</code>: ユーザにより提供された ID アサーション。</li> - <li><code>audience</code>: あなたの Web サイトのホスト名とポート番号。この値はバックエンドに直接記述してください。ユーザから与えられたいかなるデータも、この引数に渡してはいけません。</li> -</ol> - -<p>例えば、<code>example.com</code> というサイトの場合、コマンドラインで次のようにアサーションをテストできます:</p> - -<pre class="brush: bash;">$ curl -d "assertion=<ASSERTION>&audience=https://example.com:443" "https://verifier.login.persona.org/verify" -</pre> - -<p>値が正しければ、次のような JSON レスポンスが返ります:</p> - -<pre class="brush: js;">{ - "status": "okay", - "email": "bob@eyedee.me", - "audience": "https://example.com:443", - "expires": 1308859352261, - "issuer": "eyedee.me" -} -</pre> - -<p>検証サービスについては、<a href="/ja/docs/Persona/Remote_Verification_API">Verification Service API</a> をお読みください。<code>/auth/login</code> の実装例と <a href="http://python.org/">Python</a> を使った <a href="http://flask.pocoo.org/">Flask</a> Web フレームワーク、<a href="http://python-requests.org">Requests</a> HTTP ライブラリは次のようになります:</p> - -<pre class="brush: python;">@app.route('auth/login/', methods=['POST']) -def login(): - # The request has to have an assertion for us to verify - if 'assertion' not in request.form: - abort(400) - - # Send the assertion to Mozilla's verifier service. - data = {'assertion': request.form['assertion'], 'audience': 'https://example.com:443'} - resp = requests.post('https://verifier.login.persona.org/verify', data=data) - - # Did the verifier respond? - if resp.ok: - # Parse the response - verification_data = json.loads(resp.content) - - # Check if the assertion was valid - if verification_data['status'] == 'okay': - # Log the user in by setting a secure session cookie - session.update({'email': verification_data['email']}) - return resp.content - - # Oops, something failed. Abort. - abort(500) -</pre> - -<p>他の言語でPersonaを使う例は<a href="https://github.com/mozilla/browserid-cookbook" title="https://github.com/mozilla/browserid-cookbook">cookbook</a>.を参照してください。</p> - -<p>セッション管理は、既存のログインシステムとよく似ているでしょう。最初の大きな変更は、パスワードを確認する代わりにアサーションを確認してユーザの ID を検証することです。他の大きな変更は、ユーザのメールアドレスが利用可能であることを、{{domxref("navigator.id.watch()")}} に <code>loggedInUser</code> 引数を渡して確認することです。</p> - -<p>ログアウトは簡単です: 必要なことは、ユーザのセッション Cookie を削除するだけです。</p> - -<h2 id="Step_5.3A_Review_best_practices" name="Step_5.3A_Review_best_practices">ステップ 5: ベストプラクティスを見直す</h2> - -<p>すべての動作が確認でき、あなたのサイトへのログインとログアウトが成功したら、Persona を安全に安心して使うための <a href="/ja/docs/Persona/Security_Considerations">ベストプラクティス</a> を見直してください。</p> - -<p>製品レベルのサイトを制作している場合は、Persona を使ったユーザのログインとログアウトをシミュレートするインテグレーションテストを書きたいでしょう。これを Selenium で容易に行うために、<a href="https://github.com/mozilla/bidpom">bidpom</a> ライブラリの使用を考慮してください。<a href="https://mockmyid.com/">mockmyid.com</a> と <a href="http://personatestuser.org">personatestuser.org</a> のサイトも役立つでしょう。</p> - -<p>最後に、セキュリティの問題や Persona API の後方互換性に関わる変更を知るために、<a href="https://mail.mozilla.org/listinfo/persona-notices">Persona notices</a> メーリングリストにサインアップすることを忘れないでください。このメーリングリストのやりとりはとても少ないですが、あなたのサイトに悪影響を及ぼす可能性のある変更をアナウンスするために使われます。</p> - -<p> </p> - -<p> </p> diff --git a/files/ja/mozilla/persona/remote_verification_api/index.html b/files/ja/mozilla/persona/remote_verification_api/index.html deleted file mode 100644 index f6c5fe4912..0000000000 --- a/files/ja/mozilla/persona/remote_verification_api/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Remote Verification API -slug: Mozilla/Persona/Remote_Verification_API -tags: - - BrowserID - - Persona -translation_of: Archive/Mozilla/Persona/Remote_Verification_API ---- -<h3 id="Summary" name="Summary">要約</h3> -<p>ユーザが Web サイトにログインしようとする時、ブラウザが <em>アサーション</em> と呼ばれるデータ構造を生成します。このデータの内容は、暗号化された署名付きのメールアドレスです。ブラウザは、このアサーションを Web サイトに送信し、ユーザにログインを許可する前にアサーションが正当か検証されます。</p> -<p>アサーションはローカルで検証することもできます。または、<span class="link-https"><code>https://verifier.login.persona.org/verify</code></span> でホストされた API でも検証できます。このページでは、この API の使い方を説明します。</p> -<h3 id="Methods" name="Methods">メソッド</h3> -<p><code>https://verifier.login.persona.org/verify</code> に HTTP POST リクエストを送信します。</p> -<h3 id="引数">引数</h3> -<p><code>assertion</code>: ユーザが提供したアサーション。{{ domxref("navigator.id.watch()") }} の <code>onlogin</code> 関数に渡す最初の引数として使います。<br> - <code>audience</code>: あなたのサイトのプロトコル、ドメイン名、ポート番号。例えば、"<code>https://example.com:443</code>" と指定します。</p> -<h3 id="戻り値">戻り値</h3> -<p>この API を呼び出すと、<code>status</code> 要素を含む JSON データ構造を返します。この要素は、"okay" と "failure" のどちらかになります。<code>status</code> の値に依存して、JSON データに以下の追加の要素が含まれることがあります。</p> -<h4 id="okay">"okay"</h4> -<p>アサーションは正当です。</p> -<p>この場合、JSON データ構造に次の追加要素が含まれます:</p> -<table style="width: 80%;"> - <tbody> - <tr> - <td><code>"email"</code></td> - <td>アサーションに含まれるメールアドレス。これは、ログインしようとしているユーザのものです。</td> - </tr> - <tr> - <td><code>"audience"</code></td> - <td>アサーションに含まれる audience 値。あなたの Web サイトの URL であることが期待されます。</td> - </tr> - <tr> - <td>"<code>expires"</code></td> - <td>アサーションの有効期限日。<a href="docs/JavaScript/Reference/Global_Objects/Date/valueOf" title="docs/JavaScript/Reference/Global_Objects/Date/valueOf">Date オブジェクトの初期値</a> を表します。これは、1970 年 1 月 1 日の午前 0 時 (UTC) から経過したミリ秒単位の値です。</td> - </tr> - <tr> - <td><code>"issuer"</code></td> - <td>アサーションを発行した ID プロバイダのホスト名。</td> - </tr> - </tbody> -</table> -<h4 id="failure">"failure"</h4> -<p>アサーションは不正です。この場合、JSON データ構造に 1 個の追加要素が含まれます:</p> -<table> - <tbody> - <tr> - <td><code>"reason"</code></td> - <td>検証が失敗した理由を説明する文字列。</td> - </tr> - </tbody> -</table> -<h3 id="コード例">コード例</h3> -<h4 id="node.js">node.js</h4> -<p>このコード例は、express.js を使用する node.js サーバを使用します。</p> -<pre class="brush: js" style="margin-left: 120px;">var express = require("express"), - app = express.createServer(), - https = require("https"), - querystring = require("querystring"); -/* ... */ - -// audience は、ブラウザのアドレスバーに表示されている URL と一致しなければなりません。 -// プロトコルとホスト名、ポート番号を含みます。 -var audience = "http://localhost:8888"; - -app.post("/authenticate", function(req, res) { - var vreq = https.request({ - host: "verifier.login.persona.org", - path: "/verify", - method: "POST" - }, function(vres) { - var body = ""; - vres.on('data', function(chunk) { body+=chunk; } ) - .on('end', function() { - try { - var verifierResp = JSON.parse(body); - var valid = verifierResp && verifierResp.status === "okay"; - var email = valid ? verifierResp.email : null; - req.session.email = email; - if (valid) { - console.log("assertion verified successfully for email:", email); - res.json(email); - } else { - console.log("failed to verify assertion:", verifierResp.reason); - res.send(verifierResp.reason, 401); - } - } catch(e) { - console.log("non-JSON response from verifier"); - // 検証側から偽の応答がありました! - res.send("bogus response from verifier!", 401); - - } - }); - }); - vreq.setHeader('Content-Type', 'application/x-www-form-urlencoded'); - - var data = querystring.stringify({ - assertion: req.body.assertion, - audience: audience - }); - vreq.setHeader('Content-Length', data.length); - vreq.write(data); - vreq.end(); - console.log("verifying assertion!"); -}); - -</pre> -<p>via <a class="link-https" href="https://github.com/lloyd/myfavoritebeer.org/blob/06255b960e1f9078bc935c1c7af0662f33c88818/server/main.js#L112" title="https://github.com/lloyd/myfavoritebeer.org/blob/06255b960e1f9078bc935c1c7af0662f33c88818/server/main.js#L112">Lloyd Hilaiel</a></p> -<h4 id="PHP">PHP</h4> -<pre class="brush: php">$url = 'https://verifier.login.persona.org/verify'; -$assert = $_POST['assert']; -$params = 'assertion='.$assert.'&audience=' . - urlencode('http://example.com:80'); -$ch = curl_init(); -$options = array( - CURLOPT_URL => $url, - CURLOPT_RETURNTRANSFER => TRUE, - CURLOPT_POST => 2, - CURLOPT_POSTFIELDS => $params -); -curl_setopt_array($ch, $options); -$result = curl_exec($ch); -curl_close($ch); -echo $result; -</pre> -<p>Via <a class="link-https" href="https://github.com/codepo8/BrowserID-login-with-PHP/blob/184fdb74c8a554461c262875859968154d09288e/verify.php">Christian Heilmann</a></p> diff --git a/files/ja/mozilla/persona/security_considerations/index.html b/files/ja/mozilla/persona/security_considerations/index.html deleted file mode 100644 index 640783acb6..0000000000 --- a/files/ja/mozilla/persona/security_considerations/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: セキュリティについて考慮すべき事柄 -slug: Mozilla/Persona/Security_Considerations -tags: - - Persona - - Security -translation_of: Archive/Mozilla/Persona/Security_Considerations ---- -<p>あなたの Web サイトに Persona のサポートを追加する場合、Persona ができるだけセキュリティの重荷を負います。しかしながら、セキュリティのある面においては、あなたの Web サイトでしか対処できないことがあります。以下は、そのリストです。</p> - - - -<h2 id="Essential_practices" name="Essential_practices">ベストプラクティス</h2> - - - -<h3 id="Verify_assertions_on_your_server" name="Verify_assertions_on_your_server">あなたのサーバ上でアサーションを検証する</h3> - - -<p>Persona を使う時は、ID アサーションが {{domxref("navigator.id.watch()")}} の <code>onlogin</code> 関数に渡されます。アサーションは、<em>常に</em> あなたの検証サーバに渡してください。その検証結果を基に、あなたのサーバがユーザに追加の許可を与えるかどうかを決定してください:</p> -<pre class="brush:js;">// navigator.id.watch({ ... 内 -onlogin: function(assertion) { - // ユーザがログインしようとしています! ここで必要なことは: - // 1. アサーションを検証のためにバックエンドに送信し、セッションを作成する。 - // 2. UI を更新する。 -}, -</pre> -<p>ユーザのブラウザで実行される JavaScript を使用してアサーションを検証しようとすると、悪意のあるユーザがローカルのインジェクションコードであなたのサイトのユーザに偽装し、JavaScript コードを覆すことができてしまいます。これは、コードが実行されるユーザのブラウザをあなたが完全に制御できないため、可能となります。</p> -<p>繰り返しますが、アサーションは、<em>常に</em> あなたの検証サーバに渡してください。リモート検証 API を使用する場合でも同じです。</p> - - - -<h3 id="Explicitly_specify_the_audience_parameter" name="Explicitly_specify_the_audience_parameter"><code>audience</code> 引数を明記する</h3> - - - -<p>アサーションを検証するには、POST リクエストを <code>https://verifier.login.persona.org/verify</code> に送信します。このリクエストには <code>audience</code> と呼ばれる引数が含まれます:</p> -<pre><code>assertion=<ASSERTION>&audience=https://mysite.com:443"</code> -</pre> -<p><code>audience</code> 引数は必須です。常に、あなたのコード内かコードの設定内に audience を明記してください。特に次のことに注意してください:</p> -<ul> - <li>ユーザのブラウザが送信した Host ヘッダを信頼してはいけません。</li> - <li>ユーザのブラウザが送信した明示的な引数を信頼してはいけません。ただし、<code>document.location</code> など、あなたの JavaScript で生成されたものを除きます。</li> -</ul> -<p>ユーザのブラウザから伝えられた audience を信頼してしまうと、悪意のある Web サイトが <em>自身の</em> Web サイトのアサーションを再利用して <em>あなたの</em> Web サイトにログインすることが可能になります。</p> - - - -<h3 id="Verify_SSL_certificates" name="Verify_SSL_certificates">SSL 証明書を検証する</h3> -<p>アサーションを検証するには、POST リクエストを <code>https://verifier.login.persona.org/verify</code> に送信します。この HTTPS リクエストで、サーバから送られた証明書を信頼されたルート証明書に照らし合わせて確実に検証しなければなりません。これをしない場合、攻撃者が <code>verifier.login.persona.org</code> になりすまして偽の検証結果を返すことができます。</p> -<p>使用しているライブラリが証明書の検証リクエストを正しく行い、適切なルート証明書でそれを初期化しているか確認してください。</p> -<p>例えば、Python 2.7 の標準の <a href="http://docs.python.org/release/2.7.3/library/urllib2.html#urllib2.urlopen" title="http://docs.python.org/release/2.7.3/library/urllib2.html#urllib2.urlopen">urllib2 モジュール</a> は、サーバ証明書を検証しません。代わりに、Python 2.x の "<a href="http://pypi.python.org/pypi/requests">requests</a>" モジュールや "<a href="http://pypi.python.org/pypi/urllib3" title="http://pypi.python.org/pypi/urllib3">urllib3</a>" モジュール、または Python 3.x の標準の <code>http.client.HTTPSConnection</code> クラスの使用を推奨します。Perl の場合は、<code>libwww-perl</code> のバージョン 6.0 以降を使用してください。使用している言語やライブラリ、オペレーティングシステムによりますが、信頼された CA ルートと <code>verifier.login.persona.org</code> で使用されている単独の CA のどちらかのリストを提供する必要があるかもしれません。</p> - - - - -<h3 id="Implement_CSRF_protection" name="Implement_CSRF_protection">CSRF プロテクションを実装する</h3> - - -<p>CSRF (Cross-Site Request Forgery) ログイン攻撃では、攻撃者がクロスサイトリクエストフォージェリを利用して、ユーザを攻撃者の資格情報を使った Web サイトにログインさせます。</p> -<p>例えば: ユーザが <code>form</code> 要素を含む悪意のある Web サイトを訪れたとします。この form の <code>action</code> 属性には、攻撃者のユーザ名とパスワードを含む <a href="http://www.google.com/login" title="http://www.google.com/login">http://www.google.com/login</a> への HTTP POST リクエストがセットされています。ユーザが form を送信すると、リクエストが Google に送信され、Google サーバがユーザのブラウザに Cookie をセットします。これで、ユーザが知らないうちに、攻撃者の Google アカウントへのログインが成功してしまいます。</p> -<p>この攻撃は、ユーザの個人情報を集めるために使われます。例えば、Google の <a class="link-https" href="https://www.google.com/history/">Web History</a> 機能は、ユーザによるすべての Google 検索の検索語を記録します。ユーザが攻撃者の Google アカウントにログインし、攻撃者が Web History 機能を有効にすると、ユーザはこれらすべての情報を攻撃者に与えることになります。</p> -<p>CSRF ログイン攻撃とその防御手段は、<a href="http://www.adambarth.com/papers/2008/barth-jackson-mitchell-b.pdf">Robust Defenses for Cross-Site Request Forgery</a> (PDF) に詳しく解説されています。これらは Persona に限ったことではありません。ほとんどのログイン機構は、このような攻撃への潜在的な脆弱性を持っています。</p> -<p>CSRF ログイン攻撃からサイトを護るために使える手段には、様々なテクニックがあります。上記のドキュメントを参照してください。</p> -<p>取り得るアプローチ方法の一つは、サーバ内に秘密の ID を作成してブラウザと共有し、ログインリクエストを行う時にそれをブラウザから提供してもらうことです。例えば:</p> -<ol> - <li>ユーザがサイトを訪れたらすぐに (ログインする前に) ユーザのセッションをサーバ上に作成し、セッション ID をブラウザの Cookie に格納します。</li> - <li>サーバ上で 10 文字以上のランダムな英数字の文字列を生成します。UUID をランダムに生成するとよいでしょう。これは CSRF トークンです。このトークンをセッションに格納します。</li> - <li>CSRF トークンを JavaScript や HTML 内の隠し form 変数に埋め込むことによってブラウザに渡します。</li> - <li>AJAX サブミッションや form の POST に CSRF トークンに含めてください。</li> - <li>サーバ側では、アサーションを受け取る前に、送信された CSRF トークンがセッションに格納された CSRF トークンと一致するか確認します。</li> -</ol> - - - - -<h2 id="Enhancements" name="Enhancements">さらなる向上</h2> - - - - -<h3 id="Content_Security_Policy_(CSP)" name="Content_Security_Policy_(CSP)">コンテントセキュリティポリシー (CSP)</h3> -<p><a href="/docs/Security/CSP" title="/docs/Security/CSP">コンテントセキュリティポリシー</a> (CSP) は、クロスサイトスクリプティング (XSS) やデータインジェクション攻撃を含む、特定の攻撃の検出と軽減を助けるセキュリティの追加レイヤーです。これらの攻撃は、データの盗難からサイトの破壊、マルウェアの拡散まで、すべての攻撃に使われます。</p> -<p>あなたのサイトで CSP を使う場合は、サイトポリシーで Persona を有効にする必要があるでしょう。あなたのポリシーに依存しますが、次のことが必要です:</p> -<ul> - <li>インラインの <code>javascript:</code> URI を削除し、追加のスクリプトファイルから読み込んだコードに置き換えてください。このスクリプトファイルでは、対象の要素をその ID を基に見つけ、{{domxref("element.onclick", "onclick")}} を設定するか、{{domxref("element.addEventListener()", "addEventListener()")}} を呼び出すことにより、要素にスクリプトを結び付けます。</li> - <li><code>https://login.persona.org</code> に <code>script-src</code> と <code>frame-src</code> の両方を許可し、あなたのサイトがリモートの <code>include.js</code> ファイルを読み込んでフォールバックの Persona 実装と通信できるようにしてください。</li> -</ul> -<p>Apache コンフィギュレーションには、次の行を含めることになるでしょう:</p> - -<pre>Header set X-Content-Security-Policy: "default-src 'self'; frame-src 'self' https://login.persona.org ; script-src 'self' https://login.persona.org"</pre> diff --git a/files/ja/mozilla/persona/why_persona/index.html b/files/ja/mozilla/persona/why_persona/index.html deleted file mode 100644 index 7321201f6c..0000000000 --- a/files/ja/mozilla/persona/why_persona/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: なぜ Persona? -slug: Mozilla/Persona/Why_Persona -tags: - - Persona -translation_of: Archive/Mozilla/Persona/Why_Persona ---- -<p>ユーザ名とパスワードを使う流行のシステムは長続きしないでしょう: ユーザが利用するすべてのサイトとサービスでは、ユーザが新しく複雑なパスワードを作成して記憶しておくことが求められ、すべてのサイトはパスワードを安全に保持することが求められます。しかしながら、最近のセキュリティ侵害は、優れた企業でさえもユーザの情報を危険にさらし、パスワードの保護に躓くことを証明しています。</p> - -<p>Persona は、オープンで分散型の、サイトごとのパスワード認証を置き換える Web スケールの認証システムです。Persona は、Facebook Connect のような中央集権型のシステムに頼らずに、ユーザビリティとプライバシーに関係する OpenID のようなシステムの短所の克服に取り組みました。</p> - -<h2 id="Persona_Gets_Rid_of_Per-Site_Passwords" name="Persona_Gets_Rid_of_Per-Site_Passwords">Persona はサイトごとのパスワード認証を廃止します</h2> - -<p>Persona を利用すると、サイトごとに異なるパスワードを入力する代わりに、各サイトの認証を単純な一回だけのプロセスを完了した後に 2 回クリックするだけでサイトにログインできます。これは、安全に保護された公開鍵による暗号化の上に構築されています。パスワードを入力する代わりに、ユーザのブラウザが暗号化された「ID アサーション」を生成します。これは、数分後に期限切れになり、一つのサイトでのみ検証されます。サイト固有のパスワードが無いため、Web サイトは、パスワードを安全に保持することやパスワードのデータベースが失われる可能性を気にせずに Persona を使えます。</p> - -<p>このクイックサインインのプロセスは、ユーザが新しいサイトを訪れた時の不和も軽減します。</p> - -<h2 id="Persona_Identities_are_Email_Addresses" name="Persona_Identities_are_Email_Addresses">Persona の ID はメールアドレス</h2> - -<p>Persona は、ユーザが決めるユーザ名ではなく、ユーザのメールアドレスを認証に使用します。これには、ユーザと開発者の両方に利点があります:</p> - -<h3 id="User_Benefits_of_Using_Email_Addresses" name="User_Benefits_of_Using_Email_Addresses">メールアドレスを使うことのユーザの利点</h3> - -<ul> - <li>ユーザはすでに自分のメールアドレスを知っており、OpenID で混乱する可能性のある新しい URL を憶える必要はありません。</li> - <li>メールアドレスは、<code>someone@some-context</code> の概念を適切にとらえており、ユーザによる <code>@work</code> や <code>@home</code>、<code>@school</code> などの ID の区別を簡単にします。これは、Facebook や Google+ のようなソーシャルネットワーク上の実名やシングルアカウントのポリシーを通じた ID を統合する傾向とは異なります。</li> - <li>メールアドレスは、自身でホストすることも、ユーザの ID のコントロールを他のプロバイダに委ねて代理を頼むこともできます。</li> -</ul> - -<h3 id="Developer_Benefits_of_Using_Email_Addresses" name="Developer_Benefits_of_Using_Email_Addresses">メールアドレスを使うことの開発者の利点</h3> - -<ul> - <li>メールアドレスは、ユーザと直接連絡をとる手段を開発者に与えます。</li> - <li>ほとんどのサイトはユーザのメールアドレスの入手を望んでいます。Persona は、ユーザがログインした時に、サイトにユーザのメールアドレスを提供し、サインアップフォームの後に追加の情報を入力する必要をなくします。</li> - <li>多くのログインシステムは、すでにメールアドレスをユニークキーとして扱っています。これは、Persona によるロックインではなく、同時に既存のログインシステムを配備できることを意味しています。</li> -</ul> - -<p>言うまでもなく、メールアドレスは、既に数え切れないほど多くのプロバイダにわたって数十億のアカウントに完全に分散化したシステムです。</p> - -<h2 id="How_is_Persona_different_from_other_Single_Sign-On_providers.3F" name="How_is_Persona_different_from_other_Single_Sign-On_providers.3F">Persona は他のシングルサインオンのプロバイダとどう違いますか?</h2> - -<p>Persona は、安全で安心、簡単です。Persona は、他のプロバイダがしない、またはできない方法でユーザのプライバシーとコントロール、選択肢を護ります:</p> - -<p>Facebook や Google+ のような多くのソーシャルネットワークでは、ユーザに実名を使うことが要求され、一つのアカウントに制限されています。Persona は、メールアドレスの上に構築されることにより、ユーザが職場や家庭、学校、他の場所での ID を分けておくことができます。</p> - -<p>Persona はオープンで分散型です: メールアドレスを持つ人は誰でも Persona を使ってサイトにサインインできます。おまけに、誰でも独自の ID プロバイダをホストしたりメールアドレスのように他の機関に代理を頼んだりできます。これは、単一のアカウントを必要とし、中央集権化されたソーシャルなログインサービスとは対照的です。</p> - -<p>Persona は、ユーザのブラウザを認証プロセスの中に置くことによる新しいアプローチでユーザのプライバシーを護ります: ブラウザはユーザのメールプロバイダから信用情報を取得し、その信用情報を Web サイトに提供します。メールプロバイダはユーザを追跡できませんが、Web サイトは、信用情報を暗号化された状態で検証することにより、ユーザの ID を信用することができます。多くの他のシステムでは、OpenID のような分散型でさえも、ユーザにログインを許可する前に、サイトとの「確認手続き」(phone home) を必要とします。</p> diff --git a/files/ja/mozilla/preferences/index.html b/files/ja/mozilla/preferences/index.html deleted file mode 100644 index 1169ecabf1..0000000000 --- a/files/ja/mozilla/preferences/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Preferences -slug: Mozilla/Preferences -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Preferences ---- -<p>The preference system makes it possible to store data for Mozilla applications using a key/value pairing system. These articles provide information about how to use the preference system.</p> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> - <dl> - <dt><a href="/en-US/docs/Preferences/Preferences_system" title="Preferences/Preferences system">Preferences system</a></dt> - <dd>An introduction to using the preference system in Mozilla.</dd> - <dt><a href="/en-US/docs/XUL_School/Handling_Preferences" title="XUL School/Handling Preferences">XUL School: Handling preferences</a></dt> - <dd>The XUL School tutorial chapter on preferences.</dd> - <dt><a href="/en-US/docs/Preferences/Preference_reference" title="Preferences/Preference_reference">Mozilla preference reference</a></dt> - <dd>A reference guide to all Mozilla preferences; currently a work in progress.</dd> - <dt><a href="/en-US/docs/Preferences/A_brief_guide_to_Mozilla_preferences" title="Preferences/A brief guide to Mozilla preferences">A brief guide to Mozilla preferences</a></dt> - <dd>An introductory guide to where preferences are stored and other useful information about the core preference system.</dd> - <dt><a href="/en-US/docs/Preferences/Using_preferences_from_application_code" title="Preferences/Using preferences from application code">Using preferences from application code</a> {{gecko_minversion_inline("6.0")}}</dt> - <dd>Firefox 6 introduced static functions for accessing preferences efficiently from within application code. This API is not available for add-ons, but if you're working on a Gecko application, this API is the preferred way to access preferences.</dd> - <dt><a href="/en-US/docs/Preferences/Mozilla_networking_preferences" title="Preferences/Mozilla networking preferences">Mozilla networking preferences</a></dt> - <dd>A guide to key networking-related preferences.</dd> - <dt><a href="/en-US/docs/Preferences/Mozilla_preferences_for_uber-geeks" title="Preferences/Mozilla preferences for uber-geeks">Mozilla preferences for uber-geeks</a></dt> - <dd>A guide to preferences that only truly elite geeks should play with.</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/Preferences" title="tag/Preferences">View all pages tagged with "Preferences"...</a></span></p> - </td> - <td> - <h2 class="Community" id="Examples" name="Examples">Examples</h2> - <dl> - <dt><a href="/en-US/docs/Code_snippets/Preferences" title="Code snippets/Preferences">Code snippets</a></dt> - <dd>Preference-related code snippets.</dd> - <dt><a href="/en-US/docs/Adding_preferences_to_an_extension" title="Adding preferences to an extension">Adding preferences to an extension</a></dt> - <dd>How to add preferences to an existing extension.</dd> - </dl> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2> - <ul> - <li><a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a>, <a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a>, <a href="/en-US/docs/Extensions" title="Extensions">Extensions</a>, <a href="/en-US/docs/Developer_Guide" title="Developing_Mozilla">Developing Mozilla</a></li> - </ul> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/preferences/preference_reference/index.html b/files/ja/mozilla/preferences/preference_reference/index.html deleted file mode 100644 index 100adfa968..0000000000 --- a/files/ja/mozilla/preferences/preference_reference/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Preference reference -slug: Mozilla/Preferences/Preference_reference -tags: - - NeedSubpageList - - NeedsTranslation - - Preferences - - TopicStub -translation_of: Mozilla/Preferences/Preference_reference ---- -<p>{{ draft() }}</p> -<p>This is an automatically-generated list of subpages.</p> -<p>{{ListSubpages()}}</p> diff --git a/files/ja/mozilla/preferences/preference_reference/ui.alertnotificationorigin/index.html b/files/ja/mozilla/preferences/preference_reference/ui.alertnotificationorigin/index.html deleted file mode 100644 index 8cac579a16..0000000000 --- a/files/ja/mozilla/preferences/preference_reference/ui.alertnotificationorigin/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: ui.alertNotificationOrigin -slug: Mozilla/Preferences/Preference_reference/ui.alertNotificationOrigin -tags: - - 設定 -translation_of: Mozilla/Preferences/Preference_reference/ui.alertNotificationOrigin ---- -<p><code>ui.alertNotificationOrigin</code> は、 <a href="/en/XPCOM_Interface_Reference/nsIAlertsService" title="nsIAlertsService">nsIAlertsService</a> によって呼び出されるポップアップ通知において、位置とスライドインの方向を制御します。</p> - -<ul style="display: table; padding: 0; border-left: 2px solid; margin-left: 0.5em;"> - <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Type:</dfn><code>integer</code></li> - <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Default value:</dfn>タスクバー(または同等の機能)の表示位置に依存</li> - <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Exists by default:</dfn> no</li> - <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Application support:</dfn> Gecko 1.8.1.2 (Firefox 2.0.0.2 / Thunderbird 2.0.0.4 / SeaMonkey 1.1)</li> - <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Status:</dfn> Active; last updated 2012-02-22</li> - <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Introduction:</dfn> Pushed to Nightly on 2007-01-04</li> - <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Bugs:</dfn> {{ bug("133527") }} </li> -</ul> - -<h2 id="Values">Values</h2> - -<dl> - <dt><code>0</code></dt> - <dd>右下に表示され、下から縦にスライドインする。</dd> - <dt><code>1</code></dt> - <dd>右下に表示され、右から横にスライドインする。</dd> - <dt><code>2</code></dt> - <dd>左下に表示され、下から縦にスライドインする。</dd> - <dt><code>3</code></dt> - <dd>左下に表示され、左から横にスライドインする。</dd> - <dt><code>4</code></dt> - <dd>右上に表示され、上から縦にスライドインする。</dd> - <dt><code>5</code></dt> - <dd>右上に表示され、右から横にスライドインする。</dd> - <dt><code>6</code></dt> - <dd>左上に表示され、上から縦にスライドインする。</dd> - <dt><code>7</code></dt> - <dd>左上に表示され、左から横にスライドインする。</dd> -</dl> - -<p>{{ languages( { "zh-cn": "zh-cn/Mozilla/Preferences/Preference_reference/ui.alertNotificationOrigin" } ) }}</p> diff --git a/files/ja/mozilla/preferences/preferences_system/new_attributes/index.html b/files/ja/mozilla/preferences/preferences_system/new_attributes/index.html deleted file mode 100644 index b9c7beb88d..0000000000 --- a/files/ja/mozilla/preferences/preferences_system/new_attributes/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: 新しい属性 -slug: Mozilla/Preferences/Preferences_system/New_attributes -tags: - - Preferences system - - XUL -translation_of: Mozilla/Preferences/Preferences_system/New_attributes ---- -<p><code><a href="ja/Preferences_System/prefwindow"><prefwindow></a></code> の中に置かれたウィジェットは、(標準の属性に加えて)以下の属性を持つことができます。</p> -<h3 id="preference" name="preference">preference</h3> -<p>リンクされた <code><a href="ja/Preferences_System/preference"><preference></a></code> 要素のidを指定します。この設定の <code>value</code> 属性とこのウィジェットの状態は常に同期されます。</p> -<p>例えば以下の例は、設定 <tt>extensions.example.mypref</tt> の値に基づいてtextboxの <code>value</code> を自動的に初期化します。またその逆に、ユーザがtextboxの値を変更した時、<code><preference></code> 要素の値は更新され、必要に応じて設定システムに書き込まれます。</p> -<pre class="eval"><preference id="my_pref" name="extensions.example.mypref" type="unichar"/> -<textbox preference="my_pref"/> -</pre> -<h3 id="preference-editable" name="preference-editable">preference-editable</h3> -<p>既定の状態において、 <code><a href="ja/Preferences_System/preference"><preference></a></code> 要素は、checkbox, colorpicker, radiogroup, textbox, listitem, listbox, そしてmenulistといったいくつかの標準的なウィジェットの値を自動的に変更します。これ以外のローカル名を持つ要素、例えばXBLによって定義されたウィジェットなどの値を更新したい場合は、<code>preference-editable="true"</code>属性をその要素に設定する必要があります。</p> -<p>あなたのウィジェットが <code><preference></code> の値を変更するために、あなたはそのウィジェットの値が変更された後に<code>change</code>, <code>command</code>, または <code>input</code>イベントが発行されたかどうかを確認する必要があります。</p> -<p><span class="comment">バグ # または何かテストケース? 注意:これは現在、treeウィジェットにおいては機能しません。もしかしたらそれ以外にもいずれの要素でも機能しないかもしれません。(APIでは、バージョン1.8で利用可能になるだろうと書かれています)。</span></p> -<h3 id="onsyncfrompreference_.E3.81.8A.E3.82.88.E3.81.B3_onsynctopreference" name="onsyncfrompreference_.E3.81.8A.E3.82.88.E3.81.B3_onsynctopreference">onsyncfrompreference および onsynctopreference</h3> -<p>あなたはしばしば、与えられた設定の型に簡単には割り当てられない型のユーザインターフェイス要素を持つことがあるでしょう。例えば、チェックされた時に設定に保存される値を整数値の3、チェックされていない時の値を2とするcheckboxを使うことがあるでしょう。このユーザインターフェイス要素を初期化するためには、どちらの値もcheckbox要素に対しては無意味なので、あなたは既定の初期化処理に期待をかけることはできません。あなたは、設定の値をユーザインターフェイス要素の初期値に変換したり、ユーザインターフェイス要素の値を設定ファイルに書き込める何らかの値に変換したりする、関数を書く必要があります。これが、 onsyncfrompreference と onsynctopreference を使う理由です。</p> -<p><code>onsyncfrompreference</code> は、要素が設定から初期化される時に呼ばれます。もしあなたがこのイベントに対する実装を提供する場合、ユーザインターフェイス要素を初期化するための値か、または、設定システムがユーザインターフェイス要素を既定の値で初期化する(言い替えれば、設定の値に基づいて初期化することを試みる)ことを示すための値 <code>undefined</code> の、いずれかを返すあなたの実装が、初期化処理の間に呼び出されるでしょう。以下のように、あなたは上の例のcheckboxを記述することができます。:</p> -<pre><checkbox preference="foo.bar" onsyncfrompreference="return onsyncfrompreference();"/> - -.. スクリプト: -function onsyncfrompreference() -{ - var preference = document.getElementById("foo.bar"); - return preference.value == 3; - - // もしfoo.barが真偽値であり、チェックボックスを初期化するのにその値を使いたければ、 - // この時、他の何らかの初期化動作を実行したければ、 - // 私たちはまだこのメソッドの続きを実装することができるでしょう。 -} -</pre> -<p><code>onsynctopreference</code> は、現在の状態を指定された設定に書き込める形の値に変換するように、設定システムがそれぞれの要素に要求する時に、呼ばれます。あなたは、特別な値か、値を取得するのに標準的な方法を使うよう設定システムに対して通知するために <code>undefined</code> を返すことができます。上の例でいえば:</p> -<pre><checkbox preference="foo.bar" onsynctopreference="return onsynctopreference();"/> -.. スクリプト: -function onsynctopreference() -{ - var checkbox = document.getElementById("checkbox"); - return checkbox.checked ? 3 : 2; -} - -// もしfoo.barが真偽値で、その値を設定に書き込むために使いたいなら、 -// この時、他の何らかの初期化動作を実行したければ、 -// 私たちはまだこのメソッドの続きを実装することができるでしょう。 -</pre> -<div class="moreinfo"> <p><strong><a href="/ja/docs/Preferences_System">設定システム</a>の資料:</strong></p> <ul> <li>簡単な紹介: <a href="/ja/docs/Preferences_System/Getting_Started">Getting Started</a> | <a href="/ja/docs/Preferences_System/Examples">サンプル</a> | <a href="/ja/docs/Preferences_System/Troubleshooting">トラブルシューティング</a></li> <li>リファレンス: <code><a href="/ja/docs/Mozilla/Tech/XUL/prefwindow" title="prefwindow">prefwindow</a></code> | <code><a href="/ja/docs/Mozilla/Tech/XUL/prefpane" title="prefpane">prefpane</a></code> | <code><a href="/ja/docs/Mozilla/Tech/XUL/preferences" title="preferences">preferences</a></code> | <code><a href="/ja/docs/Mozilla/Tech/XUL/preference" title="preference">preference</a></code> | <a href="/ja/docs/Preferences_System/New_attributes">新しい属性</a></li> </ul></div> diff --git a/files/ja/mozilla/projects/emscripten/index.html b/files/ja/mozilla/projects/emscripten/index.html deleted file mode 100644 index 7411c9951f..0000000000 --- a/files/ja/mozilla/projects/emscripten/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Emscripten -slug: Mozilla/Projects/Emscripten -translation_of: Mozilla/Projects/Emscripten ---- -<p><span class="seoSummary">Emscripten は LLVM のバイトコードの JavaScript へのコンパイラです。LLVM バイトコードは、例えば C/C++ を Clang でコンパイルすることで出力できます。バイトコードを JavaScript に変換することで、それらを Web ブラウザ上で動作させられます。</span></p> - -<div class="warning"> -<p><strong>重要</strong>:このページには Emscripten の簡単な概要のみが記載されています。詳しく知るには, <a href="http://kripken.github.io/emscripten-site/index.html">Emscripten の公式 WiKi </a>をご覧ください。</p> -</div> - -<p>Emscripten を利用することで以下のことが可能となります。</p> - -<ul> - <li>C や C++ のコードを JavaScript へコンパイルできます</li> - <li>LLVM バイトコードに出力された他の言語のコードを、JavaScript へコンパイルできます。</li> - <li> C/C++ で記述された他の言語の処理系を JavaScript へ変換することで、その言語のコードを間接的に実行できます。既に Python や Lua の処理系が変換されています。</li> -</ul> - -<p>Emscripten を利用することで、ネイティブコードを即座に Web 向けにできます。いくつもの独立した実装をもつ標準化されたプラットフォームを利用することで、PC から iPad まで様々な環境で動作させられます。</p> - -<p>つまり Emscripten を利用することで、手動で JavaScript への移植をする必要はなくなります。また JavaScript を学ぶ必要もなくなります。また既存のネイティブユーティリティやライブラリを利用できるため、 Web 開発者にとっても有益です。</p> - -<p>実際にポータブルな C/C++ コードベースは Emscripten を用いて JavaScript へコンパイル可能です。その範囲は、グラフィックスや音声の再生、ファイルの読み込みと処理を必要とするハイパフォーマンスなゲームから、Qt のようなアプリケーションフレームワークまでに及びます。</p> - -<p>Emscripten は高速なコードを生成します。標準の出力フォーマットは、高度な最適化を可能とする <a href="/docs/Games/Tools/asm.js">asm.js</a> となっています。</p> - -<div class="note"> -<p><strong>付記</strong>:興味をお持ちの方は <a href="http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html">他の Emscripten に関する記事を読み、デモをご覧ください</a>。その後、<a href="http://kripken.github.io/emscripten-site/docs/getting_started/index.html">利用をはじめる</a> と良いでしょう。</p> -</div> - -<h2 id="MDN_上の他の記事">MDN 上の他の記事</h2> - -<ul> - <li>ゲーム開発において Emscripten はよく利用されています。 <a href="/ja/docs/Games">Games zone</a> には、ゲーム開発に関する記事がまとまっています。</li> - <li> <a href="/ja/docs/Mozilla/Projects/Emscripten/Techniques">Emscripten の技法</a>には、Emscripten WiKi にはない、Emscripten に関する有用なアイディアがまとまっています。</li> -</ul> diff --git a/files/ja/mozilla/projects/emscripten/techniques/index.html b/files/ja/mozilla/projects/emscripten/techniques/index.html deleted file mode 100644 index 2690643fcf..0000000000 --- a/files/ja/mozilla/projects/emscripten/techniques/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Emscripten techniques -slug: Mozilla/Projects/Emscripten/Techniques -translation_of: Mozilla/Projects/Emscripten/Techniques ---- -<div class="summary"> -<p>このページには Emscripten に関連する特定の技術情報があります。</p> -</div> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/Emscripten/Techniques/Out_of_memory_error_reports">out-of-memory 問題のデバッグ</a></dt> - <dd> - <p>Emscripten 使用中に遭遇するよくあるバグは、大きなサイズのゲームのロード時間中に発生する out of memory エラー (OOM) です。<a href="/about:memory">about:memory</a> が新しいタブに読み込まれる前に「計測 (Measure)」ボタンをクリックすると、何が起きたのか、スパイクを起こしていたメモリの使用量がいつ消えるか、診断が困難な一時メモリのスパイクの発生と言った問題を診断することができます。この記事では、このような問題のデバッグ方法を解説しています。</p> - </dd> -</dl> diff --git a/files/ja/mozilla/projects/index.html b/files/ja/mozilla/projects/index.html deleted file mode 100644 index b3ef45a5fd..0000000000 --- a/files/ja/mozilla/projects/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: プロジェクト -slug: Mozilla/Projects -tags: - - Mozilla - - NeedsContent - - Projects - - TopicStub -translation_of: Mozilla/Projects ---- -<p>このページには、Mozilla の数々のプロジェクト文書へのリンクが表示されます。あるものは Firefox あるいはその他の製品の一部ですが、それ以外のプロジェクトでも使用できます。</p> - -<p>{{ LandingPageListSubpages() }}</p> diff --git a/files/ja/mozilla/projects/l20n/index.html b/files/ja/mozilla/projects/l20n/index.html deleted file mode 100644 index 6f4ea2fb2f..0000000000 --- a/files/ja/mozilla/projects/l20n/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: L20n -slug: Mozilla/Projects/L20n -translation_of: Mozilla/Projects/L20n ---- -<div class="note"> -<p><strong>注記</strong>: このドキュメントは草稿段階または古くなっています。現在のドキュメントについては <a href="https://github.com/l20n/l20n.js/tree/master/docs">GitHub 上のドキュメント</a>を読んでください。</p> -</div> - -<div class="summary">自然言語の力をシンプルなコードで表現できる JavaScript ローカライズフレームワーク</div> - -<div class="column-container"> -<div class="column-half"> -<h2 id="L20n_の紹介">L20n の紹介</h2> - -<p>L20n ソフトウェアのローカライズを革新します。ユーザーは自然言語の完全な表現力に恩恵を受けることができます。L20n はシンプルなことをシンプルなままに、同時に複雑なことも可能にします。</p> - -<p>L20n によって、Mozilla は新しい世代の技術を作り、ローカライズする人の手に更なる力を与え用としています。<span class="seoSummary">L20n は、ローカライゼーションとアプリケーションのロジックを分離することで、ローカライズする人に高度で自由な言語表現ができるようにします。</span>L20n を使用すれば、Web アプリケーションを、言語や文化だけでなく、文脈データ、ユーザーのジェンダー、スクリーンの大きさなどにも対応できるようになります。<strong> </strong></p> -</div> - -<div class="column-half"> -<h2 id="L20n_の一例">L20n の一例</h2> - -<p>英語の文字列を提供する、シンプルで直感的な例を示します。</p> - -<pre class="brush: html notranslate"><brandName "Firefox"> -<about "About \{{ brandName }}"></pre> - -<p>次は、同じ文字列をスロベニア語で提供した例です。</p> - -<pre class="brush: html notranslate"><brandName { - nominative: "Firefox", - genitive: "Firefoxa", - dative: "Firefoxu", - accusative: "Firefox", - locative: "Firefoxu", - instrumental: "Firefoxom" -}> -<about "O \{{ brandName.locative }}"></pre> -</div> -</div> - - - -<div class="column-container"> -<div class="column-third"> -<h2 class="Documentation" id="開発者向け">開発者向け</h2> - -<p><strong>Documentation for developers wanting to implement localization functionality on their web apps using L20n.</strong></p> - -<dl> - <dt>Internationalization for your web app</dt> - <dd>L20n インフラストラクチャの使用を検討している開発者向けのはじめに読む説明書。</dd> - <dt><a href="/en-US/docs/L20n/HTML_Bindings">L20n's HTML bindings</a></dt> - <dd>HTML コードに L20n を実装するためのチュートリアル。</dd> - <dt><a href="/en-US/docs/L20n/Javascript_API">L20n JavaScript API</a></dt> - <dd>l20n.js の API 。</dd> - <dt>L20n syntax cheatsheet for developers</dt> - <dd>A simple cheatsheet to help developers as they add L20n to their localization infrastructure.</dd> -</dl> -</div> - -<div class="column-third"> -<h2 class="Documentation" id="ローカライズする人向け">ローカライズする人向け</h2> - -<p><strong>Documentation for Localizers creating localized content for a project that uses L20n.</strong></p> - -<dl> - <dt><a href="http://l20n.org/learn/">Learn the L20n syntax</a></dt> - <dd>How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/L20n/Localization_Use_Cases">Localization use-cases</a></dt> - <dd>How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.</dd> - <dt>L20n and Translation Memory eXchange (TMX)</dt> - <dd>How L20n impacts the Translation Memory eXchange standard for translation memory data.</dd> - <dt>L20n syntax cheatsheet for localizers</dt> - <dd>A simple cheatsheet to help localizers as they localize projects with L20n.</dd> -</dl> -</div> - -<div class="column-third"> -<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">追加リソース</h2> - -<p><strong>L20n に関わる開発者とローカライズする人向けの追加リソースです。</strong></p> - -<dl> - <dt><a href="http://www.l20n.org" title="http://www.l20n.org">L20n.org</a></dt> - <dd>L20n live をブラウザ上で試すことができます。</dd> - <dt><a href="http://l20n.github.io/tinker/" title="http://l20n.github.io/tinker/">L20n Tinker</a></dt> - <dd>自分が書いた L20n コードを L20n Tinker でテストできます。</dd> - <dt><a href="https://github.com/l20n" title="https://github.com/l20n/l20n.js">GitHub</a></dt> - <dd>L20n インフラと生きたデザイン仕様のメインコードが置かれている場所です。</dd> - <dt><a href="https://wiki.mozilla.org/L20n" title="https://wiki.mozilla.org/L20n">Wiki ページ</a></dt> - <dd>L20n の開発プロジェクトの情報があります。</dd> -</dl> -</div> -</div> - -<h2 id="Subnav">Subnav</h2> - -<ol> - <li><a href="#" title="Documentation for developers wanting to implement localization functionality on their web apps using L20n">For Developers</a> - - <ol> - <li><a href="#" title="First read for developers looking to use the L20n infrastructure">Internationalization for your web app</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/L20n/HTML_Bindings" title="Tutorial on implementing L20n in your HTML code">L20n's HTML bindings</a></li> - <li><a href="#" title="A complete description of the use, function, and role of L20n's .lol format.">.lol file format</a></li> - <li><a href="#" title="A simple cheatsheet to help developers as they add L20n to their localization infrastructure.">L20n syntax cheatsheet for developers</a></li> - </ol> - </li> - <li><a href="#" title="Documentation for Localizers creating localized content for a project that uses L20n.">For Localizers</a> - <ol> - <li><a href="#" title="How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.">Learn the L20n syntax</a></li> - <li><a href="/en-US/docs/L20n/Localization_Use_Cases">Localization use cases</a></li> - <li><a href="#" title="How L20n impacts the Translation Memory eXchange standard for translation memory data.">L20n and Translation Memory eXchange (TMX)</a></li> - <li><a href="#" title="A simple cheatsheet to help localizers as they localize projects with L20n.">L20n syntax cheatsheet for localizers</a></li> - </ol> - </li> - <li><a href="#" title="Some additional resources for developers and localizers involved with L20n.">Additional resources</a> - <ol> - <li><a href="http://www.l20n.org" title="You can try L20n live in your browser on the project page">L20n.org</a></li> - <li><a href="http://l20n.github.io/tinker/" title="Test out your own L20n code in L20n Tinker">L20n Tinker</a></li> - <li><a href="https://github.com/l20n/l20n.js" title="Where the main code for the L20n infrastructure and language lives">L20n GitHub repo</a></li> - <li><a href="https://wiki.mozilla.org/L20n" title="Info about the project to develop L20n">Mozilla Wiki</a></li> - </ol> - </li> -</ol> diff --git a/files/ja/mozilla/projects/mochitest/index.html b/files/ja/mozilla/projects/mochitest/index.html deleted file mode 100644 index e649f3c059..0000000000 --- a/files/ja/mozilla/projects/mochitest/index.html +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Mochitest -slug: Mozilla/Projects/Mochitest -tags: - - Automated testing - - Developing Mozilla -translation_of: Mozilla/Projects/Mochitest ---- -<p>Mochitestは、<a class="external" href="http://mochikit.com/">MochiKit</a> JavaScriptライブラリに基づいて構築された<a class="internal" href="/ja/docs/Mozilla_automated_testing" title="Mozilla automated testing">自動テストフレームワーク</a>です。これはMozillaによって利用されている、後退バグの自動テストフレームワークの一つです。テストはテストハーネスに対して、JavaScriptの関数を用いて成功あるいは失敗の旨を報告します。</p> -<p>Mochitestのユニークな特長は、Webページの形で書かれたテストを、完全なブラウザ環境の中でChrome(に昇格した)特権付きで実行できるという点です。これは、他のフレームワークでできることよりも非常に多くの事をテストの中のJavaScriptでできるようにします。通常のスクリプトが可能な事(DOM操作など)に加えて、テストのスクリプトはXPCOMコンポーネントやサービス、そしてブラウザそれ自体にすらもアクセスする事ができます。これによって、例えば、入力が意図されたとおりの結果をもたらすかどうかを確認するために、ブラウザのユーザーインターフェースに対してユーザによる入力をシミュレートして渡すなどのことができます。</p> -<p>Mochitestにおける、テストの成否を通知するためのJavaScript関数の呼び出し方は、いくつかの種類のテストに対しては不向きです。(Chrome特権付きの)JavaScriptによってテストできるような内容だけが、このフレームワークを使ってテストできます。創造性を発揮する事によって、あなたが最初に考えているよりもずっとたくさんの事ができますが、しかし、例えばスクリプトではないC++のコンポーネントを直接テストするようなMocihkitテストを書く事は不可能です(それを行うには<a class="internal" href="/ja/docs/Compiled-code_automated_tests" title="Compiled-code automated tests">コンパイル済みコードのテスト</a>を使ってください)。</p> -<h3 id="Running_tests" name="Running_tests">テストを実行する</h3> -<p>MozillaのビルドマシンはMochitestをビルドの過程の一つとして実行します。そのため、誰かがソースコードにコミットした変更が何かを壊していれば、それを極めて迅速に知る事ができます。しかし依然として、あらゆる新しい危険性のあるコードをコミットする前には、あなた自身の手でMochitestを走らせておくべきです。あなたも、避けられるなら、ツリーを壊して他のみんなの時間を無駄にさせる元凶になどなりたくないでしょう? :-)</p> -<h4 id="Running_the_whole_test_suite" name="Running_the_whole_test_suite">テストスイート全体を実行する</h4> -<p>Mochitestを実行するには、まずあなたが行った変更を含めて<a href="/ja/docs/Developer_Guide/Build_Instructions" title="Build_Documentation">Mozillaをビルド</a>します。次に、以下のようにします:</p> -<ul> - <li>1.9.1およびそれ以降(bug 417516が修正されて以降)では、トップレベルのディレクトリで以下のコマンドを実行してください: - <ul> - <li><code>make -C $(OBJDIR) mochitest-plain</code></li> - </ul> - </li> - <li>それより古いブランチでテストを行う場合は、Mochitestの<code>runtests.py</code>スクリプトをオプション指定無しでコマンドラインから実行してください: - <ul> - <li><code>cd $(OBJDIR)/_tests/testing/mochitest<br> - python runtests.py</code></li> - </ul> - </li> -</ul> -<p><img alt="Image:Mochitest.png" class="internal" src="/@api/deki/files/269/=Mochitest.png"></p> -<p><strong>注意:</strong> テストを実行している間は、ブラウザウィンドウがフォーカスされた状態を保つべきです。そうでないと、いくつかのテストが失敗する事があります(例えば{{ Bug(330705) }}のテストがそうです)。Linuxユーザは、ダミーのXサーバを使う事でその状態を保存する事ができます(後述の<a href="#Diverting_X_output">Xの出力を迂回させる手順</a>を参照してください)。</p> -<h4 id="Running_select_tests" name="Running_select_tests">テストを選択して実行する</h4> -<p>テストを一つだけ実行する場合(あなたが書いたばかりの新しいテストなど)や、Mochitestスイート全体のうち一部分だけを実行する場合は、runtests.pyの<code>--test-pathオプションを使って、実行したいテストまたはサブディレクトリを指定してください。例えば、Mozillaのソースツリーの</code>{{ Source("content/base/test/test_CrossSiteXHR.html", "test_CrossSiteXHR.html") }}のテストだけを実行したい場合は、以下のようなコマンドを使う事になります:</p> -<pre><code>TEST_PATH=content/base/test/test_CrossSiteXHR.html make -C $(OBJDIR) mochitest-plain</code> -</pre> -<p>あるいは、mochitest-plain targetがサポーとされていないブランチでは以下のようにします:</p> -<pre>python runtests.py --test-path=content/base/test/test_CrossSiteXHR.html</pre> -<p>{{ Source("content/svg/") }}の中にあるすべてのテストを実行する場合は、以下のコマンドを使います:</p> -<pre class="eval">TEST_PATH=content/svg/ <code>make -C $(OBJDIR) mochitest-plain</code> -</pre> -<p><code>--test-path</code>によって指定されるパスは、Mozillaのソースツリー内のテストまたはディレクトリへの物である事に注意してください。パスがディレクトリの場合、そのディレクトリおよびすべてのサブディレクトリ内のテストが読み込まれます。</p> -<p>{{ h3_gecko_minversion("Gecko 2.0 およびそれ以降で特定のテストを実行する", "2.0") }}</p> -<p>Gecko 2.0 {{ geckoRelease("2.0") }} から、mochitest-1 から mochitest-5 までを make コマンドで簡単に実行できるようになりました。例:</p> -<pre>make mochitest-1 -</pre> -<p>これによって、すべてのテストスイートを実行したり、トライサーバの buildbot のコードを調べて特定のテストだけを実行するための書き方を調べる代わりに、buildbot の挙動を真似る事ができます。</p> -<h4 id="個々のテストのデバッグ">個々のテストのデバッグ</h4> -<p>ある1つのテストについてデバッグする必要が生じた場合に、そのテストだけを実行するために、Firefox にデバッガをアタッチし、デバッガがアタッチされた状態でテストを含むページをリロードするのにも、前述の方法が利用できます。もし問題が起こる前にデバッガをアタッチする事が難しい場合には(例えば、テストが読み込まれた時にブラウザがクラッシュするような場合)、以下のようにしてテストスイート全体をまず最初に実行できます:</p> -<pre>python $OBJDIR/_tests/testing/mochitest/runtests.py -</pre> -<p>この時、デバッガをアタッチして、新しいタブを開き、"<a class="external" href="http://mochi.test:8888/tests/PATH/TO/MY/TEST" rel="freelink">http://mochi.test:8888/tests/PATH/TO/MY/TEST</a>" のようにテストを手動で指定することができます。例: "<a class="external" href="http://mochi.test:8888/tests/modules/plugin/test/test_pluginstream.html" rel="freelink">http://mochi.test:8888/tests/modules...ginstream.html</a>"</p> -<p>あるいは、あなたはmochitestの実行時にデバッガを指定するよう試みるかもしれません:</p> -<pre>TEST_PATH='...' EXTRA_TEST_ARGS='--debugger=gdb' make mochitest-plain -</pre> -<p>引数の --debuggerArgs と --debuggerInteractive も参照してください。</p> -<h4 id="Finding_errors" name="Finding_errors">エラーを探す</h4> -<p>予期されない失敗を探すには、「TEST-UNEXPECTED-FAIL」という文字列を検索してください。最終的なテストの実行結果の要約を見るには「SimpleTest FINISHED」を検索してください。連結されたログではMochitestの出力は最後にあるとは限らないので、すべてのTinderboxのログをまとめて見る時に、後者は特に便利です。</p> -<h4 id="Logging_results" name="Logging_results">結果のロギング</h4> -<p>テストの実行による出力は、コンソールおよび(または)ファイルに送る事ができます(デフォルトでは、結果はブラウザ上にのみ表示されます)。出力の詳細さはいくつかのレベルで指定できます。DEBUG、INFO、WARNING、ERROR、FATALの各レベルがあり、DEBUGでは出力は最も詳細(すべて出力)になり、FATALでは出力は最も少なく(テストを中断させるようなイベントが発生した時だけメッセージを出力)なります。</p> -<p>ファイルにログを保存するには --log-file=<var>ファイルのパス</var> オプションを使います。デフォルトではファイルへのログ出力レベルはINFOですが、--file-level=<var>レベル</var> オプションを使う事でレベルを変更できます。</p> -<p>コンソールへのログ出力を有効にするには、--console-level=<var>レベル</var> オプションを使います。</p> -<p>例えば、テスト実行時の出力を <code>~/mochitest.log</code> というファイルにDEBUGレベルの詳細さで保存したい場合は以下のようになります:</p> -<pre class="eval">python runtests.py --log-file=~/mochitest.log --file-level=DEBUG -</pre> -<h4 id="Diverting_X_output" name="Diverting_X_output">Xの出力を迂回させる</h4> -<p>テスト実行中のコンピュータでユーザが行うあらゆる他の操作による影響を防ぐために、テストは必ずフォーカスされたウィンドウの中で実行されなくてはなりません。Linuxユーザはスイートに指示を与える事で、不可視の仮想デスクトップを使うようにすることができます。もし<a class="external" href="http://en.wikipedia.org/wiki/Xvfb">Xvfb</a>がインストールされている、またはインストールできる場合は、以下のコマンドは現在のセッションをブロックすることなくテストを実行します。:</p> -<pre class="eval">nice xvfb-run python _tests/testing/mochitest/runtests.py --log-file=./mochitest-plain.log --file-level=DEBUG --autorun --close-when-done --console-level=DEBUG -</pre> -<p>他に可能な設定については、{{ Bug(434365) }}で議論されています。</p> -<h4 id="Other_.27runtests.27_options" name="Other_.27runtests.27_options"><code>runtests.py</code>のその他のオプション</h4> -<p><code>runtests.py</code>スクリプトは他にもいくつかのオプションを解釈します。それらの一覧を見るには --help オプションを使ってください。ちなみに、<a href="/ja/docs/Chrome_tests" title="Chrome_tests">--chrome</a>、<a href="/ja/docs/Browser_chrome_tests" title="Browser_chrome_tests">--browser-chrome</a>、<a href="/ja/docs/Accessibility" title="Accessibility">--a11y</a>の各オプションについては個別のドキュメントがあります。</p> -<h3 id="Writing_tests" name="Writing_tests">テストを書く</h3> -<p>Mochitest用のテストファイルは、いくつかの条件についてテストを行うJavaScriptを含んだシンプルなHTML、XHTML、またはXULのファイルです。</p> -<p>Mozillaをビルドせずに大部分のテストを実行するために、<a class="external" href="http://ted.mielczarek.org/code/mozilla/mochitest-maker/">Mochitest maker</a>を利用できます。</p> -<h4 id="Try_to_avoid_Mochitest" name="Try_to_avoid_Mochitest">Mochitestを使わない事を試みる</h4> -<p>はい、これは冗談ではなく本当にです。様々な理由のために、Mochitestは過剰な物となっています。一般的な用途では、より軽量なテストフレームワーク使うように常に試みる事をお勧めします。例えば、ある一つのXPCOMコンポーネントをテストしたいだけであれば、<a href="/ja/docs/Writing_xpcshell-based_unit_tests" title="Writing_xpcshell-based_unit_tests">xpcshell</a>を使うべきです。また、Mochitestにもできない事や、それをするようには設計されていないという事がいくつかあります。こちらの例は視覚的な出力についてのテストで、その場合は<a href="/ja/docs/Creating_reftest-based_unit_tests" title="Creating_reftest-based_unit_tests">reftest</a>フレームワークを使うのがお勧めです。他の異なる種類の自動テストフレームワークについての情報は、<a href="/ja/docs/Mozilla_automated_testing" title="Mozilla_automated_testing">Mozillaの自動テスト</a>を参照してください。</p> -<h4 id="Test_templates" name="Test_templates">テストのテンプレート</h4> -<p>定型的な内容を毎回入力する手間を省くために、{{ Source("testing/mochitest/gen_template.pl", "gen_template.pl") }} Perlスクリプトがテストのテンプレートの生成に利用できます。このスクリプトは2つの省略可能な引数を取ります:</p> -<ol> - <li>-b : バグの番号。</li> - <li>-type : 連符レートの種類。html、xhtml、xul のいずれかを選択する。デフォルトはhtml。</li> -</ol> -<p>利用例:</p> -<pre class="eval">cd mozilla/testing/mochitest/ -perl gen_template.pl -b=123456 > path/to/test_bug123456.html -perl gen_template.pl -b=123456 --type=xul > path/to/test_bug123456.xul -</pre> -<p>Mochitest ではすべてのテストのファイル名は「test_」で始まっている必要がある事に注意してください。テストをツリーのどの位置に置けばよいのかを決める手助けとしては、後述の内容を参照してください。</p> -<p>Mochitest の定型的なコードに加えて、このスクリプトは 'content' という id を持った要素と 'display' という id を持った要素も生成するでしょう。あなたが書くテストでは、これらを他のあなたが追加する要素と同様に操作して構いません。</p> -<h4 id="Test_functions" name="Test_functions">テスト関数</h4> -<p>個々のテストは、Mochitestに対してテストが成功したのか失敗したのかを通知するために実行されるいくつかのJavaScriptを含んでいる必要があります。 {{ Source("testing/mochitest/tests/SimpleTest/SimpleTest.js", "SimpleTest.js") }} は、テストにおいてMochitestにテストの成否を知らせるための様々な関数を含んでいます。これらには以下の物が含まれます:</p> -<ul> - <li><code>ok(<var>trueになるべき文</var>, "<var>エラーメッセージ</var>")</code> -- 値が真である事をテストする。</li> - <li><code>is(<var>実際の値</var>, <var>期待される値</var>, "<var>エラーメッセージ</var>")</code> -- 二つの値を比較する(===ではなく==を使用)。</li> - <li><code>isnot(<var>実際の値</var>, <var>期待されない値</var>, "<var>エラーメッセージ</var>")</code> -- is()の逆。</li> -</ul> -<p>これらの関数の使い方の例は、 {{ Source("testing/mochitest/README.txt", "README") }} を参照してください。</p> -<p>もし、現在のところは失敗するというテストを含めたい場合、単にその部分をコメントアウトしないでください! その代わりに、 相当する「todo」を使ってください。これによってTinderboxは、不意にテストが成功するようになった時に、(いつの時点でテストが成功するようになったのかを)知らせる事ができます。:</p> -<ul> - <li><code>todo(<var>今はfalseになるが本当はtrueになるべき文</var>, "<var>エラーメッセージ</var>"</code><code>)</code></li> - <li><code>todo_is(<var>実際の値</var>, <var>期待される値</var>, "<var>エラーメッセージ</var>")</code></li> - <li><code>todo_isnot(<var>実際の値</var>, <var>期待されない値</var>, "<var>エラーメッセージ</var>")</code></li> -</ul> -<h4 id="Helper_functions" name="Helper_functions">ヘルパー関数</h4> -<p>現時点では、すべてのMochikitの機能が利用できます(これは{{ Bug(367393) }}によって変わるでしょう)。{{ Bug(367569) }}で、ヘルパー関数として<code>sendChar</code>、<code>sendKey</code>、<code>sendString</code>が追加されました。これらは{{ Source("testing/mochitest/tests/SimpleTest/EventUtils.js") }}において利用できます。</p> -<h3 id="Adding_tests_to_the_tree" name="Adding_tests_to_the_tree">テストをツリーに追加する</h3> -<p>新しいテストを書いたら、すぐにそれをMozillaのソースツリーに追加して、ビルドシステムにその事を通知する必要があります。これによって、Mozilla tinderboxはそれを自動的に実行するようになります。</p> -<h4 id="Choosing_a_location" name="Choosing_a_location">場所の選択</h4> -<p>新しいMochitestのテストはテストされるコードの近くのどこか、できれば同じモジュールに置かれるべきで、これにより、テストケースが何のための物なのかが明確になります。例えば、あるHTMLの機能のテストを作成した場合、おそらく、テストを{{ Source("content/html/content/test") }}または{{ Source("content/html/document/test") }}に置きたいと思うでしょう。もしも、テストしようとしているコードの近くにテスト用のディレクトリがなければ、{{ Bug(368531) }}のパッチで実際にそうしているように、新しいテスト用のディレクトリを作成する事ができます。</p> -<h4 id="Makefile_changes" name="Makefile_changes">Makefileの変更</h4> -<p>あなたが書いた新しいテストの事をビルドシステムに通知するために、あなたが書いたテストファイルの名前をそのテストディレクトリの<code>Makefile.in</code>の中の<code>_TEST_FILES</code>に追加する必要があります。</p> -<p>もしもあなたが書いたテストが複数のファイルに渡っているなら、その場合はメインのファイルの名前を「test_...」としてください。これは実行するテストのリストに登場する名前となります。他のファイルはそれ以外の名前になっているべきですが、<code>Makefile.in</code>の<code>_TEST_FILES</code>に追加されなければならないという点は変わりません。</p> -<p>Chromeのテストを追加する場合、テストを <code>_tests/testing/mochitest/<strong>tests</strong></code> ではなく <code>_tests/testing/mochitest/<strong>chrome</strong></code> にインストールするようMakefileを変更する事を忘れないでください。</p> -<h4 id="Building_and_running_new_tests" name="Building_and_running_new_tests">ビルドと新しいテストの実行</h4> -<p>新しいテストをコミットする前に、Makefile.inの変更内容が正しく、また、あなたが書いたテストが期待通りに成功する事を確認してください。あなたが書いたテストを確認するには、まず、以下のコマンドでそのテストをMochitestのディレクトリ(ソースツリーのテストファイルの位置と同じ場所)に取り出してください:</p> -<pre class="eval">make -</pre> -<p>次に、Mochitestを前述の通りに開きますが、この時、「Run Tests」リンクをクリックする代わりに、あなたが書いたテストを一覧から探してそれをクリックしてください。</p> -<h3 id="FAQ" name="FAQ">SSLと<code>https</code>を有効にしたテスト</h3> -<p>Mochitestのテストは、正常な動作のために <code><span class="nowiki">http://localhost:8888</span></code> で実行されなくてはなりません。しかし、テストの中にはオリジンが異なる場合のための機能のテストとして、他のプロトコル、ホスト、ポートを使う必要があるものもあるでしょう。Mochitestのテストハーネスは、元のサーバのすべてのコンテンツをproxy autoconfigとSSLトンネリングを用いて他の様々なサーバに<em>同期(ミラー)する</em>ことで、この問題を解決します。テストを実行したいすべてのスキーム、ホスト、ポートのリスト(それらはすべて <code><span class="nowiki">http://localhost:8888</span></code> と完全に同じコンテンツを返す必要があります)は{{ Source("build/pgo/server-locations.txt") }}で指定します。ただし、そこに記述されたオリジンのすべてが完全に同じである必要はありません。テスト用として特定のSSL証明書を指定された物や、そのサーバ上のページで特権の昇格の要求を許可する物も設定できます。完全な詳細説明については、ファイルの内容を参照してください。</p> -<h4 id="動作させる方法">動作させる方法</h4> -<p><br> - Mochitestのハーネスは、要求されたURLをサーバにマッチさせるためにブラウザに<a class="external" href="http://en.wikipedia.org/wiki/Proxy_auto-config" title="http://en.wikipedia.org/wiki/Proxy_auto-config">proxy autoconfig</a> を使わせる設定を含んでいます。<code>network.proxy.autoconfig_url</code> の設定は、要求されたURLがマップされているホストを認識するための<code>FindProxyForURL</code>という JavaScript 関数をエンコードしたdata: URLがセットされます。SSLのサイトがミラーされる場合、その関数はリクエストを、<a class="external" href="http://www.ietf.org/rfc/rfc2817.txt" title="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a>で定められた<code>CONNECT</code>メソッドによる説明に応じて、トラフィックを実際のサーバへ透過的に転送するSSLトンネルにマップします。このようにして、<code><a class="external" href="http://127.0.0.1:8888" rel="freelink">http://127.0.0.1:8888</a></code>に立てられた単一のサーバは異なる場所を示す何十ものサーバをエミュレートします。</p> -<p>MochitestのSSL関連の機能や、署名を変更する方法、新しいhttpsのサーバを追加する手順などのさらに詳細な説明については、<a class="internal" href="/ja/docs/Modifying_Mochitest_SSL_behavior" title="Modifying Mochitest SSL behavior">MochitestのSSLの動作の変更</a>を参照してください。</p> -<h3 id="stacks" name="stacks">スタックトレースの取得</h3> -<p>Mochitest がクラッシュした時のスタックトレースを取得する方法は以下の通りです:</p> -<ol> - <li><code><a class="external" href="http://hg.mozilla.org/build/tools/file/b680aba8e49a/breakpad/" rel="freelink">http://hg.mozilla.org/build/tools/fi...e49a/breakpad/</a></code> からあなたのプラットフォーム用の <code>minidump_stackwalk</code> のバイナリを取得します。</li> - <li>環境変数 <code>MINIDUMP_STACKWALK</code> にそのバイナリのパスを指定します。</li> -</ol> -<p>もし結果のスタックトレースが行番号を含んでいない場合には、必須のシンボルファイルを生成するために <code>make buildsymbols</code> を実行して下さい。詳しくは <a href="/ja/docs/Building_Firefox_with_Debug_Symbols" title="Building Firefox with Debug Symbols">Firefox をデバッグ用のシンボル付きでビルドする</a>を参照して下さい。</p> -<h3 id="FAQ" name="FAQ">FAQ</h3> -<h4 id="What_if_my_tests_aren.27t_done_when_onload_fires.3F" name="What_if_my_tests_aren.27t_done_when_onload_fires.3F">onloadイベントの時に実行されるようなテストが動かない時はどうすればいいですか?</h4> -<p>onloadイベントが発行される前に <code>SimpleTest.waitForExplicitFinish()</code> を呼んでください。その場合は、テストを完了したら <code>SimpleTest.finish()</code> を呼んでください。</p> -<h4 id="What_if_I_need_to_change_a_preference_to_run_my_test.3F" name="What_if_I_need_to_change_a_preference_to_run_my_test.3F">テストの中で設定(Preference)を変える必要がある時はどうすればいいですか?</h4> -<pre class="eval">netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); -var prefService = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService); -var domBranch = prefService.getBranch("dom."); -var oldVal = domBranch.getIntPref("max_script_run_time"); -domBranch.setIntPref("max_script_run_time", 0); - -// 必要な処理(テストの内容) - -domBranch.setIntPref("max_script_run_time", oldVal); -</pre> -<p>あるテストを実行している間だけ設定を変更する必要がある場合には、make target <code>mochitest-plain</code> を実行する時に環境変数 <code>EXTRA_TEST_ARGS</code> を設定して下さい。</p> -<pre>EXTRA_TEST_ARGS='--setpref=javascript.options.jit.chrome=false' -</pre> -<p>文字列型の設定を変更する必要がある場合は、バックスラッシュでエスケープしたダブルクォートで文字列を括ります:</p> -<pre>EXTRA_TEST_ARGS='--setpref=webgl.osmesa=\"libOSMesa.so.6\"' -</pre> -<h4 id="Can_tests_be_run_under_a_chrome_URL.3F" name="Can_tests_be_run_under_a_chrome_URL.3F">テストはChrome URLの中でも実行できますか?</h4> -<p>はい。 <code>python runtests.py --chrome</code> を使ってください。ただしXPCOMをテストするための最初の選択肢としては<a href="/ja/docs/Writing_xpcshell-based_unit_tests" title="Writing_xpcshell-based_unit_tests">xpcshellテストハーネス</a>を使うべきであることを心に留めておいてください。Mochitestが必要になるのは、イベントやブラウザの機能、ネットワーク関係の機能がテストに必要な場合だけです。</p> -<h4 id="How_can_I_get_around_the_error_.22Permission_denied_to_get_property_XPCComponents.classes.22.3F" name="How_can_I_get_around_the_error_.22Permission_denied_to_get_property_XPCComponents.classes.22.3F">どうすれば「Permission denied to get property XPCComponents.classes」エラーを回避できますか?</h4> -<p>以下の行をあなたの書いたテストファイル(およびそれぞれのイベントハンドラ)に書き加えてください。すべてのXPCOMが利用できるようになるでしょう。</p> -<pre>netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');</pre> -<p>この方法は明らかに不便です。これこそが、テスト実行用にテストをChromeのディレクトリにコピーするのに必要なハックを行おうと私たちが作業している理由です。</p> -<h4 id="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F" name="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F">Mochitestで使われるファイルのHTTPヘッダやステータスを変えるにはどうすればよいですか?</h4> -<p>テキストファイルを作成して、ヘッダを変えたいと思っているファイルの隣に置いてください。テキストファイルの名前はヘッダを変えようとしているファイルの名前の末尾に <code>^headers^</code> を付けた物にします。例えば <code>foo.jpg</code> というファイルがある場合は、テキストファイルの名前は <code>foo.jpg^headers^</code> となります。(ヘッダ指定用のファイルはテストの中で他の目的では使わないでください。HTTPサーバの不可視ファイル機能は、「^」で名前が終わっているすべてのファイルを見えなくするからです。)そして、あなたが設定したいヘッダおよび(もしくは)ステータスをそのファイルの内容として記述してください。例:</p> -<pre class="eval">HTTP 404 Not Found -Content-Type: text/html -Random-Header-of-Doom: 17 -</pre> -<p>最初の行はそのファイルに関連付けられたHTTPステータスと(任意で)説明文を設定しています。この行は省略可能で、通常のレスポンスステータスと説明文で問題ない場合は記述する必要はありません。他の行は、レスポンスヘッダ中で追加または上書きしたい(後者の最も典型的な例はContent-Typeヘッダでしょう)、そのファイルについて説明する追加のヘッダです。様式はHTTPの仕様でのものと同じですが、HTTPの行末を示す必要は無く、一つのヘッダを複数書く事はできません(同じヘッダを複数回多場合は最後の物だけが有効となります)。 ファイルはUnixのテキストファイルの様式に沿って一つの空行で終わる場合がありますが、それは厳密に必要というわけではありません。</p> -<h4 id="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F" name="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F">複数のドメインに渡って実行されるテストでのみ発生する事象をテストするにはどうすればよいですか?</h4> -<p>Mochitestのハーネスはテストを行うために一つのWebサーバだけを起動しますが、proxy autoconfigの働きにより、すべてのテストファイルは異なるドメイン、異なるポートで実行できます。これらのサーバ(権限昇格のための機能に関する2つの例外を除く)で動作しているあらゆるテストは自動的に、UniversalXPConnectなどの特権の取得を要求する事ができるようになります。テストの実行が可能で、<code><span class="nowiki">http://localhost:8888</span></code>と全く同じコンテンツを提供するドメインとポートの完全なリストは、{{ Source("build/pgo/server-locations.txt") }}で指定されます。</p> -<h4 id="How_do_I_write_tests_that_check_header_values.2C_method_types.2C_etc._of_HTTP_requests.3F" name="How_do_I_write_tests_that_check_header_values.2C_method_types.2C_etc._of_HTTP_requests.3F">HTTPリクエストのヘッダの値、メソッドの種類などを確認するテストはどのように書けばよいですか?</h4> -<p>その種のテストを書くには、それ用のSJS(server-side JavaScript)を書くだけでよいです。SJSは <code>sjs</code> という拡張子を持つ単純なJavaScriptファイルで、サンドボックス内に読み込まれます。スクリプト内でグローバルな名前空間において <code>handleRequest</code> という名前で定義された関数は、リクエストとレスポンスのオブジェクトを伴って実行され、そのスクリプトはリクエストの情報に基づいてレスポンスを生成します。</p> -<p>以下は単純なSJSの例です:</p> -<pre class="eval">function handleRequest(request, response) -{ - // avoid confusing cache behaviors - response.setHeader("Cache-Control", "no-cache", false); - - response.setHeader("Content-Type", "text/plain", false); - response.write("Hello world!"); -} -</pre> -<p>引数として渡されるリクエストとレスポンスのオブジェクトが持つ正確なプロパティは、<code>{{ Source("netwerk/test/httpserver/nsIHttpServer.idl", "nsIHttpServer.idl") }}</code>で <code>nsIHttpRequestMetadata</code> と <code>nsIHttpResponse</code> インターフェースとして定義されています。ブラウザはあなたが書いたスクリプトによって生成されたレスポンスを自由にキャッシュする事に気をつけてください。もしSJSが同じURLへの複数のリクエストに対して異なるデータを返したい場合は、 Mochitestの同じセッションで手動で複数回実行された際にテストが意図せず失敗してしまう事を防ぐために、レスポンスに <code>Cache-Control: no-cache</code> ヘッダを加えるとよいでしょう。</p> -<p>reftestにおけるSJSの簡単な利用例としては、<code>{{ Source("modules/libpr0n/test/reftest/generic/check-header.sjs", "check-header.sjs") }}</code>があります。</p> -<h4 id="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F" name="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F">異なるサーバサイドスクリプトの間で状態を引き継ぐにはどうすればよいですか?</h4> -<p>Mochitest のサーバサイドスクリプトは、それぞれの読み込みごとに新たに生成されるサンドボックスの中で実行されます。そのため、ハンドラの中で定義されたいかなる変数も、それぞれの読み込みごとの実行コンテキストを超えて状態を保持し続ける事はありません。状態を保存する手助けとしては、グローバルオブジェクトにおいて定義されている <code>getState(k)</code> および <code>setState(k, v)</code> メソッドを利用します。これらのメソッドはキーと値(どちらも文字列を使用)によるストレージの仕組みをサーバに提供します。(オブジェクトやその他の構造化されたデータを保存するにはJSONを使用してください。)Mochitest における無数のサーバが、プロキシとトンネリングによってそう見せられているだけで実際には単一のサーバであるために、保存された状態はすべてのサーバで常に同じとなることに注意してください。</p> -<p><code>getState</code> および <code>setState</code> メソッドは、サーバサイドスクリプトが読み込まれた時点のパスでスコープが決まります。<code>/foo/bar/baz</code>, <code>/foo/bar/baz?quux</code>, <code>/foo/bar/baz#fnord</code> のような絶対 URL はすべて同じ状態を共有します(この場合 <code>/foo/bar</code> の状態はそれらとは別に保持されます)。テスト同士の依存性とバグの発生を避けるためにも、可能な限り常に、状態はパスごとに使用するべきです。しかしながら、2つのスクリプトが関連して協調動作することが必要であるなどのレアケースで、そのスクリプトから分岐に応じた挙動を要求するための専用のクエリ文字列を利用できないような場合もあります。<em>このような用途についてのみ</em>、あなたはグローバルオブジェクトで定義されている <code>getSharedState(k, v)</code> および <code>setSharedState(k, v)</code> メソッドを使う事ができます。このサーバ全体で共有される状態へのアクセスについては何も制限はかけられておらず、どのスクリプトからも新しい状態を設定でき、どのスクリプトからもそれを削除できます。衝突を避けるために、あなたは名前空間(意図しない衝突を避けるため、これもテスト用の物を作って下さい)をキーに含める事が望ましいです。例えば、ある HTML5 ビデオのテストで状態を共有する必要がある場合なら、<span style="font-family: monospace;">dom.media.video</span><code>:sharedState</code> のようなキーを使う事になります。</p> -<p>より強力な状態保存のための機能として、あらゆる <code>nsISupports</code> 形式のオブジェクトを保持することができる <code>getObjectState(k)</code> および <code>setObjectState(k, v)</code> メソッドもあります。これらのメソッドは <code>nsIHttpServer</code> インターフェースにこの形式で存在していますが、SJS レスポンス処理用のサーバで使われるサンドボックスオブジェクトの制限のため、前者のメソッドは SJS リクエストハンドラのグローバル環境においては、<code>getObjectState(k, callback)</code> という形式(<code>callback</code> は、第1引数で示されたキーに対応するオブジェクトを引数として <code>getObjectState</code> の内部で呼ばれるコールバック関数)で存在します。この、値のマッピングのために、値が XPCOM オブジェクトである必要がある必要があることに注意して下さい。<code>QueryInterface</code> メソッドを持たない任意の JavaScript オブジェクトは利用できません。JavaScript のオブジェクトを保持させたい場合には、<code>QueryInterface</code> の実装を持ち、XPConnect でラップされたオブジェクトから実際の JavaScript オブジェクトを取得するための <a class="internal" href="/ja/docs/wrappedJSObject" title="wrappedJSObject">wrappedJSObject</a> プロパティも持つオブジェクトを使って下さい。</p> -<p>httpd.js によって提供される状態保存の仕組みの詳細については、{{ Source("netwerk/test/httpserver/nsIHttpServer.idl") }} および <code>nsIHttpServer.get(Shared|Object)?State</code> メソッドを参照して下さい。</p> -<h4 id="非同期にレスポンスを返す_SJS_スクリプトはどのように書けばいいですか?">非同期にレスポンスを返す SJS スクリプトはどのように書けばいいですか?</h4> -<p>例えば一定の時間待つという風に、リクエストに対するレスポンスを非同期に返したいという場合があるでしょう。これは <code>handleRequest()</code> 関数に渡される <code>response</code> オブジェクトの <code>processAsync()</code> および <code>finish()</code> 関数によって実現できます。</p> -<p><code>processAsync()</code> は必ず、<code>handleRequest()</code> からリターンする前に呼ばれなくてはなりません。この関数を実行すると、さらに追加のレスポンスを送信するために、request オブジェクトのメソッドを好きな時点で呼ぶ事ができるようになります。必要なレスポンスを送信し終えたら、<code>finish()</code> 関数を呼んでください。例えば、上で説明した <code>setState()</code>/<code>getState()</code> 関数を、request を保存して、後でその内容を参照し、さらに終了するために利用できます。しかしながら、ブラウザはリクエストを異なる順番で行う事があり、そのためあなたが書くコードは時々起こる失敗を避けるよう耐性を高くしなければならないということに気をつけてください。</p> -<pre class="eval">var timer = null; - -function handleRequest(request, response) -{ - response.processAsync(); - response.setHeader("Content-Type", "text/plain", false); - response.write("hello..."); - - timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); - timer.initWithCallback(function() - { - response.write("world!"); - response.finish(); - }, 5 * 1000 /* ミリ秒 */, Components.interfaces.nsITimer.TYPE_ONE_SHOT); -} -</pre> -<p>より詳しい情報については、{{ Source("netwerk/test/httpserver/nsIHttpServer.idl") }} にある <code>processAsync()</code> 関数の説明を参照してください。</p> -<h4 id="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F" name="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F">SJS スクリプトからサーバ上にあるファイルに XPCOM オブジェクトとしてアクセスするにはどうすればよいですか?(Gecko 1.9.3 およびそれ以降の場合)</h4> -<p>ファイルにアクセスする必要がある場合(例えば、画像データはファイルとして保存しておく方が、SJS スクリプトの中に直接画像を埋め込むよりも扱いが簡単です)、Mochitest で実行されている SJS スクリプトで最初から定義済みの <code>SERVER_ROOT</code> オブジェクトステートを利用して下さい:</p> -<pre class="eval">function handleRequest(req, res) -{ - var file; - getObjectState("SERVER_ROOT", function(serverRoot) - { - file = serverRoot.getFile("tests/content/media/test/320x240.ogv"); - }); - - // この時点で file は指定されたファイルを参照する XPCOM オブジェクトになっています。 - res.write("file: " + file); -} -</pre> -<p>指定するパスは、httpd.js が取り扱うルートディレクトリからの相対パスとして扱われ、その位置に対応する<code>nsIFile</code> のオブジェクトが返されます。この時は、パスの書き間違いに注意してください。ファイルのオブジェクトはパス文字列を保持しているだけなので、指定したファイルは実際に存在している必要がありません。</p> diff --git a/files/ja/mozilla/projects/mochitest/specialpowers/index.html b/files/ja/mozilla/projects/mochitest/specialpowers/index.html deleted file mode 100644 index c3b6141d06..0000000000 --- a/files/ja/mozilla/projects/mochitest/specialpowers/index.html +++ /dev/null @@ -1,471 +0,0 @@ ---- -title: SpecialPowers -slug: Mozilla/Projects/Mochitest/SpecialPowers -tags: - - Mochistest - - NeedsContent - - QA - - 'QA:Tools' - - Reference -translation_of: Mozilla/Projects/Mochitest/SpecialPowers ---- -<p>SpecialPowers は <a href="/en/Mochitest" title="en/Mochitest">Mochitest</a> のテストで利用可能な API 群の 1 つです。Mochitest は通常の Web ページとしてかけるようにする予定です。しかし、セキュリティ的な理由から権限の無い通常の Web ページではテストできないものもあります。そういった場合に SpecialPowers API を使う事で通常の Web ページでは触れることのできない操作をすることができます。</p> - -<div class="note">もし Mochitest で幅広い権限を必要とするテストをする場合は、変りに <a href="/en/Chrome_tests" title="en/Chrome tests">Chrome Mochitest</a> を使う方が良いでしょう。</div> - -<h2 id="Method_overview">Method overview</h2> - -<h3 id="Preference_APIs">Preference APIs</h3> - -<table class="standard-table" style="height: 415px; width: 460px;"> - <tbody> - <tr> - <td><code>void pushPrefEnv(inPrefs, callback);</code></td> - </tr> - <tr> - <td><code>void popPrefEnv(callback);</code></td> - </tr> - <tr> - <td><code>void flushPrefEnv(callback);</code></td> - </tr> - <tr> - <td><code>bool getBoolPref(aPrefName);</code></td> - </tr> - <tr> - <td><code>int getIntPref(aPrefName);</code></td> - </tr> - <tr> - <td><code>string getCharPref(aPrefName);</code></td> - </tr> - <tr> - <td><code>any getComplexValue(aPrefName);</code></td> - </tr> - <tr> - <td><code>void setBoolPref(aPrefName, aValue);</code></td> - </tr> - <tr> - <td><code>void setIntPref(aPrefName, aValue);</code></td> - </tr> - <tr> - <td><code>void setCharPref(aPrefName, aValue);</code></td> - </tr> - <tr> - <td><code>void setComplexValue(aPrefName, aValue);</code></td> - </tr> - <tr> - <td><code>void clearUserPref(aPrefName);</code></td> - </tr> - </tbody> -</table> - -<h3 id="Permission_APIs">Permission APIs</h3> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void pushPermissions(inPermissions, callback);</code></td> - </tr> - <tr> - <td><code>void popPermissions(callback);</code></td> - </tr> - <tr> - <td><code>void flushPermissions(callback);</code></td> - </tr> - <tr> - <td><code>void addPermission(type, allow, arg);</code></td> - </tr> - <tr> - <td><code>void removePermission(type, arg);</code></td> - </tr> - <tr> - <td><code>bool hasPermission(type, arg);</code></td> - </tr> - <tr> - <td><code>bool testPermission(type, value, arg);</code></td> - </tr> - <tr> - <td><code>void setFullscreenAllowed(document);</code></td> - </tr> - <tr> - <td><code>void removeFullscreenAllowed(document);</code></td> - </tr> - </tbody> -</table> - -<h3 id="Event_Listener_Observer_APIs">Event Listener / Observer APIs</h3> - -<p>TBD</p> - -<h3 id="Garbage_Collection_APIs">Garbage Collection APIs</h3> - -<p>TBD</p> - -<h3 id="Privilege_Wrapper_APIs">Privilege Wrapper APIs</h3> - -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="#wrap">Object wrap(Object);</a></code></td> - </tr> - </tbody> -</table> - -<h3 id="XPCOM_Components_APIs">XPCOM Components APIs</h3> - -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="#Cc">Cc</a></code></td> - </tr> - <tr> - <td><code><a href="#Ci">Ci</a></code></td> - </tr> - <tr> - <td><code><a href="#Cr">Cr</a></code></td> - </tr> - <tr> - <td><code><a href="#Cu">Cu</a></code></td> - </tr> - </tbody> -</table> - -<h3 id="Log_APIs">Log APIs</h3> - -<p>TBD</p> - -<h3 id="Environment_APIs">Environment APIs</h3> - -<table class="standard-table" style="height: 250px; width: 463px;"> - <tbody> - <tr> - <td><code>bool isMainProcess();</code></td> - </tr> - <tr> - <td><code>string getMozFullPath(file);</code></td> - </tr> - <tr> - <td><code>bool isWindowPrivate(aWindow);</code></td> - </tr> - <tr> - <td><code>bool isBackButtonEnabled(aWindow);</code></td> - </tr> - <tr> - <td><code>int assertionCount();</code></td> - </tr> - <tr> - <td><code>void removeExpectedCrashDumpFiles(aExpectingProcessCrash);</code></td> - </tr> - <tr> - <td><code>string[] findUnexpectedCrashDumpFiles();</code></td> - </tr> - </tbody> -</table> - -<h3 id="Focus_Management_APIs">Focus Management APIs</h3> - -<p>TBD</p> - -<h3 id="Mock_APIs">Mock APIs</h3> - -<p>TBD</p> - -<h3 id="Form_History_APIs">Form History APIs</h3> - -<p>TBD</p> - -<h3 id="Snapshot_APIs">Snapshot APIs</h3> - -<p>TBD</p> - -<h3 id="Clipboard_APIs">Clipboard APIs</h3> - -<p>TBD</p> - -<h3 id="Console_APIs">Console APIs</h3> - -<p>TBD</p> - -<h3 id="Layout_APIs">Layout APIs</h3> - -<p>TBD</p> - -<h3 id="Frame_Message_APIs">Frame Message APIs</h3> - -<p>TBD</p> - -<h3 id="Apps_APIs">Apps APIs</h3> - -<p>TBD</p> - -<h3 id="Other_APIs">Other APIs</h3> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>XMLHttpRequest createSystemXHR();</code></td> - </tr> - <tr> - <td><code>void quit();</code></td> - </tr> - <tr> - <td><code>DOMWindowUtils getDOMWindowUtils(window);</code></td> - </tr> - <tr> - <td><code>void executeSoon(aFun, aWindow);</code></td> - </tr> - <tr> - <td><code>object getDOMRequestService();</code></td> - </tr> - <tr> - <td><code>void openDialog(aWindow, aArg);</code></td> - </tr> - <tr> - <td><code>string sanityCheck();</code></td> - </tr> - </tbody> -</table> - -<h2 id="Attributes">Attributes</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Attribute</th> - <th scope="col">Type</th> - <th scope="col">Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>DOMWindowUtils</code></td> - <td> </td> - <td> </td> - </tr> - <tr> - <td><code>Services</code></td> - <td> </td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Methods">Methods</h2> - -<h3 id="Preference_APIs_2">Preference APIs</h3> - -<p>内部的に、このメソッドがどのように使われているかは {{ interface("nsIPrefBranch") }} のドキュメントを参照してください。</p> - -<h4 id="getBoolPref(aPrefName)"><code>getBoolPref(aPrefName)</code></h4> - -<p>boolean 型として aPrefName のプリファレンス値を取得します。</p> - -<h4 id="getIntPref(aPrefName)"><code>getIntPref(aPrefName)</code></h4> - -<p>integer 型として aPrefName のプリファレンス値を取得します。</p> - -<h4 id="getCharPref(aPrefName)"><code>getCharPref(aPrefName)</code></h4> - -<p>string 型として aPrefName のプリファレンス値を取得します。</p> - -<h4 id="getComplexValue(aPrefName)"><code>getComplexValue(aPrefName)</code></h4> - -<p>XPCOM オブジェクトとして aPrefName のプリファレンス値を取得します。</p> - -<h4 id="setBoolPref(aPrefName_aValue)"><code>setBoolPref(aPrefName, aValue)</code></h4> - -<p>boolean 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p> - -<h4 id="setIntPref(aPrefName_aValue)"><code>setIntPref(aPrefName, aValue)</code></h4> - -<p>integer 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p> - -<h4 id="setCharPref(aPrefName_aValue)"><code>setCharPref(aPrefName, aValue)</code></h4> - -<p>string 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p> - -<h4 id="setComplexValue(aPrefName_aValue)"><code>setComplexValue(aPrefName, aValue)</code></h4> - -<p>XPCOM オブジェクトの aValue を aPrefName をキーとしてプリファレンスへ設定します。</p> - -<h4 id="clearUserPref(aPrefName)"><code>clearUserPref(aPrefName)</code></h4> - -<p>aPrefName のプリファレンス値を初期値に戻します。</p> - -<h3 id="Permission_APIs_2">Permission APIs</h3> - -<p>TBD</p> - -<h3 id="Event_Listener_Observer_APIs_2">Event Listener / Observer APIs</h3> - -<h4 id="addChromeEventListener(type_listener_capture_allowUntrusted)"><code>addChromeEventListener(type, listener, capture, allowUntrusted)</code></h4> - -<p>TabChildGlobal オブジェクトにイベントリスナーを登録します。</p> - -<h4 id="removeChromeEventListener(type_listener_capture)"><code>removeChromeEventListener(type, listener, capture)</code></h4> - -<p>TabChildGlobal オブジェクトからイベントリスナーを除去します。</p> - -<h3 id="Garbage_Collection_APIs_2">Garbage Collection APIs</h3> - -<h4 id="gc()"><code>gc()</code></h4> - -<p>強制的にガベージコレクションを発生させます。</p> - -<h3 id="Privilege_Wrapper_APIs_2">Privilege Wrapper APIs</h3> - -<h4 id="Object_wrap(Object)"><code>Object wrap(Object)</code></h4> - -<p>chrome オブジェクトにアクセスするために chrome オブジェクトをラップします。(例えば) XPCOM コンポーネントを返すメソッドの戻り値にアクセスするためには必要です。</p> - -<h3 id="XPCOM_Components_APIs_2">XPCOM Components APIs</h3> - -<h4 id="Cc"><code>Cc</code></h4> - -<p><code>Components.classes</code> の値を取得できます。これは chrome コード内で取得できるものと同じです。</p> - -<h4 id="Ci"><code>Ci</code></h4> - -<p><code>Components.interfaces</code> の値を取得できます。これは chrome コード内で取得できるものと同じです。</p> - -<h4 id="Cr"><code>Cr</code></h4> - -<p><code>Components.results </code>の値を取得できます。これは chrome コード内で取得できるものと同じです。</p> - -<h4 id="Cu"><code>Cu</code></h4> - -<p><code>Components.utils </code>の値を取得できます。これは chrome コード内で取得できるものと同じです。</p> - -<h3 id="Log_APIs_2">Log APIs</h3> - -<p>TBD</p> - -<h3 id="Environment_APIs_2">Environment APIs</h3> - -<p>TBD</p> - -<h3 id="Focus_Management_APIs_2">Focus Management APIs</h3> - -<p>TBD</p> - -<h3 id="Mock_APIs_2">Mock APIs</h3> - -<h4 id="MockFilePicker"><code>MockFilePicker</code></h4> - -<p>これは読み込み・保存のコードをテストするために、標準 File Picker をスクリプトで制御可能にするものに置換します。これを使うと、以下のコードをテストすることができます。</p> - -<pre class="brush:js;">var MockFilePicker = SpecialPowers.MockFilePicker; -MockFilePicker.reset(); // You must call reset before each test -</pre> - -<p><a class="link-https" href="https://bugzilla.mozilla.org/attachment.cgi?id=544963&action=diff" title="https://bugzilla.mozilla.org/attachment.cgi?id=544963&action=diff">このパッチ</a> ではMockFilePicker の使い方と XPCShell テストの使い方の良い例です。<code> testing/mochitest/MockFilePicker.jsm</code> のコードが参考になるでしょう。</p> - -<h3 id="Form_History_APIs_2">Form History APIs</h3> - -<p>TBD</p> - -<h3 id="Snapshot_APIs_2">Snapshot APIs</h3> - -<p>TBD</p> - -<h3 id="Clipboard_APIs_2">Clipboard APIs</h3> - -<p>TBD</p> - -<h3 id="Console_APIs_2">Console APIs</h3> - -<p>TBD</p> - -<h3 id="Layout_APIs_2">Layout APIs</h3> - -<p>TBD</p> - -<h3 id="Frame_Message_APIs_2">Frame Message APIs</h3> - -<h4 id="loadChromeScript()"><code>loadChromeScript()</code></h4> - -<p>TBD</p> - -<h3 id="Apps_APIs_2">Apps APIs</h3> - -<p>TBD</p> - -<h3 id="Other_APIs_2">Other APIs</h3> - -<h4 id="createSystemXHR()"><code>createSystemXHR()</code></h4> - -<p>完全な "system privileges" を持った XMLHttpRequest を生成して返します。言い換えれば以下の事が可能になります。</p> - -<ul> - <li>制限なくクロスサイトリクエスト (cross-site requests) を要求できます。すなわちターゲットとなるサーバーは CORS をサポートする必要がありません。</li> - <li>xhr.setRequestHeader を使ってどんなヘッダーでも追加することができます。</li> - <li>xhr.getResponseHeader と xhr.getAllResponseHedaders を使ってすべてのレスポンスにアクセスできます。</li> - <li>xhr.responseXML のプロパティを使って XUL コンテンツの読み込み・パースができます。</li> - <li><code>referer</code> (sic) ヘッダー無しでリクエストを要求できます。もし <code>referer</code> ヘッダーを設定したい場合は、xhr.setRequestHeader を使って手動で設定する必要があります。</li> -</ul> - -<p>しかし、xhr オブジェクトをパースしたドキュメントや xhr.responseXML からアクセスしたドキュメントは null principal として生成されています。そのため、ドキュメントでできることに制限があります。</p> - -<h4 id="sanityCheck()"><code>sanityCheck()</code></h4> - -<p>"foo" という文字列を返します。</p> - -<h2 id="Adding_new_APIs">Adding new APIs</h2> - -<p>もし現在定義されていない権限が必要な関数をテストしたい場合、SpecialPowers オブジェクトに新しい API を追加することができます。</p> - -<div class="note">SpecialPowers API は Electrolysis(e10s) プロジェクトでは前方互換として設計されています。そのためコンテンツは別プロセスとして動作します。(Firefox Mobile と同様)。変更したもの全てについてこれを考慮しなくてはいけません。考慮しない場合は許可されることは無いでしょう。</div> - -<p>プロセス外 (out-of-process) のコンテンツをサポートするために、SpecialPowers の実装は以下の 2 つのファイルに分離されています。</p> - -<ul> - <li>親プロセスで常に動作する {{ Source("testing/specialpowers/components/SpecialPowersObserver.js", "SpecialPowersObserver.js") }}</li> - <li>コンテンツプロセスで動作し、<a href="/en/The_message_manager#The_content_script" title="en/The message manager#The content script">コンテンツスクリプト</a> である{{ Source("testing/specialpowers/content/specialpowers.js", "specialpowers.js") }}</li> -</ul> - -<p>両方のファイルは chrome 権限で実行されます。しかし XPCOM API は恐らくコンテンツプロセスでは利用できないでそう。もし特殊な API でそれを利用する場合は Electrolysis や Mobile チームに相談するべきです。プロセス間メッセージの仕組みについての情報を知りたい場合、 <a href="/en/The_message_manager" title="en/The message manager">Message Manager</a> のドキュメントを参照してください。</p> - -<p>{{ interface("nsIScreenManager") }} インターフェイスの <code>numberOfScreens</code> をアクセス可能にする修正を例にしてみましょう。このインターフェイスはコンテンツアプリではアクセス不可能ですので、サンプルコードでそれを可能にしてみましょう。まず初めに、コンテンツで利用できるように SpecialPowers に新しい API を定義した方が良いでしょう。このオブジェクトは {{ Source("testing/specialpowers/content/specialpowers.js", "the content script") }} に定義します。</p> - -<div class="note">SpecialPowers は標準の JavaScript オブジェクトです。そのため、関数・属性・セッター・ゲッターを自由に追加することができます。特殊な <span id="the-code"><span class="a"><code>__exposedProps__</code> property のようにアンダースコア("_") から始まるプロパティを定義することでプロパティを隠すことができます。アンダースコアから始まる関数もプライベートになります。</span></span></div> - -<p>最初に<code>SpecialPowers</code> に <code>numberOfScreens</code> のゲッターを追加しましょう。単純に chrome プロセスにブロッキングメッセージを送信し、応答として値を返すだけです。</p> - -<pre class="brush:js;" lang="en"><span id="the-code"><span class="v">var </span><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=SpecialPowers">SpecialPowers</a> = { - // existing APIs - //... - -</span><span id="the-code"> // Provide nsIScreenManager.numberOfScreens - get numberOfScreens() { - // You could pass additional parameters in the second parameter, consult the <a title="en/The message manager">message manager</a> documentation for more details. - // Ideally this would be a memoizing getter, that's somewhat out of scope for this document. - return sendSyncMessage("SPNumberOfScreens", {})[0]; - }</span> -<span id="the-code">}; -</span></pre> - -<p>このとき、対応するメッセージのハンドラーを {{ Source("testing/specialpowers/components/SpecialPowersObserver.js", "chrome observer script") }} に定義する必要があります。<span id="the-code"><code>SpecialPowersObserver.observe</code> </span>関数の中で、以下の実在するメッセージを登録します。</p> - -<pre class="brush:js;" lang="en"><span id="the-code"><span class="c">// Register for any messages our API needs us to handle -</span></span><span id="the-code"><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=messageManager">messageManager</a>.<a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=addMessageListener">addMessageListener</a>(<span class="s">"SPPrefService"</span>, <span class="v">this)</span>; -</span><span id="the-code"><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=messageManager">messageManager</a>.<a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=addMessageListener">addMessageListener</a>(<span class="s">"SPNumberOfScreens"</span>, <span class="v">this)</span>;</span> -</pre> - -<p>そして、<code><span id="the-code">SpecialPowersObserver.receiveMessage</span></code> 関数の中で、新しいメッセージの分岐を追加し結果を返します。</p> - -<pre class="brush:js;" lang="en"><span id="the-code">receiveMessage: <span class="v">function(</span>aMessage) { -</span><span id="the-code"><span class="v"> switch(aMessage.name) </span>{ - <span class="v">case </span><span class="s">"SPPrefService"</span>:</span> - // existing code... - - case "SPNumberOfScreens": - var screenManager = Components.classes["@mozilla.org/gfx/screenmanager;1"] - .getService(Components.interfaces.nsIScreenManager);<span id="the-code">} - return screenManager.numberOfScreens; - - default: -</span></pre> - -<p>これで終わりです。<br> - この修正を反映させるために、testing/mochitest ディレクトリを再ビルドする必要があるでしょう。これで Mochitest で<code>SpecialPowers.numberOfScreens</code> を利用することができるようになります。</p> - -<div class="note">新しい API を追加後に、このドキュメントに新 API の説明を書くことを忘れないで下さい。</div> diff --git a/files/ja/mozilla/projects/nspr/about_nspr/index.html b/files/ja/mozilla/projects/nspr/about_nspr/index.html deleted file mode 100644 index 179b222508..0000000000 --- a/files/ja/mozilla/projects/nspr/about_nspr/index.html +++ /dev/null @@ -1,476 +0,0 @@ ---- -title: NSPRについて -slug: Mozilla/Projects/NSPR/About_NSPR -translation_of: Mozilla/Projects/NSPR/About_NSPR ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>NetScape Portable Runtime (NSPR) provides platform independence for non-GUI operating system facilities. These facilities include threads, thread synchronization, normal file and network I/O, interval timing and calendar time, basic memory management (malloc and free) and shared library linking.</p> - -<h3 id="History" name="History">歴史</h3> - -<p>A good portion of the library's purpose, and perhaps the primary purpose in the Gromit environment, was to provide the underpinnings of the Java VM, more or less mapping the<em>sys layer</em> that Sun defined for the porting of the Java VM to various platforms. NSPR went beyond that requirement in some areas and since it was also the platform independent layer for most of the servers produced by Netscape. It was expected and preferred that existing code be restructured and perhaps even rewritten in order to use the NSPR API. It is not a goal to provide a platform for the porting into Netscape of externally developed code.</p> - -<p>At the time of writing the current generation of NSPR was known as NSPR20. The first generation of NSPR was originally conceived just to satisfy the requirements of porting Java to various host environments. NSPR20, an effort started in 1996, built on that original idea, though very little is left of the original code. (The "20" in "NSPR20" does not mean "version 2.0" but rather "second generation".) Many of the concepts have been reformed, expanded, and matured. Today NSPR may still be appropriate as the platform dependent layer under Java, but its primary application is supporting clients written entirely in C or C++.</p> - -<h3 id="How_It_Works" name="How_It_Works">How It Works</h3> - -<p>NSPR's goal is to provide uniform service over a wide range of operating system environments. It strives to not export the<em>lowest common denominator</em> , but to exploit the best features of each operating system on which it runs, and still provide a uniform service across a wide range of host offerings.</p> - -<h4 id="Threads" name="Threads">Threads</h4> - -<p>Threads are the major feature of NSPR. The industry's offering of threads is quite sundry. NSPR, while far from perfect, does provide a single API to which clients may program and expect reasonably consistent behavior. The operating systems provide everything from no concept of threading at all up to and including sophisticated, scalable and efficient implementations. NSPR makes as much use of what the systems offer as it can. It is a goal of NSPR that NSPR impose as little overhead as possible in accessing those appropriate system features.</p> - -<h4 id="Thread_synchronization" name="Thread_synchronization">Thread synchronization</h4> - -<p>Thread synchronization is loosely based on Monitors as described by C.A.R. Hoare in<em>Monitors: An operating system structuring concept</em> , Communications of the ACM, 17(10), October 1974 and then formalized by Xerox' Mesa programming language ("Mesa Language Manual", J.G. Mitchell et al, Xerox PARC, CSL-79-3 (Apr 1979)). This mechanism provides the basic mutual exclusion (mutex) and thread notification facilities (condition variables) implemented by NSPR. Additionally, NSPR provides synchronization methods more suited for use by Java. The Java-like facilities include monitor<em>reentrancy</em> , implicit and tightly bound notification capabilities with the ability to associate the synchronization objects dynamically.</p> - -<h4 id="I.2FO" name="I.2FO">I/O</h4> - -<p>NSPR's I/O is a slightly augmented BSD sockets model that allows arbitrary layering. It was originally intended to export synchronous I/O methods only, relying on threads to provide the concurrency needed for complex applications. That method of operation is preferred though it is possible to configure the network I/O channels as<em>non-blocking</em> in the traditional sense.</p> - -<h4 id="Network_addresses" name="Network_addresses">Network addresses</h4> - -<p>Part of NSPR deals with manipulation of network addresses. NSPR defines a network address object that is Internet Protocol (IP) centric. While the object is not declared as opaque, the API provides methods that allow and encourage clients to treat the addresses as polymorphic items. The goal in this area is to provide a migration path between IPv4 and IPv6. To that end it is possible to perform translations of ASCII strings (DNS names) into NSPR's network address structures, with no regard to whether the addressing technology is IPv4 or IPv6.</p> - -<h4 id="Time" name="Time">Time</h4> - -<p>Timing facilities are available in two forms: interval timing and calendar functions.</p> - -<p>Interval timers are based on a free running, 32-bit, platform dependent resolution timer. Such timers are normally used to specify timeouts on I/O, waiting on condition variables and other rudimentary thread scheduling. Since these timers have finite namespace and are free running, they can wrap at any time. NSPR does not provide an<em>epoch</em> , but expects clients to deal with that issue. The<em>granularity</em> of the timers is guaranteed to be between 10 microseconds and 1 millisecond. This allows a minimal timer<em>period</em> in of approximately 12 hours. But in order to deal with the wrap-around issue, only half that namespace may be utilized. Therefore, the minimal usable interval available from the timers is slightly less than six hours.</p> - -<p>Calendar times are 64-bit signed numbers with units of microseconds. The<em>epoch</em> for calendar times is midnight, January 1, 1970, Greenwich Mean Time. Negative times extend to times before 1970, and positive numbers forward. Use of 64 bits allows a representation of times approximately in the range of -30000 to the year 30000. There is a structural representation (<em>i.e., exploded</em> view), routines to acquire the current time from the host system, and convert them to and from the 64-bit and structural representation. Additionally there are routines to convert to and from most well-known forms of ASCII into the 64-bit NSPR representation.</p> - -<h4 id="Memory_management" name="Memory_management">Memory management</h4> - -<p>NSPR provides API to perform the basic malloc, calloc, realloc and free functions. Depending on the platform, the functions may be implemented almost entirely in the NSPR runtime or simply shims that call immediately into the host operating system's offerings.</p> - -<h4 id="Linking" name="Linking">Linking</h4> - -<p>Support for linking (shared library loading and unloading) is part of NSPR's feature set. In most cases this is simply a smoothing over of the facilities offered by the various platform providers.</p> - -<h3 id="Where_It.27s_Headed" name="Where_It.27s_Headed">Where It's Headed</h3> - -<p>NSPR is applicable as a platform on which to write threaded applications that need to be ported to multiple platforms. The current implementation supports Macintosh (PPC), WIN-32 (WinNT, Win9x) and 20 versions of UNIX and is still expanding. The basic API is stable and expected to remain that way.</p> - -<p>NSPR is functionally complete and has entered a mode of sustaining engineering. As operating system vendors issue new releases of their operating systems, NSPR will be moved forward to these new releases by interested players.</p> - -<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - -<div class="originaldocinfo"> -<ul> - <li>Author: <a class="link-mailto" href="mailto:larryh@netscape.com">larryh@netscape.com</a></li> - <li>Last Updated Date: 2000</li> - <li>(Portions of the Introduction moved to the history section in 2012)</li> -</ul> -</div> - -<p> </p> diff --git a/files/ja/mozilla/projects/nspr/index.html b/files/ja/mozilla/projects/nspr/index.html deleted file mode 100644 index 0e8c2d9e74..0000000000 --- a/files/ja/mozilla/projects/nspr/index.html +++ /dev/null @@ -1,474 +0,0 @@ ---- -title: NSPR -slug: Mozilla/Projects/NSPR -tags: - - NSPR -translation_of: Mozilla/Projects/NSPR ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p><strong>Netscape Portable Runtime</strong> (<strong>NSPR</strong>) は、システムレベルや libc のような機能のためのプラットフォーム中立な API を提供します。この API は、Mozilla クライアント、Red Hat と Sun の多くのサーバアプリケーション、その他のソフトウェア製品の中で使われています。</p> - -<h2 class="Documentation" id="Documentation" name="Documentation">ドキュメンテーション</h2> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">NSPR について</a></dt> - <dd>このトピックでは一般的な用語で NSPR の目標とそれを実現する手段の一部について説明しています。</dd> - <dt><a href="Reference" title="NSPR_API_Reference">NSPR API リファレンス</a></dt> - <dd>各 API のパブリックマクロと、NSPR API の構造体と関数についての記述</dd> - <dt><a href="NSPR_build_instructions" title="NSPR_build_instructions">NSPR ビルド手順</a></dt> - <dd>ソースコードをチェックアウトしてビルドする方法</dd> - <dt><a href="Release_process" title="NSPR_release_process">NSPR リリース手順</a></dt> - <dd>NSPR のリリースの準備方法</dd> - <dt><a href="http://viewvc.svn.mozilla.org/vc/projects/mozilla.org/trunk/projects/nspr/" title="http://viewvc.svn.mozilla.org/vc/projects/mozilla.org/trunk/projects/nspr/">レガシーバージョンの NSPR </a></dt> - <dd>古い NSPR については SVN で参照 / 入手が可能です。</dd> -</dl> - -<h2 id="Getting_NSPR" name="Getting_NSPR">NSPR の入手方法</h2> - -<p>NSPRは、各プラットフォームに対し、様々なソースとバイナリパッケージで提供されています。</p> - -<ul> - <li><strong>Windows:</strong> 『<a href="NSPR_build_instructions" title="NSPR_build_instructions">NSPR ビルド手順</a>』の方法でソースパッケージを構築</li> - <li><strong>Mac:</strong> <a href="http://www.macports.org/" title="http://www.macports.org/">MacPorts</a> の <em>NSPR</em> パッケージ、または <a href="http://brew.sh/" title="http://mxcl.github.com/homebrew/">Homebrew</a> NSPR パッケージをインストールします</li> - <li><strong>Ubuntu:</strong> <code>apt-get</code> により <em>libnspr4-dev</em> パッケージをインストール</li> - <li><strong>Debian:</strong> <code>apt-get</code> により <em>libnspr4-dev</em> パッケージをインストール</li> - <li><strong>openSUSE Linux:</strong> Install one or more of the following via <code>yast</code> or <code>zypper</code> : - <ul> - <li><em>mozilla-nspr</em> : Binary libraries for your platform</li> - <li><em>mozilla-nspr-32bit</em> : Binary libraries needed to run 32-bit programs on a 64-bit OS</li> - <li><em>mozilla-nspr-devel</em> : Files needed (in addition to the above libraries) to compile programs using NSPR</li> - <li><em>mozilla-nspr-debuginfo</em> : Debug information (including build symbols) for package <em>mozilla-nspr</em></li> - <li><em>mozilla-nspr-debuginfo-32bit</em> : Debug information (including build symbols) for package <em>mozilla-nspr-32bit</em></li> - <li><em>mozilla-nspr-debugsource</em> : Debug sources for all of the above</li> - </ul> - </li> -</ul> - -<h2 class="Community" id="Community" name="Community">コミュニティ</h2> - -<ul> - <li>Mozilla のフォーラムを参照してください。</li> -</ul> - -<ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-tech-nspr"> メーリングリストとして</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.tech.nspr"> ニュースグループとして</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.tech.nspr/feeds"> フィードとして</a></li> -</ul> - -<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2> - -<ul> - <li><a href="/ja/docs/Necko" title="Necko">Necko</a> 、 <a href="/ja/docs/NSS" title="NSS">NSS</a></li> -</ul> diff --git a/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html b/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html deleted file mode 100644 index 562246ae84..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Date and Time -slug: Mozilla/Projects/NSPR/Reference/Date_and_Time -tags: - - NSPR - - NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference/Date_and_Time ---- -<p> -{{ PreviousNext("NSPR API Reference:Interval Timing", "NSPR API Reference:Memory Management Operations") }} -</p><p>この章では、NSPR にある日時関数について解説します。 -</p><p>NSPR は時を二つの方法で表します。絶対時間と時計・カレンダー時間です。NSPR は両方の表記法における型と定数や、二つの間での時間変換の関数も提供します。 -</p> -<ul><li> 絶対時間による表現は、時間軸に沿った中での点として時間を表現します。時間はエポックと呼ばれる時間軸の原点に対する相対量としてあらわされます。NSPR はエポックを 1970 年 1 月 1 日真夜中 (00:00:00) UTC (Coordinated Universal Time / 協定世界時) をエポックとして採用しています。この形式では、時間はこの時間軸上の点になります。タイムゾーンの概念はありません。 -</li></ul> -<ul><li> 人間向けに使われる、時計・カレンダー時間では、時間をよりわかりやすい年月日時分秒であらわします。この形式では、タイムゾーンが非常に重要となります。たとえば、タイムゾーンを指定しなければ、1998 年 5 月 1 日 午前 8:00 はあいまいです。NSPR のこのデータ型、分解された時間 (exploded time) では、タイムゾーンの情報も含みますので、絶対時間における位置は特定されます。 -</li></ul> -<p>絶対時間とカレンダー方式はタイミング制御の中では通常は利用されません。経過時間を測定する方法やタイムアウトにて利用される関数については、<a href="ja/NSPR_API_Reference/Interval_Timing">13 章 "時間間隔"</a> を参照してください。 -</p> -<ul><li> {{ Anch("Macros for Time Unit Conversion") }} -</li><li> {{ Anch("Types and Constants") }} -</li><li> {{ Anch("Time Parameter Callback Functions") }} -</li><li> {{ Anch("Functions") }} -</li></ul> -<p>{{ 英語版章題("Macros for Time Unit Conversion") }} -</p> -<h3 name=".E6.99.82.E8.A8.88.E5.8D.98.E4.BD.8D.E5.A4.89.E6.8F.9B.E3.83.9E.E3.82.AF.E3.83.AD" id=".E6.99.82.E8.A8.88.E5.8D.98.E4.BD.8D.E5.A4.89.E6.8F.9B.E3.83.9E.E3.82.AF.E3.83.AD">時計単位変換マクロ</h3> -<p>秒、ミリ秒、マイクロ秒、ナノ秒同士の変換マクロです。 -</p> -<ul><li> <a href="ja/PR_MSEC_PER_SEC">PR_MSEC_PER_SEC</a> -</li><li> <a href="ja/PR_USEC_PER_SEC">PR_USEC_PER_SEC</a> -</li><li> <a href="ja/PR_NSEC_PER_SEC">PR_NSEC_PER_SEC</a> -</li><li> <a href="ja/PR_USEC_PER_MSEC">PR_USEC_PER_MSEC</a> -</li><li> <a href="ja/PR_NSEC_PER_MSEC">PR_NSEC_PER_MSEC</a> -</li></ul> -<p>{{ 英語版章題("Types and Constants") }} -</p> -<h3 name=".E5.9E.8B.E3.81.A8.E5.AE.9A.E6.95.B0" id=".E5.9E.8B.E3.81.A8.E5.AE.9A.E6.95.B0">型と定数</h3> -<p>NSPR の時計関数のために定義されている型と定数は以下のものです。 -</p> -<ul><li> <a href="ja/PRTime">PRTime</a> -</li><li> <a href="ja/PRTimeParameters">PRTimeParameters</a> -</li><li> <a href="ja/PRExplodedTime">PRExplodedTime</a> -</li></ul> -<p>{{ 英語版章題("Time Parameter Callback Functions") }} -</p> -<h3 name=".E3.82.BF.E3.82.A4.E3.83.A0.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.B3.E3.83.BC.E3.83.AB.E3.83.90.E3.83.83.E3.82.AF.E9.96.A2.E6.95.B0" id=".E3.82.BF.E3.82.A4.E3.83.A0.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.B3.E3.83.BC.E3.83.AB.E3.83.90.E3.83.83.E3.82.AF.E9.96.A2.E6.95.B0">タイムパラメータのコールバック関数</h3> -<p>いくつかの地理的場所においては、夏時間 (Daylight Saving Time / DST) の適用と DST が開始もしくは終了する日付の取り扱い方法は何度か変更されています。このため、タイムゾーン情報を決定するにはコールバック関数が用いられています。 -</p><p><code><a href="ja/PRTimeParamFn">PRTimeParamFn</a></code> の定義に従った形式で、自分自身のこのコールバック関数を定義することもできます。NSPR で提供されるこのタイプのよく利用されるコールバック関数には二つあります : -</p> -<ul><li> <a href="ja/PRTimeParamFn">PRTimeParamFn</a> -</li><li> <a href="ja/PR_LocalTimeParameters">PR_LocalTimeParameters</a> と <a href="ja/PR_GMTParameters">PR_GMTParameters</a> -</li></ul> -<p>{{ 英語版章題("Functions") }} -</p> -<h3 name=".E9.96.A2.E6.95.B0" id=".E9.96.A2.E6.95.B0">関数</h3> -<p>日時を作成、取り扱うための関数は : -</p> -<ul><li> <a href="ja/PR_Now">PR_Now</a> -</li><li> <a href="ja/PR_ExplodeTime">PR_ExplodeTime</a> -</li><li> <a href="ja/PR_ImplodeTime">PR_ImplodeTime</a> -</li><li> <a href="ja/PR_NormalizeTime">PR_NormalizeTime</a> -</li></ul> -{{ languages( { "en": "en/NSPR_API_Reference/Date_and_Time" } ) }} diff --git a/files/ja/mozilla/projects/nspr/reference/index.html b/files/ja/mozilla/projects/nspr/reference/index.html deleted file mode 100644 index 312ff85ce0..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/index.html +++ /dev/null @@ -1,768 +0,0 @@ ---- -title: NSPR API リファレンス -slug: Mozilla/Projects/NSPR/Reference -tags: - - NSPR - - NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<h3 id="Introduction_to_NSPR" name="Introduction_to_NSPR"><a href="Reference/Introduction_to_NSPR">Introduction to NSPR</a></h3> - -<ul> - <li><a href="Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ul> - <li><a href="Reference/Introduction_to_NSPR#Thread_Scheduling">Thread Scheduling</a> - <ul> - <li><a href="Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ul> - </li> - </ul> - </li> - <li><a href="Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ul> - <li><a href="Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ul> - </li> - <li><a href="Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> -</ul> - -<h3 id="NSPR_Types" name="NSPR_Types"><a href="Reference/NSPR_Types">NSPR Types</a></h3> - -<ul> - <li><a href="Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ul> - <li><a href="Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ul> - <li><a href="Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ul> - </li> - <li><a href="Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ul> - </li> - <li><a href="Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ul> - <li><a href="Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ul> - </li> -</ul> - -<h3 id="Threads" name="Threads"><a href="Reference/Threads">Threads</a></h3> - -<ul> - <li><a href="Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="Reference/Threads#Threading_Functions">Threading Functions</a> - <ul> - <li><a href="Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ul> - </li> -</ul> - -<h3 id="Process_Initialization" name="Process_Initialization"><a href="Reference/Process_Initialization">Process Initialization</a></h3> - -<ul> - <li><a href="Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - - <ul> - <li><a href="Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ul> - </li> - <li><a href="Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> -</ul> - -<h3 id="Locks" name="Locks"><a href="Reference/Locks">Locks</a></h3> - -<ul> - <li><a href="Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="Reference/Locks#Lock_Functions">Lock Functions</a></li> -</ul> - -<h3 id="Condition_Variables" name="Condition_Variables"><a href="Reference/Condition_Variables">Condition Variables</a></h3> - -<ul> - <li><a href="Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> -</ul> - -<h3 id="Monitors" name="Monitors"><a href="Reference/Monitors">Monitors</a></h3> - -<ul> - <li><a href="Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> -</ul> - -<h3 id="Cached_Monitors" name="Cached_Monitors"><a href="Reference/Cached_Monitors">Cached Monitors</a></h3> - -<ul> - <li><a href="Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> -</ul> - -<h3 id="I.2FO_Types" name="I.2FO_Types"><a href="Reference/I%2f%2fO_Types">I/O Types</a></h3> - -<ul> - <li><a href="Reference/I%2f%2fO_Types#Directory_Type">Directory Type</a></li> - <li><a href="Reference/I%2f%2fO_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="Reference/I%2f%2fO_Types#File_Info_Types">File Info Types</a></li> - <li><a href="Reference/I%2f%2fO_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="Reference/I%2f%2fO_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="Reference/I%2f%2fO_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="Reference/I%2f%2fO_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> -</ul> - -<h3 id="I.2FO_Functions" name="I.2FO_Functions"><a href="Reference/I%2f%2fO_Functions">I/O Functions</a></h3> - -<ul> - <li><a href="Reference/I%2f%2fO_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Socket_Manipulation_Functions">Socket Manipulation Functions</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Manipulating_Layers">Manipulating Layers</a></li> -</ul> - -<h3 id="Network_Addresses" name="Network_Addresses"><a href="Reference/Network_Addresses">Network Addresses</a></h3> - -<ul> - <li><a href="Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> -</ul> - -<h3 id="Atomic_Operations" name="Atomic_Operations"><a href="Reference/Atomic_Operations">Atomic Operations</a></h3> - -<ul> - <li><a href="Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="Reference/PR_AtomicSet">PR_AtomicSet</a></li> -</ul> - -<h3 id="Interval_Timing" name="Interval_Timing"><a href="Reference/Interval_Timing">Interval Timing</a></h3> - -<ul> - <li><a href="Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> -</ul> - -<h3 id="Date_and_Time" name="Date_and_Time"><a href="Reference/Date_and_Time">Date and Time</a></h3> - -<ul> - <li><a href="Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="Reference/Date_and_Time#Functions">Functions</a></li> -</ul> - -<h3 id="Memory_Management_Operations" name="Memory_Management_Operations"><a href="Reference/Memory_Management_Operations">Memory Management Operations</a></h3> - -<ul> - <li><a href="Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> -</ul> - -<h3 id="String_Operations" name="String_Operations"><a href="Reference/String_Operations">String Operations</a></h3> - -<ul> - <li><a href="Reference/PL_strlen">PL_strlen</a></li> - <li><a href="Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="Reference/PL_strdup">PL_strdup</a></li> - <li><a href="Reference/PL_strfree">PL_strfree</a></li> -</ul> - -<h3 id="Floating_Point_Number_to_String_Conversion" name="Floating_Point_Number_to_String_Conversion"><a href="Reference/Floating_Point_Number_to_String_Conversion">Floating Point Number to String Conversion</a></h3> - -<ul> - <li><a href="Reference/PR_strtod">PR_strtod</a></li> - <li><a href="Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="Reference/PR_cnvtf">PR_cnvtf</a></li> -</ul> - -<h2 id="Long_Long_.2864-bit.29_Integers" name="Long_Long_.2864-bit.29_Integers">Long Long (64-bit) Integers</h2> - -<h2 id="BitMaps" name="BitMaps">BitMaps</h2> - -<h2 id="Formatted_Printing" name="Formatted_Printing">Formatted Printing</h2> - -<h2 id="Linked_Lists" name="Linked_Lists"><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists">Linked Lists</a></h2> - -<ul> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - - <ul> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></code></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ul> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></code></li> - </ul> - </li> -</ul> - -<h2 id="Dynamic_Library_Linking" name="Dynamic_Library_Linking"><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking">Dynamic Library Linking</a></h2> - -<ul> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - - <ul> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></code></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ul> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></code></li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ul> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program </a></li> - </ul> - </li> -</ul> - -<h2 id="Process_Management_and_Interprocess_Communication" name="Process_Management_and_Interprocess_Communication"><a href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication">Process Management and Interprocess Communication</a></h2> - -<ul> - <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - - <ul> - <li><code><a class="internal" href="https://developer.mozilla.org/En/PRProcess">PRProcess</a></code></li> - <li><code><a class="internal" href="https://developer.mozilla.org/En/PRProcessAttr">PRProcessAttr</a></code></li> - </ul> - </li> - <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ul> - <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ul> - </li> -</ul> - -<h2 id="Multiwait_Receive" name="Multiwait_Receive">Multiwait Receive</h2> - -<h2 id="System_Information_and_Environment_Variables" name="System_Information_and_Environment_Variables">System Information and Environment Variables</h2> - -<h2 id="Logging" name="Logging"><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging">Logging</a></h2> - -<ul> - <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ul> - <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/PRLogModuleInfo">PRLogModuleInfo</a></code></li> - <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/PRLogModuleLevel">PRLogModuleLevel</a></code></li> - <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></code></li> - <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/NSPR_LOG_FILE">NSPR_LOG_FILE</a></code></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ul> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_NewLogModule">PR_NewLogModule</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_SetLogFile">PR_SetLogFile</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_SetLogBuffering">PR_SetLogBuffering</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LogPrint">PR_LogPrint</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LogFlush">PR_LogFlush</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LOG_TEST">PR_LOG_TEST</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LOG">PR_LOG</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_Assert_">PR_Assert</a></code></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_NOT_REACHED">PR_NOT_REACHED</a></code></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Use_Example">Use Example</a></li> -</ul> - -<h2 id="Instrumentation_Counters" name="Instrumentation_Counters">Instrumentation Counters</h2> - -<h3 id="Named_Shared_Memory" name="Named_Shared_Memory"><a href="Reference/Named_Shared_Memory">Named Shared Memory</a></h3> - -<ul> - <li><a href="Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> -</ul> - -<h3 id="Anonymous_Shared_Memory" name="Anonymous_Shared_Memory"><a href="Reference/Anonymous_Shared_Memory">Anonymous Shared Memory</a></h3> - -<ul> - <li><a href="Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> -</ul> - -<h3 id="IPC_Semaphores" name="IPC_Semaphores"><a href="Reference/IPC_Semaphores">IPC Semaphores</a></h3> - -<ul> - <li><a href="Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> -</ul> - -<h3 id="Thread_Pools" name="Thread_Pools"><a href="Reference/Thread_Pools">Thread Pools</a></h3> - -<ul> - <li><a href="Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> -</ul> - -<h3 id="Random_Number_Generator" name="Random_Number_Generator"><a href="Reference/Random_Number_Generator">Random Number Generator</a></h3> - -<ul> - <li><a href="Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> -</ul> - -<h3 id="Hash_Tables" name="Hash_Tables"><a href="Reference/Hash_Tables">Hash Tables</a></h3> - -<ul> - <li><a href="Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> -</ul> - -<h3 id="NSPR_Error_Handling" name="NSPR_Error_Handling"><a href="Reference/NSPR_Error_Handling">NSPR Error Handling</a></h3> - -<ul> - <li><a href="Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> -</ul> diff --git a/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html b/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html deleted file mode 100644 index e1b5694995..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html +++ /dev/null @@ -1,577 +0,0 @@ ---- -title: NSPRのイントロダクション -slug: Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR -translation_of: Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details open> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>Netscape Portable Runtime (NSPR) APIはスレッド、スレッド同期、I/O、内部タイマー、原子的な操作、そしてその他のプラットフォームに依存しない方法で低レイヤーなサービス等のシステムの機能を使ったアプリケーションに準拠しています。このチャプターではNSPRプログラミングのコンセプトの重要な部分をサンプルコードを使って説明します。</p> - -<p>現在のNSPRの実装では、単一のソースコードのみで Macintosh (PPC), Win32 (NT 3.51, NT 4.0, WIN'95), その他20以上のバージョンのUNIX上でコンパイルすることができます。</p> - -<p>NSPRは既存のコードを移植するためのプラットフォームを提供しません。 ソフトウェアプロジェクトの初めから使用しなければなりません。</p> - -<h2 id="NSPR_Naming_Conventions" name="NSPR_Naming_Conventions">NSPRの命名規則</h2> - -<p>Naming of NSPR types, functions, and macros follows the following conventions:</p> - -<ul> - <li>Types exported by NSPR begin with <code>PR</code> and are followed by intercap-style declarations, like this: <code>PRInt</code>, <code>PRFileDesc</code></li> - <li>Function definitions begin with <code>PR_</code> and are followed by intercap-style declarations, like this: <code>PR_Read</code>, <code>PR_JoinThread</code></li> - <li>Preprocessor macros begin with the letters <code>PR</code> and are followed by all uppercase characters separated with the underscore character (<code>_</code>), like this: <code>PR_BYTES_PER_SHORT</code>, <code>PR_EXTERN</code></li> -</ul> - -<h2 id="NSPR_Threads" name="NSPR_Threads">NSPRのスレッド</h2> - -<p>NSPR provides an execution environment that promotes the use of lightweight threads. Each thread is an execution entity that is scheduled independently from other threads in the same process. A thread has a limited number of resources that it truly owns. These resources include the thread stack and the CPU register set (including PC).</p> - -<p>To an NSPR client, a thread is represented by a pointer to an opaque structure of type <code><a href="PRThread">PRThread</a></code>. A thread is created by an explicit client request and remains a valid, independent execution entity until it returns from its root function or the process abnormally terminates. (<code>PRThread</code> and functions for creating and manipulating threads are described in detail in <a href="Threads">Threads</a>.)</p> - -<p>NSPR threads are lightweight in the sense that they are cheaper than full-blown processes, but they are not free. They achieve the cost reduction by relying on their containing process to manage most of the resources that they access. This, and the fact that threads share an address space with other threads in the same process, makes it important to remember that<em>threads are not processes</em> .</p> - -<p>NSPR threads are scheduled in two separate domains:</p> - -<ul> - <li><strong>Local threads</strong> are scheduled within a process only and are handled entirely by NSPR, either by completely emulating threads on each host operating system (OS) that doesn't support threads, or by using the threading facilities of each host OS that does support threads to emulate a relatively large number of local threads by using a relatively small number of native threads.</li> -</ul> - -<ul> - <li><strong>Global threads</strong> are scheduled by the host OS--not by NSPR--either within a process or across processes on the entire host. Global threads correspond to native threads on the host OS.</li> -</ul> - -<p>NSPR threads can also be either user threads or system threads. NSPR provides a function, <code><a href="PR_Cleanup">PR_Cleanup</a></code>, that synchronizes process termination. <code>PR_Cleanup</code> waits for the last user thread to exit before returning, whereas it ignores system threads when determining when a process should exit. This arrangement implies that a system thread should not have volatile data that needs to be safely stored away.</p> - -<p>Priorities for NSPR threads are based loosely on hints provided by the client and sometimes constrained by the underlying operating system. Therefore, priorities are not rigidly defined. For more information, see <a href="#Thread_Scheduling">Thread Scheduling</a>.</p> - -<p>In general, it's preferable to create local user threads with normal priority and let NSPR take care of the details as appropriate for each host OS. It's usually not necessary to create a global thread explicitly unless you are planning to port your code only to platforms that provide threading services with which you are familiar or unless the thread will be executing code that might directly call blocking OS functions.</p> - -<p>Threads can also have "per-thread-data" attached to them. Each thread has a built-in per-thread error number and error string that are updated when NSPR operations fail. It's also possible for NSPR clients to define their own per-thread-data. For details, see <a href="Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a>.</p> - -<h3 id="Thread_Scheduling" name="Thread_Scheduling">スレッドスケジューリング</h3> - -<p>NSPR threads are scheduled by priority and can be preempted or interrupted. The sections that follow briefly introduce the NSPR approach to these three aspects of thread scheduling.</p> - -<ul> - <li><a href="#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="#Preempting_Threads">Preempting Threads</a></li> - <li><a href="#Interrupting_Threads">Interrupting Threads</a></li> -</ul> - -<p>For reference information on the NSPR API used for thread scheduling, see <a href="Threads">Threads</a>.</p> - -<h4 id="Setting_Thread_Priorities" name="Setting_Thread_Priorities">Setting Thread Priorities</h4> - -<p>The host operating systems supported by NSPR differ widely in the mechanisms they use to support thread priorities. In general, an NSPR thread of higher priority has a statistically better chance of running relative to threads of lower priority. However, because of the multiple strategies to provide execution vehicles for threads on various host platforms, priorities are not a clearly defined abstraction in NSPR. At best they are intended to specify a preference with respect to the amount of CPU time that a higher-priority thread might expect relative to a lower-priority thread. This preference is still subject to resource availability, and must not be used in place of proper synchronization. For more information on thread synchronization, see <a href="#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>.</p> - -<p>The issue is further muddied by inconsistent offerings from OS vendors regarding the priority of their kernel-supported threads. NSPR assumes that the priorities of global threads are not manageable, but that the host OS will perform some sort of fair scheduling. It's usually preferable to create local user threads with normal priority and let NSPR and the host take care of the details.</p> - -<p>In some NSPR configurations, there may be an arbitrary (and perhaps large) number of local threads being supported by a more limited number of <strong>virtual processors</strong> (an internal application of global threads). In such situations, each virtual processor will have some number of local threads associated with it, though exactly which local threads and how many may vary over time. NSPR guarantees that for each virtual processor the highest-priority, schedulable local thread is the one executing. This thread implementation strategy is referred to as the <strong>M x N model. </strong></p> - -<h4 id="Preempting_Threads" name="Preempting_Threads">Preempting Threads</h4> - -<p>Preemption is the act of taking control away from a ready thread at an arbitrary point and giving control to another appropriate thread. It might be viewed as taking the executing thread and adding it to the end of the ready queue for its appropriate priority, then simply running the scheduling algorithm to find the most appropriate thread. The chosen thread may be of higher priority, of the same priority, or even the same thread. It will not be a thread of lower priority.</p> - -<p>Some operating systems cannot be made preemptable (for example, Mac OS and Win 16). This puts them at some risk in supporting arbitrary code, even if the code is interpreted (Java). Other systems are not thread-aware, and their runtime libraries not thread-safe (most versions of Unix). These systems can support local level thread abstractions that can be made preemptable, but run the risk of library corruption (<code>libc</code>). Still other operating systems have a native notion of threads, and their libraries are thread-aware and support locking. However, if local threads are also present, and they are preemptable, they are subject to deadlock. At this time, the only safe solutions are to turn off preemption (a runtime decision) or to preempt global threads only.</p> - -<h4 id="Interrupting_Threads" name="Interrupting_Threads">Interrupting Threads</h4> - -<p>NSPR threads are interruptable, with some constraints and inconsistencies.</p> - -<p>To interrupt a thread, the caller of <code><a href="PR_Interrupt">PR_Interrupt</a></code> must have the NSPR reference to the target thread (<code><a href="PRThread">PRThread</a></code>*). When the target is interrupted, it is rescheduled from the point at which it was blocked, with a status error indicating that it was interrupted. NSPR recognizes only two areas where a thread may be interrupted: waiting on a condition variable and waiting on I/O. In the latter case, interruption does cancel the I/O operation. In neither case does being interrupted imply the demise of the thread.</p> - -<h2 id="NSPR_Thread_Synchronization" name="NSPR_Thread_Synchronization">NSPRのスレッドの同期</h2> - -<p>Thread synchronization has two aspects: locking and notification. Locking prevents access to some resource, such as a piece of shared data: that is, it enforces mutual exclusion. Notification involves passing synchronization information among cooperating threads.</p> - -<p>In NSPR, a <strong>mutual exclusion lock</strong> (or <strong>mutex</strong>) of type <code><a href="PRLock">PRLock</a></code> controls locking, and associated <strong>condition variables</strong> of type <code><a href="PRCondVar">PRCondVar</a></code> communicate changes in state among threads. When a programmer associates a mutex with an arbitrary collection of data, the mutex provides a protective <strong>monitor</strong> around the data.</p> - -<h3 id="Locks_and_Monitors" name="Locks_and_Monitors">Locks and Monitors</h3> - -<p>In general, a monitor is a conceptual entity composed of a mutex, one or more condition variables, and the monitored data. Monitors in this generic sense should not be confused with the monitor type used in Java programming. In addition to <code><a href="PRLock">PRLock</a></code>, NSPR provides another mutex type, <code><a href="PRMonitor">PRMonitor</a></code>, which is reentrant and can have only one associated condition variable. <code>PRMonitor</code> is intended for use with Java and reflects the Java approach to thread synchronization.</p> - -<p>To access the data in the monitor, the thread performing the access must hold the mutex, also described as being "in the monitor." Mutual exclusion guarantees that only one thread can be in the monitor at a time and that no thread may observe or modify the monitored data without being in the monitor.</p> - -<p>Monitoring is about protecting data, not code. A <strong>monitored invariant</strong> is a Boolean expression over the monitored data. The expression may be false only when a thread is in the monitor (holding the monitor's mutex). This requirement implies that when a thread first enters the monitor, an evaluation of the invariant expression must yield a <code>true</code>. The thread must also reinstate the monitored invariant before exiting the monitor. Therefore, evaluation of the expression must also yield a true at that point in execution.</p> - -<p>A trivial example might be as follows. Suppose an object has three values, <var>v1</var>, <var>v2</var>, and <var>sum</var>. The invariant is that the third value is the sum of the other two. Expressed mathematically, the invariant is <code>sum = v1 + v2</code>. Any modification of <var>v1</var> or <var>v2</var> requires modification of <var>sum</var>. Since that is a complex operation, it must be monitored. Furthermore, any type of access to <var>sum</var> must also be monitored to ensure that neither <var>v1</var> nor <var>v2</var> are in flux.</p> - -<div class="note"><strong>Note</strong>: Evaluation of the invariant expression is a conceptual requirement and is rarely done in practice. It is valuable to formally define the expression during design, write it down, and adhere to it. It is also useful to implement the expression during development and test it where appropriate. The thread makes an absolute assertion of the expression's evaluation both on entering and on exiting the monitor.</div> - -<p>Acquiring a lock is a synchronous operation. Once the lock primitive is called, the thread returns only when it has acquired the lock. Should another thread (or the same thread) already have the lock held, the calling thread blocks, waiting for the situation to improve. That blocked state is not interruptible, nor is it timed.</p> - -<h3 id="Condition_Variables" name="Condition_Variables">Condition Variables</h3> - -<p>Condition variables facilitate communication between threads. The communication available is a semantic-free notification whose context must be supplied by the programmer. Conditions are closely associated with a single monitor.</p> - -<p>The association between a condition and a monitor is established when a condition variable is created, and the association persists for the life of the condition variable. In addition, a static association exists between the condition and some data within the monitor. This data is what will be manipulated by the program under the protection of the monitor. A thread may wait on notification of a condition that signals changes in the state of the associated data. Other threads may notify the condition when changes occur.</p> - -<p>Condition variables are always monitored. The relevant operations on conditions are always performed from within the monitor. They are used to communicate changes in the state of the monitored data (though still preserving the monitored invariant). Condition variables allow one or more threads to wait for a predetermined condition to exist, and they allow another thread to notify them when the condition occurs. Condition variables themselves do not carry the semantics of the state change, but simply provide a mechanism for indicating that something has changed. It is the programmer's responsibility to associate a condition with the state of the data.</p> - -<p>A thread may be designed to wait for a particular situation to exist in some monitored data. Since the nature of the situation is not an attribute of the condition, the program must test that itself. Since this testing involves the monitored data, it must be done from within the monitor. The wait operation atomically exits the monitor and blocks the calling thread in a waiting condition state. When the thread is resumed after the wait, it will have reentered the monitor, making operations on the data safe.</p> - -<p>There is a subtle interaction between the thread(s) waiting on a condition and those notifying it. The notification must take place within a monitor--the same monitor that protects the data being manipulated by the notifier. In pseudocode, the sequence looks like this:</p> - -<pre class="eval">enter(monitor); -... manipulate the monitored data -notify(condition); -exit(monitor); -</pre> - -<p>Notifications to a condition do not accumulate. Nor is it required that any thread be waiting on a condition when the notification occurs. The design of the code that waits on a condition must take these facts into account. Therefore, the pseudocode for the waiting thread might look like this:</p> - -<pre class="eval">enter(monitor) -while (!expression) wait(condition); -... manipulate monitored data -exit(monitor); -</pre> - -<p>The need to evaluate the Boolean expression again after rescheduling from a wait may appear unnecessary, but it is vital to the correct execution of the program. The notification promotes a thread waiting on a condition to a ready state. When that thread actually gets scheduled is determined by the thread scheduler and cannot be predicted. If multiple threads are actually processing the notifications, one or more of them could be scheduled ahead of the one explicitly promoted by the notification. One such thread could enter the monitor and perform the work indicated by the notification, and exit. In this case the thread would resume from the wait only to find that there's nothing to do.</p> - -<p>For example, suppose the defined rule of a function is that it should wait until there is an object available and that it should return a reference to that object. Writing the code as follows could potentially return a null reference, violating the invariant of the function:</p> - -<pre class="eval">void *dequeue() -{ - void *db; - enter(monitor); - if ((db = delink()) == null) - { - wait(condition); - db = delink(); - } - exit(monitor); - return db; -} -</pre> - -<p>The same function would be more appropriately written as follows:</p> - -<pre class="eval">void *dequeue() -{ - void *db; - enter(monitor); - while ((db = delink()) == null) - wait(condition); - exit(monitor); - return db; -} -</pre> - -<div class="note"><strong>Caution</strong>: The semantics of <code><a href="PR_WaitCondVar">PR_WaitCondVar</a></code> assume that the monitor is about to be exited. This assumption implies that the monitored invariant must be reinstated before calling <code>PR_WaitCondVar</code>. Failure to do this will cause subtle but painful bugs.</div> - -<p>To modify monitored data safely, a thread must be in the monitor. Since no other thread may modify or (in most cases) even observe the protected data from outside the monitor, the thread can safely make any modifications needed. When the changes have been completed, the thread notifies the condition associated with the data and exits the monitor using <code><a href="PR_NotifyCondVar">PR_NotifyCondVar</a></code>. Logically, each such notification promotes one thread that was waiting on the condition to a ready state. An alternate form of notification (<code><a href="PR_NotifyAllCondVar">PR_NotifyAllCondVar</a></code>) promotes all threads waiting on a condition to the ready state. If no threads were waiting, the notification is a no-op.</p> - -<p>Waiting on a condition variable is an interruptible operation. Another thread could target the waiting thread and issue a <code><a href="PR_Interrupt">PR_Interrupt</a></code>, causing a waiting thread to resume. In such cases the return from the wait operation indicates a failure and definitively indicates that the cause of the failure is an interrupt.</p> - -<p>A call to <code><a href="PR_WaitCondVar">PR_WaitCondVar</a></code> may also resume because the interval specified on the wait call has expired. However, this fact cannot be unambiguously delivered, so no attempt is made to do so. If the logic of a program allows for timing of waits on conditions, then the clock must be treated as part of the monitored data and the amount of time elapsed re-asserted when the call returns. Philosophically, timeouts should be treated as explicit notifications, and therefore require the testing of the monitored data upon resumption.</p> - -<h2 id="NSPR_Sample_Code" name="NSPR_Sample_Code">NSPRのサンプルコード</h2> - -<p>The documents linked here present two sample programs, including detailed annotations: <code><a href="/I%2f%2fO_Layering_Sample">layer.html</a></code> and <code><a href="/Thread_Synchronization_Sample">switch.html</a></code>. In addition to these annotated HTML versions, the same samples are available in pure source form.</p> diff --git a/files/ja/mozilla/projects/nspr/reference/logging/index.html b/files/ja/mozilla/projects/nspr/reference/logging/index.html deleted file mode 100644 index a580b77cb0..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/logging/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Logging -slug: Mozilla/Projects/NSPR/Reference/Logging -translation_of: Mozilla/Projects/NSPR/Reference/Logging ---- -<p>{{ PreviousNext("NSPR API Reference:System Information and Environment Variables", "NSPR API Reference:Instrumentation Counters") }}</p> -<p>This chapter describes the global functions you use to perform logging. NSPR provides a set of logging functions that conditionally write <code>printf()</code> style strings to the console or to a log file. NSPR uses this facility itself for its own development debugging purposes.</p> -<p>You can select events to be logged by module or level. A module is a user-defined class of log events. A level is a numeric value that indicates the seriousness of the event to be logged. You can combine module and level criteria to get highly selective logging.</p> -<p>NSPR also provides "assert"-style macros and functions to aid in application debugging.</p> -<ul> - <li>{{ Anch("Conditional Compilation and Execution") }}</li> - <li>{{ Anch("Log Types and Variables") }}</li> - <li>{{ Anch("Logging Functions and Macros") }}</li> - <li>{{ Anch("Use Example") }}</li> -</ul> -<h3 id="Conditional_Compilation_and_Execution" name="Conditional_Compilation_and_Execution">Conditional Compilation and Execution</h3> -<p>NSPR's logging facility is conditionally compiled in and enabled for applications using it. These controls are platform dependent. Logging is not compiled in for the Win16 platform. Logging is compiled into the NSPR debug builds; logging is not compiled into the NSPR optimized builds. コンパイル時に <code>#define</code> で、<code>DEBUG</code> または <code>FORCE_PR_LOGをセットするとアプリケーション・プログラムで</code>NSPR loggingが有効になります。.</p> -<p>To enable NSPR logging and/or the debugging aids in your application, compile using the NSPR debug build headers and runtime. Set one of the compile-time defines when you build your application.</p> -<p>Execution-time control of NSPR's logging uses two environment variables. These variables control which modules and levels are logged as well as the file name of the log file. By default, no logging is enabled at execution time.</p> -<h3 id="Log_Types_and_Variables" name="Log_Types_and_Variables">Log Types and Variables</h3> -<p>Two types supporting NSPR logging are exposed in the API:</p> -<ul> - <li><a href="/en/PRLogModuleInfo" title="en/PRLogModuleInfo">PRLogModuleInfo</a></li> - <li><a href="/en/PRLogModuleLevel" title="en/PRLogModuleLevel">PRLogModuleLevel</a></li> -</ul> -<p>Two environment variables control the behavior of logging at execution time:</p> -<ul> - <li><a href="/en/NSPR_LOG_MODULES" title="en/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/en/NSPR_LOG_FILE" title="en/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> -</ul> -<h3 id="Logging_Functions_and_Macros" name="Logging_Functions_and_Macros">Logging Functions and Macros</h3> -<p>The functions and macros for logging are:</p> -<ul> - <li><a href="/en/PR_NewLogModule" title="en/PR_NewLogModule">PR_NewLogModule</a></li> - <li><a href="/en/PR_SetLogFile" title="en/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/en/PR_SetLogBuffering" title="en/PR_SetLogBuffering">PR_SetLogBuffering</a></li> - <li><a href="/en/PR_LogPrint" title="en/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/en/PR_LogFlush" title="en/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/en/PR_LOG_TEST" title="en/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/en/PR_LOG" title="en/PR_LOG">PR_LOG</a></li> - <li><a href="/en/PR_ASSERT" title="en/PR_ASSERT">PR_Assert</a></li> - <li><a href="/en/PR_ASSERT" title="en/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/en/PR_STATIC_ASSERT" title="en/PR_STATIC_ASSERT">PR_STATIC_ASSERT</a> (new in NSPR 4.6.6<span class="comment">XXX this hasn't been released yet; the number is a logical guess</span>)</li> - <li><a href="/en/PR_NOT_REACHED" title="en/PR_NOT_REACHED">PR_NOT_REACHED</a></li> -</ul> -<h3 id="Use_Example" name="Use_Example">Use Example</h3> -<p>The following sample code fragment demonstrates use of the logging and debugging aids.</p> -<ul> - <li>Compile the program with DEBUG defined.</li> - <li>Before running the compiled program, set the environment variable NSPR_LOG_MODULES to userStuff:5</li> -</ul> -<pre class="eval">static void UserLogStuff( void ) -{ - PRLogModuleInfo *myLM; - PRIntn i; - - PR_STATIC_ASSERT(5 > 4); /* NSPR 4.6.6 or newer */ - - myLM = PR_NewLogModule( "userStuff" ); - PR_ASSERT( myLM ); - - PR_LOG( myLM, PR_LOG_NOTICE, ("Log a Notice %d\n", 999 )); - for (i = 0; i < 10 ; i++ ) - { - PR_LOG( myLM, PR_LOG_DEBUG, ("Log Debug number: %d\n", i)); - PR_Sleep( 500 ); - } - PR_LOG( myLM, PR_LOG_NOTICE, ("That's all folks\n"); - -} /* end UserLogStuff() */ -</pre> -<p>{{ PreviousNext("NSPR API Reference:System Information and Environment Variables", "NSPR API Reference:Instrumentation Counters") }}</p> -<h3 id="See_also">See also</h3> -<p><a class="external" href="http://www.mozilla.org/projects/nspr/reference/html/prlog.html" title="http://www.mozilla.org/projects/nspr/reference/html/prlog.html">NSPR Logging reference</a></p> diff --git a/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html b/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html deleted file mode 100644 index 25b9fc1040..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: NSPR API リファレンス -slug: Mozilla/Projects/NSPR/Reference/Memory_Management_Operations -tags: - - NSPR - - NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference/Memory_Management_Operations ---- -<p> {{ PreviousNext("NSPR API Reference:Date and Time", "NSPR API Reference:String Operations") }} -</p><p>この章では、メモリ管理を行う際に利用することになるグローバル関数やマクロについて解説しています。NSPR はおなじみの <code>malloc()</code>, <code>calloc()</code>, <code>realloc()</code> や <code>free()</code> にマップされているヒープベースのメモリ管理関数を提供しています。 -</p> -<ul><li> {{ Anch("Memory Allocation Functions") }} -</li><li> {{ Anch("Memory Allocation Macros") }} -</li></ul> -<p>{{ 英語版章題("Memory Allocation Functions") }} -</p> -<h3 name=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E9.96.A2.E6.95.B0" id=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E9.96.A2.E6.95.B0">メモリ割り当て関数</h3> -<p>NSPR は自身にヒープ領域を確保しており、これらの関数はそのヒープ領域に対して動作します。ライブラリは Netscape security libraries などといった NSPR の最初に作成され、これらの関数をメモリの確保や開放に利用しています。これらのライブラリで利用するためにメモリを確保する場合や、これらのライブラリで確保されたメモリを開放する場合は、libc の同等の関数ではなく、必ず NSPR の関数を利用する必要があります。 -</p><p>メモリ割り当て関数は次のものになります : -</p> -<ul><li> <a href="ja/PR_Malloc">PR_Malloc</a> -</li><li> <a href="ja/PR_Calloc">PR_Calloc</a> -</li><li> <a href="ja/PR_Realloc">PR_Realloc</a> -</li><li> <a href="ja/PR_Free">PR_Free</a> -</li></ul> -<p><code>PR_Malloc()</code>, <code>PR_Calloc()</code>, <code>PR_Realloc()</code> や <code>PR_Free()</code> は、その libc の同等の関数である <code>malloc()</code>, <code>calloc()</code>, <code>realloc()</code> や <code>free()</code> と同じ定数を利用し、同等の動作を行います。(ただし、引数の型の <code>size_t</code> は <code>PRUint32</code> に変換されています。) <code>PR_Malloc()</code>, <code>PR_Calloc()</code> や <code>PR_Realloc()</code> で確保されたメモリ領域は、必ず <code>PR_Free()</code> で開放される必要があります。 -</p><p>{{ 英語版章題("Memory Allocation Macros") }} -</p> -<h3 name=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E3.83.9E.E3.82.AF.E3.83.AD" id=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E3.83.9E.E3.82.AF.E3.83.AD">メモリ割り当てマクロ</h3> -<p>メモリ割り当て関数のマクロ版も提供されており、プログラミングの利便性のために同様な追加のマクロも提供されています : -</p> -<ul><li> <a href="ja/PR_MALLOC">PR_MALLOC</a> -</li><li> <a href="ja/PR_NEW">PR_NEW</a> -</li><li> <a href="ja/PR_REALLOC">PR_REALLOC</a> -</li><li> <a href="ja/PR_CALLOC">PR_CALLOC</a> -</li><li> <a href="ja/PR_NEWZAP">PR_NEWZAP</a> -</li><li> <a href="ja/PR_DELETE">PR_DELETE</a> -</li><li> <a href="ja/PR_FREEIF">PR_FREEIF</a> -</li></ul> -{{ languages( { "en": "en/NSPR_API_Reference/Memory_Management_Operations" } ) }} diff --git a/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html b/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html deleted file mode 100644 index acb864a0e7..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html +++ /dev/null @@ -1,469 +0,0 @@ ---- -title: NSPR LOG MODULES -slug: Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES -tags: - - NSPR - - NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details open> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>この環境変数はどの log モジュールで log の取得が有効化されるのかを指定します。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre><em>moduleName</em>:<em>level</em>[, <em>moduleName</em>:<em>level</em>]* -</pre> - -<p><font face="serif"><em>moduleName</em></font> は <a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25372"><code>PR_NewLogModule</code></a> の呼び出しで指定される名前か、あるいは、下記のリストにある別名のいずれかです。</p> - -<p><font face="serif"><em>level</em></font> は 0 から 5 までの以下の意味を持つ値を指定します。</p> - -<ul> - <li>0 = PR_LOG_NONE: log を取りません</li> - <li>1 = PR_LOG_ALWAYS: 重要。全ての log を取ることを意図しています。</li> - <li>2 = PR_LOG_ERROR: errors</li> - <li>3 = PR_LOG_WARNING: warnings</li> - <li>4 = PR_LOG_DEBUG: デバッグメッセージ、注意</li> - <li>5: 全部取ります!</li> -</ul> - -<h2 id="Description" name="Description">Description</h2> - -<p><a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25372"><code>PR_NewLogModule</code></a> 呼び出しの name 引数に関連した moduleName と、0 以外のレベルを指定することで <code>moduleName</code> の log を有効化します。</p> - -<p>実行時に NSPR の log サービスを制御するために、特別な log モジュール名が提供されています。これらの制御は実行時に <code>NSPR_LOG_MODULES</code>環境変数に設定された場合に、あなたのアプリケーションに関係する NSPR の log サービスに影響を与えます。</p> - -<ul> - <li><strong>all</strong> 全ての log モジュールを有効化します。<a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25497">PR_LOG</a> の呼び出しで全ての log モジュールを有効にするには、下記のように変数をセットします。 - - <pre>set NSPR_LOG_MODULES=all:5</pre> - </li> - <li><strong>timestamp </strong>結果の各行の先頭に "2015-01-15 21:24:26.049906 UTC - "のような形式のタイムスタンプをつけます。</li> - <li><strong>append </strong>NSPR_LOG_FILE に参照される現存するファイルにの log エントリーを追加します。もし指定されていないと、現在存在する NSPR_LOG_FILE の内容は書き換えられ、同じ名前で新しいファイルになります。</li> - <li><strong>sync</strong> バッファ無しでのログ取得を有効にします。これは全ての log メッセージが書き込まれるように OS で flush されることを保証しますが、プログラムの実行が遅くなる場合があります。</li> - <li><strong>bufsize:size</strong> log のバッファサイズを <font face="serif"><em>size </em></font>にします。</li> -</ul> - -<h2 id="Examples" name="Examples">例</h2> - -<p>Toolkit::Storage コンポーネントに起こったことすべてを記録します。各行の先頭にタイムスタンプを付け、ログは /tmp/foo.log に記録されます。(ログファイルは実行ファイルが実行されるたびに書き換えられます)。</p> - -<pre>set NSPR_LOG_MODULES=timestamp,mozStorage:5 -set NSPR_LOG_FILE=/tmp/foo.log -</pre> - -<h2 id="試験サーバでのログ取得">試験サーバでのログ取得</h2> - -<ul> - <li><strong>mochitest</strong> では、 <code>testing/mochitest/runtests.py ファイル内の</code> <code>NSPR_LOG_MODULES</code> を編集し、試験サーバにプッシュします。ログファイルのダウンロードは、 ログビュアーより artifact として行います。</li> - <li>(その他のテスト?)</li> -</ul> diff --git a/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html b/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html deleted file mode 100644 index 44ddbfd9a0..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html +++ /dev/null @@ -1,453 +0,0 @@ ---- -title: PR_JoinThread -slug: Mozilla/Projects/NSPR/Reference/PR_JoinThread -translation_of: Mozilla/Projects/NSPR/Reference/PR_JoinThread ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details open> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>引数で受け取ったスレッドが終了するまで呼んだスレッドをブロックします。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="eval">#include <prthread.h> - -<a href="PRStatus">PRStatus</a> PR_JoinThread(<a href="PRThread">PRThread</a> *thread); -</pre> - -<h3 id="Parameter" name="Parameter">引数</h3> - -<p><code>PR_JoinThread</code>は以下の引数を受け取ります:</p> - -<dl> - <dt><code>thread</code></dt> - <dd>join可能であり、有効なスレッドの識別子。</dd> -</dl> - -<h3 id="Returns" name="Returns">返り値</h3> - -<p>関数は以下の値の1つを返します:</p> - -<ul> - <li>成功した場合、 <code>PR_SUCCESS を返します。</code></li> - <li>失敗した場合--例えば、もしjoin可能なスレッドが見つからなかった場合、もしくはターゲットのスレッドがjoin可能でない場合、<code>PR_FAILURE</code>を返します。</li> -</ul> - -<h2 id="Description" name="Description">説明</h2> - -<p><code>PR_JoinThreadはスレッドの終了を同期させるために使用されます。この関数は</code>呼んだスレッドをターゲットのスレッドがjoinablleな状態になるまでブロックするという点で同期的です。PR_JoinThreadは、ターゲットスレッドがそのルート関数から戻った後にのみ呼び出し元に戻ります。</p> - -<p><code>PR_JoinThreadは</code><code>PR_CreateThreadがreturnされるまで</code>呼び出してはならない。 <code>PR_JoinThread</code> が<code>PR_CreateThreadと</code>同じスレッドで呼ばれない場合、呼び出し元は<code>、PR_CreateThread</code> が完了していることを保証する責任を伴う。</p> - -<p>複数のスレッドは同一のスレッドが完了するのを待つことができません。呼び出し元のスレッドの1つが正常に動作しますが、その他はエラーPR_FAILUREで終了します。</p> - -<p>ターゲットスレッドがすでに終了している場合、呼び出し側スレッドはブロックされません。</p> - -<p><code>PR_JoinThread</code>は中断可能です。</p> diff --git a/files/ja/mozilla/projects/nspr/reference/prthread/index.html b/files/ja/mozilla/projects/nspr/reference/prthread/index.html deleted file mode 100644 index f5912c762b..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/prthread/index.html +++ /dev/null @@ -1,429 +0,0 @@ ---- -title: PRThread -slug: Mozilla/Projects/NSPR/Reference/PRThread -translation_of: Mozilla/Projects/NSPR/Reference/PRThread ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details open> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>NSPRのスレッドです。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="eval">#include <prthread.h> - -typedef struct PRThread PRThread; -</pre> - -<h3 id="Description" name="Description">説明</h3> - -<p>NSPRでは、スレッドはPRThreadタイプのopaque構造体で表されます。このポインタはたいていのスレッドを操作する関数で要求されます。</p> - -<p><code>PRThread*</code>は<span lang="ja">新しいスレッドを作成して、成功した結果のポインタです。識別子は</span>root functionが終了するまで有効であり、もしスレッドがjoinableである場合、joinされます。</p> diff --git a/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html b/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html deleted file mode 100644 index c46cd20c9e..0000000000 --- a/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: NSS 内部の概要 -slug: Mozilla/Projects/NSS/An_overview_of_NSS_Internals -tags: - - API - - Intermediate - - Intro - - NSS - - Tools -translation_of: Mozilla/Projects/NSS/An_overview_of_NSS_Internals ---- -<p style="margin-left: 40px;"><a href="/ja/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> の内部をハイレベルで解説</p> - -<p style="margin-left: 40px;">Mozilla.org プロジェクトによって開発されたソフトウェアは、伝統的にセキュリティプロトコルと暗号化アルゴリズムの独自の実装を使用していましたが、元々は Netscape Security Services と呼ばれていましたが、現在では Network Security Services (NSS) と呼ばれています。NSSはC言語で書かれたライブラリです。フリーでオープンソースのソフトウェアであり、多くのソフトウェアプロジェクトが利用を決めています。複数のオペレーティングシステム (OS) をサポートするために、Netscape Portable Runtime (NSPR) と呼ばれるクロスプラットフォーム移植性レイヤーをベースにしており、ファイルシステムアクセス、メモリ管理、ネットワーク通信、マルチスレッドプログラミングなどの OS 固有の API のためのクロスプラットフォームアプリケーションプログラミングインターフェース (API) を提供しています。</p> - -<p style="margin-left: 40px;">NSS は多くの機能を提供していますが、ここではモジュールのリスト、設計原理、重要な関連規格について説明します。</p> - -<p style="margin-left: 40px;">暗号処理を行うソフトウェアとデバイス間の相互運用性を可能にするため、NSS は PKCS#11 と呼ばれる規格に準拠しています。(11という数字に注目することが重要であることに注意してください。異なる数字で全く異なるトピックを定義する他の PKCS 規格が存在するからです)。</p> - -<p style="margin-left: 40px;">PKCS#11 規格に準拠したソフトウェアまたはハードウェアモジュールは、モジュールの特性や提供されるサービスを問い合わせることができるCコールのインターフェースを実装しています。NSS 自身のモジュールの複数の要素がこのインタフェースで実装されており、NSS はそれらのモジュールと話すときにこのインタフェースを利用します。この戦略により、NSSは、PKCS#11インタフェースを実装した多くのハードウェアデバイス(例えば、暗号演算に必要な計算を高速化したり、秘密鍵を安全に保護するスマートカードにアクセスしたり)やソフトウェアモジュール(例えば、追加のアルゴリズムを提供したり、鍵や信頼情報を保存するプラグインとしてそのようなモジュールをロードできるようにする)と連携することが可能になります。</p> - -<p style="margin-left: 40px;">NSS の中核となる要素は、ハッシュ関数、大数計算、暗号アルゴリズムを提供するベースライブラリである FreeBL です。<br> - <br> - Softoken は、ほとんどの FreeBL の機能を PKCS#11 モジュールとして公開する NSS モジュールです。</p> - -<p style="margin-left: 40px;">暗号技術の中には、暗号化と復号化の両方に同じ秘密鍵を使用するものがあり、例えばパスワードベース暗号化 (PBE) などがあります。自分でデータを暗号化する場合はこれで十分な場合が多いですが、通信相手と署名/暗号化されたデータをやり取りする必要が出てきたら、公開鍵暗号化を使うことで鍵の管理が簡単になります。公開鍵暗号化を利用する方法を説明した環境を PKI (Public Key Infrastructure) と呼びます。パーティ間で交換される公開鍵は、コンテナを使って輸送されます。コンテナは、標準の X.509 バージョン 3 に従い、証明書と呼ばれています。例えば、証明書には、証明書の所有関係に対する信頼を表す第三者による署名が含まれている。第三者によって割り当てられた信頼は、証明書に含まれる証明書の拡張子に記載されている特定の用途に制限されている場合があります。</p> - -<p style="margin-left: 40px;">NSS によって実行される操作の多く (ほとんどではないにせよ) は、X.509 証明書 (しばしば "cert" と略されますが、残念ながら「コンピュータ緊急対応チーム」という用語と混同されやすいです) の使用を伴います。</p> - -<p style="margin-left: 40px;">証明書が信頼されているかどうかをチェックする際には、通常は認証局 (CA) と呼ばれる信頼された第三者の署名能力を表す関連するトラストアンカー (ルート証明書) を見つける必要があります。トラストアンカーとは、ソフトウェアベンダー、組織インフラストラクチャ内の管理者、またはソフトウェアユーザーによって、すでに知られており、意図的に信頼されているとマークされている別の X.509 証明書にすぎません。NSS は、事前に定義された CA 証明書のセットを出荷します。このセットは、信頼の割り当てを含め、NSS が CKBI (組み込みルート証明書) と呼ばれるソフトウェアモジュールとして提供し、PKCS#11 インターフェイスも実装しています。組織レベルでは、セットの内容は Mozilla CA ポリシーに従って管理されています。技術的なレベルでは、セットはバイナリソフトウェアモジュールです。</p> - -<p style="margin-left: 40px;">データ交換に関連した暗号化や復号化などの暗号化トランザクションは、通常、通信相手 (ピア) の X.509 認証を使用して行われます。また、自分の証明書に属する秘密鍵を安全に保管しておくことも求められます。秘密鍵の保管場所を PBE で保護したいと思うかもしれません。NSS が提供するデフォルトのトラストを変更することにするかもしれません。これらすべての作業には、データの保存、検索、取得が必要です。NSS はストレージと管理 API を提供することで、これらの操作を簡素化します。NSS は、プログラマーが個々の証明書や鍵を含む個々のファイルを管理する必要はありません。その代わりに、NSS は独自のデータベースを利用することができます。一度 NSS のデータベースに証明書や鍵をインポートしてしまえば、それらを簡単に検索して再利用することができます。</p> - -<p style="margin-left: 40px;">NSS は NSS データベースを使って操作することを期待しているため、初期化呼び出しを実行することが必須です。最も単純なシナリオでは、プログラマーはinit関数のパラメータとしてファイルシステム上のディレクトリを提供し、NSSは残りの部分を行うように設計されています。既存のデータベースを検出して開くか、新しいデータベースを作成します。また、証明書の永続的な記録を使用したくないと判断した場合は、データベースなしモードでNSSを初期化することもできます。通常、新しいデータが恒久的なストレージに追加されるとすぐに、NSS はすべてのデータをディスクにフラッシュする。ストレージは複数のファイルで構成されています。鍵データベースファイルには秘密鍵が格納され、証明書データベースファイルには、自分の証明書の公開部分、ピアや認証局の証明書、信頼決定のリスト(組み込みの認証局を信頼しない、他の認証局を明示的に信頼するなど)が格納されています。データベースファイルの例としては、key3.db と cert8.db があります。3番目のファイルには、NSS が使用するために登録された外部 PKCS#11 モジュールのリストが含まれています。このファイルは secmod.db という名前にすることもできますが、新しい世代のデータベースではpkcs11.txtという名前のファイルが使用されます。</p> - -<p style="margin-left: 40px;">これらのデータベースファイルに直接アクセスして操作できるのは NSS だけです。NSS を使用するプログラマーは、これらのファイルに保存されているデータを操作するために NSS が提供する API を経由しなければなりません。プログラマーの仕事は、必要なパラメータ (データベースなど) で NSS を初期化することであり、その後 NSS はデータベースファイルを透過的に管理します。</p> - -<p style="margin-left: 40px;">ほとんどの場合、証明書や鍵は NSS のデータベースに格納されることになっています。したがって、最初のインポートや作成の後、プログラマーは通常、それらの生のバイトを処理しません。その代わりに、プログラマはルックアップ関数を使用し、NSS はその後アプリケーションのコードで使用されるアクセスハンドルを提供します。これらのハンドルは参照カウントされます。NSS は通常、証明書がネットワークから受信され、ディスクから読み込まれ、データベースから検索されると、証明書のインメモリ (RAM) プレゼンテーションを作成し、証明書のプロパティを含むインメモリデータ構造を準備します。一旦、アプリケーションがハンドルを使用して終了すると、それは解放され、NSS が関連するリソースを解放することができるようになります。秘密鍵のハンドルを扱う場合、通常、アプリケーションが生の鍵データにアクセスすることは困難であり (望ましくない)、そのため NSS からそのようなデータを抽出することは難しいかもしれません。そのため、NSS からそのようなデータを抽出するのは難しいかもしれません。通常の最低限の要件は、秘密鍵を保護層 (パスワードベースの暗号化など) でラップすることです。これは、セキュリティのためのコードのレビューを容易にするための意図があります。生の秘密鍵にアクセスできるコードが少なければ少ないほど、レビューしなければならないコードは少なくなります。</p> - -<p style="margin-left: 40px;">NSS には、生の鍵を検索する機能が限られています。好ましいアプローチは証明書を利用することであり、含まれるサブジェクト名 (証明書の所有者を表す情報) などのプロパティで証明書を検索することです。例えば、NSS は新しい公開鍵/秘密鍵ペアのランダム計算 (生成) をサポートしていますが、このような生の鍵ペアを扱うのは難しいです。通常のアプローチは、アプリケーションの作成ステップが完了するとすぐに証明書署名要求 (CSR) を作成し、鍵ペアへのハンドルを作成します。通常のフォローアップ動作は、CA から署名された証明書を受け取ることです。(ただし、NSS の機能を使用して自己署名証明書を作成することも可能ですが、通常は他の当事者から信頼されません)。受信したら、NSS にそのような新しい証明書を NSS データベースにインポートするように指示すれば十分で、NSS は自動的に埋め込まれた公開鍵の検索を行い、関連する秘密鍵を見つけることができ、その後、それを個人証明書として扱うことができます (個人証明書とは、個人の証明書のことです)。(個人証明書とは、秘密鍵を保有している証明書で、データの署名やデータの復号に使用することができます) インポート時に証明書に一意のニックネームを割り当てることができます。</p> - -<p style="margin-left: 40px;">NSS が返すすべてのハンドルについて、NSS は厳密なクリーンアップを要求することに注意してください。アプリケーションは、ハンドルが不要になったら、常に適切な参照解除(破棄)関数を呼び出す必要があります。これは、再起動せずにデータベースを閉じ、別のデータベースを使用してNSSを再初期化する必要があるかもしれないアプリケーションにとって特に重要です。データ要素がまだ参照されている場合、このような操作は実行時に失敗する可能性があります。</p> - -<p style="margin-left: 40px;">FreeBL、Softoken、CKBI モジュールに加えて、一般的な操作 (データフォーマット間のエンコード/デコード、標準化されたオブジェクト識別子 (OID) のリストなど) のためのユーティリティライブラリがあります。NSS には、Secure Sockets Layer/Transport Layer Security ネットワークプロトコルを実装する SSL/TLS モジュール、セキュアなメールで使用される CMS メッセージングといくつかのインスタントメッセージング実装を実装する S/MIME モジュール、古典的なデータベースストレージを実装する DBM ライブラリ、そして最後に「その他すべて」の大きなセットのためのコア NSS ライブラリがあります。データベースの新世代は、複数のアプリケーションによる同時アクセスを可能にするために SQLite データベースを使用しています。</p> - -<p style="margin-left: 40px;">これらはすべて共有ライブラリとして提供されています。特定の種類の証明書要求を生成するために使用される CRMF ライブラリは、スタティックリンク専用のライブラリとして提供されています。</p> - -<p style="margin-left: 40px;">証明書 (X.509) 、PKCS#12 (証明書と鍵) 、PKCS#7 (署名データ) などのファイル形式、CMS としてのメッセージ形式を扱う場合、構造化されたデータを非常に効率的に (小さいサイズの) プレゼンテーションで格納するための構文である ASN.1 に言及しなければなりません。元々は通信システムのために開発されたもので、データをできるだけ少なくすることが重要な時代に開発されました (現在でもこの原理を使うことはパフォーマンスを上げるためには意味がありますが)。ASN.1 フォーマットで利用可能なデータを処理するためには、通常のアプローチでは、データを解析して、(入れ子になった) C データ構造のような、より多くのスペースを必要とするが作業しやすいプレゼンテーションに転送します。その間、NSS は3つの異なる ASN.1 パーサの実装を受け取ってきましたが、それぞれに固有の特性、長所と短所があり、それが今でも使われている理由です (副作用のリスクがあるため、古いものを新しいものに置き換える勇気はまだありません)。ASN.1 パーサを使用する場合、テンプレート定義がパーサに渡され、それに応じて ASN.1 データストリームを解析します。テンプレートは通常、RFC 文書に記載されている定義と密接に一致しています。</p> - -<p style="margin-left: 40px;">DER として記述されたデータブロックは通常 ASN.1 形式です。どのデータを期待しているかを把握し、ソフトウェアのインタラクションのコンテキストに基づいて、正しいテンプレートを使用して解析する必要があります。PEM として記述されたデータは DER の base64 エンコードされたプレゼンテーションで、通常は人間が読める BEGIN/END 行の間にラップされています。NSS はバイナリ表示を好みますが、特にファイルからデータをインポートする場合には、base64 または ASCII 表示を使用することができます。最近の開発では、秘密鍵を含む外部の PEM ファイルを読み込むためのサポートが追加されました。</p> - -<p style="margin-left: 40px;">コードレベルで見ると、NSS は常に生データのブロックを扱っています。このような型なしブロックを格納するための一般的な構造は SECItem で、サイズと型なし C ポインタ変数を含んでいます。</p> - -<p style="margin-left: 40px;">メモリを扱うとき、NSS はアリーナを利用しています。これは C 言語の限られた機能で管理を簡単にする試みです (デストラクタがないので)。これは、クリーンアップを簡単にするために、複数のメモリ割り当てをグループ化するという考えです。ある操作を実行すると、多くの個別のデータ項目を割り当てる必要があり、コードはロジック内の多くの位置でタスクを中止する必要があるかもしれません。アリーナはタスクの処理が開始されると要求され、そのタスクに論理的に関連付けられたすべてのメモリ割り当てが関連付けられたアリーナから要求されます。アリーナの実装により、すべての個々のメモリブロックが追跡されます。タスクが完了すると、それが完了したか中止されたかにかかわらず、プログラマはアリーナを解放するだけで、個々に割り当てられたすべてのブロックが自動的に解放されます。解放はしばしば、攻撃者がメモリダンプから鍵を取り出すことをより困難にするために、アリーナに関連するメモリを即座に消去 (ゼロ化、zfree) することと組み合わされます。<br> - <br> - NSS は多くの C 言語のデータ構造を使用しています。多くの場合、NSS は同じまたは類似した概念のために複数の実装を持っています。例えば、複数の証明書のプレゼンテーションがあり、NSS 内部 (そして時には NSS を使用するアプリケーション) はそれらの間で変換する必要があるかもしれません。<br> - <br> - NSS の鍵となる責任は、署名と証明書の検証です。デジタル署名を検証するためには、アプリケーションデータ (例えば、署名された文書)、署名データブロック (デジタル署名)、公開鍵 (署名者であると考えられる証明書に含まれるもので、署名とともに受信したメタデータによって識別されるものなど) を調べなければなりません。署名データブロックが公開鍵の所有者によって生成されたものでなければならないことを示すことができれば、署名は検証されます (関連する秘密鍵を持っているのはその所有者だけなので)。</p> - -<p style="margin-left: 40px;">証明書 (A) を検証するには、いくつかの追加ステップが必要です。まず、証明書 (A) の潜在的な署名者 (B) を特定しなければなりません。これは、証明書 (A) の “issuer name” 属性を読み取り、その発行者証明書(B)を見つけようとすることによって行われます (その名前を “subject name” として使用している証明書を探すことによって)。そして、(A) で見つけた署名を (B) で見つけた公開鍵を使って検証しようとします。同じサブジェクト名を持つ複数の証明書 (B1, B2, ...) をそれぞれ試してみる必要があるかもしれません。<br> - <br> - 成功した後、この手順を再帰的に繰り返す必要があるかもしれません。最終的には、適切なトラストが割り当てられている証明書 B (または C または...) を見つけることが目的です (例えば、CKBI モジュール内で見つけられ、ユーザがトラストの上書き決定を行っていない場合や、ユーザまたはローカル環境で管理されているNSS データベースファイル内で見つけられる場合など)。</p> - -<p style="margin-left: 40px;">(複数の) 発行者証明書の署名の検証に成功した後、証明書 A の検証はまだ終わっていません。例えば、署名が行われた時点で証明書が有効であること、証明書内の名前が予想される署名者と一致していること (サブジェクト名、一般名、メール、アプリケーションに基づくチェック) 、証明書内に記録されている信頼制限 (拡張子) が使用を許可していること (例えば、暗号化は許可されているかもしれないが、署名は許可されていない) 、環境/アプリケーションポリシーに基づいて、失効チェック (OCSP または CRL) を行う必要がある場合があります。<br> - <br> - CKBI モジュールに含まれるトラスト・アンカーは、通常、自己署名されたものであり、サブジェクト名と発行者名のフィールドが同一であると定義されます。自己署名付き証明書が明示的に信頼されているとマークされている場合、NSS は自己署名の有効性のチェックをスキップします。</p> - -<p style="margin-left: 40px;">NSSには、証明書の検証を行うための複数のAPIがあります。例えば、(B)発行者候補の証明書がすべて同じサブジェクト名と発行者名を持ち、有効期間によって異なる場合など、非常に安定しており、すべての単純なシナリオで問題なく動作する古典的なエンジンがありますが、より高度なシナリオでは限られた範囲でしか動作しません。残念ながら、最近の証明書の世界はより複雑になっています。新規の認証局が世界の PKI 市場に参入し、事業を開始するために、既存の認証局と取引を行い、いわゆる相互署名証明書を受け取ることがある。その結果、(A) から信頼できるアンカー (ルート) 証明書 (Z) への信頼パスを検索する際に、候補となる発行者証明書のセットが異なる発行者名 (2 番目以上の発行者レベルを参照) を持つ可能性があります。その結果、(Z) を検索しながら、再帰的に複数の異なる代替ルートを試す必要がある。新しい検証エンジン (内部的に libPKIX と名付けられています) だけがこれを適切に行うことができます。<br> - <br> - これは、ソフトウェアベンダと認証局が、ウェブサイト証明書の証明書を発行するためのより厳格なルールを定義するための努力です。証明書の要求者が希望するウェブサイトのドメインの管理メールアドレスを管理していることを単に検証するのではなく、認証局が実世界の身元確認書類 (国の当局による会社登録書類など) の検証を行うことが要求され、また、ブラウザソフトウェアが証明書の有効性を付与する前に、認証局との失効チェックを行うことが要求されている。EV 証明書を区別するために、CA は証明書にポリシー OID を埋め込み、ブラウザはトラストチェーンがエンドエンティティ (EE) 証明書がポリシーを利用することを許可しているかどうかを検証することが期待されています。ポリシーの検証を実行できるのは、新しい libPKIX エンジンの API だけです。<br> - <br> - これを機に、サーバへの SSL/TLS 接続について一般的に (EVに限らず、Web サイトに限らず) 話すことにしましょう。このドキュメントでSSLについて言及している場合は、必ず SSL か TLS のどちらかを指しています。(TLS は SSL の新しいバージョンで、機能が強化されています)。</p> - -<p style="margin-left: 40px;">サーバへの SSL 接続を確立する際には、(少なくとも) サーバ証明書 (とそのトラストチェーン) がサーバからクライアント (ブラウザなど) に交換され、クライアントはその証明書が検証可能であることを確認します (期待される宛先サーバの名前と一致することを含む)。両者間のハンドシェイクのもう一つの部分は、鍵の交換です。公開鍵暗号化は (双方が同じ鍵を使用する) 対称暗号化よりもコストがかかる (計算が必要) ため、鍵合意プロトコルが実行され、公開鍵と秘密鍵を使用して、交換された初期情報の証明と検証が行われます。鍵合意が行われると、対称暗号化が使用されます (既存のチャネル上で潜在的な再ハンドシェイクが行われるまで)。SSL 接続に使用されるハッシュと暗号化アルゴリズムの組み合わせは暗号化スイートと呼ばれます。</p> - -<p style="margin-left: 40px;">NSS は技術的なレベルでサポートしている暗号化スイートのセットを出荷しています。さらに、NSS はデフォルトでどの暗号化スイートを有効にするかを定義するデフォルトポリシーを持っています。アプリケーションは、有効になっている暗号スイートのセットを変更するための関数呼び出しを使用して、プログラム実行時に使用されるポリシーを変更することができます。</p> - -<p style="margin-left: 40px;">プログラマが NSS が証明書を検証する方法や、SSL 接続のハンドシェイクで提示されるデータを検証する方法に影響を与えたい場合、適切な時点で NSS によって呼び出されるアプリケーション定義のコールバック関数を登録することができ、NSS によって行われた決定を上書きするために使用することができます。</p> - -<p style="margin-left: 40px;">SSL を実装したツールキットとして NSS を使いたい場合は、まず NSS を init しなければならないことを覚えておいてください。しかし、デフォルトのトラストを恒久的に変更することを気にしない (ディスクに記録されている) 場合は、データベースなしの init コールを使用することができます。データ交換のためのネットワークソケットを作成する際には、NSPR と NSS が提供するオペレーティングシステムに依存しない API を使用しなければならないことに注意してください。NSPR ファイルディスクリプタのプロパティに触れておくと面白いかもしれません。これは、データ処理に関与する複数のレイヤーを定義できることを意味します。ファイル記述子は、データを扱う最初のレイヤーへのポインタを持っています。そのレイヤは、潜在的な第2のレイヤへのポインタを持ち、そのレイヤは第3のレイヤへの別のポインタを持っているかもしれません。各レイヤーは、open/close/read/write/poll/select (など) 関数のための独自の関数を定義しています。SSL ネットワーク接続を使用する場合、基本的な NSPR 層と SSL ライブラリ層の 2 つの層を既に持っています。Mozilla アプリケーションでは、アプリケーション固有の処理が行われる第三のレイヤーを定義しています。詳細は NSPR のリファレンスドキュメントを参照してください。</p> - -<p style="margin-left: 40px;">NSS は、アプリケーションから要求された接続に加えて、アウトバウンドネットワーク接続を作成しなければならないことがあります。例としては、OCSP (オンライン証明書ステータスプロトコル) 情報の取得や、CRL (証明書失効リスト) のダウンロードなどがあります。ただし、NSS にはネットワークプロキシを使用するための実装がありません。アプリケーションでプロキシをサポートする必要がある場合は、httpリクエストコールバックインターフェースの独自の実装を登録することができ、NSS はプロキシをサポートするアプリケーションコードを使用することができます。</p> - -<p style="margin-left: 40px;">ハッシュ化、暗号化、復号化関数を使用する場合は、(大容量バッファ上で動作するのとは対照的に) データをストリーム化することが可能です。操作に必要なすべてのパラメータを提供しながらコンテキストハンドルを作成し、"update" 関数を複数回呼び出して入力のサブセットを NSS に渡します。データは処理され、直接返されるか、コンテキストに登録されたコールバック関数に送られます。処理が終わったら、保留中のデータをフラッシュアウトしてリソースを解放する最終化関数を呼び出します。</p> - -<p style="margin-left: 40px;">この行は、今後のセクションで libpkix がどのように動作し、どのように設計されているかを説明するためのプレースホルダです。</p> - -<p style="margin-left: 40px;">NSS を使って作業したい場合は、NSS 開発者が提供しているコマンドラインユーティリティを使うと便利なことが多いです。NSS データベースの管理、証明書のダンプや検証、PKCS#11 モジュールをデータベースに登録するためのツール、CMS の暗号化/署名されたメッセージを処理するためのツールなどがあります。</p> - -<p style="margin-left: 40px;">例えば、あなた自身の鍵のペアを作成して CA から新しい証明書を要求したい場合、certutil を使って空のデータベースを作成し、あなたのデータベース上で操作して証明書要求を作成し (これは希望する鍵のペアを作成することを含む)、それをファイルにエクスポートし、要求ファイルを CA に提出し、CA からファイルを受け取り、あなたのデータベースに証明書をインポートすることができます。証明書をインポートする際には、後で参照しやすくするために、良いニックネームを割り当てる必要があります。</p> - -<p style="margin-left: 40px;">複数のアプリケーションで同時にアクセスできる最初のデータベース形式は key4.db/cert9.db であることに注意してください。つまり、ブラウザやサーバーが古い NSS のデータベース形式で動作している場合は、他のソフトウェアが実行している間は NSS ツールで操作しないようにしてください。執筆時点では、NSS と Mozilla アプリケーションは、各アプリケーションが独自の NSS データベースを持っている古いデータベースファイル形式をデフォルトで使用しています。</p> - -<p style="margin-left: 40px;">秘密鍵を含む NSS データベースに保存された証明書のコピーが必要な場合は、pk12util を使って PKCS#12 ファイル形式にエクスポートすることができます。PEM 形式の証明書が必要な場合は、openssl pkcs12 コマンド (これは NSS ではありません) を使用して PKCS#12 ファイルを PEM に変換することができます。</p> - -<p style="margin-left: 40px;">この行は、データベースの準備の仕方、証明書のダンプの仕方、データの変換の仕方のプレースホルダです。</p> - -<p style="margin-left: 40px;">Firefox や Thunderbird などの Mozilla アプリケーションで NSS が使われているので、NSS を使って作業する気になったかもしれません。Mozilla アプリケーションをビルドすれば、NSS ライブラリも自動的にビルドされます。しかし、NSS のコマンドラインツールで作業したい場合は、スタンドアロンの NSS のビルド手順に従って、Mozilla アプリケーションのソースの外で NSS をビルドする必要があります。</p> - -<p style="margin-left: 40px;">鍵データベースファイルには、少なくとも一つの対称鍵が含まれており、これは必要に応じて NSS が自動的に作成し、秘密鍵 (秘密鍵) を保護するために使用されます。この対称鍵は、データベースにマスターパスワードを設定することで PBE で保護することができます。マスターパスワードを設定するとすぐに、攻撃者がマスターパスワードを盗むことに成功しない限り、 鍵データベースを盗む攻撃者は秘密鍵にアクセスできなくなります。</p> - -<p style="margin-left: 40px;">今、あなたは <a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS のソースを取得する方法、NSS を構築し、テストする方法</a>に興味があるかもしれません。</p> diff --git a/files/ja/mozilla/projects/nss/building/index.html b/files/ja/mozilla/projects/nss/building/index.html deleted file mode 100644 index 01f2a7c355..0000000000 --- a/files/ja/mozilla/projects/nss/building/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: NSS のビルド -slug: Mozilla/Projects/NSS/Building -translation_of: Mozilla/Projects/NSS/Building ---- -<h2 id="Introduction">Introduction</h2> - -<p>This page has detailed information on how to build NSS. Because NSS is a cross-platform library that builds on many different platforms and has many options, it may be complex to build. Please read these instructions carefully before attempting to build.</p> - -<h2 id="Build_environment">Build environment</h2> - -<p>NSS needs a C and C++ compiler. It has minimal dependencies, including only standard C and C++ libraries, plus <a href="https://www.zlib.net/">zlib</a>.</p> - -<p>For building, you also need <a href="https://www.gnu.org/software/make/">make</a>. Ideally, also install <a href="https://gyp.gsrc.io/">gyp</a> and <a href="https://ninja-build.org/">ninja</a> and put them on your path. This is recommended, as the build is faster and more reliable.</p> - -<h3 id="Windows">Windows</h3> - -<p>NSS compilation on Windows uses the same shared build system as Mozilla Firefox. You must first install the <a href="/en-US/docs/Developer_Guide/Build_Instructions/Windows_Prerequisites">Windows Prerequisites</a>, including <strong>MozillaBuild</strong>.</p> - -<p>You can also build NSS on the Windows Subsystem for Linux, but the resulting binaries aren't usable by other Windows applications.</p> - -<h2 id="Get_the_source">Get the source</h2> - -<p>NSS and NSPR use Mercurial for source control like other Mozilla projects. To check out the latest sources for NSS and NSPR--which may not be part of a stable release--use the following commands:</p> - -<pre class="notranslate">hg clone https://hg.mozilla.org/projects/nspr -hg clone https://hg.mozilla.org/projects/nss -</pre> - -<p>To get the source of a specific release, see <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">NSS Releases</a>.</p> - -<dl> - <dd> - <dl> - </dl> - </dd> -</dl> - -<h2 id="Build">Build</h2> - -<p>Build NSS using our build script:</p> - -<pre class="notranslate">nss/build.sh -</pre> - -<p>This builds both NSPR and NSS.</p> - -<h2 id="Build_with_make">Build with make</h2> - -<p>Alternatively, there is a <code>make</code> target called "nss_build_all", which produces a similar result. This supports some alternative options, but can be a lot slower.</p> - -<pre class="notranslate">make -C nss nss_build_all USE_64=1 -</pre> - -<p>The make-based build system for NSS uses a variety of variables to control the build. Below are some of the variables, along with possible values they may be set to.</p> - -<dl> - <dt>BUILD_OPT</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Build a debug (non-optimized) version of NSS. <em>This is the default.</em></dd> - <dt>1</dt> - <dd>Build an optimized (non-debug) version of NSS.</dd> - </dl> - </dd> - <dt>USE_64</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Build for a 32-bit environment/ABI. <em>This is the default.</em></dd> - <dt>1</dt> - <dd>Build for a 64-bit environment/ABI. <em>This is recommended.</em></dd> - </dl> - </dd> - <dt>USE_ASAN</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Do not create an <a href="http://clang.llvm.org/docs/AddressSanitizer.html">AddressSanitizer</a> build. <em>This is the default.</em></dd> - <dt>1</dt> - <dd>Create an AddressSanitizer build.</dd> - </dl> - </dd> -</dl> - -<h2 id="Unit_testing">Unit testing</h2> - -<p>NSS contains extensive unit tests. Scripts to run these are found in the <code>tests</code> directory. Run the standard suite by:</p> - -<pre class="notranslate">HOST=localhost DOMSUF=localdomain USE_64=1 nss/tests/all.sh</pre> - -<h3 id="Unit_test_configuration">Unit test configuration</h3> - -<p>NSS tests are configured using environment variables.<br> - The scripts will attempt to infer values for <code>HOST</code> and <code>DOMSUF</code>, but can fail. Replace <code>localhost</code> and <code>localdomain</code> with the hostname and domain suffix for your host. You need to be able to connect to <code>$HOST.$DOMSUF</code>.</p> - -<p>If you don't have a domain suffix you can add an entry to <code>/etc/hosts</code> (on Windows,<code> c:\Windows\System32\drivers\etc\hosts</code>) as follows:</p> - -<pre class="notranslate"><code>127.0.0.1 localhost.localdomain</code></pre> - -<p>Validate this opening a command shell and typing: <code>ping localhost.localdomain</code>.</p> - -<p>Remove the <code>USE_64=1</code> override if using a 32-bit build.</p> - -<h3 id="Test_results">Test results</h3> - -<p>Running all tests can take a considerable amount of time.</p> - -<p>Test output is stored in <code>tests_results/security/$HOST.$NUMBER/</code>. The file <code>results.html</code> summarizes the results, <code>output.log</code> captures all the test output.</p> - -<p>Other subdirectories of <code>nss/tests</code> contain scripts that run a subset of the full suite. Those can be run directly instead of <code>all.sh</code>, which might save some time at the cost of coverage.</p> diff --git a/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html b/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html deleted file mode 100644 index 49c550df32..0000000000 --- a/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: NSS を始める -slug: Mozilla/Projects/NSS/Getting_started_with_NSS -translation_of: Mozilla/Projects/NSS/Getting_started_with_NSS ---- -<h2 id="NSSとの関わり方">NSSとの関わり方</h2> - -<p>Network Security Services (NSS) は、Mozilla ソフトウェアで使用されている暗号アルゴリズムやセキュアなネットワークプロトコルのベースライブラリです。</p> - -<p>Mozilla Firefox やその他の NSS を利用したアプリケーションのコアセキュリティを向上させるために、あなたも協力してみませんか?私たちはあなたの貢献を楽しみにしています!</p> - -<p>あなたの興味やスキルにマッチした分野を特定するために、私たちはあなたを支援することができます。<a href="/ja/docs/Archive/Mozilla/Getting_started_with_chat">Mozilla IRC</a> のチャンネル #nss や <a href="https://lists.mozilla.org/listinfo/dev-tech-crypto/">mozilla.dev.tech.crypto</a> ニュースグループで質問することができます。</p> - -<p>NSS ライブラリとそれをサポートするコマンドラインツールは C プログラミング言語で書かれています。ビルドシステムと自動テストは makefile と bash スクリプトに基づいています。</p> - -<p>時間の経過とともに、NSS のさまざまな側面を説明する多くのドキュメントが作成されてきました。まずは以下から始めてみてください。</p> - -<ul> - <li>現在の<a href="/ja/docs/Mozilla/Projects/NSS">主な NSS ドキュメントのページ</a>から他のドキュメントにリンクしています</li> - <li>NSS を使用するアプリケーションの<a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">一般的な概要</a>と、NSS が提供する機能について説明します</li> - <li>ハイレベルで <a href="/ja/docs/Mozilla/Projects/NSS/An_overview_of_NSS_Internals">NSS の内部</a>を紹介します</li> - <li><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS ソースの取得、構築、テスト</a>について学びます</li> - <li>アーカイブされた mozilla.org ウェブサイトにある<a href="https://www-archive.mozilla.org/projects/security/pki/nss/">古いドキュメント</a></li> -</ul> - -<p>(残念ながら、NSS プロジェクトには現時点でテクニカルライターがいないため、私たちのドキュメントは私たちが望むほど整理されていません。より良い方法でドキュメントを整理することで貢献できるかもしれません)。</p> - -<h2 id="NSS_サンプルコード">NSS サンプルコード</h2> - -<p>NSS アプリケーションの書き方を学ぶのに適した場所は、NSS 開発者によってメンテナンスされているコマンドラインツールです。サブディレクトリ mozilla/security/nss/cmd にあります。</p> - -<p>または、いくつかの基本的な <a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sample_Code">NSS サンプルコー</a>ドを見てみてください。</p> - -<p>新しいサンプルのセットは現在開発中で、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">新しい NSS サンプルの作成</a>を参照してください。</p> - -<p>サンプルは以下の方法でダウンロードできます:: hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH</p> - -<h2 id="How_to_Contribute">How to Contribute</h2> - -<p>... (この部分はまだ工事中ですが、貢献の機会はたくさんあります)</p> - -<p>bugzilla アカウントをお持ちでない場合は、<a href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> でアカウントを開設してください。</p> - -<p>NSS :: Libraries コンポーネントを使用して、作業したい問題を探してください。私たちは <a href="https://bugzilla.mozilla.org/buglist.cgi?keywords=good-first-bug%2C%20&keywords_type=allwords&classification=Components&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Libraries&product=NSS">"good-first-bug" というキーワードでマークされた NSS バグ</a>のリストを管理しています。</p> - -<h3 id="Creating_your_Patch">Creating your Patch</h3> - -<p>パッチの作成を始めるには、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS のソース、ビルド、テスト</a>についてのセクションを参照してください。満足したら、コードレビューが必要になります。</p> - -<h3 id="Code_Review">Code Review</h3> - -<p><a href="https://phabricator.services.mozilla.com">http://phabricator.services.mozilla.com/</a> は、あなたのBugzilla アカウントを使用するコードレビューツールです。<a href="https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html">レビューのためにパッチをアップロードするには、Phabricator のユーザーインストラクション</a>を使用してください。</p> - -<p>コードレビュー中に評価されるいくつかの項目は、<a href="https://github.com/mozilla/nss-tools/blob/master/nss-code-review-checklist.yaml">Githubのチェックリストフォーム</a>に記載されています。</p> - -<p>レビューを通過した後、あなたのパッチはNSSチームのメンバーによって着地することができます。<a href="/ja/docs/Archive/Mozilla/Getting_started_with_chat">Mozilla IRC</a> のチャンネル #nss で私たちを見つけることができます。</p> - -<p>レビューとテストの両方が行われていないコードは着地させないことに注意してください。コードはテストがあって初めて機能し、テストは自動化の一部であるときにのみ機能します。</p> diff --git a/files/ja/mozilla/projects/nss/index.html b/files/ja/mozilla/projects/nss/index.html deleted file mode 100644 index c72ab56cff..0000000000 --- a/files/ja/mozilla/projects/nss/index.html +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: Network Security Services -slug: Mozilla/Projects/NSS -tags: - - NSS - - NeedsMigration -translation_of: Mozilla/Projects/NSS ---- -<p><strong>Network Security Services</strong> (<strong>NSS</strong>) は、セキュリティ対応のクライアントおよびサーバアプリケーションのクロスプラットフォーム開発をサポートするために設計されたライブラリのセットです。NSS を使用して構築されたアプリケーションは、SSL v3、TLS、PKCS #5、PKCS #7、PKCS #11、PKCS #12、S/MIME、X.509 v3 証明書、およびその他のセキュリティ標準をサポートすることができます。</p> - -<p>サポートされている規格の詳細については、<a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">NSS の概要</a>を参照してください。よくある質問のリストについては、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_FAQ">FAQ</a>を参照してください。</p> - -<p>NSS は Mozilla Public License の下で利用可能です。NSS のリリースを tar ファイルとしてダウンロードする方法については、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">Download PKI Source</a> を参照してください。</p> - -<p>開発者の方でNSSに貢献したいと思っている方は、NSSの内部の詳細についてのハイレベルな概要と、NSSを使い始めるためのドキュメントを読んでみてはいかがでしょうか。</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">ドキュメント</h2> - - <h3 id="背景となる情報">背景となる情報</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">NSS の概要</a></dt> - <dd>NSS とその能力の概要を説明します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_FAQ">NSS FAQ</a></dt> - <dd>NSS に関する基本的な質問に答えます。</dd> - <dt><a href="/ja/docs/Introduction_to_Public-Key_Cryptography">公開鍵暗号入門</a></dt> - <dd>NSS の基礎となる公開鍵暗号の基本的な概念を解説します。</dd> - <dt><a href="/ja/docs/Introduction_to_SSL">SSL 入門</a></dt> - <dd>SSL でサポートされている暗号化方式や、SSL ハンドシェイクの手順など、SSL プロトコルを紹介しています。</dd> - </dl> - - <h3 id="はじめに">はじめに</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Releases">NSS のリリース</a></dt> - <dd>このページでは、NSS の現在のリリース情報と過去のリリース情報を掲載しています。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">ソースコードを取得してビルドする</a></dt> - <dd>サポートされている異なるプラットフォーム上で NSS を構築する方法の説明書。</dd> - <dt><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Mercurial を使って Mozilla のソースコードを取得する</a></dt> - <dd>Mercurial との連携についての情報です。</dd> - <dt><a href="/ja/docs/Mozilla/Developer_Guide/Source_Code/CVS">CVS を使った Mozilla ソースコードの取得 (非推奨)</a></dt> - <dd>古い非推奨の CVS ドキュメント。</dd> - </dl> - - <h3 id="NSS_の_API">NSS の API</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/Introduction_to_Network_Security_Services">Network Security Services のご紹介</a></dt> - <dd>NSS ライブラリの概要と使用するために知っておくべきことを紹介しています。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/SSL_functions">NSS SSL 公開関数</a></dt> - <dd>NSS 共有ライブラリがエクスポートした SSL API をまとめます。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_reference">NSS SSL リファレンス</a></dt> - <dd>SSL 操作を呼び出すためのAPIです。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_API_Guidelines">NSS API ガイドライン</a></dt> - <dd>ライブラリとコードがどのように構成されているか、コードを開発する際のガイドライン (命名規則、エラー処理、スレッドの安全性など) を説明します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Tech_Notes">NSS 技術ノート</a></dt> - <dd>NSS の新機能に関する最新情報や、NSS を使ったプログラミングの高度なトピックについての補足資料を提供する NSS テクニカルノートのリンク集です。</dd> - </dl> - - <h3 id="ツール、テスト、その他技術的な詳細">ツール、テスト、その他技術的な詳細</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/Building">NSS のビルド手順</a></dt> - <dd>NSS のリリースをチェックアウトしてビルドする方法を説明します。</dd> - </dl> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Developer_Tutorial">NSS 開発者向けチュートリアル</a></dt> - <dd>NSS での変更の仕方。コーディングスタイル、ABI 互換性の維持。</dd> - </dl> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/tools">NSS ツール</a></dt> - <dd>NSS を使用したアプリケーションの開発、デバッグ、管理のためのツールです。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sample_Code">サンプルコード</a></dt> - <dd>暗号処理、証明書の取り扱い、SSL などに NSS がどのように利用できるかを実演します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Third-Party_Code">サードパーティコード</a></dt> - <dd>NSS ライブラリに含まれるサードパーティのコードの一覧です。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/testnss_32.html">NSS 3.2 Test Suite</a></dt> - <dd><strong>アーカイブ版</strong>。標準の NSS テストの実行方法について説明しています。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/performance_reports.html">NSS Performance Reports</a></dt> - <dd><strong>アーカイブ版</strong>。NSS 3.2 以降のリリースのパフォーマンスレポートへのリンクです。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a></dt> - <dd><strong>アーカイブ版</strong>。NSS 3.11 で使用されている暗号アルゴリズムの一覧です。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/loadable_certs.html">NSS 3.1 Loadable Root Certificates</a></dt> - <dd><strong>アーカイブ版</strong>。ルート CA 証明書をロードするスキームについて説明します。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/db_formats.html">cert7.db</a></dt> - <dd><strong>アーカイブ版</strong>。cert7.db データベースの一般的なフォーマット。</dd> - </dl> - - <h3 id="PKCS_11_情報">PKCS #11 情報</h3> - - <ul> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11" title="PKCS11">Documentation on PKCS #11 modules</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Implement">Implementing PKCS #11 for NSS</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Module_Specs" title="PKCS11_Module_Specs">The strings NSS uses to load PKCS #11 modules</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_FAQ">PKCS #11 FAQ</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a></li> - <li><a href="https://www-archive.mozilla.org/projects/security/pki/pkcs11/">PKCS #11 Conformance Testing - Archived version</a></li> - </ul> - - <dl> - </dl> - - <h3 id="NSS_にプリロードされた_CA_証明書">NSS にプリロードされた CA 証明書</h3> - - <ul> - <li><a href="https://www.mozilla.org/projects/security/certs/policy/">Mozilla CA certificate policy</a></li> - <li><a href="https://wiki.mozilla.org/CA/Included_Certificates">List of pre-loaded CA certificates</a> - <ul> - <li>このリストの消費者は、含まれる各ルート証明書のトラストビット設定を考慮する必要があります。<a href="https://www.imperialviolet.org/2012/01/30/mozillaroots.html">More Information</a>, <a href="https://github.com/agl/extract-nss-root-certs">root とそのトラストビットの抽出</a></li> - </ul> - </li> - </ul> - - <dl> - </dl> - - <h3 id="NSS_は_Netscape_Portable_Runtime_NSPR_の上に構築されています。">NSS は Netscape Portable Runtime (NSPR) の上に構築されています。</h3> - - <dl> - <dt><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Projects/NSPR">Netscape Portable Runtime</a></dt> - <dd>NSPR project page.</dd> - <dt><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference">NSPR Reference</a></dt> - <dd>NSPR API documentation.</dd> - </dl> - - <h3 id="その他の情報">その他の情報</h3> - - <ul> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/JavaScript_crypto" title="JavaScript_crypto">Using the window.crypto object from JavaScript</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/HTTP_Delegation" title="HTTP_Delegation">Delegation of HTTP download for OCSP</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/TLS_Cipher_Suite_Discovery" title="TLS_Cipher_Suite_Discovery">TLS Cipher Suite Discovery</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS_Certificate_Download_Specification" title="NSS_Certificate_Download_Specification">NSS Certificate Download Specification</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS/FIPS_Mode_-_an_explanation" title="FIPS Mode - an explanation">FIPS Mode - an explanation</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS_Key_Log_Format" title="NSS Key Log Format">Format of key log files</a></li> - <li>View <a href="https://wiki.developer.mozilla.org/en-US/docs/tag/NSS" title="/en-US/docs/tag/NSS">all NSS-related articles on MDN</a></li> - </ul> - - <h3 id="計画">計画</h3> - - <p>NSS の計画に関する情報は、<a class="external external-icon" href="https://wiki.mozilla.org/NSS">wiki.mozilla.org</a> に掲載されています。</p> - - <ul> - <li><a class="external external-icon" href="https://wiki.mozilla.org/FIPS_Validation">FIPS Validation</a></li> - <li><a class="external external-icon" href="https://wiki.mozilla.org/NSS:Roadmap">NSS Roadmap page</a></li> - <li><a href="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness" title="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness">NSS Improvement Project</a></li> - </ul> - </td> - <td> - <h2 class="Community" id="Community" name="Community">コミュニティ</h2> - - <ul> - <li>Mozilla Security フォーラムを見る...</li> - </ul> - - <p>{{ DiscussionList("dev-security", "mozilla.dev.security") }}</p> - - <ul> - <li>Mozilla Cryptography フォーラムを見る...</li> - </ul> - - <p>{{ DiscussionList("dev-tech-crypto", "mozilla.dev.tech.crypto") }}</p> - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2> - - <ul> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/Security" title="Security">Security</a></li> - </ul> - - <dl> - </dl> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html b/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html deleted file mode 100644 index 921b4d76ab..0000000000 --- a/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Network Security Services のご紹介 -slug: Mozilla/Projects/NSS/Introduction_to_Network_Security_Services -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Introduction_to_Network_Security_Services ---- -<p><strong>Network Security Services (NSS)</strong> とは、SSL、S/MIME、その他インターネットセキュリティ規格をサポートするアプリケーションのクロスプラットフォーム開発を支援するように設計されたライブラリの一式です。NSS の一般的な概観やサポートしている規格についての情報は <a href="ja/Overview_of_NSS">NSS 概観</a> をご覧ください。</p> - -<h3 id=".E5.85.B1.E6.9C.89.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA" name=".E5.85.B1.E6.9C.89.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">共有ライブラリ</h3> - -<p>Network Security Services は、スタティックライブラリと共有ライブラリの両方を提供します。共有ライブラリを利用するアプリケーションは、ライブラリがエクスポートする API のみを利用しなければなりません。3 つの共有ライブラリは、共通機能をエクスポートします。</p> - -<ul> - <li>SSL ライブラリは SSL のコア機能をサポートします。</li> - <li>S/MIME ライブラリは S/MIME のコア機能をサポートします。</li> - <li>NSS ライブラリは暗号化のコア機能をサポートします。</li> -</ul> - -<p>エクスポートされた API を利用しているアプリケーションが、将来のバージョンのライブラリでも互換性を保てることを保証します。NSS 3.2 の共有ライブラリからエクスポートされた共通機能の完全なリストは、<a href="ja/NSS_functions">NSS の機能</a> をご覧ください。</p> - -<p>どの NSS 3.1.1 のスタティックライブラリが上記 NSS 3.2 の共有ライブラリに置き換わったのかは、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/release_notes_32.html#migration">Migration from NSS 3.1.1</a> をご覧ください。</p> - -<p>下の図 1 は、上に挙げられた 3 つの共有ライブラリと NSPR 間の関係を単純化したものを示しています。NSPR は、スレッド管理や I/O といった、低レベルでのクロスプラットフォームサポートを提供します。(NSPR は、別の Mozilla プロジェクトであることにご注意ください。詳細は、<a href="ja/NSPR">Netscape Portable Runtime</a> をご覧ください。)</p> - -<dl> - <dt>図 1 NSS コアライブラリ間および NSPR 間の関係</dt> -</dl> - - - -<h3 id=".E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87.E3.81.A8.E7.89.B9.E5.88.A5.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA" name=".E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87.E3.81.A8.E7.89.B9.E5.88.A5.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">命名規則と特別なライブラリ</h3> - -<p>Windows と Unix は、スタティックライブラリおよびダイナミックライブラリに対し、それぞれ違った命名規則を利用します。</p> - -<table style="text-align: left;"> - <tbody> - <tr> - <th></th> - <th>Windows</th> - <th>Unix</th> - </tr> - <tr> - <th>スタティック</th> - <td><code>.lib</code></td> - <td><code>.a</code></td> - </tr> - <tr> - <th>ダイナミック</th> - <td><code>.dll</code></td> - <td><code>.so</code> または <code>.sl</code></td> - </tr> - </tbody> -</table> - -<p>加えて、Windows はダイナミックライブラリにバインドされた「インポート」ライブラリを持っています。そのため NSS ライブラリは、次の形式になっています。</p> - -<ul> - <li><code>libnss3.so</code> - Unix 共有ライブラリ</li> - <li><code>libnss3.sl</code> - HP-UX 共有ライブラリ</li> - <li><code>libnss.a</code> - Unix スタティックライブラリ</li> - <li><code>nss3.dll</code> - Windows 共有ライブラリ</li> - <li><code>nss3.lib</code> - Windows import library binding to <code>nss3.dll</code> にバインドされた Windows インポートライブラリ</li> - <li><code>nss.lib</code> - Windows スタティックライブラリ</li> -</ul> - -<p>NSS、SSL、および S/MIME は、上記すべての形式を備えています。</p> - -<p>次のスタティックライブラリは、どの共有ライブラリにも含まれません。</p> - -<ul> - <li><code>libcrmf.a</code>/<code>crmf.lib</code> は、CRMF 操作に API を提供します。</li> - <li><code>libjar.a</code>/<code>jar.lib</code> は、JAR ファイルを生成するために API を提供します。</li> -</ul> - -<p>次のスタティックライブラリは、外部のロード可能な PKCS #11 モジュールにのみ含まれます。</p> - -<ul> - <li><code>libnssckfw.a</code>/<code>nssckfw.lib</code> は、PKCS #11 モジュールを書くための API を提供します。</li> - <li><code>libswfci.a</code>/<code>swfci.lib</code> は、FORTEZZA ソフトウェアをサポートします。</li> -</ul> - -<p>次の共有ライブラリは、独立ロード可能なモジュール (standalone loadable modules) で、直接リンクされることを目的にしていません。</p> - -<ul> - <li><code>libfort.so</code>/<code>libfort.sl</code>/<code>fort32.dll</code> は、FORTEZZA ハードウェアへのサポートを提供します。</li> - <li><code>libswft.so</code>/<code>libswft.sl</code>/<code>swft32.dll</code> は、FORTEZZA ハードウェアへのサポートを提供します。</li> - <li><code>libnssckbi.so</code>/<code>libnssckbi.sl</code>/<code>nssckbi.dll</code> は、信頼済みルート証明書のデフォルトセットを定義します。</li> -</ul> - -<h3 id="ILP32_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name="ILP32_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88">ILP32 のサポート</h3> - -<p>NSS 3.2 以降のバージョンでは、新たに 2 つの共有ライブラリが PARisc CPU 用 HP-UX プラットフォームおよび (Ultra) Sparc (非 x86) CPU 用 Solaris 用に加えられています。これら HP-UX および Solaris プラットフォームは、ILP32 プログラムモデルを 32 ビット CPU および 64 ビット CPU 上で走らせるプログラムを利用できます。新たに加えられた 2 つのライブラリは、それぞれこの 2 つの CPU で使用する際に最適化されたパフォーマンスを提供します。</p> - -<p>これら 2 つの共有ライブラリは他のプラットフォーム向けには提供されません。これらのライブラリの名前は、下の表に示すように、プラットフォームに依存しています。</p> - -<table style="text-align: left;"> - <tbody> - <tr> - <th>プラットフォーム</th> - <th>32 ビット CPU 向け</th> - <th>64 ビット CPU 向け</th> - </tr> - <tr> - <td>Solaris/Sparc</td> - <td><code>libfreebl_pure32_3.so</code></td> - <td><code>libfreebl_hybrid_3.so</code></td> - </tr> - <tr> - <td>HPUX/PARisc</td> - <td><code>libfreebl_pure32_3.sl</code></td> - <td><code>libfreebl_hybrid_3.sl</code></td> - </tr> - <tr> - <td>AIX (将来のリリースを計画)</td> - <td><code>libfreebl_pure32_3_shr.a</code></td> - <td><code>libfreebl_hybrid_3_shr.a</code></td> - </tr> - </tbody> -</table> - -<p>これらのライブラリにアプリケーションをリンクしないでください。ライブラリは NSS 作動時に動的にロードされます。プログラムをライブラリのうちどちらかにリンクさせた場合、アプリケーションプログラムが特定の CPU 上でしか作動しなくなったり (例: 64 ビット CPU 上のみで作動し、32 ビット CPU では作動しない)、または 64 ビット CPU 上のより効率的な 64 ビットコードを利用できなくなる場合があります。</p> - -<p>これらの共有ライブラリを受け入れることができるプラットフォーム上では、その共有ライブラリがないと NSS 3.2 は作動しません。そのため、アプリケーションがこれらのファイルを NSS 共有ライブラリのディストリビューションを含むようにしてください。これら共有ライブラリは、他の NSS 共有ライブラリ (例えば <code>libnss3.so</code>) がインストールされているディレクトリにインストールされていなければなりません。二つの共有ライブラリはともに、インストール先のシステムが 32 ビット CPU や 64 ビット CPU が使われている場合は、必ずインストールされます。NSS が作動時にローカルシステムに対して正しいファイルを選択します。</p> - -<p>NSS 3.x はまた、上記プラットフォーム向けの LP64 モデルも利用可能ですが、NSS 3.x の LP64 モデルはこれら二つの共有ライブラリを持たないことを念頭においてください。</p> - -<h3 id=".E7.9F.A5.E3.81.A3.E3.81.A6.E3.81.8A.E3.81.8F.E3.81.B9.E3.81.8D.E3.81.93.E3.81.A8" name=".E7.9F.A5.E3.81.A3.E3.81.A6.E3.81.8A.E3.81.8F.E3.81.B9.E3.81.8D.E3.81.93.E3.81.A8">知っておくべきこと</h3> - -<p>NSS を利用する前に、次の話題を理解していることが求められます。</p> - -<ul> - <li>公開鍵暗号の概念と技術</li> - <li>セキュリティつきソケット層 (SSL) プロトコル</li> - <li>暗号認証インターフェース (cryptographic token interfaces) の PKCS #11 規格</li> - <li>クロスプラットフォーム開発の要点および技術</li> -</ul> - -<h3 id=".E3.82.88.E3.82.8A.E5.A4.9A.E3.81.8F.E3.81.AE.E6.83.85.E5.A0.B1.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF" name=".E3.82.88.E3.82.8A.E5.A4.9A.E3.81.8F.E3.81.AE.E6.83.85.E5.A0.B1.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF">より多くの情報を得るには</h3> - -<p>NSS を利用する前に理解しておかなければならない PKI および SSL の情報は、以下のページをご覧ください。</p> - -<ul> - <li><a href="ja/Introduction_to_Public-Key_Cryptography">公開鍵暗号入門</a></li> - <li><a href="ja/Introduction_to_SSL">SSL 入門</a></li> -</ul> - -<p>API に関する参考文献、ビルドガイド、およびその他の有益な情報へのリンクは、<a href="ja/NSS">NSS プロジェクトのページ</a> をご覧ください。</p> - -<p>上で述べられているように、NSS は NSPR の上にビルドされています。NSPR 用 API に関する参考文献は、<a href="ja/NSPR_API_Reference">NSPR API リファレンス</a> をご覧ください。</p> - -<p>{{ languages( { "en": "en/Introduction_to_Network_Security_Services" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/new_nss_samples/index.html b/files/ja/mozilla/projects/nss/new_nss_samples/index.html deleted file mode 100644 index be47c481f4..0000000000 --- a/files/ja/mozilla/projects/nss/new_nss_samples/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: 新しい NSS サンプル -slug: Mozilla/Projects/NSS/New_NSS_Samples -tags: - - Example -translation_of: Mozilla/Projects/NSS/New_NSS_Samples ---- -<h2 id="New_NSS_Sample_Code">New NSS Sample Code</h2> - -<p>このサンプルコード集では、暗号処理、証明書の取り扱い、SSL などに NSS をどのように利用できるかを示しています。また、暗号技術の応用におけるベストプラクティスをいくつか示しています。</p> - -<p>These new examples are a work in progress. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">https://bugzilla.mozilla.org/show_bug.cgi?id=490238</a></p> - -<p>サンプルのダウンロード方法</p> - -<pre class="bz_comment_text notranslate" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH -</pre> - -<p>サンプル一覧。</p> - -<ol> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Sample1_-_Hashing">Sample Code 1: Hashing</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Sample2_-_Initialize_NSS_Database">Sample Code 2: Init NSS database</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Encrypt_Decrypt_MAC_Using_Token">Sample Code 3: Encrypt/Decrypt and Mac Using Token</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Encrypt_Decrypt_MAC_Keys_As_Session_Objects">Sample Code 4: Encrypt/Decrypt and Mac Using Session Objects</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Enc_Dec_MAC_Output_Plblic_Key_as_CSR">Sample Code 5: Encrypt/Decrypt/MAC Output Public Key as a CSR </a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Enc_Dec_MAC_Using_Key_Wrap_CertReq_PKCS10_CSR">Sample Code 6: Encrypt/Decrypt/MAC Generating a PKCS#11 CSR</a></li> -</ol> - -<p>これらのサンプルで使用されている共通のコード。</p> - -<ol> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Utiltiies_for_nss_samples">Sample Code 0: Utilities</a></li> -</ol> - -<p>これらのサンプルの主執筆者である Mozilla Community のメンバーである Shailendra Jain 氏に感謝します。</p> diff --git a/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html b/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html deleted file mode 100644 index b56f599981..0000000000 --- a/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Notes on TLS - SSL 3.0 Intolerant Servers -slug: Mozilla/Projects/NSS/Notes_on_TLS_-_SSL_3.0_Intolerant_Servers -tags: - - Gecko - - NSS - - Security -translation_of: Mozilla/Projects/NSS/Notes_on_TLS_-_SSL_3.0_Intolerant_Servers ---- -<p> </p> - -<h3 id=".E4.B8.8D.E5.85.B7.E5.90.88" name=".E4.B8.8D.E5.85.B7.E5.90.88">不具合</h3> - -<p>多くの Netscape 6.x/7.x および Mozilla 利用者が、いくつかのセキュリティ保護されたサイト -- オンライントランザクションやオンラインバンクでHTTPSプロトコルを使っている一般的なサイト -- で何も表示されないと報告してきています。 接続は終わっているように見えますが空白ページが表示されます。これがMozillaベースのブラウザがTLS/SSL 3.0 狭量(不寛容)なサーバに遭遇したときの問題の主な症状です。</p> - -<h3 id="Cause" name="Cause">原因</h3> - -<p>現状、SSL 3.0 仕様の狭量な実装がされたいくつかのWebサーバがあります。 この狭量な実装は<strong>SSL 3.0</strong> および <strong>TLS (aka SSL 3.1)</strong> 仕様に従っているクライアントからの接続の試みを拒否します。 </p> - -<p>Netscape 6.x/7.x および Mozilla ブラウザ (0.9.1 以降のバージョン) は、TLSの仕様を正しく実装しており、ユーザはこの問題のあるサイトを利用できません。</p> - -<h3 id=".E6.8A.80.E8.A1.93.E6.83.85.E5.A0.B1" name=".E6.8A.80.E8.A1.93.E6.83.85.E5.A0.B1">技術情報</h3> - -<p>The <strong>SSL 3.0</strong> and <strong>TLS (aka SSL 3.1)</strong> specs both contain a provision -- the same provision -- for detecting "version rollback attacks". It is designed to permit a server to detect a man-in-the-middle that is altering the SSL client hello (connection) requests as they pass from the client to the server, altering them by changing the protocol version number to a lower version number. This feature was kind of meaningless until <strong>TLS (SSL 3.1)</strong> came along because there was no version higher than 3.0 from which to be rolled back. TLS is now available and used, and products that have implemented the roll-back detection incorrectly are not interoperable with TLS/SSL spec-compliant clients. Normally the servers which have this problem are not equipped to deal with the TLS protocol, but instead of rolling back to SSL 3.0 as the rollback provision provides, they terminate/drop the connection, thus resulting in most cases a blank page display.</p> - -<p>For up-to-date information, you can read a Bugzilla bug report which keeps track of this problem with Mozilla-based browsers. See {{ Bug(59321) }}.</p> - -<h3 id="Servers_currently_known_to_exhibit_this_intolerant_behavior" name="Servers_currently_known_to_exhibit_this_intolerant_behavior">Servers currently known to exhibit this intolerant behavior</h3> - -<p>As of this writing, this problem has been reported for the following servers: (Wherever there is an upgraded version which fixes the problem, it is indicated by an asterisked remark in the parentheses. )</p> - -<ul> - <li>Domino-Go-Webserver/4.6.2.6 (and perhaps some later versions)</li> - <li>IBM_HTTP_Server/1.3.6.3 or earlier (* Update to 1.3.6.4)</li> - <li>IBM_HTTP_Server/1.3.12.1 or earlier (* <a class="external" href="http://www6.software.ibm.com/dl/websphere/http-p">Update to 1.3.12.2</a>)</li> - <li>Java Web Server 2</li> - <li>OSU/3.2 - DECthreads HTTP server for OpenVM</li> - <li>Stronghold/2.2</li> - <li>Webmail v. 3.6.1 by Infinite Technologies (* Update available)</li> -</ul> - -<p>N.B. There might be servers other than those listed above which exhibit this problem. If you find such a server, feel free to add it to this page. For up-to-date information, you can read this {{bug(59321)}} which keeps a list of TLS/SSL 3.0 intolerant servers.</p> - -<h3 id="Users_.E3.81.93.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B.E3.81.AB.E3.81.AF.3F" name="Users:_.E3.81.93.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B.E3.81.AB.E3.81.AF.3F">Users: この問題を避けるには?</h3> - -<h4 id="Netscape_6.1_Preview_Release_1.2C_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.1_.E4.BB.A5.E5.89.8D" name="Netscape_6.1_Preview_Release_1.2C_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.1_.E4.BB.A5.E5.89.8D">Netscape 6.1 Preview Release 1, または Mozilla 0.9.1 以前</h4> - -<p>These versions shipped with the TLS option turned <strong>ON</strong> as the default but with no way to deal with the problem servers. If you are using these old versions, please update to the latest Netscape or Mozilla versions. You can also avoid such a problem by editing an existing profile -- check the preference option setting at: <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code>, and turn it <strong>OFF</strong> if it is <strong>ON</strong> for these earlier browsers.</p> - -<h4 id="Netscape_6.1_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.2_.E4.BB.A5.E9.99.8D" name="Netscape_6.1_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.2_.E4.BB.A5.E9.99.8D">Netscape 6.1 または Mozilla 0.9.2 以降</h4> - -<p>These browsers shipped with the TLS option <strong>ON</strong> but also included a graceful rollback mechanism on the client side when they encounter known TLS/SSL 3.0 intolerant servers.</p> - -<h4 id="Firefox_2_.E4.BB.A5.E9.99.8D" name="Firefox_2_.E4.BB.A5.E9.99.8D">Firefox 2 以降</h4> - -<p>Firefox 2から、SSL 2.0のサポートは最初から無効にされています; unless it is expressly re-enabled by the user using about:config. See <a href="/ja/Security_in_Firefox_2" title="ja/Security_in_Firefox_2">Security in Firefox 2</a> for details.</p> - -<h3 id="Web.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86.E8.80.85_How_to_avoid_this_problem.3F" name="Web.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86.E8.80.85:_How_to_avoid_this_problem.3F">Webサイト管理者: この問題を避けるには?</h3> - -<ul> - <li>Upgrade to a newer version if available, which corrects this problem. There will be other network clients which implement TLS/SSL 3.0 specification correctly and have a problem with your site. Let's not perpetuate the problem servers.</li> - <li>Contact the manufacturer and inquire if there is a new version available which fixes this problem.</li> - <li>Post a note on your site instructing users of old versions of browsers like Netscape 6.0/6.01/6.1 Preview Release 1 and Mozilla 0.9.1 and earlier to turn <strong>OFF</strong> the TLS option at: <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code>. However, this is a temporary workaround at best. We recommend strongly that you urge users to upgrade to the latest Netscape version (or at least Netscape 6.1) since the newer versions have the graceful rollback implemented in the code.</li> - <li>If you have questions concerning Netscape browsers and problem servers, please contact us using the feedback address at the top of this page.</li> -</ul> - -<h3 id="Detecting_intolerant_servers" name="Detecting_intolerant_servers">Detecting intolerant servers</h3> - -<p>Because newer versions of Netscape and Mozilla have built-in workaround for the problem servers, it is now unlikely that you will experience this problem. But if you're running Netscape 6.0/6.01/6.1 PR 1 or Mozilla build (prior to 6/11/2001), you should look out for the symptom described below. You may also run this test with versions later than the older versions of Netscape 6.x or Mozilla -- just in case code changes in Netscape 6.1/Mozilla 0.9.2 or later may not catch all problem servers.</p> - -<ul> - <li>When you find a secure site which simply does not display any page content or drops the connection, check to see if the preference option <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code> is turned <strong>ON</strong>. If so, turn it <strong>OFF</strong>.</li> - <li>Now re-visit the problem site. If the content displays this time, you are most likely witnessing a TLS/SSL 3.0 intolerant server.</li> - <li>Report such a problem to the server's administrator.</li> -</ul> - -<h3 id="How_to_report_an_intolerant_server" name="How_to_report_an_intolerant_server">How to report an intolerant server</h3> - -<ul> - <li><em>Optional:</em> Get the name of the SSL server software used by the website. To do so, add <code><span class="nowiki">http://toolbar.netcraft.com/site_report?url=</span></code> to the beginning of the URL. The server software will appear next to <strong>Server</strong> under <strong>SSL Certificate Information</strong>.<br> - <br> - For instance, to check <code><span class="nowiki">https://bugzilla.mozilla.org/</span></code>, then visit <a class="external" href="http://toolbar.netcraft.com/site_report?url=https://bugzilla.mozilla.org/" rel="freelink">http://toolbar.netcraft.com/site_rep...a.mozilla.org/</a>.</li> - <li>Add the information on such a server (software, URL) to {{bug(59321)}} at Bugzilla. (Note: You will be asked to provide your email address before you can file a bug at Bugzilla.)</li> -</ul> - -<div class="originaldocinfo"> -<h3 id=".E5.8E.9F.E6.96.87.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.83.85.E5.A0.B1">原文情報</h3> - -<ul> - <li>著者 : 桃井 勝彦</li> - <li>最終更新日: 2003年1月27日</li> - <li>Copyright © 2001-2003 Netscape. All rights reserved.</li> -</ul> -</div> diff --git a/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html b/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html deleted file mode 100644 index 707389d205..0000000000 --- a/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: NSS 3.18 release notes -slug: Mozilla/Projects/NSS/NSS_3.18_release_notes -translation_of: Mozilla/Projects/NSS/NSS_3.18_release_notes ---- -<h2 id="はじめに">はじめに</h2> - -<p>NSSチームはマイナーリリースであるNetwork Security Services (NSS) 3.18をリリースしました。</p> - -<h2 id="配布情報">配布情報</h2> - -<p>HGタグはNSS_3_18_RTMです。NSS 3.18はNSPR 4.10.8またはそれより新しいバージョンを必要とします。</p> - -<p>NSS 3.18のソースコードの配布物はftp.mozilla.orgまたは安全なHTTPSのダウンロードリンクから入手できます:</p> - -<ul> - <li>Source tarballs:<br> - <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_18_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_18_RTM/src/</a></li> -</ul> - -<h2 id="NSS_3.18で新しくなった点">NSS 3.18で新しくなった点</h2> - -<h3 id="新機能">新機能</h3> - -<ul> - <li>When importing certificates and keys from a PKCS#12 source, it's now possible to override the nicknames, prior to importing them into the NSS database, using new API SEC_PKCS12DecoderRenameCertNicknames.</li> - <li>The tstclnt test utility program has new command-line options -C, -D, -b and -R.<br> - Use -C one, two or three times to print information about the certificates received from a server, and information about the locally found and trusted issuer certificates, to diagnose server side configuration issues. It is possible to run tstclnt without providing a database (-D). A PKCS#11 library that contains root CA certificates can be loaded by tstclnt, which may either be the nssckbi library provided by NSS (-b) or another compatible library (-R).</li> -</ul> - -<h4 id="新しい関数">新しい関数</h4> - -<ul> - <li><em>in certdb.h</em> - - <ul> - <li><strong>SEC_CheckCrlTimes</strong> - Check the validity of a CRL at the given time.</li> - <li><strong>SEC_GetCrlTimes</strong> - Extract the validity times from a CRL.</li> - </ul> - </li> - <li><em>in p12.h</em> - <ul> - <li><strong>SEC_PKCS12DecoderRenameCertNicknames</strong> - call an application provided callback for each certificate found in a SEC_PKCS12DecoderContext.</li> - </ul> - </li> - <li><em>in pk11pub.h</em> - <ul> - <li><strong>__PK11_SetCertificateNickname</strong> - this is an internal symbol for NSS use only, as with all exported NSS symbols that have a leading underscore '_'. Applications that use or depend on these symbols can and will break in future NSS releases.</li> - </ul> - </li> -</ul> - -<h4 id="新しい型">新しい型</h4> - -<ul> - <li><em>in p12.h</em> - - <ul> - <li><strong>SEC_PKCS12NicknameRenameCallback</strong> - a function pointer definition. An application that uses SEC_PKCS12DecoderRenameCertNicknames must implement a callback function that implements this function interface.</li> - </ul> - </li> -</ul> - -<h2 id="NSS_3.18での目立った変更点">NSS 3.18での目立った変更点</h2> - -<ul> - <li>既定の状態で有効なTLSのプロトコルバージョンの最大値がTLS 1.0からTLS 1.2に引き上げられました。同様に、既定の状態で有効なDTLSのプロトコルバージョンの最大値もDTLS 1.0からDTLS 1.2に引き上げられました。</li> - <li>RSA鍵ペアを生成する際にcertutilが使う鍵の既定のサイズが1024ビットから2048ビットに引き上げられました。</li> - <li>Mac OS Xでは、OSにsqliteのライブラリのバージョン3.5またはそれ以上がインストールされている場合、既定の状態でsoftokn共有ライブラリにリンクされるようになりました。</li> - <li>以下の認証局証明書について、コードとWebサイトの署名に対する<strong>信頼のビットが無効化されました。</strong> - <ul> - <li>OU = Equifax Secure Certificate Authority - <ul> - <li>SHA1 Fingerprint: D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A</li> - </ul> - </li> - <li>CN = Equifax Secure Global eBusiness CA-1 - <ul> - <li>SHA1 Fingerprint: 7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45</li> - </ul> - </li> - <li>CN = TC TrustCenter Class 3 CA II - <ul> - <li>SHA1 Fingerprint: 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5</li> - </ul> - </li> - </ul> - </li> - <li>以下の認証局証明書が<strong>追加されました。</strong> - <ul> - <li>CN = Staat der Nederlanden Root CA - G3 - <ul> - <li>SHA1 Fingerprint: D8:EB:6B:41:51:92:59:E0:F3:E7:85:00:C0:3D:B6:88:97:C9:EE:FC</li> - </ul> - </li> - <li>CN = Staat der Nederlanden EV Root CA - <ul> - <li>SHA1 Fingerprint: 76:E2:7E:C1:4F:DB:82:C1:C0:A6:75:B5:05:BE:3D:29:B4:ED:DB:BB</li> - </ul> - </li> - <li>CN = IdenTrust Commercial Root CA 1 - <ul> - <li>SHA1 Fingerprint: DF:71:7E:AA:4A:D9:4E:C9:55:84:99:60:2D:48:DE:5F:BC:F0:3A:25</li> - </ul> - </li> - <li>CN = IdenTrust Public Sector Root CA 1 - <ul> - <li>SHA1 Fingerprint: BA:29:41:60:77:98:3F:F4:F3:EF:F2:31:05:3B:2E:EA:6D:4D:45:FD</li> - </ul> - </li> - <li>CN = S-TRUST Universal Root CA - <ul> - <li>SHA1 Fingerprint: 1B:3D:11:14:EA:7A:0F:95:58:54:41:95:BF:6B:25:82:AB:40:CE:9A</li> - </ul> - </li> - <li>CN = Entrust Root Certification Authority - G2 - <ul> - <li>SHA1 Fingerprint: 8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4</li> - </ul> - </li> - <li>CN = Entrust Root Certification Authority - EC1 - <ul> - <li>SHA1 Fingerprint: 20:D8:06:40:DF:9B:25:F5:12:25:3A:11:EA:F7:59:8A:EB:14:B5:47</li> - </ul> - </li> - <li>CN = CFCA EV ROOT - <ul> - <li>SHA1 Fingerprint: E2:B8:29:4B:55:84:AB:6B:58:C2:90:46:6C:AC:3F:B8:39:8F:84:83</li> - </ul> - </li> - </ul> - </li> - <li>ルート認証局リストのバージョン番号は2.3に更新されました。</li> -</ul> - -<h2 id="NSS_3.18で修正されたバグ">NSS 3.18で修正されたバグ</h2> - -<p>NSS 3.18で修正されたバグの一覧を返すBugzillaのクエリは以下の通りです:</p> - -<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.18">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.18</a></p> - -<h2 id="互換性">互換性</h2> - -<p>NSS 3.18共有ライブラリはすべての古いNSS 3.x共有ライブラリと後方互換性があります。古いNSS3.x共有ライブラリとリンクされたプログラムは、再コンパイルまたは再リンクなしでNSS 3.18と組み合わせて動作します。また、NSS公開関数に列挙された関数のみに限定してNSSのAPIを利用しているアプリケーションは、将来のバージョンのNSS共有ライブラリにおいても利用できます。</p> - -<h2 id="フィードバック">フィードバック</h2> - -<p>バグに遭遇した場合は<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS">、 bugzilla.mozilla.org</a> に(プロダクトとしてNSSを選択して)バグレポートを登録して下さい。</p> - -<p> </p> diff --git a/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html b/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html deleted file mode 100644 index 31afee3691..0000000000 --- a/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: NSS 3.57 リリースノート -slug: Mozilla/Projects/NSS/NSS_3.57_release_notes -translation_of: Mozilla/Projects/NSS/NSS_3.57_release_notes ---- -<h2 id="Introduction">Introduction</h2> - -<p>The NSS team has released Network Security Services (NSS) 3.57 on <strong>18 September 2020</strong>, which is a minor release.</p> - -<p>The NSS team would like to recognize first-time contributors:</p> - -<ul> - <li><cite>Khem Raj</cite></li> -</ul> - -<h2 id="Distribution_Information">Distribution Information</h2> - -<p>The HG tag is NSS_3_57_RTM. NSS 3.57 requires NSPR 4.29 or newer.</p> - -<p>NSS 3.57 source distributions are available on ftp.mozilla.org for secure HTTPS download:</p> - -<ul> - <li>Source tarballs:<br> - <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_57_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_57_RTM/src/</a></li> -</ul> - -<p>Other releases are available <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">in NSS Releases</a>.</p> - -<h2 id="Notable_Changes_in_NSS_3.57">Notable Changes in NSS 3.57</h2> - -<ul> - <li>NSPR dependency updated to 4.29.</li> -</ul> - -<h3 id="Certificate_Authority_Changes">Certificate Authority Changes</h3> - -<ul> - <li>The following CA certificates were Added: - <ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global Certification Authority - - <ul> - <li>SHA-256 Fingerprint: 97552015F5DDFC3C8788C006944555408894450084F100867086BC1A2BB58DC8</li> - </ul> - </li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global ECC P256 Certification Authority - <ul> - <li>SHA-256 Fingerprint: 945BBC825EA554F489D1FD51A73DDF2EA624AC7019A05205225C22A78CCFA8B4</li> - </ul> - </li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global ECC P384 Certification Authority - <ul> - <li>SHA-256 Fingerprint: 55903859C8C0C3EBB8759ECE4E2557225FF5758BBD38EBD48276601E1BD58097</li> - </ul> - </li> - </ul> - </li> - <li>The following CA certificates were Removed: - <ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651211">Bug 1651211</a> - CN=EE Certification Centre Root CA - <ul> - <li>SHA-256 Fingerprint:<br> - 3E84BA4342908516E77573C0992F0979CA084E4685681FF195CCBA8A229B8A76</li> - </ul> - </li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656077">Bug 1656077</a> - O=Government Root Certification Authority; C=TW - <ul> - <li>SHA-256 Fingerprint:<br> - 7600295EEFE85B9E1FD624DB76062AAAAE59818A54D2774CD4C0B2C01131E1B3</li> - </ul> - </li> - </ul> - </li> - <li>Trust settings for the following CA certificates were Modified: - <ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653092">Bug 1653092</a> - CN=OISTE WISeKey Global Root GA CA - <ul> - <li>Websites (server authentication) trust bit removed.</li> - </ul> - </li> - </ul> - </li> -</ul> - -<h2 id="Bugs_fixed_in_NSS_3.57">Bugs fixed in NSS 3.57</h2> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651211">Bug 1651211</a> - Remove EE Certification Centre Root CA certificate.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653092">Bug 1653092</a> - Turn off Websites Trust Bit for OISTE WISeKey Global Root GA CA.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656077">Bug 1656077 </a>- Remove Taiwan Government Root Certification Authority certificate.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- Add SecureTrust's Trustwave Global root certificates to NSS.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659256">Bug 1659256</a> - AArch64 AES optimization shouldn't be enabled with gcc 4.8.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651834">Bug 1651834 </a>- Fix Clang static analyzer warnings.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1661378">Bug 1661378</a> - Fix Build failure with Clang 11.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659727">Bug 1659727</a> - Fix mpcpucache.c invalid output constraint on Linux/ARM.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1662738">Bug 1662738</a> - Only run freebl_fips_RNG_PowerUpSelfTest when linked with NSPR.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1661810">Bug 1661810</a> - Fix Crash @ arm_aes_encrypt_ecb_128 when building with Clang 11.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659252">Bug 1659252</a> - Fix Make build with NSS_DISABLE_DBM=1.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660304">Bug 1660304</a> - Add POST tests for KDFs as required by FIPS.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663346">Bug 1663346</a> - Use 64-bit compilation on e2k architecture.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1605922">Bug 1605922</a> - Account for negative sign in mp_radix_size.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653641">Bug 1653641</a> - Cleanup inaccurate DTLS comments, code review fixes.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660372">Bug 1660372</a> - NSS 3.57 should depend on NSPR 4.29</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660734">Bug 1660734</a> - Fix Makefile typos.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660735">Bug 1660735</a> - Fix Makefile typos.</li> -</ul> - -<p>This Bugzilla query returns all the bugs fixed in NSS 3.57:</p> - -<p><a class="external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.57" rel="noopener">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.57</a></p> - -<h2 id="Compatibility">Compatibility</h2> - -<p>NSS 3.57 shared libraries are backward compatible with all older NSS 3.x shared libraries. A program linked with older NSS 3.x shared libraries will work with NSS 3.57 shared libraries without recompiling or relinking. Furthermore, applications that restrict their use of NSS APIs to the functions listed in NSS Public Functions will remain compatible with future versions of the NSS shared libraries.</p> - -<h2 id="Feedback">Feedback</h2> - -<p>Bugs discovered should be reported by filing a bug report with<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS"> bugzilla.mozilla.org</a> (product NSS).</p> diff --git a/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html b/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html deleted file mode 100644 index d01fc56f20..0000000000 --- a/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html +++ /dev/null @@ -1,534 +0,0 @@ ---- -title: NSS API ガイドライン -slug: Mozilla/Projects/NSS/NSS_API_Guidelines -translation_of: Mozilla/Projects/NSS/NSS_API_Guidelines ---- -<h1 id="NSS_API_ガイドライン">NSS API ガイドライン</h1> - -<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> - -<h2 id="Introduction">Introduction</h2> - -<p>This document describes how the NSS code is organized, the libraries that get built from the NSS sources, and guidelines for writing NSS code. These guidelines will familiarize you with some of the ways things can be done in the NSS code. This will help you understand existing NSS code. It should also help you understand how to write new code, and where to place it.</p> - -<p>Some of the guidelines in this document, are more forward-looking than documentary. These rules are here to help us all immediately achieve more consistent and usable code, but some existing code won't follow all these rules.</p> - -<p><a name="Structure"> </a></p> - -<h2 id="NSS_API_Structure"><a name="Structure">NSS API Structure</a></h2> - -<p>This section explains the structure and relationships of the NSS libraries. The <a href="#Layering">Layering</a> section explains how the NSS code is layered, and how higher-level functions wrap low-level functions. The <a href="#Libraries"> Libraries</a> section descibes the NSS libraries, the functionality each provides, and the layer in which the library (mostly) operates.</p> - -<h3 id="Layering_2"><a name="Layering"></a>Layering</h3> - -<p>Each separate component of the API should live in its own layer. The functions in these APIs should never call API layers above them. In addition, some low-level APIs may be completely opaque to higher level layers. That is, access to these functions should only be provided by the API directly above them. The NSS APIs are layered, as shown in this diagram:</p> - -<p><img alt='A diagram of the different layers that collectively make up "NSS". Dependencies are only permitted between siblings and layers below them.' src="https://mdn.mozillademos.org/files/5379/layer.gif" style="height: 507px; line-height: 1.572; width: 427px;"></p> - -<p><span style="line-height: 1.572;">The boxes in the gray section, towards the center, are exported only through PKCS #11. PKCS #11 is only exported through the Wrappers. The areas which need the most work (both here and throughout the code) is: </span></p> - -<ol> - <li><span style="line-height: 1.572;">The relationship of the Certificate library with just about every other component (most noticeably PKCS #12, PKCS #7, and PKCS #11)</span></li> - <li><span style="line-height: 1.572;">Splitting Low Key and High Key components more clearly</span></li> - <li><span style="line-height: 1.572;">The Crypto wrappers (PKCS #11 Wrappers) and High Key </span></li> - <li><span style="line-height: 1.572;">PKCS #12 and PKCS #5</span></li> -</ol> - -<p><a name="Libraries"> </a></p> - -<h3 id="Libraries_2"><a name="Libraries">Libraries</a></h3> - -<p>NSS compiles into the libraries described below. The Layer indicates the main layer, seen in the previous diagram, in which the library operates. The Directory is the location of the library code in the NSS source tree. The Public Headers is a list of header files that contain types, and functions, that are publicly available to higer-level APIs.</p> - -<table style="width: 75%;"> - <tbody> - <tr> - <th>Library</th> - <th>Description</th> - <th>Layer</th> - <th>Directory</th> - <th>Public Headers</th> - </tr> - <tr> - <td>certdb</td> - <td>Provides all certificate handling functions and types. The certdb library manipulates the certificate database (add, create, delete certificates and CRLs). It also provides general certificate-handling routines (create a certificate, verify, add/check certificate extensions).</td> - <td>Low Cert</td> - <td>lib/certdb</td> - <td>cdbhdl.h, certdb.h, cert.h, certt.h</td> - </tr> - <tr> - <td>certhi</td> - <td>Provides high-level certificate-related functions, that do not access the certificate database, nor individual certificate data directly. Currently, OCSP checking settings are exported through certhi.</td> - <td>High Cert</td> - <td>lib/certhigh</td> - <td>ocsp.h, ocspt.h</td> - </tr> - <tr> - <td>crmf</td> - <td>Provides functions, and data types, to handle Certificate Management Message Format (CMMF) and Certificate Request Message Format (CRMF, see <a href="https://tools.ietf.org/html/rfc2511"> RFC 2511</a>) data. CMMF no longer exists as a proposed standard; CMMF functions have been incorporated into the proposal for <a href="https://tools.ietf.org/html/rfc2510"> Certificate Management Protocols (CMP)</a>.</td> - <td>Same Level as SSL</td> - <td>lib/crmf</td> - <td>cmmf.h, crmf.h, crmft.h, cmmft.h, crmffut.h</td> - </tr> - <tr> - <td>cryptohi</td> - <td>Provides high-level cryptographic support operations: such as signing, verifying signatures, key generation, key manipulation, hashing; and data types. This code is above the PKCS #11 layer.</td> - <td>Sign/Verify</td> - <td>lib/cryptohi</td> - <td>cryptohi.h, cryptoht.h, hasht.h, keyhi.h, keythi.h, key.h, keyt.h, sechash.h</td> - </tr> - <tr> - <td>fort</td> - <td>Provides a PKCS #11 interface, to Fortezza crypto services. Fortezza is a set of security algorithms, used by the U.S. government. There is also a SWFT library that provides a software-only implementation of a PKCS #11 Fortezza token.</td> - <td>PKCS #11</td> - <td>lib/fortcrypt</td> - <td>cryptint.h, fmutex.h, fortsock.h, fpkcs11.h, fpkcs11f.h, fpkcs11t.h, fpkmem.h, fpkstrs.h, genci.h, maci.h</td> - </tr> - <tr> - <td>freebl</td> - <td>Provides the API to actual cryptographic operations. The freebl is a wrapper API. You must supply a library that implements the cryptographic operations, such as BSAFE from RSA Security. This is also known as the "bottom layer" API, or BLAPI.</td> - <td>Within PKCS #11, wraps Crypto</td> - <td>lib/freebl</td> - <td>blapi.h, blapit.h</td> - </tr> - <tr> - <td>jar</td> - <td>Provides support for reading and writing data in Java Archive (jar) format, including zlib compression.</td> - <td>Port</td> - <td>lib/jar</td> - <td>jar-ds.h, jar.h, jarfile.h</td> - </tr> - <tr> - <td>nss</td> - <td>Provides high-level initialiazation and shutdown of security services. Specifically, this library provides NSS_Init() for establishing default certificate, key, module databases, and initializing a default random number generator. NSS_Shutdown() closes these databases, to prevent further access by an application.</td> - <td>Above High Cert, High Key</td> - <td>lib/nss</td> - <td>nss.h</td> - </tr> - <tr> - <td>pk11wrap</td> - <td>Provides access to PKCS #11 modules, through a unified interface. The pkcs11wrap library provides functions for selecting/finding PKCS #11 modules and slots. It also provides functions that invoke operations in selected modules and slots, such as key selection and generation, signing, encryption and decryption, etc.</td> - <td>Crypto Wrapper</td> - <td>lib/pk11wrap</td> - <td>pk11func.h, secmod.h, secmodt.h</td> - </tr> - <tr> - <td>pkcs12</td> - <td>Provides functions and types for encoding and decoding PKCS #12 data. PKCS #12 can be used to to encode keys, and certificates, for export or import into other applications.</td> - <td>PKCS #12</td> - <td>lib/pkcs12</td> - <td>pkcs12t.h, pkcs12.h, p12plcy.h, p12.h, p12t.h</td> - </tr> - <tr> - <td>pkcs7</td> - <td>Provides functions and types for encoding and decoding encrypted data in PKCS #7 format. For example, PKCS #7 is used to encrypt certificate data to exchange between applications, or to encrypt S/MIME message data.</td> - <td>PKCS #7</td> - <td>lib/pkcs7</td> - <td>secmime.h, secpkcs7.h, pkcs7t.h</td> - </tr> - <tr> - <td>softoken</td> - <td>Provides a software implementation of a PKCS #11 module.</td> - <td>PKCS #11: implementation</td> - <td>lib/softoken</td> - <td>keydbt.h, keylow.h, keytboth.h, keytlow.h, secpkcs5.h, pkcs11.h, pkcs11f.h, pkcs11p.h, pkcs11t.h, pkcs11u.h</td> - </tr> - <tr> - <td>ssl</td> - <td>Provides an implementation of the SSL protocol using NSS and NSPR.</td> - <td>SSL</td> - <td>lib/ssl</td> - <td>ssl.h, sslerr.h, sslproto.h, preenc.h</td> - </tr> - <tr> - <td>secutil</td> - <td>Provides utility functions and data types used by other libraries. The library supports base-64 encoding/decoding, reader-writer locks, the SECItem data type, DER encoding/decoding, error types and numbers, OID handling, and secure random number generation.</td> - <td>Utility for any Layer</td> - <td>lib/util</td> - <td>base64.h, ciferfam.h, nssb64.h, nssb64t.h, nsslocks.h, nssrwlk.h, nssrwlkt.h, portreg.h, pqgutil.h, secasn1.h, secasn1t.h, seccomon.h, secder.h, secdert.h, secdig.h, secdigt.h, secitem.h, secoid.h, secoidt.h, secport.h, secrng.h, secrngt.h, secerr.h, watcomfx.h</td> - </tr> - </tbody> -</table> - -<h2 id="Naming_Conventions"><a name="Naming">Naming Conventions</a></h2> - -<p>This section describes the rules that (ideally) should be followed for naming and identifying new files, functions, and data types.</p> - -<p><a name="CVSID"> </a></p> - -<h3 id="CVS_ID"><a name="CVSID">CVS ID</a></h3> - -<p>Each file should include a CVS ID string for identification. The preferred format is:</p> - -<pre class="notranslate"> "@(#) $RCSfile: nss-guidelines.html, - v $ $Revision: 48936 $ $Date: 2009-08-11 07:45:57 -0700 (Tue, 11 Aug 2009) $ $Name$" -</pre> - -<p>You can put the string in a comment or in a static char array. Use #ifdef DEBUG to include the array in debug builds only. The advantage of using an array is that you can use strings(1) to pull the ID tags out of a (debug) compiled library. You can even put them in header files; the header files are protected from double inclusion. The only catch is that you have to determine the name of the array.</p> - -<p>Here is an example from lib/base/baset.h:</p> - -<pre class="notranslate"> #ifdef DEBUG - static const char BASET_CVS_ID[] = "@(#) $RCSfile: nss-guidelines.html, - v $ $Revision: 48936 $ $Date: 2009-08-11 07:45:57 -0700 (Tue, 11 Aug 2009) $ $Name$"; - #endif /* DEBUG */ -</pre> - -<p>The difference, between this and Id, is that Id has some useless information (<em>every</em> file is "experimental"), and doesn't have Name. Name is the tag (if any) from which this file was pulled. If you're good with tagging your releases, and then checking out (or exporting!) from the tag for your build, this saves you from messing around with specific files revision numbers.</p> - -<h3 id="Header_Files"><a name="HeaderFiles">Header Files</a></h3> - -<p>We have a preferred naming system for include files. We had been moving towards one, for some time, but for the NSS 3.0 project we finally wrote it down.<br> - </p> - -<table style="width: 90%;"> - <tbody> - <tr> - <th></th> - <th>Data Types</th> - <th>Function Prototypes</th> - </tr> - <tr> - <td>Public</td> - <td>nss____t.h</td> - <td>nss____.h</td> - </tr> - <tr> - <td>Friend (only if required)</td> - <td>nss____tf.h</td> - <td>nss____f.h</td> - </tr> - <tr> - <td>NSS-private</td> - <td>____t.h</td> - <td>____.h</td> - </tr> - <tr> - <td>Module-private</td> - <td>____tm.h</td> - <td>____m.h</td> - </tr> - </tbody> -</table> - -<p>The files on the right include the files to their left; the files in a row include the files directly above them. Header files always include what they need; the files are protected against double inclusion (and even double opening by the compiler).</p> - -<div class="note"> -<p>Note: It's not necessary all eight files exist. Further, this is a simple ideal, and often reality is more complex.</p> -</div> - -<p>We would like to keep names to 8.3, even if we no longer support win16. This usually gives us four characters to identify a module of NSS.</p> - -<p>In short:</p> - -<ol> - <li>Header files for consumption outside NSS start with "nss."</li> - <li>Header files with types have a trailing "t", header files with prototypes don't. "extern" declarations of data also go in the prototypes files.</li> - <li>"Friend" headers are for things that we really wish weren't used by non-NSS code, but which are. Those files have a trailing "f," and their use should be deprecated.</li> - <li>"Module" headers are for things used only within a specific subset of NSS; things which would have been "static" if we had combined separate C source files together. These header files have a trailing "m."<a name="FuncsAndTypes"></a></li> -</ol> - -<h3 id="Functions_and_Types"><a name="FuncsAndTypes">Functions and Types</a></h3> - -<p>There are a number of ways of doing things in our API, as well as naming decisions for functions that can affect the usefulness of our library. If our library is self-consistent with how we accomplish these tasks, it makes it easier for the developer to learn how to use our functions. This section of the document should grow as we develop our API.</p> - -<p>First some general rules. These rules are derived from existing coding practices inside the security library, since consistency is more important than debates about what might look nice.</p> - -<ol> - <li><strong>Public functions</strong> should have the form LAYER_Body(), where LAYER is an all caps prefix for what layer the function lives in, and Body is concatenated English words, where the beginning letter of each word is capitalized (also known as <a href="https://en.wikipedia.org/wiki/Camel_case">CamelCase</a>). For Example: LAYER_CapitalizedEnglishWords() or CERT_DestroyCertificate().</li> - <li><strong>Data types</strong> and typdefs should have the Form LAYERBody, with the same definitions for LAYER as public functions, and Body in camel case English words. For example: LAYERCapitalizedEnglishWords or SECKEYPrivateKey.</li> - <li><strong>Structures</strong> should have the same name as their typedefs, with the string Str added to the end. For example LAYERCapitalizedEnglishWordsStr or SECKEYPrivateKeyStr.</li> - <li><strong>Private functions</strong> should have the form layer_Body(), where layer is the all lower case prefix for what layer the function lives in, and Body is camel case English words. Private functions include functions that may be "public" in a C sense, but are not exported out of the layer. For example: layer_CapitalizedEnglishWords() or pk11_GenerateKeyID().</li> - <li><strong>Public macros</strong> should have the form LAYER_BODY(), where LAYER is an all caps prefix for what layer the macro lives in, and BODY is English words, all in upper case, separated by underscores. For example: LAYER_UPPER_CASE_ENGLISH_WORDS() or DER_CONVERT_BIT_STRING().</li> - <li><strong>Structure members</strong> for exposed data structures should have the form capitalizedEnglishWords (the first letter uncapitalized). For example: PK11RSAGenParamsStr.<strong>keySizeInBits</strong></li> - <li>For <strong>members of enums</strong>, our current API has no standard (typedefs for enums should follow the Data types standard). There seem to be three reasonable options: - <ol> - <li>Enum members have the same standard as exposed data structure members.</li> - <li>Enum members have the same standard as data types.</li> - <li>Enum members have the same standard as public macros (minus the '()' of course).</li> - </ol> - Options 2 and 3 are the more preferred options. Option 1, currently the most common used for enums, actually creates namespace pollution.</li> - <li><strong>Callback functions</strong>, and functions used in function tables, should have a typedef used to define the complete signature of the given function. Function typedefs should have the following format: LAYERBody(), with the same definitions for LAYER as public functions, and Body is camel case English words. For example: LAYERCapitalizedEnglishWords or SECKEYPrivateKey.<a name="Opaque"></a></li> -</ol> - -<h2 id="Opaque_Data_Structures"><a name="Opaque">Opaque Data Structures</a></h2> - -<p>There are many data structures in the security library whose definition is effectively private, to the portion of the security library that defines and operates on those data structures. External code does not have access to these definitions. The goal here is to increase the opaqueness of these structures. This will allow us to modify the size, definition, and format of these data structures in future releases, without interfering with the operation of existing applications that use the security library.</p> - -<p>The first task is to ensure the data structure definition lives in a private header file, while its declaration lives in the public. The current standard in the security library is to typedef the data structure name, the easiest way to accomplish this would be to add the typedef to the public header file.</p> - -<p>For example, for the structure SECMyOpaqueData you would add:</p> - -<pre class="notranslate"> typedef struct SECMyOpaqueDataStr SECMyOpaqueData;</pre> - -<p>and add the actual structure definition to the private header file. In this same example:</p> - -<pre class="notranslate"> struct SECMyOpaqueDataStr { - unsigned long myPrivateData1; - unsigned long myPrivateData2; - char *myName; - };</pre> - -<p>the second task is to determine if individual data fields, within the data structure, are part of the API. One example may be the peerCert field, in an SSL data structure. Accessor functions, for these data elements, should be added to the API.</p> - -<p>There can be legitimate exceptions to this 'make everything opaque' rule. For example, in container structures, such as SECItem, or maybe linked list data structures. These data structures need to be examined on a case by case basis, to determine if</p> - -<ol> - <li>They are truly stable and will not change in future release</li> - <li>It is necessary for the callers of the API to know the size of these structures, as they may allocate new ones and pass them down.<a name="Arenas"></a></li> -</ol> - -<h2 id="Memory_Allocation_with_Arenas"><a name="Arenas">Memory Allocation with Arenas</a></h2> - -<p>This section discusses memory allocation using arenas. NSS code uses arenas, and this section explains some of the improvements we are making.</p> - -<p>NSS makes use of traditional memory allocation functions, wrapping NSPR's PR_Alloc in a util function called PORT_Alloc. Though NSS makes further use of an NSPR memory-allocation facility which uses 'Arenas' and 'ArenaPools'. This was added via javascript; a fast, lightweight, non-thread-safe (though 'free-threaded') implementation.</p> - -<p>Experience shows that users of the security library expect arenas to be threadsafe, so we added locking, and other useful changes.</p> - -<ul> - <li>There has always been confusion as to the difference between Arenas and ArenaPools. We will simplify down to one logical 'memory bucket' type. Consensus called this type NSSArena.</li> - <li>We have lots of code which takes an optional arena pointer, using the arena if there is one, or alternatively the heap if there isn't. Therefore, we wrap that logic into the allocators. Knowing what to then free does takes discipline not to leak memory, but it simplifies things a lot. Also, the implementation of free works (doesn't crash), no matter if from an arena, or the heap, as long as from our allocators. Combined with purify, this also helps us catch cases where things being allocated by one allocator are freed by another, which is a common Windows pitfall.</li> - <li>The security code often wants to be sure to zero memory, when it's being freed; we'll add it to the primitives to deal with.</li> -</ul> - -<p>The ARENA_THREADMARK preprocessor definition (default in debug builds), and code it encloses, will add some checking for the following situation:</p> - -<ol> - <li>Thread A marks the arena, and allocates some memory from it.</li> - <li>Thread B allocates some memory from the arena.</li> - <li>Thread A releases the arena back to the mark.</li> - <li>Thread B now finds itself with a pointer to released data.</li> - <li>Some thread -- doesn't matter which -- allocates some data from the arena; this may overlap the chunk thread B has.</li> - <li>Boom!</li> -</ol> - -<p>Threadmark code notes the thread ID, whenever an arena is marked, and disallows any allocations or marks by any other thread. (Frees are allowed.)</p> - -<p>The ARENA_DESTRUCTOR_LIST preprocessor definition, and the code it encloses, are an effort to make the following work together:</p> - -<ol> - <li>Arenas, letting you allocate stuff and then removing them all at once</li> - <li>Lazy creation of pure-memory objects from ASN.1 blobs, for example use of NSSPKIXCertificate doesn't drag all the code in for all constituent objects, unless they're actually being used</li> - <li>Our agressive pointer-tracking facility</li> -</ol> - -<p>All these are useful, but they don't combine well. Now some of the pointer-tracking pressure has eased off, we can drop its use when it becomes too difficult.</p> - -<p>Many routines are defined to take an NSSArena *arenaOpt argument. This means if an arena is specified (non-null), it is used, otherwise (null) the routine uses the heap. You can think of the heap as a default arena you can't destroy.<a name="Errors"></a></p> - -<h2 id="Error_Handling"><a name="Errors">Error Handling</a></h2> - -<p>NSS 3.0 introduces the concept of an error stack. When something goes wrong, the call stack unwinds, with routines returning an error indication. Each level which flags a problem, adds its own error number to the stack. At the bottom of the stack is the fundamental error, for example: file not found, and on top is an error precisely relating to what you are doing.</p> - -<div class="note"> -<p>Note: Error stacks are vertical, and never horizontal. If multiple things go wrong simultaneously, and you want to report them all, use another mechanism.</p> -</div> - -<p>Errors, though not integers, are done as external constants, instead of preprocessor definitions. This is so any additional error doesn't trigger the entire tree to rebuild. Likewise, the external references to errors are made in the prototypes files, with the functions which can return them. Error stacks are thread-private.</p> - -<p>The usual semantic is that public routines clear the stack first, private routines don't. Usually, every public routine has a private counterpart, and the implementation of the public routine looks like this:</p> - -<pre class="notranslate"> NSSImplement rv * - NSSType_Method - ( - NSSType *t, - NSSFoo *arg1, - NSSBar *arg2 - ) - { - nss_ClearErrorStack(); - - #ifdef DEBUG - if( !nssFoo_verifyPointer(arg1) ) return (rv *)NULL; - if( !nssBar_verifyPointer(arg2) ) return (rv *)NULL; - #endif /* DEBUG */ - - return nssType_Method(t, arg1, arg2); - } -</pre> - -<p>Aside from error cases, all documented entry points should check pointers in a debug, wherever possible. Pointers to user-supplied buffers, and templates, should be checked against NULL. Pointers to context-style functions should be checked using special debug macros. These macros only define code when DEBUG is turned on, providing a way for systems to register, deregister, and check valid pointers.</p> - -<p>SECPORT_DECL_PTR_CLASS(<em>classname</em>,<em> size</em>) - declare a class of pointers (labelled<em> classname</em>) this object file needs to check. This class is local only to this object file.<em> Size</em> is the expected number of pointers of type<em> classname</em>.</p> - -<p>SECPORT_DECL_GLOBAL_PTR_CLASS(<em>classname</em>,<em> size</em>) - same as above except <em>classname</em> can be used in other object files.</p> - -<p>SECPORT_ADD_POINTER(<em>classname</em>, <em>pointer</em>) - Add <em>pointer</em> as a valid pointer for class<em>classname</em>. This is usually called by a Create function.</p> - -<p>SECPORT_VERIFY_POINTER(<em>classname</em>,<em> pointer</em>,<em> secError</em>,<em> returnValue</em>)- Check if a given <em>pointer</em> really belongs to the requested class. If it doesn't set the error<em> secError</em> and return the value<em> returnValue</em>.</p> - -<p>SECPORT_REMOVE_POINTER(<em>classname</em>,<em> pointer</em>) - Remove a pointer from the valid list. Usually called by a destroy function.</p> - -<p>Finally, error logging should be added an documented when debug is turned on. Interfaces for these are in NSPR.</p> - -<p><a name="ThreadSafety"> </a></p> - -<h2 id="Thread_Safety"><a name="ThreadSafety">Thread Safety</a></h2> - -<p>Code developed using the NSS APIs needs to make use of thread safety features. First to examine is <strong>object creation</strong> and <strong>deletion</strong>.</p> - -<p>Object creation is usually not a problem. No other threads have access to allocated memory just created. Exceptions to this include objects which are created on the fly, or as global objects.</p> - -<p>Deletion, on the other hand, may be trickier. Threads may be referencing the object at the same time a another thread tries to delete it. The semantics depend on the way the application uses the object, also how and when the application wants to destroy it. For some data structures, this problem can be removed by protected reference counting. The object does not disappear until all users have released it.</p> - -<p>Next we examine <strong>global data</strong>, including function local static structures. Just initialized, and never to be changed global data, does not need to protection from mutexes. We should also determine if global data should be moved to a session context (see <a href="#SessionContext">session context</a> and <a href="#GlobalEffects">global effects </a>below).</p> - -<div class="note"> -<p>Note: Permanent objects, like data in files, databases, tokens, etc. should be treated as global data. Global data which is changed rarely, should be protected by reader/writer locks.</p> -</div> - -<p>Aside from global data,<strong> allocated data</strong> that gets modified needs to be examined. Data that's just been allocated, within a function, is safe to modify. No other code has access to that data pointer. Once that data pointer is made visible to the 'outside', either by returning the pointer, or attaching the pointer to an existing visible data structure, access to the data should be protected. Data structures that are read only, like SECKEYPublicKeys or PK11SymKeys, need not be protected.</p> - -<p><a name="SessionContext">Many</a> of the data structures in the security code contain some sort of <strong>session state</strong> or <strong>session context</strong>. These data structures may be accessed without data protection as long as:</p> - -<ol> - <li>This semantic is documented in the functions which use these data structures.</li> - <li>These data structures are used for single streams, and not reused.</li> -</ol> - -<p>Examples of these data in structures may include things like the PKCS #7 ContentInfo structure. Example code should be included in the documentation, to show how to safely use these data objects.</p> - -<p>A major type of global and allocated data that should be examined is various <strong>data on lists</strong>. Queued, linked, and hash table stored objects should be examined with special care. Make sure adding, removing, accessing, and destroying these objects are all safe operations.</p> - -<p>There are a number of strategies, and entire books about how to safely access data on lists. Some simple strategies and their issues:</p> - -<ul> - <li><strong>Use hash tables:</strong> Hash table lookups are usually quite fast, limiting the contention on the lock. This is best for large lists of objects. Be sure to calculate the hash value first, then only lock over the hash table value itself. Be sure to increment the reference count, on the returned object, before unlocking. Examples of hash tables can be found in security/nss/lib/certdb/pcertdb.c</li> - <li><strong>Lock over the entire search: </strong>For small linked listed, queues, or arrays, you can lock over the entire search. This strategy is best when lists are short, or even better if lists are relatively read only (they don't change very often) and using reader/writer locks.</li> - <li><strong>Copy the linked list: </strong>Instead of operating on the global list, you can copy the list. This also requires small lists.</li> - <li><strong>Lock over single element with retry:</strong> For medium sized lists, you can secure the reference to each element, complete a test, then detect if the given element has been removed from the list. In the case of removal, the search can either be either restarted, or terminated. This method is a more complicated than the other methods: requiring the calling of search code tolerant to often repeated element inspection.</li> - <li>Examples of the previous strategies can be found in <a href="https://searchfox.org/mozilla-central/source/security/nss/lib/pk11wrap/pk11slot.c">security/nss/lib/pk11wrap/pk11slot.c.</a></li> -</ul> - -<p>Where possible use the NSPR list primitives. From these you can even set up SECUtil style thread-safe lists that use some combination of the above strategies.</p> - -<p><a name="ServiceFunctions"></a>In order to be fully thread safe, your code must understand the semantics of the <strong>service functions </strong>it calls, and whether they are thread safe. For now, we should internally document which service functions we call, and how we expect them to behave in a threaded environment.</p> - -<p><a name="GlobalEffects"></a>Finally, from an API point of view, we should examine functions which have <strong>global effects</strong>. Functions like XXX_SetDefaultYYY(); should not operate on global data, particularly if they may be called multiple times, to provide different semantics for different operations. For example, the following should be avoided :</p> - -<ul> - <li>SEC_SetKey(keyForOperation);<br> - SEC_Encrypt(Data,Length);</li> -</ul> - -<p>Instead, a context handle should be created, and the SEC_SetKey() function, above, made on that handle. Fortunately most of the existing API has the correct semantics.</p> - -<p>The exception to this global effects rule may be functions which set global state for an application at initialization time.</p> - -<p><a name="Design"> </a></p> - -<h2 id="MethodsFunctions_Design"><a name="Design">Methods/Functions Design</a></h2> - -<p><a name="Design"> </a><a name="InitShutdown"> </a></p> - -<h3 id="Init_Shutdown_Functions"><a name="InitShutdown">Init, Shutdown Functions</a></h3> - -<p>If a layer has some global initialization tasks, which need to be completed before the layer can be used, that layer should supply an initialization function of the form LAYER_Init(). If an initialization function is supplied, a corresponding LAYER_Shutdown() function should also be supplied. LAYER_INIT() should increment a count of the number of times it is called, and LAYER_Shutdown() should decrement that count, and shutdown when the count reaches '0'.</p> - -<p><a name="OpenClose"> </a></p> - -<h3 id="Open_Close_Functions"><a name="OpenClose">Open, Close Functions</a></h3> - -<p>Open functions should have a corresponding close function. Open and close function are not reference counted, like init and shutdown functions.</p> - -<p><a name="CreateFuncs"> </a></p> - -<h3 id="Creation_Functions"><a name="CreateFuncs">Creation Functions</a></h3> - -<p>In general, data objects should all have functions which create them. These functions should have the form LAYER_CreateDataType[FromDataType](). For instance generating a new key would change from PK11_KeyGen() to PK11_CreateSymKey().</p> - -<p><a name="DestroyFuncs"> </a></p> - -<h3 id="Destruction_Functions"><a name="DestroyFuncs">Destruction Functions</a></h3> - -<p>In the security library we have 3 different ways of saying 'get rid of this data object': Free, Delete, and Destroy.</p> - -<p>It turns out there are several different semantics of getting rid of a data object too:</p> - -<ol> - <li>decrement the reference count, and when the object goes to '0' free/delete/destroy it</li> - <li>destroy it right now, this very instance, not matter what</li> - <li>make any permanent objects associated with this data object go away</li> - <li>a combination of 1 and 3, or 2 and 3</li> -</ol> - -<p>Unfortunately, within the security library Free, Delete, and Destroy are all used interchangeably, for all sorts of object destruction. For instance, CERT_DestroyCertificate() is type 1, PK11_DestroySlot() is type 2, and PK11_DestroyTokenObject() is type 3.</p> - -<div class="note"> -<p>Note: In non-reference counted functions, types 1 and 2 are the same.</p> -</div> - -<p>We are standardizing on the following definitions:</p> - -<p>Destroy - means #1 for reference counted objects, #2 for non reference counted objects.</p> - -<p>Delete - means #3.</p> - -<p>This has the advantage of<em> not</em> surfacing the reference countedness of a data object. If you own a pointer to an object, you must always destroy it. There is no way to destroy an object by bypassing it's reference count. Also, the signature of public destruction functions do not have the 'freeit' PRBool, since the structures being freed are opaque.</p> - -<p><a name="DupCopy"> </a></p> - -<h3 id="Dup_Copy_and_Reference_Functions"><a name="DupCopy">Dup, Copy, and Reference Functions</a></h3> - -<p>Functions that return a new reference or copy of a given object should have the form LAYER_DupDataType(). For instance, CERT_DupCertifiate() will remain the same, but PK11_ReferenceSlot() will become PK11_DupSlot(), and PK11_CloneContext() will become PK11_DupContext().</p> - -<p><a name="SearchFuncs"> </a></p> - -<h3 id="Search_Functions"><a name="SearchFuncs">Search Functions</a></h3> - -<p>There are several different kinds of searches done via the security library. The first is a search for exactly one object, meeting a given criteria. These types of searches include CERT_FindCertByDERCert(), PK11_FindAnyCertFromDERCert(), PK11_FindKeyByCert(), PK11_GetBestSlot(). These functions should all have the form LAYER_FindDataType[ByDataType]().</p> - -<p>The second kind of search, looks for all the objects that match a given criteria. These functions operate on a variety of levels. Some return allocated arrays of data, some return linked lists of data, others use callbacks to return data elements one at a time. Unfortunately, there are good reasons to maintain all these types. So here are some guidelines to make them more manageable:</p> - -<p>All callback operating search functions should be in the low level of the API, if exposed at all. Developers dealing with SSL and PKCS #7 layers should not have to see any of these functions. These functions should have the form LAYER_TraverseStorageObjectOrList().</p> - -<p>List and Array returning functions should be available at the higher layers of the API, most wrapping LAYER_Traverse() functions. They should have the form LAYER_LookupDataType{List|Array}[ByDataType]().</p> - -<ul> -</ul> - -<p><a name="Accessors"> </a></p> - -<h3 id="Accesssor_Functions"><a name="Accessors">Accesssor Functions</a></h3> - -<p>Accessor Functions should take the following formats:</p> - -<p>LAYER_DataTypeGetElement() -- Get a specific element of a data structure.<br> - LAYER_DataTypeSetElement() -- Set a specific element of a data structure.<br> - LAYER_DataTypeExtractDataType() -- Get a pointer to the second data type which was derived for elements of the first data type.</p> - -<p>Examples: PK11_SlotGetSeries(), PK11_SymKeyGetSeries(), CERT_CertificateExtractPublicKey()</p> - -<p><a name="Params"> </a></p> - -<h3 id="Parameter_ordering"><a name="Params">Parameter ordering</a></h3> - -<p>Most functions will have a 'Natural' ordering for parameters. To keep consistency we should have some minimal parameter consistency. For most functions, they can be seen as operating on a particular object. This object, that the function is operating on, should come first. For instance, in most SSL functions this is the NSPR Socket, or the SSL Socket structure: Update, final, encrypt, decrypt type functions operating on their state contexts, etc.</p> - -<p>All encrypt and decrypt functions, which return data inline, should have a consistent signature:</p> - -<pre class="notranslate">SECStatus MY_FunctionName(MyContext *<em>context</em>, - unsigned char *<em>outBuf</em>, - SECBufferLen *<em>outLen</em>, - SECBufferLen<em>maxOutLength</em>, - unsigned char *<em>inBuf</em>, - SECBufferLen<em>inLen</em>) -</pre> - -<p>Encrypt and decrypt like functions which have different properties, additional parameters, callbacks, etc., should insert their additional parameters between the context (first parameter) and the output buffer.</p> - -<p>All hashing update, MACing update, and encrypt/decrypt functions which act like filters should have a consistent signature:</p> - -<pre class="notranslate">SECStatus PK11_DigestOp(PK11Context *<em>context</em>, - unsigned char *<em>inBuf</em>, - SECBufferLen<em>inLen</em>) -</pre> - -<p>Functions like these which have different properties, for example, additional parameters, callbacks, etc., should insert their additional parameters between the context (first parameter) and the input buffer.</p> - -<p>Within your layer, multiple similar functions should have consistent parameter order.<a name="Callbacks"></a></p> - -<h3 id="Callback_Functions"><a name="Callbacks"> Callback Functions</a></h3> - -<p><a name="Callbacks"> </a> Callback functions should all contain an opaque parameter (void *) as their first argument, passed by the original caller. Callbacks which are set, like SSL callbacks, should have defaults which provide generally useful semantics.</p> diff --git a/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html b/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html deleted file mode 100644 index 125fe4bf2f..0000000000 --- a/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: NSS 開発者向けチュートリアル -slug: Mozilla/Projects/NSS/NSS_Developer_Tutorial -translation_of: Mozilla/Projects/NSS/NSS_Developer_Tutorial ---- -<div title="Page 1"> -<div> -<div> -<div> -<h2 id="NSS_Coding_Style">NSS Coding Style</h2> - -<h3 id="Formatting">Formatting</h3> - -<p><strong>Line length</strong> should not exceed 80 characters.</p> - -<p><strong>Indentation level</strong> is 4.</p> - -<p><strong>Tabs</strong> are used heavily in many NSS source files. Try to stay consistent when you modify existing code. The proper use of tabs has often been confusing for new NSS developers, so in <code>nss/lib/ssl</code>, we're gradually removing the use of tabs.</p> - -<p><strong>Curly braces</strong>: both of the following styles are allowed:</p> - -<pre class="brush: cpp notranslate">if (condition) { - action1(); -} else { - action2(); -}</pre> - -<p>Or:</p> - -<pre class="brush: cpp notranslate">if (condition) -{ - action1(); -} -else -{ - action2(); -}</pre> - -<p>The former style is more common. When modifying existing code, try to stay consistent. In new code, prefer the former style, as it conserves vertical space.</p> - -<p>When a block of code consists of a single statement, NSS doesn’t require curly braces, so both of these examples are fine:</p> - -<pre class="brush: cpp notranslate">if (condition) { - action(); -} -</pre> -</div> -</div> -</div> -</div> - -<div title="Page 2"> -<div> -<div> -<div> -<p>Or:</p> - -<pre class="brush: cpp notranslate">if (condition) - action();</pre> - -<p>although the use of curly braces is more common.</p> - -<p><strong>Multiple-line comments</strong> should be formatted as follows:</p> - -<pre class="brush: cpp notranslate">/* - * Line1 - * Line2 - */ </pre> - -<p>or</p> - -<pre class="brush: cpp notranslate">/* -** Line 1 -** Line 2 -*/ -</pre> - -<p>The following styles are also common, because they conserve vertical space:</p> - -<pre class="brush: cpp notranslate">/* Line1 - * Line2 - */</pre> - -<p>or</p> - -<pre class="brush: cpp notranslate">/* Line1 -** Line2 -*/</pre> - -<p>or</p> - -<pre class="brush: cpp notranslate">/* Line1 - * Line2 */</pre> - -<h3 id="Naming">Naming</h3> - -<p>Public functions are named <code>FOO_DoOneAction</code>.</p> - -<p>Global, but unexported functions, are usually named <code>foo_DoOneAction</code>.</p> - -<p>Variable, and function parameter names, always start with a lowercase letter. The most common style is <code>fooBarBaz</code>, although <code>foobarbaz</code> and <code>foo_bar_baz</code> are also used.</p> - -<h3 id="Miscellaneous">Miscellaneous</h3> - -<p><strong>goto</strong> can be used, to simplify resource deallocation, before returning from a function.</p> - -<p>A data buffer is usually represented as:</p> -</div> -</div> -</div> -</div> - -<div title="Page 3"> -<div> -<div> -<div> -<pre class="brush: cpp notranslate">unsigned char *data; -unsigned int len;</pre> - -<p>The buffer pointer is <code>unsigned char *</code>, as opposed to <code>void *</code>, so we can perform pointer arithmetic without casting. Use <code>char *</code> only if the data is interpreted as text characters.</p> - -<p>For historical reasons, the buffer length is <code>unsigned int</code>, as opposed to <code>size_t</code>. Unfortunately, this can be a source of integer overflow bugs on 64-bit systems.</p> - -<h2 id="C_Features">C Features</h2> - -<p>NSS requires C99. However, not all features from C99 are equally available.</p> - -<ul> - <li>Variables can be declared, at the point they are first used.</li> - <li>The <code>inline</code> keyword can be used.</li> - <li>Variadic macro arguments are permitted, but their use should be limited to using <code>__VA_ARGS__</code>.</li> - <li>The exact-width integer types in NSPR should be used, in preference to those declared in <code><stdint.h></code> (which will be used by NSPR in the future).</li> - <li>Universal character names are not permitted, as are wide character types (<code>char16_t</code> and <code>char32_t</code>). NSS source should only include ASCII text. Escape non-printing characters (with <code>\x</code> if there is no special escape such as \r, \n, and \t) and avoid defining string literals that use non-ASCII characters.</li> - <li>One line comments starting with <code>//</code> are permitted.</li> -</ul> - -<p>Check with nss-dev@ before using a language feature not already used, if you are uncertain. Please update this list if you do.</p> - -<p>These restrictions are different for C++ unit tests, which can use most C++11 features. The <a href="/en-US/docs/Using_CXX_in_Mozilla_code">Mozilla C++ language features guide</a>, and the <a href="https://chromium-cpp.appspot.com/">Chromium C++ usage guide</a>, list C++ features that are known to be widely available and compatible. You should limit features to those that appear in both guides. Ask on nss-dev@ if you think this is restrictive, or if you wish to prohibit a specific feature.</p> - -<h2 id="NSS_C_ABI_backward_compatibility">NSS C ABI backward compatibility</h2> - -<h3 id="Functions">Functions</h3> - -<p>Exported functions cannot be removed.</p> - -<p>The function prototype of an exported function, cannot be changed, with these exceptions:</p> - -<ul> - <li> - <p>A <code>Foo *</code> parameter can be changed to <code>const Foo *</code>. This change is always safe.</p> - </li> - <li> - <p>Sometimes an <code>int</code> parameter can be changed to <code>unsigned int</code>, or an <code>int *</code> parameter can be changed to <code>unsigned int *</code>. Whether such a change is safe needs to be reviewed on a case-by-case basis.</p> - </li> -</ul> - -<h2 id="Types">Types</h2> - -<h3 id="Structs">Structs</h3> - -<p>Members of an exported struct, cannot be reordered or removed.</p> - -<p>Under certain circumstances, it is safe to add new members to an exported struct at the end.</p> - -<p>Opaque structs give us complete freedom to change them, but require applications to call NSS functions, to allocate and free them.</p> - -<h3 id="Enums">Enums</h3> - -<p>The numeric values of public enumerators cannot be changed. To stress this fact, we often explicitly assign numeric values to enumerators, rather than relying on the values assigned by the compiler.</p> - -<h3 id="Symbol_export_lists">Symbol export lists</h3> - -<p>The <code>manifest.mn</code> file, in a directory in the NSS source tree, specifies which headers are public, and which headers are private.</p> - -<p>Public headers are in the <code>EXPORTS</code> variable.</p> - -<p>Private headers,which may be included by files in other directories, are in the <code>PRIVATE_EXPORTS</code> variable.</p> -</div> -</div> -</div> -</div> - -<div title="Page 4"> -<div> -<div> -<div> -<p>Private headers, that are only included by files in the same directory, are not listed in either variable.</p> - -<p>Only functions listed in the symbol export lists (<code>nss.def</code>, <code>ssl.def</code>, <code>smime.def</code>, etc.) are truly public functions. Unfortunately, public headers may declare private functions, for historical reasons. The symbol export lists are the authoritative source of public functions.</p> - -<h3 id="Behavioral_changes">Behavioral changes</h3> - -<p><strong>Bug/quirk compatible</strong>: Occasionally we cannot fix a bug, because applications may depend on the buggy behavior. We would need to add a new function to provide the desired behavior.</p> - -<p>Similarly, <strong>new options</strong> often need to be disabled by default.</p> - -<h2 id="NSS_reviewfeature_approval_process">NSS review/feature approval process</h2> - -<p>NSS doesn’t have 'super reviewers'. We wish to increase the number of NSS developers, who have broad understanding of NSS.</p> - -<p>One review is usually enough for the review to pass. For critical code reviews, such as a patch release of a stable branch, two reviews may be more reasonable.</p> - -<p>For new features, especially those that appear controversial, try to find a reviewer from a different company or organization than your own, to avoid any perceptions of bias.</p> - -<h2 id="Update_NSS_in_mozilla-inbound_and_mozilla-central">Update NSS in mozilla-inbound and mozilla-central</h2> - -<p>The procedure is documented at <a href="https://developer.mozilla.org/en-US/docs/Updating_NSPR_or_NSS_in_mozilla-central">https://developer.mozilla.org/en-US/docs/Updating_NSPR_or_NSS_in_mozilla-central. </a></p> - -<p>If it is necessary to apply private patches, please document them in <code><tree>/security/patches/README</code>.</p> -</div> -</div> -</div> -</div> diff --git a/files/ja/mozilla/projects/nss/nss_faq/index.html b/files/ja/mozilla/projects/nss/nss_faq/index.html deleted file mode 100644 index f1ec76a4c4..0000000000 --- a/files/ja/mozilla/projects/nss/nss_faq/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: NSS FAQ -slug: Mozilla/Projects/NSS/NSS_FAQ -tags: - - NSS -translation_of: Mozilla/Projects/NSS/FAQ ---- -<h3 id=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F" name=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F"> 一般的な質問 </h3> -<h3 id="Network_Security_Services_.28NSS.29_.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="Network_Security_Services_.28NSS.29_.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> Network Security Services (NSS) とは何ですか? </h3> -<p>NSS とは、セキュリティ機能が利用できるクライアント/サーバアプリケーションのクロスプラットフォーム開発をサポートするようにデザインされたライブラリ、API、ユーティリティ、そして参考文献のセットです。NSS では、Netscape や他の会社で利用されている暗号ライブラリの完全にオープンソースな実装が提供されます。NSS が利用されている製品の例としては、Netscape 6 ブラウザ、iPlanet E-Commerce Solutions のサーバ製品、Gateway Connected Touch Pad with Instant AOL などが挙げられます。 -</p><p>NSS の概要については、<a href="ja/Overview_of_NSS">NSS 概観</a> をご覧ください。オープンソース NSS プロジェクトの詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/">NSS プロジェクトのページ</a> をご覧ください。 -</p> -<h3 id="NSS_.E3.81.A7.E3.81.AF.E4.BD.95.E3.81.8C.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E7.A7.81.E3.81.8C.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A7.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.A7.E3.81.AF.E4.BD.95.E3.81.8C.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E7.A7.81.E3.81.8C.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A7.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> NSS では何ができるのですか? 私が使っているアプリケーションで役に立つのでしょうか? </h3> -<p>あなたが使っているアプリケーションに、SSL、S/MIME、その他のインターネットセキュリティスタンダードの機能を加えたい場合 Netscape Security Services (NSS) を使うことができます。NSS は SSL および TSL のすべてのバージョンをサポートしているので、すでに SSL をサポートしている多数のクライアントやサーバと通信する必要があるアプリケーションにはまさにうってつけといえます。 -</p><p>NSS に PKCS #11 インターフェースが含まれているということは、あなたのアプリケーションがサーバ上の <a href="#.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F">ハードウェアアクセラレータ</a> や二因子認証 (two-factor authentication) のための <a href="#NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F">スマートカード</a> を利用できるということを意味しています。 -</p> -<h4 id="NSS_.E3.81.AF_OpenSSL_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF_OpenSSL_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は OpenSSL と比べてどうですか? </h4> -<p><a class="external" href="http://www.openssl.org/">OpenSSL</a> はサーバサイド SSL、TLS、および汎用暗号化機能ライブラリを実装するオープンソースプロジェクトですが、PKCS #11 をサポートしていません。OpenSSL は Eric A. Young と Tim J. Hudson によって開発された SSLeay ライブラリに基づいており、Apache サーバで幅広く使用されています。Apache スタイルのライセンスが付与されています。 -</p><p>NSS は <a href="ja/PKCS11_FAQ">PKCS #11</a> や S/MIME をはじめとして、サーバおよびクライアント両方のアプリケーションをサポートしています。できるだけ多くの用途を可能にするため、NSS は <a class="external" href="http://www.mozilla-japan.org/MPL/">Mozilla Public License</a> と <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> の両方でライセンスされています。MPL 条項下または GPL 条項下のどちらでライセンスするかを選択することができます。 -</p> -<h4 id="NSS_.E3.81.AF_SSLRef_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF_SSLRef_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は SSLRef と比べてどうですか? </h4> -<p>SSLRef は初期の SSL プロトコルのレファレンス実装で、フィックスされることのないバグがあり、TLS や新しい 56-bit エクスポート暗号スイートをサポートしていません。さらに SSLRef は PKCS#1 への Bleichenbacher 攻撃に対する修正が施されていません。 -</p><p>Netscape はもう SSLRef を管理していませんし、利用できないようにしています。SSLRef は SSL 実装の一例としてビルドされたものであり、製品としてのアプリケーションのためにビルドされたものではありません。 -</p><p>NSS は商業的な開発者によって利用されるような目的からデザインされたもので、Netscape や他の会社から出されている多くのクライアント/サーバ製品で利用されているセキュリティ機能をサポートするために利用されているのと同じアーキテクチャを使用した完全なソフトウェア開発キットを備えています。 -</p> -<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのようなプラットフォーム、開発環境がサポートされているのでしょう? </h4> -<div class="warning">このセクションの内容は古くなっています</div> -<p>iPlanet E-Commerce Solutions は NSS 3.1 が 18のプラットフォームで利用できることを確認しています。その中には、AIX 4.3、HP-UX 11.0、Red Hat Linux 6.0、Solaris (2.6 以降) 、Windows NT (4.0 以降) 、そして Windows 2000 が含まれており、他の貢献者がさらに多くのプラットフォームで利用できるよう作業を進めています。NSS 3.1 API には C または C++ 開発環境が必要です。 -</p><p>最新の NSS リリースノートやプラットフォームに関する詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/#Info">プロジェクト情報</a> をご覧ください。 -</p> -<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.9A.97.E5.8F.B7.E5.8C.96.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.9A.97.E5.8F.B7.E5.8C.96.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのような暗号化スタンダードがサポートされているのでしょう? </h4> -<p>NSS は SSL <a href="ja/Glossary#SSL">SSL v2/v3</a>、<a href="ja/Glossary#TLS">TLS</a>、<a href="ja/Glossary#PKCS_.235">PKCS #5</a>、<a href="ja/Glossary#PKCS_.237">PKCS #7</a>、<a href="ja/Glossary#PKCS_.2311">PKCS #11</a>、<a href="ja/Glossary#PKCS_.2312">PKCS #12</a>、<a href="ja/Glossary#S.2FMIME">S/MIME</a>、そして <a href="ja/Glossary#X.509">X.509 v3</a> 証明書をサポートしています。詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a> をご覧ください。 -</p> -<h4 id="NSS_.E3.81.A8_PSM_.E3.81.A8.E3.81.AE.E9.96.A2.E4.BF.82.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.82.82.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name="NSS_.E3.81.A8_PSM_.E3.81.A8.E3.81.AE.E9.96.A2.E4.BF.82.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.82.82.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> NSS と PSM との関係はどのようなものでしょう? </h4> -<p>Personal Security Manager (PSM) は NSS の上にビルドされており、セキュリティ機能を備えたアプリケーションのクロスプラットフォーム開発をサポートするようにデザインされたライブラリとデーモンから成っています。PSM バイナリーでは、アプリケーションのために暗号処理を行うクライアントモジュールが提供されます。Netscape Personal Security Manager は、Netscape 6 や Gateway Connected Touch Pad with Instant AOL とともに公開されており、Communicagotr 4.7x でも利用できるようになっています。 -</p><p>PSM オープンソースプロジェクトについての詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/psm/">Personal Security Manager</a> をご覧ください。 -</p> -<h4 id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AF.E3.81.A9.E3.81.93.E3.81.A7.E6.89.8B.E3.81.AB.E5.85.A5.E3.82.8C.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AF.E3.81.A9.E3.81.93.E3.81.A7.E6.89.8B.E3.81.AB.E5.85.A5.E3.82.8C.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> ソースはどこで手に入れられますか? </h4> -<div class="warning">このセクションの内容は古くなっています</div> -<p>NSS 3.1 ソースのチェックアウトおよびビルド方法については、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/buildnss_31.html">NSS 3.1 ビルドガイド</a> をご覧ください。 -</p><p>ソースコードは <a class=" link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.org/security/</a> からも tar ファイルとしてダウンロードできます。 -</p> -<h4 id=".E3.81.84.E3.81.8F.E3.82.89.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.81.84.E3.81.8F.E3.82.89.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> いくらしますか? </h4> -<p>NSS ソースコードおよびバイナリ (利用できるようになった暁には) は完全に無料です。ライセンス料、著作権使用料、購読料、すべて無料です。 -</p> -<h3 id=".E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E8.B3.AA.E5.95.8F" name=".E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E8.B3.AA.E5.95.8F"> 開発者向けの質問 </h3> -<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのようなハードウェアアクセラレータがサポートされているのでしょう? </h4> -<p>NSS はハードウェアアクセラレーションのための PKCS #11 インターフェースをサポートしています。Chrysalis-IT や nCipher、Rainbow Technologies をはじめとする大手のアクセラレータベンダーもこのインターフェースをサポートしているため、NSS が利用できるアプリケーションもまた多様なハードウェアアクセラレーションをサポートできます。 -</p> -<h4 id="NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name="NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> NSS を利用してスマートカードを私のプリケーションに組み込むにはどうしたら良いでしょう? </h4> -<p>NSS は スマートカードのための PKCS #11 インターフェースをサポートしています。そのため、NSS によって提供される PKCS #11 インターフェースを利用するアプリケーションは、ActiveCard や Litronic、SafeNet、SecureID Technologies をはじめとする大手のベンダーのスマートカードをサポートします。これらのカードは PKCS #11 インターフェースをサポートしています。 -</p> -<h4 id="NSS_.E3.81.AF.E4.BB.96.E3.81.AE_Netscape_.E8.A3.BD.E5.93.81.E3.81.A8.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.8C.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E4.BB.96.E3.81.AE_Netscape_.E8.A3.BD.E5.93.81.E3.81.A8.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.8C.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は他の Netscape 製品とどのような互換性がありますか? </h4> -<p>NSS は他の Netscape 製品と二つの方法で緊密に統合されています。第一に、SSL や TLS を実装するために NSS を利用することで SSL および TLS をサポートする Netscape や他のベンダーからのすべての製品と SSL 通信が可能になります。第ニに、NSS を利用することで Netscape クライアントとサーバ製品、そしてあなたのアプリケーションとの間で証明書を簡単に共有することができます。 -</p> -<h4 id="NSS_.E3.81.AB.E3.81.AF_Netscape_Portable_Runtime_.28NSPR.29_.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AB.E3.81.AF_Netscape_Portable_Runtime_.28NSPR.29_.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS には Netscape Portable Runtime (NSPR) が必要ですか? </h4> -<p>クロスプラットフォームサポートを提供するため、NSS は Netscape Portable Runtime (NSPR) ライブラリを移植用インターフェースおよびネットワーク I/O やスレッドモデルのための一貫したクロスプラットフォーム・セマンティクスを提供する実装として利用します。アプリケーション全体で NSPR を利用することもできますし、NSS を呼び出す部分内でのみ利用することもできます。Netscape ではマルチスレッドアプリケーションでは NSPR またはネイティブな OS スレッドモデルを採用することを強くお薦めします。(最近の NSPR リリースでは、NSPR のスレッドモデルは、OS がネイティブなスレッドを持っている限り、ネイティブスレッドモデルと互換性を持つようになっています。) あるいは、オープンソース NSPR 実装を採用して、あなたの既存のアプリケーションのスレッドモデルと互換性を持たせることもできます。NSPR に関するより詳しい情報は、<a href="ja/NSPR">Netscape Portable Runtime</a> で見ることができます。 -</p> -<h4 id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB.E3.81.8C_HTTP_.E3.81.A7.E3.81.AA.E3.81.8F.E3.81.A6.E3.82.82_NSS_.E3.81.AF.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB.E3.81.8C_HTTP_.E3.81.A7.E3.81.AA.E3.81.8F.E3.81.A6.E3.82.82_NSS_.E3.81.AF.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> アプリケーションプロトコルが HTTP でなくても NSS は利用できるのでしょうか? </h4> -<p>はい。SSL はアプリケーションプロトコルとは独立しており、TCP/IP を利用したカスタムアプリケーションプロトコルだけではなく、共通のインターネット標準のアプリケーションプロトコル (HTTP、POP3、FTP、SMTP など) でも作動します。 -</p> -<h4 id="NSS_.E3.82.92.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.AE.E3.81.8F.E3.82.89.E3.81.84.E6.99.82.E9.96.93.E3.81.8C.E3.81.8B.E3.81.8B.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="NSS_.E3.82.92.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.AE.E3.81.8F.E3.82.89.E3.81.84.E6.99.82.E9.96.93.E3.81.8C.E3.81.8B.E3.81.8B.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> NSS をアプリケーションに組み込むにはどのくらい時間がかかるのでしょうか? </h4> -<p>統合のための作業は関係する要素の数によります。例えば、開発者の技術やアプリケーションの複雑さ、アプリケーションで要求されるセキュリティのレベルなどです。NSS には、統合プロセスをすぐに開始できるように、SSL API についての詳細な参考文献や基本的な SSL 機能 (暗号化されたセッションの設定、サーバ認証、そしてクライアント認証) のデモ用サンプルコードが含まれています。ただし、あなたのアプリケーションが洗練された証明書管理やスマートカード、ハードウェアアクセラレーションを必要とする場合、統合作業はより広範囲に渡ることになるでしょう。 -</p> -<h4 id="NSS_.E3.83.84.E3.83.BC.E3.83.AB.E3.81.AF.E3.81.A9.E3.81.93.E3.81.8B.E3.82.89.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.83.84.E3.83.BC.E3.83.AB.E3.81.AF.E3.81.A9.E3.81.93.E3.81.8B.E3.82.89.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS ツールはどこからダウンロードできますか? </h4> -<p>いくつかのプラットフォーム向けのコマンドラインツールを含んだ NSS バイナリビルドは <a class=" external" href="http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases" rel="freelink">http://ftp.mozilla.org/pub/mozilla.o...y/nss/releases</a> からダウンロードできます。同時に必要になる NSPR は <a class=" external" href="http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/" rel="freelink">http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/</a> からダウンロードできます。 -</p> -<h4 id="SSL_.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.82.88.E3.82.8A.E8.A9.B3.E3.81.97.E3.81.8F.E7.9F.A5.E3.82.8B.E3.81.9F.E3.82.81.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="SSL_.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.82.88.E3.82.8A.E8.A9.B3.E3.81.97.E3.81.8F.E7.9F.A5.E3.82.8B.E3.81.9F.E3.82.81.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> SSL についてより詳しく知るためにはどうしたら良いですか? </h4> -<p>NSS は SSL に関連する広範な参考文献を用意しています。そのなかには高レベルな導入、詳細な API 参考文献、シンプルなクライアント/サーバアプリケーションのためのサンプルコード、オリジナルの SSL 3.0 仕様、デバッグ SSL アプリケーションについての情報が含まれます。詳しくは <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ssl/">SSL/TLS プロジェクトページ</a> をご覧ください。また、デバッグ SSL アプリケーションで利用されているものも含めた NSS ツールについての詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS セキュリティツール</a> をご覧ください。 -</p> -<h3 id=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E8.B3.AA.E5.95.8F" name=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E8.B3.AA.E5.95.8F"> ライセンスに関する質問 </h3> -<h4 id="NSS_.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS はどのようにライセンスされていますか? </h4> -<p>NSS は <a class="external" href="http://www.mozilla-japan.org/MPL/">Mozilla Public License</a> および <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> でデュアルライセンスされています。詳しくは <a class="external" href="http://www.mozilla-japan.org/crypto-faq.html#1-3">Mozilla Crypto FAQ</a> をご覧ください。 -</p> -<h4 id="NSS_.E3.81.AF.E5.90.88.E8.A1.86.E5.9B.BD.E5.A4.96.E3.81.A7.E3.82.82.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E5.90.88.E8.A1.86.E5.9B.BD.E5.A4.96.E3.81.A7.E3.82.82.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は合衆国外でも利用できますか? </h4> -<div class="warning">このセクションの内容は古くなっています</div> -<p>利用できます。<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/buildnss_31.html">NSS 3.1 ビルドガイド</a> および <a class=" link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.org/security/</a> をご覧ください。ただし、NSS ソースコードは合衆国輸出規制や他の合衆国の法律の対象となり、特定の国 (2000 年 1 月時点では、キューバ、イラン、イラク、リビア、北朝鮮、スーダン、シリアおよびタリバン支配地域のアフガニスタン) 、あるいは合衆国からの輸出物を受け取ることが禁じられている個人や組織 ((a) 産業安全保障局の Denied Parties List または Entity List、(b) 財務省外国資産管理局の Specially Designated Nationals および Blocked Persons リスト、(c) ミサイル技術、核兵器、化学兵器、生物兵器に関与する) に対しては輸出、再輸出が認められない可能性があります。 -</p><p>暗号化機能を持つソフトウェアの合衆国輸出管理についてのより詳しい情報は、<a class="external" href="http://www.mozilla-japan.org/crypto-faq.html">Mozilla Crypto FAQ</a> をご覧ください。 -</p>{{ languages( { "en": "en/NSS_FAQ" } ) }} diff --git a/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html b/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html deleted file mode 100644 index 0b7ac5c8a5..0000000000 --- a/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: FC_Login -slug: Mozilla/Projects/NSS/NSS_reference/FC_Login -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Reference/FC_Login ---- -<p> </p><p><br> -</p><p>{{ 英語版章題("Name") }} -</p> -<h3 id="Name" name="Name"> Name </h3> -<p><code>FC_Login()</code> - log a user into a token. -</p><p>{{ 英語版章題("Syntax") }} -</p> -<h3 id="Syntax" name="Syntax"> Syntax </h3> -<pre class="eval"><a href="ja/CK_RV">CK_RV</a> FC_Login( - <a href="ja/CK_SESSION_HANDLE">CK_SESSION_HANDLE</a> hSession, - <a href="ja/CK_USER_TYPE">CK_USER_TYPE</a> userType, - <a href="ja/CK_CHAR">CK_CHAR_PTR</a> pPin, - <a href="ja/CK_ULONG">CK_ULONG</a> ulPinLen -); -</pre> -<p>{{ 英語版章題("Parameters") }} -</p> -<h3 id="Parameters" name="Parameters"> Parameters </h3> -<p><code>FC_Login()</code> takes four parameters: -</p> -<dl><dt><code>hSession</code> -</dt><dd>{{ mediawiki.external('in') }} a session handle -</dd><dt><code>userType</code> -</dt><dd>{{ mediawiki.external('in') }} the user type (<code>CKU_SO</code> or <code>CKU_USER</code>) -</dd><dt><code>pPin</code> -</dt><dd>{{ mediawiki.external('in') }} a pointer that points to the user's PIN -</dd><dt><code>ulPinLen</code> -</dt><dd>{{ mediawiki.external('in') }} the length of the PIN -</dd></dl> -<p>{{ 英語版章題("Description") }} -</p> -<h3 id="Description" name="Description"> Description </h3> -<p><code>FC_Login()</code> logs a user into a token. -</p><p>The Security Officer (<code>CKU_SO</code>) only logs in to initialize the normal user's PIN. The SO PIN is the empty string. The NSS cryptographic module doesn't allow the SO to log in if the normal user's PIN is already initialized. -</p><p>{{ 英語版章題("Return value") }} -</p> -<h3 id="Return_value" name="Return_value"> Return value </h3> -<p><code>FC_Login()</code> returns the following return codes. -</p> -<ul><li> <code>CKR_OK</code>: the user logged in successfully. -</li><li> <code>CKR_DEVICE_ERROR</code>: the token is in the Error state. -</li><li> <code>CKR_HOST_MEMORY</code>: memory allocation failed. -</li><li> <code>CKR_PIN_INCORRECT</code>: the PIN is incorrect. -</li><li> <code>CKR_PIN_LEN_RANGE</code>: the PIN is too long (<code>ulPinLen</code> is greater than 255).<div class="note">The function should return <code>CKR_PIN_INCORRECT</code> in this case.</div> -</li><li> <code>CKR_SESSION_HANDLE_INVALID</code>: the session handle is invalid. -</li><li> <code>CKR_USER_ALREADY_LOGGED_IN</code>: the user is already logged in. -</li><li> <code>CKR_USER_TYPE_INVALID</code> -<ul><li> The token can't authenticate the user because there is no key database or the user's password isn't initialized. -</li><li> <code>userType</code> is <code>CKU_SO</code> and the normal user's PIN is already initialized. -</li></ul> -</li></ul> -<p>{{ 英語版章題("See also") }} -</p> -<h3 id="See_also" name="See_also"> See also </h3> -<ul><li> <a href="ja/NSC_Login">NSC_Login</a> -</li></ul> -<div class="noinclude"> -</div> -{{ languages( { "en": "en/FC_Login" } ) }} diff --git a/files/ja/mozilla/projects/nss/nss_reference/index.html b/files/ja/mozilla/projects/nss/nss_reference/index.html deleted file mode 100644 index b1a02b000e..0000000000 --- a/files/ja/mozilla/projects/nss/nss_reference/index.html +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: NSS リファレンス -slug: Mozilla/Projects/NSS/NSS_reference -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Reference ---- -<h3 id=".E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85" name=".E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85">注意事項</h3> - -<div class="note"> -<ul> - <li>We are migrating the <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/">SSL Reference</a> from www.mozilla.org. If you are inclined to help with this migration, your help would be very much appreciated.</li> -</ul> - -<ul> - <li>The proposed chapters below are based on the chapters of the SSL Reference and the categories of functions in <a class="external" href="http://developer.mozilla.org/en/docs/NSS_functions">NSS Public Functions</a>.</li> -</ul> - -<ul> - <li>Should a particular page require the use of an underscore, please see the documentation for the <a>Title Override Extension</a>.</li> -</ul> -</div> - -<h3 id="NSS_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89.E3.81.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB" name="NSS_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89.E3.81.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB"><a href="ja/NSS_reference/Building_and_installing_NSS">NSS のビルドとインストール</a></h3> - -<h3 id="NSS_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E6.A6.82.E8.A6.B3" name="NSS_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E6.A6.82.E8.A6.B3">NSS アプリケーションの概観</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslintro.html">"Overview of an SSL Application"</a> in the SSL Reference.</p> - -<h3 id="NSS_.E5.85.A5.E9.96.80" name="NSS_.E5.85.A5.E9.96.80">NSS 入門</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/gtstd.html">"Getting Started With SSL"</a> in the SSL Reference.</p> - -<h3 id=".E3.83.87.E3.83.BC.E3.82.BF.E5.9E.8B" name=".E3.83.87.E3.83.BC.E3.82.BF.E5.9E.8B">データ型</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/ssltyp.html">"Selected SSL Types and Structures"</a> in the SSL Reference.</p> - -<h3 id=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E9.96.A2.E6.95.B0" name=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E9.96.A2.E6.95.B0">ユーティリティ関数</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#utils">"Utility Functions"</a> in NSS Public Functions.</p> - -<h3 id=".E8.A8.BC.E6.98.8E.E6.9B.B8.E9.96.A2.E6.95.B0" name=".E8.A8.BC.E6.98.8E.E6.9B.B8.E9.96.A2.E6.95.B0">証明書関数</h3> - -<p>Based on <a href="ja/NSS_Certificate_Functions">Certificate Functions</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#cert">"Certificate Functions"</a> in NSS Public Functions.</p> - -<ul> - <li><a href="ja/NSS_Certificate_Functions#Validating_Certificates">Validating Certificates</a> - - <ul> - <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCertNow">CERT_VerifyCertNow</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCert">CERT_VerifyCert</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCertName">CERT_VerifyCertName</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_CheckCertValidTimes">CERT_CheckCertValidTimes</a></li> - <li><a href="ja/NSS_Certificate_Functions#NSS_CmpCertChainWCANames">NSS_CmpCertChainWCANames</a></li> - </ul> - </li> - <li><a href="ja/NSS_Certificate_Functions#Manipulating_Certificates">Manipulating Certificates</a> - <ul> - <li><a href="ja/NSS_Certificate_Functions#CERT_DupCertificate">CERT_DupCertificate</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_DestroyCertificate">CERT_DestroyCertificate</a></li> - <li>SEC_DeletePermCertificate</li> - <li>__CERT_ClosePermCertDB</li> - </ul> - </li> - <li><a href="ja/NSS_Certificate_Functions#Getting_Certificate_Information">Getting Certificate Information</a> - <ul> - <li><a href="ja/NSS_Certificate_Functions#CERT_FindCertByName">CERT_FindCertByName</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_GetCertNicknames">CERT_GetCertNicknames</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_FreeNicknames">CERT_FreeNicknames</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_GetDefaultCertDB">CERT_GetDefaultCertDB</a></li> - <li><a href="ja/NSS_Certificate_Functions#NSS_FindCertKEAType">NSS_FindCertKEAType</a></li> - </ul> - </li> - <li><a href="ja/NSS_Certificate_Functions#Comparing_SecItem_Objects">Comparing SecItem Objects</a> - <ul> - <li><a href="ja/NSS_Certificate_Functions#SECITEM_CompareItem">SECITEM_CompareItem</a></li> - </ul> - </li> -</ul> - -<h3 id=".E9.8D.B5.E9.96.A2.E6.95.B0" name=".E9.8D.B5.E9.96.A2.E6.95.B0">鍵関数</h3> - -<p>Based on <a href="ja/NSS_Key_Functions">Key Functions</a> in the SSL Reference.</p> - -<ul> - <li><a href="ja/NSS_Key_Functions#SECKEY_GetDefaultKeyDB">SECKEY_GetDefaultKeyDB</a></li> - <li><a href="ja/NSS_Key_Functions#SECKEY_DestroyPrivateKey">SECKEY_DestroyPrivateKey</a></li> -</ul> - -<h3 id=".E9.9B.BB.E5.AD.90.E7.BD.B2.E5.90.8D" name=".E9.9B.BB.E5.AD.90.E7.BD.B2.E5.90.8D">電子署名</h3> - -<p>This API consists of the routines used to perform signature generation and the routines used to perform signature verification.</p> - -<h3 id=".E6.9A.97.E5.8F.B7.E5.8C.96.2F.E5.BE.A9.E5.8F.B7.E5.8C.96" name=".E6.9A.97.E5.8F.B7.E5.8C.96.2F.E5.BE.A9.E5.8F.B7.E5.8C.96">暗号化/復号化</h3> - -<h3 id=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5" name=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5">ハッシュ</h3> - -<h3 id=".E9.8D.B5.E7.94.9F.E6.88.90" name=".E9.8D.B5.E7.94.9F.E6.88.90">鍵生成</h3> - -<p>Generate keys, key pairs, and domain parameters.</p> - -<h3 id=".E4.B9.B1.E6.95.B0.E7.94.9F.E6.88.90" name=".E4.B9.B1.E6.95.B0.E7.94.9F.E6.88.90">乱数生成</h3> - -<p>This API consists of the two routines used for pseudorandom number generation -- PK11_GenerateRandomOnSlot and PK11_GenerateRandom -- and the two routines used for seeding pseudorandom number generation -- PK11_SeedRandom and PK11_RandomUpdate.</p> - -<h3 id="PKCS_.2311_.E9.96.A2.E6.95.B0" name="PKCS_.2311_.E9.96.A2.E6.95.B0">PKCS #11 関数</h3> - -<p>Based on <a href="ja/NSS_PKCS11_Functions">PKCS #11 Functions</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#crypto">"Crypto Functions"</a> in NSS Public Functions.</p> - -<ul> - <li><a href="ja/NSS_PKCS11_Functions#SECMOD_LoadUserModule">SECMOD_LoadUserModule</a></li> - <li><a href="ja/NSS_PKCS11_Functions#SECMOD_UnloadUserModule">SECMOD_UnloadUserModule</a></li> - <li><a href="ja/NSS_PKCS11_Functions#SECMOD_CloseUserDB">SECMOD_CloseUserDB</a></li> - <li><a href="ja/NSS_PKCS11_Functions#SECMOD_OpenUserDB">SECMOD_OpenUserDB</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_FindCertFromNickname">PK11_FindCertFromNickname</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_FindKeyByAnyCert">PK11_FindKeyByAnyCert</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_GetSlotName">PK11_GetSlotName</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_GetTokenName">PK11_GetTokenName</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_IsHW">PK11_IsHW</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_IsPresent">PK11_IsPresent</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_IsReadOnly">PK11_IsReadOnly</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_SetPasswordFunc">PK11_SetPasswordFunc</a></li> -</ul> - -<h3 id="SSL_.E9.96.A2.E6.95.B0" name="SSL_.E9.96.A2.E6.95.B0">SSL 関数</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslfnc.html">"SSL Functions"</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#ssl">"SSL Functions"</a> and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#dep">"Deprecated SSL Functions"</a> in NSS Public Functions.</p> - -<ul> - <li>SSL_ConfigServerSessionIDCache</li> - <li>SSL_ClearSessionCache</li> -</ul> - -<h3 id="S.2FMIME" name="S.2FMIME">S/MIME</h3> - -<p>Based on the <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/smime/">S/MIME Reference</a> (which only has one written chapter) and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#smime">"S/MIME Functions"</a> in NSS Public Functions.</p> - -<h3 id="PKCS_.237_.E9.96.A2.E6.95.B0" name="PKCS_.237_.E9.96.A2.E6.95.B0">PKCS #7 関数</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#pkcs7">"PKCS #7 Functions"</a> in NSS Public Functions.</p> - -<h3 id="PKCS_.235_.E9.96.A2.E6.95.B0" name="PKCS_.235_.E9.96.A2.E6.95.B0">PKCS #5 関数</h3> - -<p>Password-based encryption</p> - -<ul> - <li>SEC_PKCS5GetIV</li> - <li>SEC_PKCS5CreateAlgorithmID</li> - <li>SEC_PKCS5GetCryptoAlgorithm</li> - <li>SEC_PKCS5GetKeyLength</li> - <li>SEC_PKCS5GetPBEAlgorithm</li> - <li>SEC_PKCS5IsAlgorithmPBEAlg</li> -</ul> - -<h3 id="PKCS_.2312_.E9.96.A2.E6.95.B0" name="PKCS_.2312_.E9.96.A2.E6.95.B0">PKCS #12 関数</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#pkcs12">"PKCS #12 Functions"</a> in NSS Public Functions. Used to exchange data such as private keys and certificates between two parties.</p> - -<ul> - <li>SEC_PKCS12CreateExportContext</li> - <li>SEC_PKCS12CreatePasswordPrivSafe</li> - <li>SEC_PKCS12CreateUnencryptedSafe</li> - <li>SEC_PKCS12AddCertAndKey</li> - <li>SEC_PKCS12AddPasswordIntegrity</li> - <li>SEC_PKCS12EnableCipher</li> - <li>SEC_PKCS12Encode</li> - <li>SEC_PKCS12DestroyExportContext</li> - <li>SEC_PKCS12DecoderStart</li> - <li>SEC_PKCS12DecoderImportBags</li> - <li>SEC_PKCS12DecoderUpdate</li> - <li>SEC_PKCS12DecoderFinish</li> - <li>SEC_PKCS12DecoderValidateBags</li> - <li>SEC_PKCS12DecoderVerify</li> - <li>SEC_PKCS12DecoderGetCerts</li> - <li>SEC_PKCS12DecoderSetTargetTokenCAs</li> - <li>SEC_PKCS12DecoderIterateInit</li> - <li>SEC_PKCS12DecoderIterateNext</li> - <li>SEC_PKCS12IsEncryptionAllowed</li> - <li>SEC_PKCS12SetPreferredCipher</li> -</ul> - -<h3 id=".E3.82.A8.E3.83.A9.E3.83.BC.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.A8.E3.83.A9.E3.83.BC.E3.82.B3.E3.83.BC.E3.83.89">エラーコード</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslerr.html">"NSS and SSL Error Codes"</a> in the SSL Reference.</p> - -<h3 id="NSS_.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0" name="NSS_.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0"><a href="ja/NSS_reference/NSS_environment_variables">NSS 環境変数</a></h3> - -<h3 id="NSS_.E6.9A.97.E5.8F.B7.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB" name="NSS_.E6.9A.97.E5.8F.B7.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB"><a href="ja/NSS_reference/NSS_cryptographic_module">NSS 暗号モジュール</a></h3> - -<h3 id="NSS_.E6.8A.80.E8.A1.93.E3.83.8E.E3.83.BC.E3.83.88" name="NSS_.E6.8A.80.E8.A1.93.E3.83.8E.E3.83.BC.E3.83.88">NSS 技術ノート</h3> - -<p><a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tech-notes">NSS Tech Notes</a> <a href="ja/NSS_Memory_allocation">NSS Memory allocation</a></p> - -<h3 id=".E3.83.84.E3.83.BC.E3.83.AB" name=".E3.83.84.E3.83.BC.E3.83.AB">ツール</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS Tools</a> documentation on www.mozilla.org.</p> - -<div class="noinclude"></div> - -<p>{{ languages( { "en": "en/NSS_reference" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/nss_releases/index.html b/files/ja/mozilla/projects/nss/nss_releases/index.html deleted file mode 100644 index f275377979..0000000000 --- a/files/ja/mozilla/projects/nss/nss_releases/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: NSS の最新バージョンのリリースノート -slug: Mozilla/Projects/NSS/NSS_Releases -translation_of: Mozilla/Projects/NSS/NSS_Releases ---- -<p>現在の NSS の<strong>安定版</strong>リリースは 3.57 で、<strong>2020年9月18日</strong>にリリースされました。(NSS 3.57 のリリースノート)</p> - -<p>The current <strong>ESR</strong> releases of NSS are 3.44.4 (<a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.4_release_notes">NSS 3.44.4 release notes</a>), intended for Firefox ESR 68, which was released on <strong>19 May 2020</strong>, and 3.53.1 <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53.1_release_notes">(NSS 3.53.1 release notes)</a>, intended for Firefox ESR 78, which was released on <strong>16 June 2020</strong>.</p> - -<h2 id="Past_releases">Past releases</h2> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.57_release_notes">NSS 3.57 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.56_release_notes">NSS 3.56 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.55_release_notes">NSS 3.55 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.54_release_notes">NSS 3.54 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53.1_release_notes">NSS 3.53.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53_release_notes">NSS 3.53 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.52.1_release_notes">NSS 3.52.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.4_release_notes">NSS 3.44.4 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.52_release_notes">NSS 3.52 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.51.1_release_notes">NSS 3.51.1 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.51_release_notes">NSS 3.51 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.50_release_notes">NSS 3.50 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49.2_release_notes">NSS 3.49.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49.1_release_notes">NSS 3.49.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49_release_notes">NSS 3.49 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.48.1_release_notes">NSS 3.48.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.48_release_notes">NSS 3.48 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.47.1_release_notes">NSS 3.47.1 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.47_release_notes">NSS 3.47 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.46.1_release_notes">NSS 3.46.1 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.46_release_notes">NSS 3.46 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.45_release_notes">NSS 3.45 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.3_release_notes">NSS 3.44.3 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.2_release_notes">NSS 3.44.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.1_release_notes">NSS 3.44.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44_release_notes">NSS 3.44 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.43_release_notes">NSS 3.43 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.42.1_release_notes">NSS 3.42.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.42_release_notes">NSS 3.42 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.8_release_notes">NSS 3.36.8 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.7_release_notes">NSS 3.36.7 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.41_release_notes">NSS 3.41 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.40.1_release_notes">NSS 3.40.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.6_release_notes">NSS 3.36.6 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.40_release_notes">NSS 3.40 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.39_release_notes">NSS 3.39 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.38_release_notes">NSS 3.38 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37.3_release_notes">NSS 3.37.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37.1_release_notes">NSS 3.37.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37_release_notes">NSS 3.37 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.5_release_notes">NSS 3.36.5 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.4_release_notes">NSS 3.36.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.2_release_notes">NSS 3.36.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.1_release_notes">NSS 3.36.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36_release_notes">NSS 3.36 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.35_release_notes">NSS 3.35 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.34.1_release_notes">NSS 3.34.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.34_release_notes">NSS 3.34 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.33_release_notes">NSS 3.33 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.32_release_notes">NSS 3.32 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.31.1_release_notes">NSS 3.31.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.31_release_notes">NSS 3.31 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30.2_release_notes">NSS 3.30.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30.1_release_notes">NSS 3.30.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30_release_notes">NSS 3.30 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.5_release_notes">NSS 3.29.5 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.3_release_notes">NSS 3.29.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.2_release_notes">NSS 3.29.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.1_release_notes">NSS 3.29.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29_release_notes">NSS 3.29 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.5_release_notes">NSS 3.28.5 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.4_release_notes">NSS 3.28.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.3_release_notes">NSS 3.28.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.2_release_notes">NSS 3.28.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.1_release_notes">NSS 3.28.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28_release_notes">NSS 3.28 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27.2_release_notes">NSS 3.27.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27.1_release_notes">NSS 3.27.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27_release_notes">NSS 3.27 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.26.2_release_notes">NSS 3.26.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.26_release_notes">NSS 3.26 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.25.1_release_notes">NSS 3.25.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.25_release_notes">NSS 3.25 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.24_release_notes">NSS 3.24 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.23_release_notes">NSS 3.23 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22.2_release_notes">NSS 3.22.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22.1_release_notes">NSS 3.22.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22_release_notes">NSS 3.22 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.4_release_notes">NSS 3.21.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.3_release_notes">NSS 3.21.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.2_release_notes">NSS 3.21.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.1_release_notes">NSS 3.21.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21_release_notes">NSS 3.21 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.20.1_release_notes">NSS 3.20.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.20_release_notes">NSS 3.20 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.3_release_notes">NSS 3.19.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.2_release_notes">NSS 3.19.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.1_release_notes">NSS 3.19.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19_release_notes">NSS 3.19 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.18.1_release_notes">NSS 3.18.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.18_release_notes">NSS 3.18 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.4_release_notes">NSS 3.17.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.3_release_notes">NSS 3.17.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.2_release_notes">NSS 3.17.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.1_release_notes">NSS 3.17.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17_release_notes">NSS 3.17 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.6_release_notes">NSS 3.16.6 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.5_release_notes">NSS 3.16.5 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.4_release_notes">NSS 3.16.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.3_release_notes">NSS 3.16.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.3_release_notes">NSS 3.16.2.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.2_release_notes">NSS 3.16.2.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.1_release_notes">NSS 3.16.2.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2_release_notes">NSS 3.16.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.1_release_notes">NSS 3.16.1 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.16_release_notes">NSS 3.16 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.5_release_notes">NSS 3.15.5 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.4_release_notes">NSS 3.15.4 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.3.1_release_notes">NSS 3.15.3.1 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.3_release_notes">NSS 3.15.3 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.2_release_notes">NSS 3.15.2 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.1_release_notes">NSS 3.15.1 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15_release_notes" title="NSS 3.15 release notes">NSS 3.15 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.5_release_notes" title="NSS 3.14.5 release notes">NSS 3.14.5 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.4_release_notes" title="NSS 3.14.4 release notes">NSS 3.14.4 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.3_release_notes" title="NSS 3.14.3 release notes">NSS 3.14.3 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.2_release_notes" title="NSS 3.14.2 release notes">NSS 3.14.2 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.1_release_notes" title="NSS 3.14.1 release notes">NSS 3.14.1 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14_release_notes" title="NSS 3.14 release notes">NSS 3.14 release notes</a></li> - <li><a href="/en-US/docs/NSS/release_notes.html">Older release notes</a></li> -</ul> - -<h2 id="Future_releases">Future releases</h2> - -<p>Release planning is done on the Mozilla wiki: {{interwiki("wikimo", "NSS:Release Versions")}}.</p> diff --git a/files/ja/mozilla/projects/nss/nss_sample_code/index.html b/files/ja/mozilla/projects/nss/nss_sample_code/index.html deleted file mode 100644 index 4a70911b42..0000000000 --- a/files/ja/mozilla/projects/nss/nss_sample_code/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: NSS サンプルコード -slug: Mozilla/Projects/NSS/NSS_Sample_Code -tags: - - Example -translation_of: Mozilla/Projects/NSS/NSS_Sample_Code ---- -<h2 id="NSS_Sample_Code">NSS Sample Code</h2> - -<p>ここにあるサンプルコード集では、暗号処理、証明書の取り扱い、SSL などに NSS がどのように利用できるかを示しています。また、暗号化の応用におけるベストプラクティスをいくつか示しています。</p> - -<p>差し替え中の古いサンプル</p> - -<ol> - <li><a href="nss_sample_code/NSS_Sample_Code_Sample1">Sample Code 1: Key Generation and Transport Between Servers</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample2">Sample Code 2: Symmetric Encryption</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample3">Sample Code 3: Hashing, MAC</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample4">Sample Code 4: PKI Encryption</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample5">Sample Code 5: PKI Encryption with a raw public & private key in DER format</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample6">Sample Code 6: Persistent Symmetric Keys in NSS database</a></li> -</ol> - -<p><br> - リプレースが必要な非常に古い事例です。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">https://bugzilla.mozilla.org/show_bug.cgi?id=490238</a> を参照してください。</p> - -<p>新しいサンプルをダウンロードすることができます。</p> - -<pre class="bz_comment_text notranslate" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH -</pre> - -<p>新しいサンプル: <a href="/ja/docs/Mozilla/Projects/NSS/New_NSS_Samples">https://developer.mozilla.org/ja/docs/Mozilla/Projects/NSS/New_NSS_Samples</a></p> diff --git a/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html b/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html deleted file mode 100644 index eb799cad8a..0000000000 --- a/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: NSS ソースのビルドのテスト -slug: Mozilla/Projects/NSS/NSS_Sources_Building_Testing -translation_of: Mozilla/Projects/NSS/NSS_Sources_Building_Testing ---- -<p><a href="/ja/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> のソースコードの取得、構築方法、テストスイートの実行方法。</p> - -<h2 id="ソースコードの取得と簡単な概要">ソースコードの取得と簡単な概要</h2> - -<p>最も簡単な方法は、<a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/">Mozilla のダウンロードサーバ</a>から NSS リリースのアーカイブをダウンロードすることです。バージョン番号が一番高いディレクトリを探してください。NSS はベースライブラリ <a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a> に依存しているので、NSS と NSPR の両方を組み合わせたアーカイブをダウンロードする必要があります。</p> - -<p>If you are a software developer and intend to contribute enhancements to NSS, you should obtain the latest development snapshot of NSS using mercurial/hg (a <a href="https://www.mercurial-scm.org/" title="https://www.mercurial-scm.org/">distributed source control management tool</a>). In order to get started, anonymous read-only access is sufficient. Create a new directory on your computer that you will use as your local work area, and run the following commands.</p> - -<pre class="language-html notranslate" style='margin-top: 0.5em; margin-bottom: 0.5em; padding: 1em; background-color: rgb(15, 12, 10); font-size: 14px; line-height: 21px; font-family: Consolas, Monaco, "Andale Mono", monospace; color: rgb(255, 255, 255); text-shadow: rgb(0, 0, 0) 0px 1px; direction: ltr;'>hg clone https://hg.mozilla.org/projects/nspr -hg clone https://hg.mozilla.org/projects/nss</pre> - -<p>After the above commands complete, you should have two local directories, named nspr and nss, next to each other.</p> - -<p>(Historical information: NSPR and NSS source code have recently been re-organized into a new directory structure. In past versions, all files were located in a directory hierarchy that started with the "mozilla" prefix. The NSPR base library was located in directory mozilla/nsprpub. The subdirectories dbm, security/dbm, security/coreconf, security/nss were part of the NSS sources.)</p> - -<p>The nss directory contains the following important subdirectories:</p> - -<ul> - <li>nss/coreconf<br> - Contains knowledge for cross platform building.</li> - <li>nss/lib<br> - Contains all the library code that is used to create the runtime libraries used by applications.</li> - <li>nss/cmd<br> - Contains a set of various tool programs that are built using NSS. Several tools are general purpose and can be used to inspect and manipulate the storage files that software using the NSS library creates and modifies. Other tools are only used for testing purposes. However, all these tools are good examples of how to write software that makes use of the NSS library.</li> - <li>nss/test<br> - This directory contains the NSS test suite, which is routinely used to ensure that changes to NSS don't introduce regressions.</li> - <li>nss/gtests<br> - Code for NSS unit tests running in <a href="https://github.com/abseil/googletest">Googletest</a>.</li> -</ul> - -<p>It is important to mention the difference between internal NSS code and exported interfaces. Software that would like to use the NSS library must use only the exported interfaces. These can be found by looking at the files with the .def file extension, inside the nss/lib directory hierarchy. Any C function that isn't contained in .def files is strictly for private use within NSS, and applications and test tools are not allowed to call them. For any functions that are listed in the .def files, NSS promises that the binary function interface (ABI) will remain stable.</p> - -<h2 id="Building_NSS">Building NSS</h2> - -<p>NSS is built using <a class="external external-icon" href="https://gyp.gsrc.io/" rel="noopener">gyp</a> and <a class="external external-icon" href="https://ninja-build.org/" rel="noopener">ninja</a>, or with <a class="external external-icon" href="https://www.gnu.org/software/make/" rel="noopener">make</a> on systems that don't have those tools. The <a href="/en-US/docs/Mozilla/Projects/NSS/Building">complete build instructions</a> include more information.</p> - -<p>Once the build is done, you can find the build output below directory dist/?, where ? will be a name dynamically derived from your system's architecture. Exported header files for NSS applications can be found in directory "include", library files in directory "lib", and the tools in directory "bin". In order to run the tools, you should set your system environment to use the libraries of your build from the "lib" directory, e.g., using the LD_LIBRARY_PATH or DYLD_LIBRARY_PATH environment variable.</p> - -<h2 id="Running_the_NSS_test_suite">Running the NSS test suite</h2> - -<p>This is an important part of development work, in order to ensure your changes don't introduce regressions. When adding new features to NSS, tests for the new feature should be added as well.</p> - -<p>You must build NSS prior to running the tests. After the build on your computer has succeeded, before you can run the tests on your computer, it might be necessary to set additional environment variables. The NSS tests will start TCP/IP server tools on your computer, and in order for that to work, the NSS test suite needs to know which hostname can be used by client tools to connect to the server tools. On machines that are configured with a hostname that has been registered in your network's DNS, this should work automatically. In other environments (for example in home networks), you could set the HOST and DOMSUF (for domain suffix) environment variables to tell the NSS suite which hostname to use. As a test, it must be possible to successfully use the command "ping $HOST.$DOMSUF" on your computer (ping reports receiving replies). On many computers the variables HOST=localhost DOMSUF=localdomain works. In case you built NSS in 64 bits, you need to set the USE_64 environment variable to 1 to run the tests. If you get name resolution errors, try to disable IPv6 on the loopback device.</p> - -<p>After you have set the required environment variables, use "cd nss/tests" and start the tests using "./all.sh". The tests will take a while to complete; on a slow computer it could take a couple of hours.</p> - -<p>Once the test suite has completed, a summary will be printed that shows the number of failures. You can find the test suite results in directory nss/../tests_results (i.e. the results directory ends up next to the nss directory, not within it). Each test suite execution will create a new subdirectory; you should clean them up from time to time. Inside the directory you'll find text file output.log, which contains a detailed report of all tests being executed. In order to learn about the details of test failures, search the file for the uppercase test FAILED.</p> - -<p>If desired, it's possible to run only subsets of the tests. Read the contents of file all.sh to learn how that works.</p> diff --git a/files/ja/mozilla/projects/nss/nss_tech_notes/index.html b/files/ja/mozilla/projects/nss/nss_tech_notes/index.html deleted file mode 100644 index c474d6824b..0000000000 --- a/files/ja/mozilla/projects/nss/nss_tech_notes/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: NSS 技術ノート -slug: Mozilla/Projects/NSS/NSS_Tech_Notes -translation_of: Mozilla/Projects/NSS/NSS_Tech_Notes ---- -<h2 id="NSS_技術ノート">NSS 技術ノート</h2> - -<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> - -<p>NSS technical notes provide latest information about new NSS features and supplementary documentation for advanced topics in programming with NSS.</p> - -<ol> - <li>TN1: <a href="nss_tech_notes/nss_tech_note1">How to use the NSS ASN.1 and QuickDER decoders</a>.</li> - <li>TN2: <a href="nss_tech_notes/nss_tech_note2">Using the PKCS #11 Module Logger</a>.</li> - <li>TN3: <a href="nss_tech_notes/nss_tech_note3">All About Certificate Extensions</a>.</li> - <li>TN4: <a href="nss_tech_notes/nss_tech_note4">Pulling certificate extension information out of SSL certificates</a>.</li> - <li>TN5: <a href="nss_tech_notes/nss_tech_note5">Using NSS to perform miscellaneous cryptographic operations</a>.</li> - <li>TN6: <a href="nss_tech_notes/nss_tech_note6">NSS .chk Files for the FIPS Mode</a>.</li> - <li>TN7: <a href="nss_tech_notes/nss_tech_note7">RSA Signing and Encryption with NSS</a>.</li> - <li>TN8: <a href="nss_tech_notes/nss_tech_note8">Background Information on libSSL's Cache Functions and SIDs</a>.</li> -</ol> diff --git a/files/ja/mozilla/projects/nss/nss_third-party_code/index.html b/files/ja/mozilla/projects/nss/nss_third-party_code/index.html deleted file mode 100644 index dbf7262a06..0000000000 --- a/files/ja/mozilla/projects/nss/nss_third-party_code/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: NSS サードパーティコード -slug: Mozilla/Projects/NSS/NSS_Third-Party_Code -tags: - - NSS -translation_of: Mozilla/Projects/NSS/NSS_Third-Party_Code ---- -<p>これは、NSS のリポジトリに含まれるサードパーティ製のコードのリストで、2つのリストに分かれています。NSS ライブラリにコンパイルされるコードと、テストにのみ使用されるコードです。</p> - -<p>NSS ライブラリにコンパイルできるコードがすべて<em>そう</em>とは限らないことに注意してください。多くの場合、これはビルド時に様々なトレードオフを考慮して設定することができます。</p> - -<h2 id="コンパイル">コンパイル</h2> - -<ul> - <li>sqlite [/lib/sqlite]</li> - <li>BerkleyDB [/lib/dbm]</li> - <li>zlib [/lib/zlib]</li> - <li>libjar [/lib/jar]</li> - <li>Fiat-Crypto, Ring [lib/freebl/ecl]</li> -</ul> - -<h2 id="テストに使用">テストに使用</h2> - -<ul> - <li>GTest [/gtests]</li> -</ul> - -<h3 id="特定のテストツールでダウンロード">特定のテストツールでダウンロード</h3> - -<ul> - <li>TLSFuzzer [/tests/tlsfuzzer]</li> - <li>BoGo tests [/tests/bogo]</li> - <li>BoringSSL, OpenSSL [/tests/interop]</li> -</ul> diff --git a/files/ja/mozilla/projects/nss/overview_of_nss/index.html b/files/ja/mozilla/projects/nss/overview_of_nss/index.html deleted file mode 100644 index 455e20b6cb..0000000000 --- a/files/ja/mozilla/projects/nss/overview_of_nss/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: NSS の概要 -slug: Mozilla/Projects/NSS/Overview_of_NSS -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Overview ---- -<h2 id="Open_Source_Crypto_Libraries">Open Source Crypto Libraries</h2> - -<h3 id=".E5.AE.9F.E7.B8.BE.E3.81.AE.E3.81.82.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.BB.E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BB.E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3" name=".E5.AE.9F.E7.B8.BE.E3.81.AE.E3.81.82.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.BB.E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BB.E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3">実績のあるアプリケーション・セキュリティ・アーキテクチャ</h3> - -<p>もし、SSL、S/MIMEやその他のインターネットセキュリティ標準を貴方のアプリケーションでサポートしたければ、すべてのセキュリティ機能を実装した Network Security Services (NSS) を使うことができます。NSSは、暗号ライブラリの完全なオープンソース実装を提供します。NSSは、AOL、Red Hat、Sunやその他の企業の下記を含む様々な製品で使われています。:</p> - -<ul> - <li><a class="external" href="http://www.mozilla-japan.org/products/">Mozilla クライアント製品</a>, <a class="external" href="http://www.mozilla-japan.org/products/mozilla1.x/">Mozilla Suite</a>, <a class="external" href="http://www.mozilla.com/firefox/">Firefox</a>, と <a class="external" href="http://www.mozilla.com/thunderbird/">Thunderbird</a>を含む。</li> - <li><a class="external" href="http://browser.netscape.com/">Netscape ブラウザ</a></li> - <li><a class="external" href="http://communicator.aol.com/">AOL Communicator</a> と <a class="external" href="http://www.aim.com/">AOL Instant Messenger</a> (AIM)</li> - <li><a class="external" href="http://www.gnome.org/projects/evolution/">Evolution</a>, <a class="external" href="http://gaim.sourceforge.net/">Gaim</a>, や <a class="external" href="http://www.openoffice.org/">OpenOffice.org</a> 2.0 などのオープンソースクライアントアプリケーション。</li> - <li><a class="external" href="http://www.redhat.com/solutions/">Red Hat</a> のサーバ製品: <a class="external" href="http://www.redhat.com/software/rha/directory/">Red Hat Directory Server</a>, <a class="external" href="http://www.redhat.com/software/rha/certificate/">Red Hat Certificate System</a>, と Apache web server の <a class="external" href="http://directory.fedora.redhat.com/wiki/Mod_nss">mod_nss</a> SSL module.</li> - <li><a class="external" href="http://www.sun.com/software/javaenterprisesystem/index.xml">Sun Java Enterprise System</a>のサーバ製品、Sun Java System Web Server, Sun Java System Directory Server, Sun Java System Portal Server, Sun Java System Messaging Server, と Sun Java System Application Server.</li> -</ul> - -<p>NSS には、プラットフォームでのパフォーマンスを最適化するために、開発者や OEM がアセンブラコードといったパッチを配布できるようにするフレームワークが含まれています。NSS 3.x は 18 のプラットフォームでその性能を発揮しています。</p> - -<p>NSSのより詳しい情報については、 <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/index.html">NSS Project Page</a> と <a href="ja/NSS_FAQ">NSS FAQ</a> を参照してください。</p> - -<p>JavaインターフェースからNSSのソースコードは Mozilla CVSツリーにあります。詳細は、 <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/jss/">Network Security Services for Java</a>を参照してください。</p> - -<p>NSS は Netscape Portable Runtime(<a href="ja/NSPR">NSPR</a>)を使用します。この NSPR は、プラットフォームに依存しないオープンソースAPIであり、システムファンクションはクロスプラットフォーム開発を可能にするように設計されています。NSS と同様、NSPR はさまざまな製品で厳しいテストを経てきました。より詳しい情報は、<a class="external" href="http://www.mozilla-japan.org/projects/nspr/">NSPR プロジェクトページ</a>を参照してください。</p> - -<h3 id=".E7.9B.B8.E4.BA.92.E9.81.8B.E7.94.A8.E6.80.A7.E3.81.A8.E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89" name=".E7.9B.B8.E4.BA.92.E9.81.8B.E7.94.A8.E6.80.A7.E3.81.A8.E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89">相互運用性とオープンスタンダード</h3> - -<p>NSSを使って、あなたのアプリケーションで次の一連のセキュリティ標準をサポートすることができます:</p> - -<ul> - <li><a href="ja/Glossary#SSL">SSL v2 and v3</a>. Secure Sockets Layer (SSL) プロトコルは、クライアントとサーバの相互認証、および、認証され暗号化された接続の確立を可能にします。</li> - <li><a class="external" href="http://www.ietf.org/rfc/rfc2246.txt">TLS v1 (</a><a class="external" href="http://tools.ietf.org/html/rfc2246" title="http://tools.ietf.org/html/rfc2246">RFC 2246</a>). IETFによる Transport Layer Security (TLS) プロトコルは、SSLの実装と後方互換性を持ちながら、最終的にはSSLに取って代わります。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html">PKCS #1</a>. RSAアルゴリズムに基づいた公開鍵暗号法を統括する実装のRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-3/index.html">PKCS #3</a>. Diffie-Hellman 鍵共有を統括する実装のRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-5/index.html">PKCS #5</a>. ストレージの秘密鍵を暗号化する場合などに使用するパスワードに基づく暗号化を管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-7/index.html">PKCS #7</a>. 電子署名や電子封筒などのデータ暗号化アプリケーションを管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-8/index.html">PKCS #8</a>. 秘密鍵のストレージと暗号化を管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-9/index.html">PKCS #9</a>. PKCS #7、PKCS #8およびPKCS#10と共に使われ、それらのタイプを含む選択された属性タイプ管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-10/index.html">PKCS #10</a>. 証明書の要求構文を管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-11/index.html">PKCS #11</a>. 暗号トークン(ハードウェアアクセラレータやスマートカード、ICカード)とのコミュニケーションを管理し、特定のアルゴリズムと実装から独立したアプリケーションを可能にするRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-12/index.html">PKCS #12</a>. 秘密鍵、証明書、および他の秘密資料の格納または輸送に使われるフォーマットを管理するRSA標準。</li> - <li><a href="ja/Glossary#S.2FMIME">S/MIME (RFC 2311 and RFC 2633)</a>. 署名および暗号化されたMIMEデータの送受信のための一貫した方法を提供する、(一般的なインターネットMIME標準に基づいた)IETFメッセージ仕様。</li> - <li><a href="ja/Glossary#X.509">X.509 v3</a>. 公開鍵暗号法の中で認証のために使用される証明書のフォーマットを管理するITUの標準。</li> - <li><a href="ja/Glossary#OCSP">OCSP (RFC 2560)</a>. オンライン証明書ステータスプロトコル(Online Certificate Status Protocol, OCSP)は、証明書有効性のリアルタイムな確認方法を管理します。</li> - <li><a class="external" href="http://www.ietf.org/rfc/rfc3280.txt">PKIX Certificate and CRL Profile (</a><a class="external" href="http://tools.ietf.org/html/rfc3280" title="http://tools.ietf.org/html/rfc3280">RFC 3280</a>). (PKIXで知られている)IETFの公開鍵基盤(X.509)ワーキンググループによって開発中のインターネット用の公開鍵暗号基盤用の4部の標準の第1の部分。</li> - <li>RSA, DSA, ECDSA, Diffie-Hellman, EC Diffie-Hellman, <a class="external" href="http://csrc.nist.gov/encryption/aes/">AES</a>, Triple DES, DES, RC2, RC4, SHA-1, SHA-256, SHA-384, SHA-512, MD2, MD5, HMAC: 公開鍵および共通鍵暗号で使われる一般的な暗号化アルゴリズム。</li> - <li>FIPS 186-2 疑似乱数生成器。</li> -</ul> - -<p>完全な詳細に関しては、 <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">暗号化技術</a>を参照してください。</p> - -<h3 id="FIPS_140_.E5.A6.A5.E5.BD.93.E6.80.A7.E7.A2.BA.E8.AA.8D_.E3.81.A8_NISCC_.E3.83.86.E3.82.B9.E3.83.88" name="FIPS_140_.E5.A6.A5.E5.BD.93.E6.80.A7.E7.A2.BA.E8.AA.8D_.E3.81.A8_NISCC_.E3.83.86.E3.82.B9.E3.83.88">FIPS 140 妥当性確認 と NISCC テスト</h3> - -<p>NSS ソフトウェア暗号モジュールは、3度に渡り FIPS 140適合試験のセキュリティレベル1と2に合格しています。 詳細については <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/fips/">NSS FIPS</a> ページ (<a class="external" href="http://wiki.mozilla.org/FIPS_Validation">Or this one</a>)を参照してください。</p> - -<p>NSS ライブラリは NISCC の<a class="external" href="http://www.niscc.gov.uk/niscc/docs/re-20030930-00749.pdf?lang=en">TLS/SSL</a> および <a class="external" href="http://www.uniras.gov.uk/niscc/docs/re-20031104-00752.pdf?lang=en">S/MIME</a> のテストスイート(160万の不正入力によるテストケース)を通過しています。</p> - -<h3 id="Complete_Software_Development_Kit" name="Complete_Software_Development_Kit">Complete Software Development Kit</h3> - -<p>ライブラリとAPIに加えて、NSSは、デバッグ、診断、認証および鍵管理、暗号化モジュール管理および他の開発タスクのために必要な<a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/tools/">セキュリティ・ツール</a>を提供します。</p> - -<p>NSSには、大規模で増大する <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/#Documentation">資料</a>が付いています。資料には、入門教材、 API リファレンス、コマンドラインツールの man ページ、および <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/sample-code/">サンプルコード</a>が含まれています。</p> - -<p>NSSは、ソースと共有(ダイナミック)ライブラリが利用できます。すべての NSSリリースには以前のバージョンとの後方互換性があり、NSSユーザはそれらのアプリケーションを再コンパイルまたは再リンクすることなく新しいNSS共有ライブラリにアップグレードすることができます。</p> - -<h3 id=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.A8.E9.85.8D.E5.B8.83" name=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.A8.E9.85.8D.E5.B8.83">オープンソースライセンスと配布</h3> - -<p>NSS は、<a class="external" href="http://www.mozilla.org/MPL/">Mozilla Public License</a>, <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>, <a class="external" href="http://www.gnu.org/copyleft/lesser.html">GNU Lesser General Public License</a>の3種類でライセンスされています。 最新のソースコードは、 <a class="external" href="http://www.mozilla.org" rel="freelink">http://www.mozilla.org</a> とミラーサイトから、世界中で無料で取得できます。</p> - -<p>{{ languages( { "en": "en/Overview_of_NSS" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/pkcs11/index.html b/files/ja/mozilla/projects/nss/pkcs11/index.html deleted file mode 100644 index 8c41add1ee..0000000000 --- a/files/ja/mozilla/projects/nss/pkcs11/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: PKCS11 -slug: Mozilla/Projects/NSS/PKCS11 -tags: - - NSS - - Security -translation_of: Mozilla/Projects/NSS/PKCS11 ---- -<p> -</p><p>暗号化モジュール実装者のための PKCS #11 情報: -</p> -<ul><li> <a href="ja/PKCS11_Implement">Implementing PKCS #11 for NSS</a> -</li><li> <a href="ja/PKCS11_FAQ">PKCS #11 FAQ</a> -</li><li> <a href="ja/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a> -</li><li> <a href="ja/PKCS11_Conformance">PKCS #11 Conformance Testing</a> -</li></ul> -{{ languages( { "en": "en/PKCS11" } ) }} diff --git a/files/ja/mozilla/projects/nss/ssl_functions/index.html b/files/ja/mozilla/projects/nss/ssl_functions/index.html deleted file mode 100644 index 58d409092f..0000000000 --- a/files/ja/mozilla/projects/nss/ssl_functions/index.html +++ /dev/null @@ -1,300 +0,0 @@ ---- -title: SSL 関数 -slug: Mozilla/Projects/NSS/SSL_functions -translation_of: Mozilla/Projects/NSS/SSL_functions ---- -<p>ここで紹介する公開関数は、SSL および TLS プロトコルを使用して通信するためのソケットを設定するために使用します。SSL をサポートするアプリケーションでは、ここに記載されている機能に加えて、このページで後述する証明書機能、暗号機能、ユーティリティ機能の一部を使用しています。</p> - -<p>Other sources of information:</p> - -<ul> - <li>The <a href="https://developer.mozilla.org/en-US/docs/NSS_reference">NSS_reference</a> documents the functions most commonly used by applications to support SSL.</li> - <li>The <a href="https://developer.mozilla.org/en-US/docs/NSS">NSS</a> home page links to additional SSL documentation.</li> -</ul> - -<p>If documentation is available for a function listed below, the function name is linked to either its MDC wiki page or its entry in the <a class="external" href="/en-US/docs/Mozilla/Projects/NSS/SSL_functions/OLD_SSL_Reference">old SSL Reference</a>. The <a class="external" href="https://dxr.mozilla.org/">Mozilla Cross Reference</a> (DXR) link for each function provides access to the function definition, prototype definition, and source code references. The NSS version column indicates which versions of NSS support the function.</p> - -<table class="standard-table"> - <tbody> - <tr> - <th>Function name/documentation</th> - <th>Source code</th> - <th>NSS versions</th> - </tr> - <tr> - <td><a class="external" href="/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslfnc.html#1106762"><code>NSS_GetClientAuthData</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_GetClientAuthData">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1228530"><code>NSS_SetDomesticPolicy</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetDomesticPolicy">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1100285"><code>NSS_SetExportPolicy</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetExportPolicy">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>NSS_SetFrancePolicy</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetFrancePolicy">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>NSSSSL_VersionCheck</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSSSSL_VersionCheck">MXR</a></td> - <td>3.2.1 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088888"><code>SSL_AuthCertificate</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_AuthCertificate">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088805"><code>SSL_AuthCertificateHook</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_AuthCertificateHook">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088928"><code>SSL_BadCertHook</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_BadCertHook">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_CertDBHandleSet</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CertDBHandleSet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_Canbypass</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_Canbypass">MXR</a></td> - <td>3.11.7 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1210463"><code>SSL_CipherPolicyGet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPolicyGet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1104647"><code>SSL_CipherPolicySet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPolicySet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1214800"><code>SSL_CipherPrefGet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefGet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1208119"><code>SSL_CipherPrefGetDefault</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefGetDefault">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1214758"><code>SSL_CipherPrefSet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefSet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1084747"><code>SSL_CipherPrefSetDefault</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefSetDefault">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1138601"><code>SSL_ClearSessionCache</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ClearSessionCache">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1142625"><code>SSL_ConfigMPServerSIDCache</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigMPServerSIDCache">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1217647"><code>SSL_ConfigSecureServer</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigSecureServer">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1143851"><code>SSL_ConfigServerSessionIDCache</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigServerSessionIDCache">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1142625"><code>SSL_DataPending</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_DataPending">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1133431"><code>SSL_ForceHandshake</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ForceHandshake">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_ForceHandshakeWithTimeout</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ForceHandshakeWithTimeout">MXR</a></td> - <td>3.11.4 and later</td> - </tr> - <tr> - <td><code>SSL_GetChannelInfo</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetChannelInfo">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><code>SSL_GetCipherSuiteInfo</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetCipherSuiteInfo">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1126622"><code>SSL_GetClientAuthDataHook</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetClientAuthDataHook">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_GetMaxServerCacheLocks</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetMaxServerCacheLocks">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1092869"><code>SSL_GetSessionID</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetSessionID">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_GetStatistics</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetStatistics">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1112702"><code>SSL_HandshakeCallback</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_HandshakeCallback">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1085950"><code>SSL_ImportFD</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ImportFD">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1162055"><code>SSL_InheritMPServerSIDCache</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_InheritMPServerSIDCache">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1089420"><code>SSL_InvalidateSession</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_InvalidateSession">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_LocalCertificate</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_LocalCertificate">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1194921"><code>SSL_OptionGet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionGet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1204897"><code>SSL_OptionGetDefault</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionGetDefault">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1086543"><code>SSL_OptionSet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionSet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1068466"><code>SSL_OptionSetDefault</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionSetDefault">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1096168"><code>SSL_PeerCertificate</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PeerCertificate">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_PreencryptedFileToStream</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PreencryptedFileToStream">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_PreencryptedStreamToFile</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PreencryptedStreamToFile">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1232052"><code>SSL_ReHandshake</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ReHandshake">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_ReHandshakeWithTimeout</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ReHandshakeWithTimeout">MXR</a></td> - <td>3.11.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1058001"><code>SSL_ResetHandshake</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ResetHandshake">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_RestartHandshakeAfterCertReq</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RestartHandshakeAfterCertReq">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_RestartHandshakeAfterServerCert</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RestartHandshakeAfterServerCert">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_RevealCert</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealCert">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1123385"><code>SSL_RevealPinArg</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealPinArg">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1081175"><code>SSL_RevealURL</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealURL">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1092805"><code>SSL_SecurityStatus</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SecurityStatus">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_SetMaxServerCacheLocks</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetMaxServerCacheLocks">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088040"><code>SSL_SetPKCS11PinArg</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetPKCS11PinArg">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1124562"><code>SSL_SetSockPeerID</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetSockPeerID">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1087792"><code>SSL_SetURL</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetURL">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_ShutdownServerSessionIDCache</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ShutdownServerSessionIDCache">MXR</a></td> - <td>3.7.4 and later</td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/projects/nss/tools/index.html b/files/ja/mozilla/projects/nss/tools/index.html deleted file mode 100644 index 427ba92a75..0000000000 --- a/files/ja/mozilla/projects/nss/tools/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: NSS ツール -slug: Mozilla/Projects/NSS/tools -translation_of: Mozilla/Projects/NSS/tools ---- -<h2 id="NSS_セキュリティツール">NSS セキュリティツール</h2> - -<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> - -<h3 id="Overview">Overview</h3> - -<p>The NSS Security Tools allow developers to test, debug, and manage applications that use NSS. The <a href="#Tools">Tools Information</a> table below describes both the tools that are currently working and those that are still under development. The links for each tool take you to the source code, documentation, plans, and related links for each tool. The links will become active when information is available.</p> - -<p>Currently, you must download the NSS 3.1 source and build it to create binary files for the NSS tools. For information about downloading the NSS source, see <a href="https://developer.mozilla.org/NSS/Building">https://developer.mozilla.org/NSS/Building</a>.</p> - -<p>If you have feedback or questions, please feel free to post to <a href="news://news.mozilla.org/mozilla.dev.tech.crypto"> mozilla.dev.tech.crypto</a>. This newsgroup is the preferred forum for all questions about NSS and NSS tools.</p> - -<h3 id="Overall_Objectives">Overall Objectives</h3> - -<ol> - <li>Provide a tool for analyzing and repairing certificate databases (<a href="#dbck">dbck</a>).</li> - <li>Migrate tools from secutil.h interface to PKCS #11 interface.</li> - <li>Eliminate redundant functionality in tools. Many tools implement private versions of PKCS11Init(), OpenCertDB(), etc.</li> - <li>Eliminate use of getopt() and replace with NSPR calls to get command options (to eliminate platform dependencies with getopt()).</li> -</ol> - -<h3 id="Tools_Information"><a name="Tools">Tools Information</a></h3> - -<table style="width: 90%;"> - <tbody> - <tr> - <th><strong>Tool</strong></th> - <th><strong>Description</strong></th> - <th><strong>Links</strong></th> - </tr> - <tr> - <td><a name="certutil">certutil 2.0</a></td> - <td>Manage certificate and key databases (cert7.db and key3.db).</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/certutil/">Source</a>, <a href="tools/NSS_Tools_certutil">Documentation</a>, <a href="tools/NSS_Tools_certutil-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - <td><a name="cmsutil">cmsutil 1.0</a></td> - <td>Performs basic CMS operations such as encrypting, decrypting, and signing messages.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/smimetools/">Source</a>, <a href="tools/NSS_Tools_cmsutil">Documentation</a> </font></td> - </tr> - <tr> - <td><a name="crlutil">crlutil</a></td> - <td>Manage certificate revocation lists (CRLs).</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/crlutil/">Source</a>, <a href="tools/NSS_Tools_crlutil">Documentation</a>, </font></td> - </tr> - <tr> - <td><a name="dbck">dbck 1.0</a></td> - <td>Analyze and repair certificate databases (not working in NSS 3.2)</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/dbck/">Source</a>, <a href="tools/NSS_Tools_dbck-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - <td><a name="modutil">modutil 1.1</a></td> - <td>Manage the database of PKCS11 modules (secmod.db). Add modules and modify the properties of existing modules (such as whether a module is the default provider of some crypto service).</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/modutil/">Source</a>, <a href="tools/NSS_Tools_modutil">Documentation</a>, <a href="tools/NSS_Tools_modutil-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - <td><a name="pk12util">pk12util 1.0</a></td> - <td>Import and export keys and certificates between the cert/key databases and files in PKCS12 format.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/pk12util/">Source</a>, <a href="tools/NSS_Tools_pk12util">Documentation</a>, <a href="tools/NSS_Tools_pk12util-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - <td><a name="signtool">signtool 1.3</a></td> - <td>Create digitally-signed jar archives containing files and/or code.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/signtool/">Source</a>, <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/SecurityToolsSummary.html#jarsigner"> Documentation</a>, </font></td> - </tr> - <tr> - <td><a name="signver">signver 1.1</a></td> - <td>Verify signatures on digitally-signed objects.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/signver/">Source</a>, <a href="https://docs.oracle.com/javase/tutorial/deployment/jar/verify.html"> Documentation</a>, <a href="tools/NSS_Tools_signver-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - </tr> - <tr> - <td><a name="sslstrength">sslstrength</a></td> - <td>SSL Strength</td> - <td><font size="-1"><a href="tools/NSS_Tools_sslstrength">Documentation</a> </font></td> - </tr> - <tr> - <td><a name="ssltap">ssltap 3.2</a></td> - <td>Proxy requests for an SSL server and display the contents of the messages exchanged between the client and server. The ssltap tool does not decrypt data, but it shows things like the type of SSL message (clientHello, serverHello, etc) and connection data (protocol version, cipher suite, etc). This tool is very useful for debugging.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/ssltap/">Source</a>, <a href="tools/NSS_Tools_ssltap">Documentation</a> </font></td> - </tr> - </tbody> -</table> - -<ol> - <li><font size="-1"><a name="note1"></a> Currently points to the Netscape Certificate Management System Administration Guide on docs.sun.com. For additional information about this tool, see <a href="http://developer.netscape.com/docs/manuals/security.html#OBJ">Object Signing</a>. </font></li> - <li><font size="-1"><a name="note2"></a> Currently points to the signver documentation on developer.netscape.com. For additional information about this tool, see <a href="http://developer.netscape.com/docs/manuals/security.html#FORM">Form Signing</a> </font></li> -</ol> diff --git a/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html b/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html deleted file mode 100644 index dd5a4146c2..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: SpiderMonkey のビルド -slug: Mozilla/Projects/SpiderMonkey/Build_Documentation -tags: - - Build documentation - - Guide - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Build_Documentation ---- -<div>{{SpiderMonkeySidebar("General")}}</div> - -<h2 id="SpiderMonkey_のビルド">SpiderMonkey のビルド</h2> - -<p>この文書は SpiderMonkey の最新版をソースコードからビルドする方法を解説します。</p> - -<p><strong>ビルドを始める前に、必要なツールがインストールされていることを確認してください</strong>。<a href="/En/Developer_Guide/Build_Instructions/Linux_Prerequisites" title="en/Linux_Build_Prerequisites">Linux</a>, <a href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites" title="en/Windows_Build_Prerequisites">Windows</a>, <a href="/En/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites" title="en/Mac_OS_X_Build_Prerequisites">Mac</a>, <a href="/En/Developer_Guide/Build_Instructions" title="en/Build_Documentation">その他の環境</a> での準備は、それぞれのドキュメントをごらんください。28 より古いバージョンのビルドをする際は、<a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a> が追加で必要となります。</p> - -<p style="margin: 0px 0px 1.7em; padding: 0px;">また <a class="internal" href="/En/SpiderMonkey/Getting_SpiderMonkey_source_code#Getting_the_latest_SpiderMonkey_source_code" title="En/SpiderMonkey/Getting SpiderMonkey source code#Getting the latest SpiderMonkey source code">SpiderMonkey 最新版のソースコード</a> も必要です。</p> - -<h3 id="非開発者向け_(最適化)_ビルド">非開発者向け (最適化) ビルド</h3> - -<p>実運用用のために SpiderMonkey をインストールする場合、またはパフォーマンスベンチマークを実行する場合は、これらの手順を使用してください (SpiderMonkey を C++ アプリケーションのライブラリとして使用したい場合、または SpiderMonkey 自体の改善に取り組んでいる場合は、代わりに下記のように開発者/デバッグビルドを行ってください)。</p> - -<pre class="eval line-numbers language-html">cd js/src -autoconf2.13 - -# この名前は、バージョン管理システムで無視させるために "_OPT.OBJ" で終わる必要があります。 -mkdir build_OPT.OBJ -cd build_OPT.OBJ -../configure -# Windows では "mozmake" を使います。 -make -</pre> - -<p>これについてのいくつかのメモ:</p> - -<ul> - <li> - <p>最も一般的なビルドの問題は依存関係の問題です。<a href="/ja/docs/Mozilla/Developer_Guide/Build_Documentation#Getting_started">プラットフォーム用のビルド前提条件ページ</a>を見てください。</p> - </li> - <li> - <p>SpiderMonkey はソースディレクトリでの構築をサポートしていません。上記のように、別のビルドディレクトリに設定してビルドする必要があります。</p> - </li> - <li> - <p>はい、autoconf バージョン 2.13 が本当に必要です。 それ以降のバージョンは動作しません (ただし、システムの autoconf としてインストールしないでください。これも機能しません。そのバージョンは非常に古いため、お勧めできません)。</p> - </li> -</ul> - -<div class="note"> -<p><strong>メモ</strong>: Mac を使用していて、次のようなエラーが表示される場合</p> - -<p>"<code>checking whether the C compiler (gcc-4.2 ) works... no<br> - configure: error: installation or configuration problem: C compiler cannot create executables.</code>"</p> - -<p>次のように設定してみてください。</p> - -<pre><code>CC=clang CXX=clang++ ../configure</code></pre> - -<p>baldrdash がコンパイルに失敗する可能性もあります。</p> - -<pre class="line-numbers language-html"><code class="language-html">/usr/local/Cellar/llvm/7.0.1/lib/clang/7.0.1/include/inttypes.h:30:15: fatal error: 'inttypes.h' file not found - -/usr/local/Cellar/llvm/7.0.1/lib/clang/7.0.1/include/inttypes.h:30:15: fatal error: 'inttypes.h' file not found, err: true</code></pre> - -<p>これは Mohave 以降、ヘッダーが /usr/include にインストールされなくなったためです。コマンドラインツール -> 新機能の下の<a href="https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes">リリースノート</a>を参照してください。</p> - -<p>リリースノートには、この互換性パッケージは近い将来提供されなくなると記載されているので、macOS 上のビルドシステムは SDK のヘッダを探すように適合させる必要があるでしょう。<br> - <br> - それまでは、次のことが役に立ちます。</p> - -<pre><code>open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pk -</code></pre> -</div> - -<p>これにより <code>build-release/dist/bin</code> ディレクトリに <code>js</code> という実行可能ファイルが構築されます。ヘルプページを表示する <code>dist/bin/js --help</code> でテストできます。これで、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">シェルを実行して試す</a>準備が整いました。</p> - -<p>Mac、Linux、または UNIX では、追加のコマンド <code>make install</code> を使用してシステムに SpiderMonkey をインストールできます。これは共有ライブラリを <code>/usr/local/lib</code> に、C ヘッダファイルを <code>usr/local/include</code> に、そして <code>js</code> 実行ファイルを <code>/usr/local/bin</code> にインストールします。</p> - -<h3 id="開発者向け(デバッグ用)ビルド">開発者向け(デバッグ用)ビルド</h3> - -<p>SpiderMonkey 自身の開発やデバッグを目的とする場合、日々のデバッグにはデバッグビルドを、パフォーマンステストには最適化ビルドを、それぞれ別のディレクトリで行うことになります。デバッグビルドを行うには、上記の手順に加えて以下の 3 ステップを行います:</p> - -<pre class="eval">cd js/src -autoconf-2.13 - -# This name should end with "_DBG.OBJ" to make the version control system ignore it. -mkdir build_DBG.OBJ -cd build_DBG.OBJ -../configure --enable-debug --disable-optimize -# Use "mozmake" on Windows -make -</pre> - -<p><code>JS_GC_ZEAL</code> オプションをつけてビルドすると、zealous ガベージコレクションが有効になります。これはメモリリークに代表されるメモリ関連のデバッグを行う時に有用です。詳細は <a class="internal" href="/SpiderMonkey/JSAPI_Reference/JS_SetGCZeal" title="En/SpiderMonkey/JSAPI Reference/JS SetGCZeal"><code>JS_SetGCZeal()</code></a> をご覧ください。</p> - -<p>この他のビルドオプションについては、上記で作成したビルドディレクトリ内で次のコマンドを実行してください:</p> - -<pre class="eval">../configure --help -</pre> - -<h4 id="コンパイルデータベースの生成">コンパイルデータベースの生成</h4> - -<p>一部のツール (IDE、静的アナライザー、リファクタリングツールなど) は、ソフトウェアを構築するために必要なすべての要素の説明を含む <code><a href="https://clang.llvm.org/docs/JSONCompilationDatabase.html">compile_commands.json</a></code> というファイルを使用するため、ツールは構築システムも理解する必要はありません。</p> - -<p>SpiderMonkey 設定スクリプトを使用して <code>compile_commands.json</code> を生成するには、次のように CompileDB バックエンドを有効にします。</p> - -<pre class="syntaxbox"> ../configure <options> --enable-build-backends=CompileDB,RecursiveMake -</pre> - -<p>(RecursiveMake はあなたもビルドできるようになりたいと思うのでそこにあります!)</p> - -<h3 id="Building" name="Building">Windows でのビルド</h3> - -<div class="note"> -<p>バージョン 28 以降、<strong>スレッドセーフビルドがデフォルト</strong>となり、すべての POSIX プラットフォームでそのまま使用できるはずです。したがって、次の手順は Windows を使用している場合、または古いバージョンの SpiderMonkey をコンパイルしている場合にのみ関係があります。</p> -</div> - -<p>The <a href="https://wiki.mozilla.org/MozillaBuild">MozillaBuild</a> batch file you used to open your shell (e.g. <code>start-shell-msvc2013.bat</code> or <code>start-shell-msvc2013-x64.bat</code>) determines whether the compiler toolchain will target 32-bit or 64-bit builds. To create a 64-bit build, note that you must configure with <code>--target=x86_64-pc-mingw32 --host=x86_64-pc-mingw32</code>.</p> - -<p>Since the POSIX NSPR emulation is not available for Windows, a working version of NSPR must be available to your build. <strong>The easiest option is to configure with <code>--enable-nspr-build.</code></strong><code> </code>This configure option builds the in-tree version of NSPR which is probably what you want; <span style="line-height: normal;"><span style="line-height: normal;">because SpiderMonkey uses newer NSPR symbols, the NSPR that ships with your operating system probably does not work.</span></span></p> - -<p>If <code>--enable-nspr-build</code> does not work, explicitly tell <code>configure</code> where to find NSPR using the <code>--with-nspr-cflags</code> and <code>--with-nspr-libs</code> configure options. For example, assuming your local NSPR has been installed to <code>C:/mozilla-build/msys/local</code>:</p> - -<pre><span style="line-height: normal;"><code><span style="line-height: normal;"><code><code>./configure<code> --with-nspr-cflags="-IC:/mozilla-build/msys/local/include" \ - --with-nspr-libs="<span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libnspr4.a \ - <span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libplds4.a \ - <span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libplc4.a"</code> -</code></code></span></code></span></pre> - -<p>If you get symbol loading or dynamic library errors, you can force the correct NSPR to load with:</p> - -<pre class="line-numbers language-html"><code class="language-html">PATH="$PATH;C:/mozilla-build/msys/local/lib/" ./js</code></pre> - -<h2 id="Specifying_installation_directories">Specifying installation directories</h2> - -<p><code>make install</code> puts files in the following directories by default. You can override this by passing options to the <code>configure</code> script:</p> - -<table class="standard-table"> - <tbody> - <tr> - <th>What it is</th> - <th>Where it gets put</th> - <th><code>configure</code> option</th> - </tr> - <tr> - <td>executables, shell scripts</td> - <td><code>/usr/local/bin</code></td> - <td><code>--bindir</code></td> - </tr> - <tr> - <td>libraries, data</td> - <td><code>/usr/local/lib</code></td> - <td><code>--libdir</code></td> - </tr> - <tr> - <td>architecture-independent data</td> - <td><code>/usr/local/share</code></td> - <td><code>--sharedir</code></td> - </tr> - <tr> - <td>C header files</td> - <td><code>/usr/local/include</code></td> - <td><code>--includedir</code></td> - </tr> - </tbody> -</table> - -<p>For convenience, you can pass the <code>configure</code> script an option of the form <code>--prefix=<PREFIXDIR></code>, which substitutes <code><PREFIXDIR></code> for <code>/usr/local</code> in all the settings above, in one step. This is usually the least troublesome thing to do, as it preserves the typical arrangement of <code>lib</code>, <code>bin</code>, and the rest.</p> - -<div class="note"><strong>Note:</strong> All directories you pass to <code>configure</code> are recorded in the generated makefile, so you don't need to specify them again until you re-run <code>configure</code>.</div> - -<h2 id="Building_SpiderMonkey_as_a_static_library">Building SpiderMonkey as a static library</h2> - -<p>By default, SpiderMonkey builds as a shared library. However, you can build SpiderMonkey as a static library by specifying the <code>--disable-shared-js</code> flag when you run <code>configure</code>.</p> - -<h2 id="Specifying_compilers_and_compiler_flags">Specifying compilers and compiler flags</h2> - -<p>If you want to use a compiler other than the one the <code>configure</code> script chooses for you by default, you can set the <code>CXX</code> variable in the environment when you run <code>configure</code>. This will save the values you specify in the generated makefile, so once you've set it, you don't need to do so again until you re-run <code>configure</code>.</p> - -<p>If you'd like to pass certain flags to the compiler, you can set the <code>CXXFLAGS</code> environment variable when you run <code>configure</code>. For example, if you're using the GNU toolchain, the following will pass the <code>-g3</code> flag to the compiler, causing it to emit debug information about macros. Then you can use those macros in <code>gdb</code> commands:</p> - -<pre class="eval line-numbers language-html"><code class="language-html">$ CXXFLAGS=-g3 $SRC/configure -... -checking whether the C++ compiler (c++ -g3 ) works... yes -... -$</code></pre> - -<h2 id="Cross-compiling_options">Cross-compiling options</h2> - -<p>For cross-compiling you will need a cross-compiling compiler. That tends to be easier with clang as clang has cross-compiling support built in. You may need other libraries though. For example on debian linux you'll need the following to cross compile from x86_64 to x86.</p> - -<pre class="syntaxbox">apt install clang libstdc++-8-dev-i386-cross binutils-i686-gnu zlib1g-dev:i386</pre> - -<p>You'll also need rust, in addition to having normal rust set up you'll need to add another target to your existing rust toolchain (don't add a new toolchain spidermonkey will use only one toolchain and use it for both host and target code:</p> - -<pre class="syntaxbox">rustup target add i686-unknown-linux-gnu</pre> - -<p>To build a 32-bit version on a 64-bit Linux system, you can use the following:</p> - -<pre class="eval line-numbers language-html"><code class="language-html">PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig CC="gcc -m32 -mfpmath=sse -msse -msse2" CXX="g++ -m32 -mfpmath=sse -msse -msse2" AR=ar \ -$SRC/configure --target=i686-pc-linux</code></pre> - -<p>Or for clang.</p> - -<pre class="syntaxbox">$SRC/configure --target=i686-pc-linux-gnu</pre> - -<p>To build a 32-bit arm version on a 64-bit Linux system, that runs in the arm simulator, you can use the following:</p> - -<pre class="line-numbers language-html"><code class="language-html"> AR=ar CC="gcc -m32 -mfpmath=sse -msse -msse2" CXX="g++ -m32 -mfpmath=sse -msse -msse2" \ - $SRC/configure --target=i686-pc-linux --enable-simulator=arm</code></pre> - -<p>To build a 32-bit version on a 64-bit Mac system (the target version is specific to your OS/X SDK), you can use the following:</p> - -<pre class="syntaxbox">$SRC/configure --target=i386-apple-darwin16.7.0 # Choose the appropriate SDK version for your version of OS/X</pre> - -<p>To build a 64-bit version on a 32-bit Mac system (e.g. Mac OS X 10.5), you can use the following:</p> - -<pre class="eval line-numbers language-html"><code class="language-html">AR=ar CC="gcc -m64" CXX="g++ -m64" ../configure --target=x86_64-apple-darwin10.0.0</code></pre> - -<p>To build a 64-bit Windows version, you can use the following:</p> - -<pre class="eval line-numbers language-html"><code class="language-html">$SRC/configure --host=x86_64-pc-mingw32 --target=x86_64-pc-mingw32</code></pre> - -<div class="note"><strong>Note:</strong> You must have started your MozillaBuild shell with the proper -x64.bat script in order for the 64-bit compilers to be in your PATH.</div> - -<p>Whatever compiler and flags you pass to <code>configure</code> are recorded in the generated makefile, so you don't need to specify them again until you re-run <code>configure</code>.</p> - -<h2 id="Building_your_application">Building your application</h2> - -<p>While "How to build your complete application" is clearly out of scope for this document, here are some tips that will help get you on your way:</p> - -<ul> - <li>The SpiderMonkey developers frequently and deliberately change the JSAPI ABI. You cannot use headers built for one version/configuration of JSAPI to create object files which will be linked against another.</li> - <li>Support for JS_THREADSAFE was recently removed, and threadsafe builds are now enabled by default.</li> - <li>The <code>js-config</code> script, described below, is the recommended way to determine correct include paths, required libraries, etc. for your embedding to use during compilation. We highly recommend calling the <code>js-config</code> script from your embedding's makefile to set your CFLAGS, LDFLAGS, and so forth.</li> - <li>To install SpiderMonkey somewhere other than the default, you must use the <code>configure</code> <code>--prefix</code> option, as described above. Failure to do so may break your <code>js-config.h</code> header or <code>js-config</code> script.</li> - <li>Some features detected by the <code>configure</code> script do not work for cross-compilation.</li> -</ul> - -<h3 id="Using_the_js-config_script">Using the js-config script</h3> - -<p>In addition to the SpiderMonkey libraries, header files, and shell, the SpiderMonkey build also produces a shell script named <code>js-config</code> which other build systems can use to find out how to compile code using the SpiderMonkey APIs, and how to link with the SpiderMonkey libraries.</p> - -<div class="note"><strong>Note:</strong> In SpiderMonkey 1.8.5, the js-config script is not generated properly on many platforms. If the instructions below do not work, you can try this <a href="https://developer.mozilla.org/en/SpiderMonkey/1.8.5#js-config" title="https://developer.mozilla.org/en/SpiderMonkey/1.8.5#js-config">workaround</a>.</div> - -<p>When invoked with the <code>--cflags</code> option, <code>js-config</code> prints the flags that you should pass to the C compiler when compiling files that use the SpiderMonkey API. These flags ensure the compiler will find the SpiderMonkey header files.</p> - -<pre class="eval line-numbers language-html"><code class="language-html">$ ./js-config --cflags # Example output: -I/usr/local/include/js -I/usr/include/nspr</code></pre> - -<p>When invoked with the <code>--libs</code> option, <code>js-config</code> prints the flags that you should pass to the C compiler when linking an executable or shared library that uses SpiderMonkey. These flags ensure the compiler will find the SpiderMonkey libraries, along with any libraries that SpiderMonkey itself depends upon (like NSPR).</p> - -<pre class="eval line-numbers language-html"><code class="language-html">$ ./js-config --libs # Example output: -L/usr/local/lib -lmozjs -L/usr/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -ldl -lm -lm -ldl</code></pre> - -<h2 id="Test" name="Test">Testing SpiderMonkey</h2> - -<ul> - <li> - <p>Run <code>${BUILDDIR}/dist/bin/js </code><code>Y.js</code> and check if appropriate output is printed. (It should say: <code>5! is 120</code>.)</p> - </li> - <li> - <p>Run the main test suite by running <code>./tests/jstests.py ${BUILDDIR}/dist/bin/js</code></p> - </li> - <li> - <p>Run JIT-specific tests by running: <code>./jit-test/jit_test.py ${BUILDDIR}/dist/bin/js</code></p> - </li> -</ul> - -<h2 id="Building_SpiderMonkey_1.8_or_earlier">Building SpiderMonkey 1.8 or earlier</h2> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">Use these instructions to build SpiderMonkey from an official source release or from the old CVS repository. To build the latest SpiderMonkey sources from Mercurial, see <a href="https://developer.mozilla.org/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation$edit#Building_SpiderMonkey_tip" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;">Building SpiderMonkey </a>above.</p> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"><a href="https://developer.mozilla.org/en/SpiderMonkey" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/SpiderMonkey">SpiderMonkey</a> is easy to build from source if you have the usual Mozilla build prerequisites installed. Before you begin, make sure you have right build tools for your computer: <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Linux_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Linux_Build_Prerequisites">Linux</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Windows_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Windows_Build_Prerequisites">Windows</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Mac_OS_X_Build_Prerequisites">Mac</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Build_Documentation">others</a>.</p> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">First, download a SpiderMonkey source distribution, such as <a class="external external-icon" href="http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;">SpiderMonkey 1.8 Release Candidate 1</a>.</p> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build, use these commands:</p> - -<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">tar xvzf js-1.8.0-rc1.tar.gz -cd js/src -make -f Makefile.ref</code></pre> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">This builds a debug version of SpiderMonkey. All build files are created in a subdirectory named depending on your system (for example,<code style="font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace; color: inherit; font-weight: inherit;">Linux_All_DBG.OBJ</code> if you are on Linux). To install this build on your system, see <a class="external external-icon" href="http://ebixio.com/blog/2010/07/31/how-to-install-libjs-spidermonkey/" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="http://ebixio.com/blog/2010/07/31/how-to-install-libjs-spidermonkey/">SpiderMonkey installation instructions</a>.</p> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build an optimized (non-debug) version of SpiderMonkey:</p> - -<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">make BUILD_OPT=1 -f Makefile.ref</code></pre> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build a <a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="JS_THREADSAFE">thread-safe</a> version of SpiderMonkey:</p> - -<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">make JS_DIST=/full/path/to/directory/containing/nspr JS_THREADSAFE=1 -f Makefile.ref</code></pre> diff --git a/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html b/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html deleted file mode 100644 index a9ddaeee75..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: バイトコード -slug: Mozilla/Projects/SpiderMonkey/Bytecodes -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Internals/Bytecodes ---- -<div>{{SpiderMonkeySidebar("Internals")}}</div> - -<h2 id="バックグラウンド">バックグラウンド</h2> - -<p>SpiderMonkey バイトコードは、JavaScript エンジンで使用される標準形式のコード表現です。JavaScript フロントエンドは、ソーステキストから AST を構築してから、その AST から JSScript データ構造の一部としてスタックベースのバイトコードを生成します。バイトコードは、JSScript データ構造にも含まれているアトムとオブジェクトを (通常は配列インデックスで) 参照できます。</p> - -<p>エンジン内では、すべてのバイトコードはスタックフレーム内で実行されます。グローバル (最上位) コードでも eval コードでもスタックフレームが関連付けられています。スタック上のフレームには、いくつかの異なるカテゴリの JavaScript 値 (タグ付き値形式) 用のスペースがあります。単一の JavaScript 値のスペースは「スロット」と呼ばれ、カテゴリは次のとおりです。</p> - -<ul> - <li>引数スロット: 現在のフレームに渡される実際の引数を保持します</li> - <li>ローカルスロット: 現在のコードで使用されているローカル変数を保持します</li> - <li>式スロット: スタック上で式を計算するために必要な一時スペースを保持します。たとえば、<code>(a + b) + c</code> では、a をプッシュしてから b をプッシュして add をプッシュし、さらに c をプッシュから add のようにします。これには、最大2つの式スロットの深さが必要です</li> -</ul> - -<p><code>this</code> のような値と呼び出し先/戻り値を保持する、専用の機能のために予約されているいくつかのスロットもあります。</p> - -<p>式スタックにプッシュされた最新の値に対応する "Top of Stack" (TOS) が常にあります。すべてのバイトコードは、この場所に関して暗黙的に機能します。</p> - -<h2 id="バイトコードリスト">バイトコードリスト</h2> - -<p>すべてのオペコードには、実行全体のスタック効果を表すために [-popcount, +pushcount] という注釈が付けられています。</p> - -<p>バイトコードのリストは <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode">SpiderMonkey の内部: バイトコードの説明ページ</a>に移動しました。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html b/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html deleted file mode 100644 index 5a438b7932..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: JavaScript jstest reftests を作成する -slug: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_jstest_reftests -tags: - - Junk - - NeedsUpdate -translation_of: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_jstest_reftests ---- -<p>このページにはすぐにコンテンツが表示されます。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html b/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html deleted file mode 100644 index d093c38e42..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: JavaScript のテストを作成する -slug: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests -translation_of: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests ---- -<div>{{SpiderMonkeySidebar("Tests")}}</div> - -<div class="summary"> -<p>主に 2 つの SpiderMonkey テストスイート: <strong>jstests</strong> (in js/src/tests) と <strong>jit-tests</strong> (in js/src/jit-test) があります。詳細については、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">自動 JavaScript テストの実行</a>を参照してください。</p> -</div> - -<p>新しいテストはどのテストスイートに属しますか?</p> - -<ol> - <li><strong>jit-tests</strong> は JIT の実装をテストすることを目的としています。正当性や機能性をテストするテストのみをこれらのスイートに追加してください。</li> - <li><strong>jstests</strong> is intended for tests of language-visible functionality. Please put tests of functionality into jstests even if related tests are in jit-tests, since jstests are closer to (and more easily converted to) <a href="https://github.com/tc39/test262/blob/master/README.md">test262</a> tests. (In fact, the test262 test suite is run as part of jstests.)</li> -</ol> - -<p>Practical differences between the two test suites:</p> - -<ol> -</ol> - -<p><strong>jstest</strong></p> - -<ol> - <li><strong>New jstest files </strong>should be put the code in the appropriate subdirectory of js/src/tests/non262/, or, under some scenarios, contributed directly to the <a href="https://github.com/tc39/test262/blob/master/README.md">test262 repository</a>.</li> - <li>jstests run in both the shell and the browser (although you can specify that the test should be run in only one of the two locations).</li> - <li>jstests automatically load js/src/tests/shell.js before they run, which creates a ton of functions.</li> - <li>Read more advice on jstests <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests/jsreftests">here</a>.</li> -</ol> - -<p><strong>jit-test</strong></p> - -<ol> - <li><strong>New jit-test files </strong>should be put in js/src/jit-test/tests/basic or one of the other appropriate subdirectories of jit-test/tests. </li> - <li>jit-tests run only in the shell.</li> - <li>jit-tests do not load extra test functionality automatically.</li> -</ol> - -<h2 id="Creating_the_test_case_file" name="Creating_the_test_case_file">新しいテストファイルを書く</h2> - -<p>Have a look at the existing files and follow what they do. All tests, in both suite, can use the <em>assertEq</em> function.</p> - -<p><strong>assertEq(v1, v2[, message])</strong></p> - -<p style="margin-left: 40px;">Check that v1 and v2 are the same value. If they're not, throw an exception (which will cause the test to fail).</p> - -<p>If you are writing a jstests, additional testing functionality is provided for you in shell.js files. You can read about them <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">here</a>.</p> - -<h3 id="Performance_testing" name="Performance_testing">Performance testing and general advice</h3> - -<p><strong>Do not</strong> attempt to test the performance of engine features in the test suite. </p> - -<p>Please keep in mind that the JavaScript test suite is run on a wide variety of wildly varying hardware plaforms, from phones all the way up to servers. Even tests that check for polynomial time complexity will start to fail in a few years when they have sped up enough to run faster than the granularity of the OS scheduler or when run on platforms with higher latencies than your development workstation. These tests will also show up as infrequent oranges on our heavily loaded test machines, lowering the value of our test suite for everyone. Just don't do it, it's never worth it.</p> - -<p><strong>Do not</strong> add performance tests to the test suite.</p> - -<p>It is not generally even possible to tell if the speed of any particular feature is going to be important in the real world without running a real-world benchmark. It is <em>very</em> hard to write a good real-world benchmark. For this reason, the best place to find out if a change is performance sensitive is on arewefastyet.com.</p> - -<p><strong>Focus on writing fast, light tests that cover a single feature. There is basically no cost to adding a new test, so add as many feature tests as needed to cover each feature orthogonally. Remember that whenever a test fails, someone -- probably you -- is going to have to figure out what went wrong.</strong></p> - -<h3 id="Testing_your_test">Testing your test</h3> - -<p>Run your new test locally before checking it in (or posting it for review). Nobody likes patches that include failing tests!</p> - -<p>See<a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests"> Running Automated Javascript Tests</a> for instructions on how to run jstests or jit-tests.</p> - -<p>It's also a good sanity check to run each new test against an unpatched shell or browser. The test should fail if it's working properly.</p> - -<h3 id="Checking_in_completed_tests" name="Checking_in_completed_tests">Checking in completed tests</h3> - -<p>Tests are usually reviewed and pushed just like any other code change. Just include the test in your patch.</p> - -<p><strong>Security-sensitive tests should <strong>not</strong> be committed</strong> until the corresponding bug has been made public. Instead, ask a SpiderMonkey peer how to proceed.</p> - -<p>It is OK under certain circumstances to push new tests to certain repositories without a code review. Don't do this unless you know what you're doing. Ask a SpiderMonkey peer for details.</p> diff --git a/files/ja/mozilla/projects/spidermonkey/foss/index.html b/files/ja/mozilla/projects/spidermonkey/foss/index.html deleted file mode 100644 index 70ad9afcb6..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/foss/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: FOSS -slug: Mozilla/Projects/SpiderMonkey/FOSS -tags: - - Guide - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/FOSS ---- -<div>{{SpiderMonkeySidebar}}</div> - -<p>自身の SpiderMonkey ベースのオープンソースプロジェクトを追加してください (必要ならばカテゴリを追加してください) !</p> - -<h2 id="ラッパーバインディング">ラッパー/バインディング</h2> - -<h3 id="C">C++</h3> - -<ul> - <li><a href="https://github.com/cocos2d/cocos2d-js">Cocos2d-JS</a> - Cocos2d-JS は SpiderMonkey を組み込んだクロスプラットフォームのゲームエンジンで、Web とネイティブプラットフォームの両方に同じ API を提供します。<a href="http://www.cocos2d-x.org/wiki/Getting_Started_Cocos2d-js">Getting started here</a>.</li> - <li><a class="external" href="http://flusspferd.org/" title="http://flusspferd.org/">Flusspferd</a> - (新しい) C++ バインディング</li> - <li><a href="http://code.google.com/p/libjspp/" title="http://code.google.com/p/libjspp/">libjspp</a> - SpiderMonkey を拡張して埋め込むための C++ テンプレートベースのライブラリ。SpiderMonkey 1.8.5 以降で動作します。</li> - <li style="text-align: left;"><a class="external" href="http://spiderape.sourceforge.net/" title="http://spiderape.sourceforge.net/">Spiderape</a> - SpiderMonkey の最も古い C++ バインディング</li> - <li><a class="external text" href="http://www.trixul.com/" rel="nofollow" title="http://www.trixul.com/">TriXUL</a> - <a class="external text" href="http://trixul.cvs.sourceforge.net/trixul/trixul/layout/jsengine" rel="nofollow" title="http://trixul.cvs.sourceforge.net/trixul/trixul/layout/jsengine">(TriXUL CVS)</a> - Trixul XML ベースの GUI ツールキットは、SpiderMonkey を組み込み、JavaScript を使用してその GUI の背後にロジックを実装し、JavaScript から C++ オブジェクトへの呼び出しをサポートします。</li> -</ul> - -<h3 id="Rust">Rust</h3> - -<ul> - <li><a class="external" href="https://crates.io/crates/mozjs" title="http://live.gnome.org/Gjs">mozjs</a> - <a href="https://servo.org/">Servo</a> で使用されている Rust バインディング</li> -</ul> - -<h3 id="GNOME">GNOME</h3> - -<ul> - <li><a class="external" href="http://live.gnome.org/Gjs" title="http://live.gnome.org/Gjs">gjs</a> - GNOME への JavaScript バインディング(概して、GObject のイントロスペクションメカニズムを使用している任意のライブラリへの)</li> -</ul> - -<h3 id="Objective_Caml">Objective Caml</h3> - -<ul> - <li><a class="external" href="http://alain.frisch.fr/soft.html#spider" title="http://alain.frisch.fr/soft.html#spider">http://alain.frisch.fr/soft.html#spider</a> - OCaml アプリケーションに SpiderMonkey を埋め込むためのバインディング</li> -</ul> - -<h3 id="Perl">Perl</h3> - -<ul> - <li><a class="external" href="http://jspl.msg.mx/" title="http://jspl.msg.mx/">http://jspl.msg.mx/</a> - SpiderMonkey と Perl を相互に埋め込むためのバインディング。JavaScript から CPAN モジュールを使用できるようにする JS シェルが含まれています。</li> -</ul> - -<h3 id="Python">Python</h3> - -<ul> - <li><a class="external" href="http://pypi.python.org/pypi/python-spidermonkey" title="http://pypi.python.org/pypi/python-spidermonkey">http://pypi.python.org/pypi/python-spidermonkey</a></li> -</ul> - -<h3 id="wxWidgets">wxWidgets</h3> - -<ul> - <li><a class="external" href="http://gluescript.sourceforge.net/" title="http://gluescript.sourceforge.net/">GLUEscript</a> (formerly <a class="external" href="http://www.wxjavascript.net/" title="http://www.wxjavascript.net/">wxJavaScript</a>)</li> -</ul> - -<h3 id="Code_generators">Code generators</h3> - -<ul> - <li><a class="external" href="http://jsapigen.sourceforge.net" title="http://jsapigen.sourceforge.net/">jsapigen</a> - C アプリケーションに SpiderMonkey を埋め込むためのバインディングを生成する</li> -</ul> - -<h2 id="拡張機能">拡張機能</h2> - -<ul> - <li> - <p><a class="external" href="http://code.google.com/p/jslibs/" title="http://code.google.com/p/jslibs/">http://code.google.com/p/jslibs/</a> - <a class="external" href="http://en.wikipedia.org/wiki/Zlib" title="Zlib">zlib</a>, <a class="external" href="http://en.wikipedia.org/wiki/SQLite" title="SQLite">SQLite</a>, <a class="mw-redirect external" href="http://en.wikipedia.org/wiki/NSPR" title="NSPR">NSPR</a>, <a class="external" href="http://en.wikipedia.org/wiki/Open_Dynamics_Engine" title="Open Dynamics Engine">ode</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libpng" title="Libpng">libpng</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libjpeg" title="Libjpeg">libjpeg</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libffi" title="Libffi">libffi</a>, (...) SpiderMonkey 用のライブラリ</p> - </li> - <li> - <p><a class="external" href="http://www.jsdb.org/" title="http://www.jsdb.org/">http://www.jsdb.org/</a> - ファイル、ネットワーク、データベース、圧縮、メールなどのネイティブオブジェクトを含む JS シェル</p> - </li> - <li> - <p><a class="external" href="http://code.google.com/p/gpsee/" title="http://code.google.com/p/gpsee/"><u>http://code.google.com/p/gpsee/</u></a> - SpiderMonkey 用の commonJS プラットフォーム、母国語モジュールの相互運用方法、モジュールなど。既存の埋め込みを補完するように設計された GPSEE は、サンプルの簡単な埋め込み、スクリプトホスト、および Mozilla の JS シェルの拡張バージョンを同梱しています。バンドルされているモジュールには、ByteArray、ByteString、CGI、POSIX Signals、FFI などのサポートが含まれています。</p> - </li> - <li> - <p><a class="external" href="http://javalikescript.free.fr/" title="http://javalikescript.free.fr/">http://javalikescript.free.fr/</a> - 拡張可能なツーリングフレームワークを提供することを目的とした汎用 JavaScript プラットフォーム</p> - </li> - <li> - <p><a href="http://www.synchro.net/" title="http://www.synchro.net/">http://www.synchro.net/</a> - telnet/SSH 掲示板システム (BBS) とインターネットサーバ (HTTP/SMTP/FTP)。JavaScript で記述された追加のインターネットサービス(IRC、IMAP、Gopher など)。</p> - </li> - <li> - <p><a href="https://github.com/mindbit/libjssql/wiki" title="https://github.com/mindbit/libjssql/wiki">https://github.com/mindbit/libjssql/wiki</a> - JDBC にできるだけ似せた、JavaScript 用の汎用 SQL API を提供することを目的としたライブラリ</p> - </li> -</ul> - -<h2 id="その他">その他</h2> - -<ul> - <li><a class="external" href="http://groups.google.com/group/serverjs" title="http://groups.google.com/group/serverjs">ServerJS</a>, 細分化されたサーバサイドの Javascript の世界に対する標準化の取り組み</li> - <li><a class="external" href="http://play0ad.com/" title="http://wildfiregames.com/0ad/">0 A.D.</a>, JavaScript スクリプトを使った歴史的な RTS ゲーム</li> - <li><a class="external" href="http://soubok.googlepages.com/javascript" title="http://soubok.googlepages.com/javascript">http://soubok.googlepages.com/javascript</a></li> - <li><a class="external text" href="http://malzilla.sourceforge.net/" rel="nofollow" title="http://malzilla.sourceforge.net/">Malzilla</a> - SpiderMonkey を使用して、Web ページ上の JavaScript を難読化して<a href="https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%82%A6%E3%82%A7%E3%82%A2">マルウェア</a>を除去するためのツール</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html b/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html deleted file mode 100644 index 3296d837dc..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: SpiderMonkeyソースコードの取得 -slug: Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code -tags: - - Guide - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code ---- -<div>{{SpiderMonkeySidebar}}</div> - -<p>SpiderMonkey のソースコードは gzip 形式でも直接 Mercurial リポジトリからも入手できます。</p> - -<h2 id="gzip_で圧縮された_SpiderMonkey_のソースコードのダウンロード">gzip で圧縮された SpiderMonkey のソースコードのダウンロード</h2> - -<p>gzip で圧縮された SpiderMonkey のソースコードを次の URL からダウンロードできます:</p> - -<pre><span class="plain"><a href="http://ftp.mozilla.org/pub/mozilla.org/js/" title="http://ftp.mozilla.org/pub/mozilla.org/js/">http://ftp.mozilla.org/pub/mozilla.org/js/</a></span> -</pre> - -<p>コマンドラインから SpiderMonkey ソースコード ver24.2 をダウンロードして展開する例です:</p> - -<pre>mkdir mozilla -cd mozilla -wget <a href="http://ftp.mozilla.org/pub/mozilla.org/js/mozjs-24.2.0.tar.bz2">http://ftp.mozilla.org/pub/mozilla.org/js/mozjs-24.2.0.tar.bz2</a> -tar xjf mozjs-24.2.0.tar.bz2 -</pre> - -<p>These commands should work on most platforms including Windows, as long as on Windows you are using the <a href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites#mozillabuild" title="https://developer.mozilla.org/en/Windows_Build_Prerequisites#mozillabuild">MozillaBuild</a> bash shell.</p> - -<h2 id="Getting_the_latest_SpiderMonkey_source_code" name="Getting_the_latest_SpiderMonkey_source_code">Mercurial から最新の SpiderMonkey ソースコードを入手する</h2> - -<p>The <a href="/en/Mercurial" title="en/Mercurial">Mercurial</a> repository at <a class="external" href="http://hg.mozilla.org/mozilla-central/" title="http://hg.mozilla.org/mozilla-central/">http://hg.mozilla.org/mozilla-central/</a> hosts the latest SpiderMonkey sources. Mercurial is also known as hg.</p> - -<p>The following command line downloads the entire Mozilla repository, including the full change history and a lot of Gecko and Firefox source code that isn't part of SpiderMonkey. It also changes to the SpiderMonkey directory (js/src).</p> - -<pre class="eval">hg clone <span class="nowiki">http://hg.mozilla.org/mozilla-central/</span> -cd js/src -</pre> - -<p>To avoid getting the full change history, click the <code>zip</code> or <code>gz</code> links at <a class="external" href="http://hg.mozilla.org/index.cgi/mozilla-central/file/tip" title="http://hg.mozilla.org/index.cgi/mozilla-central/file/tip">http://hg.mozilla.org/index.cgi/mozilla-central/file/tip</a>. This fetches a snapshot of the current Mozilla tree.</p> - -<p>If you have problems with the instructions above, you can read the full details of using Mercurial to get Mozilla code <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial">here</a>. That page also contains links to several bundles, which can be useful if you have a poor network connection.</p> - -<h2 id="Getting_the_latest_SpiderMonkey_source_code" name="Getting_the_latest_SpiderMonkey_source_code">Git で最新の SpiderMonkey のソースコードを取得する</h2> - -<p>The following command line downloads the entire Mozilla repository, including the full change history and a lot of Gecko and Firefox source code that isn't part of SpiderMonkey. It also changes to the SpiderMonkey directory (js/src).</p> - -<pre class="eval">git clone https://github.com/mozilla/gecko-dev.git -cd gecko-dev/js/src -</pre> - -<p>If you want a faster (about 5 times as of January 2015) download, try doing a shallow clone (no version control history).</p> - -<pre class="eval">git clone --depth 1 https://github.com/mozilla/gecko-dev.git -</pre> - -<p>If you have any problems check the <a href="https://wiki.mozilla.org/Github" title="https://wiki.mozilla.org/Github">https://wiki.mozilla.org/Github</a> page.</p> - -<h2 id="Getting_older_SpiderMonkey_sources_from_CVS" name="Getting_older_SpiderMonkey_sources_from_CVS">CVS から古い SpiderMonkey ソースを入手する</h2> - -<div class="note"><strong>Note:</strong> You will need to explicitly fetch the JavaScript shell sources even if you currently build another Mozilla project, as there are files specific to the shell that are not normally found in a Mozilla source tree.</div> - -<p>Just like when you're fetching any other Mozilla project from CVS, you need to log into the CVS server first. To do this, <code>cd</code> into the base directory you'd like to check out the code into, then enter the following command at your command line:</p> - -<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login -</pre> - -<p>When prompted, enter the password <code>anonymous</code>.</p> - -<p>Once you've logged in, <code>cd</code> into the root of your CVS tree and enter the following command:</p> - -<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l mozilla/js/src mozilla/js/src/config mozilla/js/src/editline mozilla/js/src/fdlibm -</pre> - -<p>This checks out all the files needed in order to build the JavaScript shell.</p> - -<p>If you also want the regression tests, add this command:</p> - -<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/js/tests -</pre> - -<h2 id="Getting_older_branch_versions_of_SpiderMonkey" name="Getting_older_branch_versions_of_SpiderMonkey">SpiderMonkey の古いブランチバージョンを入手する</h2> - -<p>If you want to experiment with a specific branch's version of SpiderMonkey, you need to check out js/src from branch but check out <code>editline</code> and <code>config</code> from trunk:</p> - -<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l -r <em><var>BRANCH_NAME</var></em> mozilla/js/src mozilla/js/src/fdlibm -cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l mozilla/js/src/config mozilla/js/src/editline -</pre> - -<p>Change <code><em>BRANCH_NAME</em></code> to the name of the branch you want to check out. You can use a JavaScript branch name (e.g. <code>JS_1_7_ALPHA_BRANCH</code>) or a Mozilla branch name (e.g. <code>MOZILLA_1_8_BRANCH</code>).</p> diff --git a/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html b/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html deleted file mode 100644 index 933d9d64a4..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html +++ /dev/null @@ -1,654 +0,0 @@ ---- -title: ハッキングのヒント -slug: Mozilla/Projects/SpiderMonkey/Hacking_Tips -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Hacking_Tips ---- -<div>{{SpiderMonkeySidebar("Getting_started")}}</div> - -<p>このページには、SpiderMonkey に関連する問題の調査に役立つヒントがいくつか掲載されています。ここに記載されているヒントはすべて、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey のビルドドキュメント</a>の最後に取得された JavaScript シェルを扱っています。2つの部分に分かれており、1つはデバッグに関するセクション、もう1つはドラフト最適化に関するセクションです。これらのヒントの多くは、JS シェルのデバッグビルドにのみ適用されます。それらはリリースビルドでは機能しません。</p> - -<h2 id="デバッグのヒント">デバッグのヒント</h2> - -<h3 id="ヘルプの入手_(JS_シェルから)">ヘルプの入手 (JS シェルから)</h3> - -<p><strong>help</strong> 関数を使用して、シェルのすべてのプリミティブ関数のリストを記述します。いくつかの関数は 'os' オブジェクトの下に移動されているので、<strong>help(os)</strong> はその "namespace" のメンバーだけを簡単に助けます。</p> - -<h3 id="関数のバイトコードを取得する_(JSシェルから)">関数のバイトコードを取得する (JSシェルから)</h3> - -<p>シェルには、関数のバイトコードをソースノートとともにダンプするための小さな関数 <strong>dis</strong> があります。引数がなければ、呼び出し元のバイトコードをダンプします。</p> - -<pre class="eval"><code>js> function f () { - return 1; -} -js> <strong>dis(</strong>f<strong>)</strong>; -flags: -loc op ------ -- -main: -00000: one -00001: return -00002: stop - -Source notes: - ofs line pc delta desc args ----- ---- ----- ------ -------- ------ - 0: 1 0 [ 0] newline - 1: 2 0 [ 0] colspan 2 - 3: 2 2 [ 2] colspan 9 - -</code></pre> - -<h3 id="関数のバイトコードを取得する_(gdbから)">関数のバイトコードを取得する (gdbから)</h3> - -<p><em>jsopcode.cpp</em> では、<strong>js::DisassembleAtPC</strong> という名前の関数が使用されています。PC はスクリプトのバイトコードを出力できます。<strong>js::DumpScript</strong> などのこの関数のいくつかの変種はデバッグに便利です。</p> - -<h3 id="JS_スタックのプリント_(gdbから)">JS スタックのプリント (gdbから)</h3> - -<p>jsobj.cppでは、<strong>js::DumpBacktrace</strong> という名前の関数が、JS スタックのバックトレース à la gdb を出力します。バックトレースには次の順序で、スタックの深さ、インタープリタフレームポインタ (<em>js/src/vm/Stack.h</em>、<strong>StackFrame</strong> クラスを参照) または IonMonkeyでコンパイルした場合は (nil)、コールロケーションのファイルと行番号、およびカッコの下に実行された JSScript ポインタと jsbytecode ポインタ (pc) が含まれます。</p> - -<pre class="eval"><code>$ gdb --args js -[…] -(gdb) b js::ReportOverRecursed -(gdb) r -js> function f(i) { - if (i % 2) f(i + 1); - else f(i + 3); -} -js> f(0) - -Breakpoint 1, js::ReportOverRecursed (maybecx=0xfdca70) at /home/nicolas/mozilla/ionmonkey/js/src/jscntxt.cpp:495 -495 if (maybecx) -(gdb) call <strong>js::DumpBacktrace(</strong>maybecx<strong>)</strong> -#0 (nil) typein:2 (0x7fffef1231c0 @ 0) -#1 (nil) typein:2 (0x7fffef1231c0 @ 24) -#2 (nil) typein:3 (0x7fffef1231c0 @ 47) -#3 (nil) typein:2 (0x7fffef1231c0 @ 24) -#4 (nil) typein:3 (0x7fffef1231c0 @ 47) -[…] -#25157 0x7fffefbbc250 typein:2 (0x7fffef1231c0 @ 24) -#25158 0x7fffefbbc1c8 typein:3 (0x7fffef1231c0 @ 47) -#25159 0x7fffefbbc140 typein:2 (0x7fffef1231c0 @ 24) -#25160 0x7fffefbbc0b8 typein:3 (0x7fffef1231c0 @ 47) -#25161 0x7fffefbbc030 typein:5 (0x7fffef123280 @ 9) - -</code></pre> - -<p>Note, you can do the exact same exercise above using <code>lldb</code> (necessary on OSX after Apple removed <code>gdb</code>) by running <code>lldb -f js</code> then following the remaining steps.</p> - -<p>Since SpiderMonkey 48, we have a gdb unwinder. This unwinder is able to read the frames created by the JIT, and to display the frames which are after these JIT frames.</p> - -<pre><code>$ gdb --args out/dist/bin/js ./foo.js -[…] -SpiderMonkey unwinder is disabled by default, to enable it type: - enable unwinder .* SpiderMonkey -(gdb) b js::math_cos -(gdb) run -[…] -#0 js::math_cos (cx=0x14f2640, argc=1, vp=0x7fffffff6a88) at js/src/jsmath.cpp:338 -338 CallArgs args = CallArgsFromVp(argc, vp); -(gdb) enable unwinder .* SpiderMonkey -(gdb) backtrace 10 -#0 0x0000000000f89979 in js::math_cos(JSContext*, unsigned int, JS::Value*) (cx=0x14f2640, argc=1, vp=0x7fffffff6a88) at js/src/jsmath.cpp:338 -#1 0x0000000000ca9c6e in js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (cx=0x14f2640, native=0xf89960 , args=...) at js/src/jscntxtinlines.h:235 -#2 0x0000000000c87625 in js::Invoke(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (cx=0x14f2640, args=..., construct=js::NO_CONSTRUCT) at js/src/vm/Interpreter.cpp:476 -#3 0x000000000069bdcf in js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, uint32_t, JS::Value*, JS::MutableHandleValue) (cx=0x14f2640, frame=0x7fffffff6ad8, stub_=0x1798838, argc=1, vp=0x7fffffff6a88, res=JSVAL_VOID) at js/src/jit/BaselineIC.cpp:6113 -#4 0x00007ffff7f41395 in </code><<JitFrame_Exit>><code> () -#5 0x00007ffff7f42223 in </code><<JitFrame_BaselineStub>><code> () -#6 0x00007ffff7f4423d in </code><<JitFrame_BaselineJS>><code> () -#7 0x00007ffff7f4222e in </code><<JitFrame_BaselineStub>><code> () -#8 0x00007ffff7f4326a in </code><<JitFrame_BaselineJS>><code> () -#9 0x00007ffff7f38d5f in </code><<JitFrame_Entry>><code> () -#10 0x00000000006a86de in EnterBaseline(JSContext*, js::jit::EnterJitData&) (cx=0x14f2640, data=...) at js/src/jit/BaselineJIT.cpp:150 -</code></pre> - -<p>Note, when you enable the unwinder, the current version of gdb (7.10.1) does not flush the backtrace. Therefore, the JIT frames do not appear until you settle on the next breakpoint. To work-around this issue you can use the recording feature of <code>gdb</code>, to step one instruction, and settle back to where you came from with the following set of <code>gdb</code> commands:</p> - -<pre><code>(gdb) record full -(gdb) si -(gdb) record goto 0 -(gdb) record stop -</code></pre> - -<p>If you have a core file, you can use the gdb unwinder the same way, or do everything from the command line as follow:</p> - -<pre><code>$ gdb -ex 'enable unwinder .* SpiderMonkey' -ex 'bt 0' -ex 'thread apply all backtrace' -ex 'quit' out/dist/bin/js corefile -</code></pre> - -<p>The gdb unwinder is supposed to be loaded by <code>dist/bin/js-gdb.py</code> and load python scripts which are located in <code>js/src/gdb/mozilla</code> under gdb. If gdb does not load the unwinder by default, you can force it to, by using the <code>source</code> command with the <code>js-gdb.py</code> file.</p> - -<h3 id="生成されたコードにブレークポイントを設定する_(gdb_x86_x86-64_arm_から)">生成されたコードにブレークポイントを設定する (gdb, x86 / x86-64, arm から)</h3> - -<p>To set a breakpoint the generated code of a specific JSScript compiled with IonMonkey. Set a breakpoint on the instruction you are interested in. If you have no precise idea which function you are looking at, you can set a breakpoint on the <strong>js::ion::CodeGenerator::visitStart</strong> function. Optionally, a condition on the <strong>ins->id()</strong> of the LIR instruction can be added to select precisely the instruction you are looking for. Once the breakpoint is on <strong>CodeGenerator</strong> function of the LIR instruction, add a command to generate a static breakpoint in the generated code.</p> - -<pre class="eval"><code>$ gdb --args js -[…] -(gdb) b js::ion::CodeGenerator::visitStart -(gdb) command ->call masm.breakpoint() ->continue ->end -(gdb) r -js> function f(a, b) { return a + b; } -js> for (var i = 0; i < 100000; i++) f(i, i + 1); - -Breakpoint 1, js::ion::CodeGenerator::visitStart (this=0x101ed20, lir=0x10234e0) - at /home/nicolas/mozilla/ionmonkey/js/src/ion/CodeGenerator.cpp:609 -609 } - -Program received signal SIGTRAP, Trace/breakpoint trap. -0x00007ffff7fb165a in ?? () -(gdb) - -</code></pre> - -<p>Once you hit the generated breakpoint, you can replace it by a gdb breakpoint to make it conditional, the procedure is to first replace the generated breakpoint by a nop instruction, and to set a breakpoint at the address of the nop.</p> - -<pre class="eval"><code>(gdb) x /5i $pc - 1 - 0x7ffff7fb1659: int3 -=> 0x7ffff7fb165a: mov 0x28(%rsp),%rax - 0x7ffff7fb165f: mov %eax,%ecx - 0x7ffff7fb1661: mov 0x30(%rsp),%rdx - 0x7ffff7fb1666: mov %edx,%ebx - -(gdb) # replace the int3 by a nop -(gdb) set *(unsigned char *) ($pc - 1) = 0x90 -(gdb) x /1i $pc - 1 - 0x7ffff7fb1659: nop - -(gdb) # set a breakpoint at the previous location -(gdb) b *0x7ffff7fb1659 -Breakpoint 2 at 0x7ffff7fb1659 -</code> -</pre> - -<h3 id="イオン生成アセンブリコードのプリント_(gdb_から)">イオン生成アセンブリコードのプリント (gdb から)</h3> - -<p>If you want to look at the assembly code generated by IonMonkey, you can follow this procedure:</p> - -<ul> - <li>Place a breakpoint at CodeGenerator.cpp on the CodeGenerator::link method.</li> - <li>Step next a few times, so that the "code" variable gets generated</li> - <li>Print code->code_, which is the address of the code</li> - <li>Disassembly code read at this address (using x/Ni address, where N is the number of instructions you would like to see)</li> -</ul> - -<p>Here is an example. It might be simpler to use the CodeGenerator::link lineno instead of the full qualified name to put the breakpoint. Let's say that the line number of this function is 4780, for instance:</p> - -<pre>(gdb) b CodeGenerator.cpp:4780 -Breakpoint 1 at 0x84cade0: file /home/code/mozilla-central/js/src/ion/CodeGenerator.cpp, line 4780. -(gdb) r -Starting program: /home/code/mozilla-central/js/src/32-release/js -f /home/code/jaeger.js -[Thread debugging using libthread_db enabled] -Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". -[New Thread 0xf7903b40 (LWP 12563)] -[New Thread 0xf6bdeb40 (LWP 12564)] -Run#0 - -Breakpoint 1, js::ion::CodeGenerator::link (this=0x86badf8) - at /home/code/mozilla-central/js/src/ion/CodeGenerator.cpp:4780 -4780 { -(gdb) n -4781 JSContext *cx = GetIonContext()->cx; -(gdb) n -4783 Linker linker(masm); -(gdb) n -4784 IonCode *code = linker.newCode(cx, JSC::ION_CODE); -(gdb) n -4785 if (!code) -(gdb) p code->code_ -$1 = (uint8_t *) 0xf7fd25a8 "\201", <incomplete sequence \354\200> -(gdb) x/2i 0xf7fd25a8 - 0xf7fd25a8: sub $0x80,%esp - 0xf7fd25ae: mov 0x94(%esp),%ecx - -</pre> - -<p>On arm, the compiled JS code will always be ARM machine code, whereas spidermonkey itself is frequently Thumb2. Since there isn't debug info for the jitted code, you will need to tell gdb that you are looking at ARM code:</p> - -<pre>(gdb) set arm force-mode arm -</pre> - -<p>Or you can wrap the x command in your own command:</p> - -<pre>def xi - set arm force-mode arm - eval "x/%di %d", $arg0, $arg1 - set arm force-mode auto -end - -</pre> - -<h3 id="Printing_asm.jswasm_generated_assembly_code_(from_gdb)">Printing asm.js/wasm generated assembly code (from gdb)</h3> - -<ul> - <li> - <p>Set a breakpoint on <code>js::wasm::Instance::callExport</code> (defined in <code>WasmInstance.cpp</code> as of November 18th 2016). This will trigger for *any* asm.js/wasm call, so you should find a way to set this breakpoint for the only generated codes you want to look at.</p> - </li> - <li> - <p>Run the program.</p> - </li> - <li> - <p>Do <code>next</code> in gdb until you reach the definition of the <code>funcPtr</code>:</p> - </li> -</ul> - -<pre>// Call the per-exported-function trampoline created by GenerateEntry. │ -auto funcPtr = JS_DATA_TO_FUNC_PTR(ExportFuncPtr, codeBase() + func.entryOffset()); │ -if (!CALL_GENERATED_2(funcPtr, exportArgs.begin(), &tlsData_)) │ - return false; </pre> - -<ul> - <li><code>After it's set, x/64i funcPtr</code> will show you the trampoline code. There should be a call to an address at some point ; that's what we're targeting. Copy that address.</li> -</ul> - -<pre><code> 0x7ffff7ff6000: push %r15 - 0x7ffff7ff6002: push %r14 - 0x7ffff7ff6004: push %r13 - 0x7ffff7ff6006: push %r12 - 0x7ffff7ff6008: push %rbp - 0x7ffff7ff6009: push %rbx - 0x7ffff7ff600a: movabs $0xea4f80,%r10 - 0x7ffff7ff6014: mov 0x178(%r10),%r10 - 0x7ffff7ff601b: mov %rsp,0x40(%r10) - 0x7ffff7ff601f: mov (%rsi),%r15 - 0x7ffff7ff6022: mov %rdi,%r10 - 0x7ffff7ff6025: push %r10 - 0x7ffff7ff6027: test $0xf,%spl - 0x7ffff7ff602b: je 0x7ffff7ff6032 - 0x7ffff7ff6031: int3 - 0x7ffff7ff6032: callq 0x7ffff7ff5000 <------ right here</code></pre> - -<ul> - <li><code>x/64i address</code> (in this case: <code>x/64i 0x7ffff7ff6032</code>).</li> - <li>If you want to put a breakpoint at the function's entry, you can do: <code>b *address </code>(for instance here, <code>b* 0x7ffff7ff6032</code>). Then you can display the instructions around pc with<code> x/20i $pc, </code>and execute instruction by instruction with<code> stepi.</code></li> -</ul> - -<h3 id="Finding_the_script_of_Ion_generated_assembly_(from_gdb)">Finding the script of Ion generated assembly (from gdb)</h3> - -<p>When facing a bug in which you are in the middle of IonMonkey generated code, first thing to note, is that gdb's backtrace is not reliable, because the generated code does not keep a frame pointer. To figure it out you have to read the stack to infer the IonMonkey frame.</p> - -<pre><code>(gdb) </code>x /64a $sp -[…] -0x7fffffff9838: 0x7ffff7fad2da 0x141 -0x7fffffff9848: 0x7fffef134d40 0x2 -[…] -(gdb) p (*(JSFunction**) 0x7fffffff9848)->u.i.script_->lineno -$1 = 1 -(gdb) p (*(JSFunction**) 0x7fffffff9848)->u.i.script_->filename -$2 = 0xff92d1 "typein" -</pre> - -<p>The stack is order as defined in js/src/ion/IonFrames-x86-shared.h, it is composed of the return address, a descriptor (a small value), the JSFunction (if it is even) or a JSScript (if the it is odd, remove it to dereference the pointer) and the frame ends with the number of actual arguments (a small value too). If you want to know at which LIR the code is failing at, the <strong>js::ion::CodeGenerator::generateBody</strong> function can be intrumented to dump the LIR <strong>id</strong> before each instruction.</p> - -<pre><code>for (; iter != current->end(); iter++) { - IonSpew(IonSpew_Codegen, "instruction %s", iter->opName()); - […] - - masm.store16(Imm32(iter->id()), Address(StackPointer, -8)); // added - if (!iter->accept(this)) - return false; -</code> -<code> […] -</code><code>}</code></pre> - -<p><code>This modification will add an instruction which abuse the stack pointer </code>to store an immediate value (the LIR id) to a location which would never be generated by any sane compiler. Thus when dumping the assembly under gdb, this kind of instructions would be easily noticeable.</p> - -<h3 id="Viewing_the_MIRGraph_of_IonOdin_compilations_(from_gdb)">Viewing the MIRGraph of Ion/Odin compilations (from gdb)</h3> - -<p>With gdb instrumentation, we can call <a href="https://github.com/sstangl/iongraph">iongraph</a> program within gdb when the execution is stopped. This instrumentation adds an <strong><code>iongraph</code></strong> command when provided with an instance of a <strong><code>MIRGenerator*</code></strong>, will call <code>iongraph</code>, <code>graphviz</code> and your prefered png viewer to display the MIR graph at the precise time of the execution. To find <strong><code>MIRGenetator*</code></strong> instances, is best is to look up into the stack for <code>OptimizeMIR</code>, or <code>CodeGenerator::generateBody</code>. <strong><code>OptimizeMIR</code></strong> function has a <strong><code>mir</code></strong> argument, and the <strong><code>CodeGenerator::generateBody</code></strong> function has a member <strong><code>this->gen</code></strong>.</p> - -<pre><code>(gdb) bt</code> -#0 0x00000000007eaad4 in js::InlineList<js::jit::MBasicBlock>::begin() const (this=0x33dbbc0) at …/js/src/jit/InlineList.h:280 -#1 0x00000000007cb845 in js::jit::MIRGraph::begin() (this=0x33dbbc0) at …/js/src/jit/MIRGraph.h:787 -#2 0x0000000000837d25 in js::jit::BuildPhiReverseMapping(js::jit::MIRGraph&) (graph=...) at …/js/src/jit/IonAnalysis.cpp:2436 -#3 0x000000000083317f in js::jit::OptimizeMIR(js::jit::MIRGenerator*) (mir=0x33dbdf0) at …/js/src/jit/Ion.cpp:1570 -… -(gdb) frame 3 -#3 0x000000000083317f in js::jit::OptimizeMIR(js::jit::MIRGenerator*) (mir=0x33dbdf0) at …/js/src/jit/Ion.cpp:1570 -<code>(gdb) iongraph mir</code> - function 0 (asm.js compilation): success; 1 passes<code>.</code> -<code>/* open your png viewer with the result of iongraph */</code></pre> - -<p>This gdb instrumentation is supposed to work with debug builds, or with optimized build compiled with <code>--enable-jitspew</code> configure flag. External programs such as <code>iongraph</code>, <code>dot</code>, and your png viewer are search into the <code>PATH</code>, otherwise custom one can either be configured with environment variables (<code>GDB_IONGRAPH</code>, <code>GDB_DOT</code>, <code>GDB_PNGVIEWER</code>) before starting gdb, or with gdb parameters (<code>set iongraph-bin <path></code>, <code>set dot-bin <path></code>, <code>set pngviewer-bin <path></code>) within gdb.</p> - -<p>Enabling GDB instrumentation may require launching a JS shell executable that shares a directory with a file name "js-gdb.py". If js/src/js does not provide the "iongraph" command, try js/src/shell/js. GDB may complain that ~/.gdbinit requires modification to authorize user scripts, and if so will print out directions.</p> - -<h3 id="Break_on_valgrind_errors">Break on valgrind errors</h3> - -<p>Sometimes, a bug can be reproduced under valgrind but hardly under gdb. One way to investigate is to let valgrind start gdb for you, the other way documented here is to let valgrind act as a gdb server which can be manipulated from the gdb remote.</p> - -<pre><code>$ valgrind --smc-check=all-non-file</code> --vex-iropt-register-updates=allregs-at-mem-access <code>--vgdb-error=0 ./js …</code></pre> - -<p>This command will tell you how to start gdb as a remote. Be aware that functions which are usually dumping some output will do it in the shell where valgrind is started and not in the shell where gdb is started. Thus functions such as <strong>js::DumpBacktrace</strong>, when called from gdb, will print their output in the shell containing valgrind.</p> - -<h3 id="Adding_spew_for_Compilations_Bailouts_Invalidations_(from_gdb)">Adding spew for Compilations & Bailouts & Invalidations (from gdb)</h3> - -<p>If you are in rr, and forgot to record with the spew enabled with IONFLAGS or because this is an optimized build, then you can add similar spew with extra breakpoints within gdb. gdb has the ability to set breakpoints with commands, but a simpler / friendlier version is to use <strong>dprintf</strong>, with a location, and followed by printf-like arguments.</p> - -<pre>(gdb) dprintf js::jit::IonBuilder::IonBuilder, "Compiling %s:%d:%d-%d\n", info->script_->scriptSource()->filename_.mTuple.mFirstA, info->script_->lineno_, info->script_->sourceStart_, info->script_->sourceEnd_ -Dprintf 1 at 0x7fb4f6a104eb: file /home/nicolas/mozilla/contrib-push/js/src/jit/IonBuilder.cpp, line 159. -(gdb) cond 1 inliningDepth == 0 -(gdb) dprintf js::jit::BailoutIonToBaseline, "Bailout from %s:%d:%d-%d\n", iter.script()->scriptSource()->filename_.mTuple.mFirstA, iter.script()->lineno_, iter.script()->sourceStart_, iter.script()->sourceEnd_ -Dprintf 2 at 0x7fb4f6fe43dc: js::jit::BailoutIonToBaseline. (2 locations) -(gdb) dprintf Ion.cpp:3196, "Invalidate %s:%d:%d-%d\n", co->script_->scriptSource()->filename_.mTuple.mFirstA, co->script_->lineno_, co->script_->sourceStart_, co->script_->sourceEnd_ -Dprintf 3 at 0x7fb4f6a0b62a: file /home/nicolas/mozilla/contrib-push/js/src/jit/Ion.cpp, line 3196. -<code>(gdb) continue</code> -Compiling self-hosted:650:20470-21501 -Bailout from self-hosted:20:403-500 -Invalidate self-hosted:20:403-500 -</pre> - -<p>Note: the line 3196, listed above, corresponds to the location of the <a href="http://searchfox.org/mozilla-central/rev/f6c298b36db67a7109079c0dd7755f329c1d58e2/js/src/jit/Ion.cpp#3196">Jit spew inside jit::Invalidate function</a>.</p> - -<h2 id="ハッキングのヒント">ハッキングのヒント</h2> - -<h3 id="Benchmarking_(shell)">Benchmarking (shell)</h3> - -<p><a href="http://arewefastyet.com">AreWeFastYet.com</a> display the benchmark results of the JavaScript shell, and browser for B2G. These benchmarks are publicly recognized benchmarks suggested by other companies and are used as a metric to evaluate how fast JavaScript engines. This tool is maintained by the JavaScript Team, to find regressions and to compare SpiderMonkey with other JavaScript engines when possible. To run these benchmarks localy, you can clone <a href="https://github.com/haytjes/arewefastyet.git">AreWeFastYet sources</a> and look inside the <em>benchmarks</em> directory to run individual benchmarks with your JS shell.</p> - -<h3 id="Using_the_Gecko_Profiler_(browser_xpcshell)">Using the Gecko Profiler (browser / xpcshell)</h3> - -<p>see the section dedicated to <a href="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler" title="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler">profiling with the gecko profiler</a>. This method of profiling has the advantage of mixing the JavaScript stack with the C++ stack, which is useful to analyze library function issues. One tip is to start looking at a script with an inverted JS stack to locate the most expensive JS function, then to focus on the frame of this JS function, and to remove the inverted stack and look at C++ part of this function to determine from where the cost is coming from.</p> - -<h3 id="Using_the_JIT_Inspector_(browser)">Using the JIT Inspector (browser)</h3> - -<p>Install the <a href="https://addons.mozilla.org/en-US/firefox/addon/jit-inspector/" title="https://addons.mozilla.org/en-US/firefox/addon/jit-inspector/">JIT Inspector</a> addon in your browser. This addon provides estimated cost of IonMonkey , the Baseline compiler, and the interpreter. In addition it provides a clean way to analyze if instructions are inferred as being monomorphic or polymorphic in addition to the number of time each category of type has been observed.</p> - -<h3 id="Using_the_TraceLogger_(JS_shell_browser)">Using the TraceLogger (JS shell / browser)</h3> - -<p>Create graphs showing time spent in which engine and which function like <a href="https://raw.githubusercontent.com/h4writer/tracelogger/master/screenshot.png" title="http://alasal.be/ionmonkey/index.php?subject=octane-richards-82d28bdf9317">this</a>.</p> - -<p>Whenever running a testcase the file "tl-data.json" and several "tl-*" files get created in the "/tmp" directory. (Per proces a "tl-data-*PID*.json" file and per thread a "tl-tree.*PID*.*ID*.tl", "tl-event.*PID*.*ID*.tl" and "tl-dict.*PID*.*ID*.json" file). These files contain all information to create a tracelogger graph. On <a href="https://github.com/h4writer/tracelogger">https://github.com/h4writer/tracelogger</a> you can find the instructions to create the graph (Tools V2 > 1. Creating a tracelogging graph).</p> - -<p>Note 1: when you are doing this from "file:///" you will probably get a security warning in the console. This is because firefox doesn't allow loading files from the harddisk using httprequest, even when the file loading the file is on the harddisk. There are two solutions. One is to create a localhost server and serving the files there. The simplest way to do this is to run <code>python -m SimpleHTTPServer</code> from within the above directory. The other being disable this check in "about:config", by temporarily switching "security.fileuri.strict_origin_policy" to false</p> - -<p>Note 2: The files can be very big and take a long time to load in the browser. Therefore it might be good to reduce the logged file. This will remove entries that took only a minor time (=entries that will only show up with les than 1px). This can be done with the reduce.py script in <a href="https://github.com/haytjes/tracelogger/tree/master/tools_v2" title="https://github.com/haytjes/tracelogger">https://github.com/haytjes/tracelogger/tree/master/tools_v2</a>. You need to download "engine.js", "reduce.py", "reduce.js", "reduce-tree.js" and "reduce-corrections.js". Running this tool is a matter of running "python reduce.py JS_SHELL /tmp/tl-data.json tl-reduced". Where JS_SHELL is a real shell.</p> - -<h3 id="Using_callgrind_(JS_shell)">Using callgrind (JS shell)</h3> - -<p>As SpiderMonkey just-in-time compiler are rewriting the executed program, valgrind should be informed from the command line by adding <strong>--smc-check=all-non-file</strong>.</p> - -<pre class="eval"><code>$ valgrind --tool=callgrind --callgrind-out-file=bench.clg \ - --smc-check=all-non-file</code> --vex-iropt-register-updates=allregs-at-mem-access<code> ./js ./run.js -</code></pre> - -<p>The output file can then be use with <strong>kcachegrind</strong> which provides a graphical view of the call graph.</p> - -<h3 id="Using_IonMonkey_spew_(JS_shell)">Using IonMonkey spew (JS shell)</h3> - -<p>IonMonkey spew is extremely verbose (not as much as the INFER spew), but you can filter it to focus on the list of compiled scripts or channels, IonMonkey spew channels can be selected with the IONFLAGS environment variable, and compilation spew can be filtered with IONFILTER.</p> - -<p>IONFLAGS contains the names of each channel separated by commas. The <strong>logs</strong> channel produces 2 files in <em>/tmp/</em>, one (<em>/tmp/ion.json</em>) made to be used with <a class="external text" href="https://github.com/sstangl/iongraph" rel="nofollow">iongraph</a> (made by Sean Stangl) and another one (<em>/tmp/ion.cfg</em>) made to be used with <a class="external text" href="http://java.net/projects/c1visualizer/" rel="nofollow">c1visualizer</a>. These tools will show the MIR & LIR steps done by IonMonkey during the compilation. If you would like to use <a class="external text" href="https://github.com/sstangl/iongraph" rel="nofollow" style="line-height: 1.572;">iongraph</a>, you must install <a href="http://www.graphviz.org/Download..php" title="http://www.graphviz.org/Download..php">Graphviz</a>.</p> - -<p>Compilation logs and spew can be filtered with the IONFILTER environment variable which contains locations as output in other spew channels. Multiple locations can be separated with comma as a separator of locations.</p> - -<pre class="eval"><code>$ IONFILTER=pdfjs.js:16934 IONFLAGS=logs,scripts,osi,bailouts ./js --ion-offthread-compile=off ./run.js 2>&1 | less</code></pre> - -<p>The <strong>bailouts</strong> channel is likely to be the first thing you should focus on, because this means that something does not stay in IonMonkey and fallback to the interpreter. This channel output locations (as returned by the<strong> id()</strong> function of both instructions) of the latest MIR and the latest LIR phases. These locations should correspond to phases of the <strong>logs</strong> and a filter can be used to remove uninteresting functions.</p> - -<h3 id="Using_the_ARM_simulator">Using the ARM simulator</h3> - -<p>The ARM simulator can be used to test the ARM JIT backend on x86/x64 hardware. An ARM simulator build is an x86 shell (or browser) with the ARM JIT backend. Instead of entering JIT code, it runs it in a simulator (interpreter) for ARM code. To use the simulator, compile an x86 shell (32-bit, x64 doesn't work as we use a different Value format there), and pass --enable-arm-simulator to configure. For instance, on a 64-bit Linux host you can use the following configure command to get an ARM simulator build:</p> - -<pre class="line-numbers language-html"><code class="language-html">AR=ar CC="gcc -m32" CXX="g++ -m32" ../configure --target=i686-pc-linux --enable-debug --disable-optimize --enable-threadsafe --enable-simulator=arm</code></pre> - -<p>Or on OS X:</p> - -<pre> $ AR=ar CC="clang -m32" CXX="clang++ -m32" ../configure --target=i686-apple-darwin10.0.0 --enable-debug --disable-optimize --enable-threadsafe --enable-arm-simulator</pre> - -<p>An --enable-debug --enable-optimize build is recommended if you want to run jit-tests or jstests.</p> - -<h4 id="Use_the_VIXL_Debugger_in_the_simulator_(arm64)">Use the VIXL Debugger in the simulator (arm64)</h4> - -<p>Set a breakpoint (see the comments above about <code>masm.breakpoint()</code>) and run with the environment variable <code>USE_DEBUGGER=1</code>. This will then drop you into a simple debugger provided with VIXL, the ARM simulator technology used for arm64 simulation.</p> - -<h4 id="Use_the_Simulator_Debugger_for_arm32">Use the Simulator Debugger for arm32</h4> - -<p>The same instructions for arm64 in the preceeding section apply, but the environment variable differs: Use <code>ARM_SIM_DEBUGGER=1</code>.</p> - -<h4 id="Building_the_browser_with_the_ARM_simulator">Building the browser with the ARM simulator</h4> - -<p>You can also build the entire browser with the ARM simulator backend, for instance to reproduce browser-only JS failures on ARM. Make sure to build a browser for x86 (32-bits) and add this option to your mozconfig file:</p> - -<pre>ac_add_options --enable-arm-simulator -</pre> - -<p>If you are under an Ubuntu or Debian 64-bits distribution and you want to build a 32-bits browser, it might be hard to find the relevant 32-bits dependencies. You can use <a href="https://github.com/padenot/fx-32-on-64.sh">padenot's scripts</a> which will magically setup a chrooted 32-bits environment and do All The Things (c) for you (you just need to modify the mozconfig file).</p> - -<h3 id="Using_rr_on_a_test">Using rr on a test</h3> - -<p>Get the command line for your test run using -s:</p> - -<pre>./jit_test.py -s $JS_SHELL saved-stacks/async.js</pre> - -<p>Insert 'rr' before the shell invocation:</p> - -<pre><code>rr $JS_SHELL -f $JS_SRC/jit-test/lib/prolog.js --js-cache $JS_SRC/jit-test/.js-cache -e "const platform='linux2'; const libdir='$JS_SRC/jit-test/lib/'; const scriptdir='$JS_SRC/jit-test/tests/saved-stacks/'" -f $JS_SRC/jit-test/tests/saved-stacks/async.js</code></pre> - -<p>(note that the above is an example; simply setting JS_SHELL and JS_SRC will not work). Or if this is an intermittent, run it in a loop capturing an rr log for every one until it fails:</p> - -<pre><code>n=1; while rr ...same.as.above...; do echo passed $n; n=$(( $n + 1 )); done</code></pre> - -<p>Wait until it hits a failure. Now you can run <code>rr replay</code> to replay that last (failed) run under gdb.</p> - -<h4 id="rr_with_reftest">rr with reftest</h4> - -<p>To break on the write of a differing pixel:</p> - -<ol> - <li>Find the X/Y of a pixel that differs</li> - <li>Use 'run Z' where Z is the mark in the log for TEST-START. For example in '[rr 28496 607198]REFTEST TEST-START | file:///home/bgirard/mozilla-central/tree/image/test/reftest/bmp/bmpsuite/b/wrapper.html?badpalettesize.bmp' Z would be 607198.</li> - <li>break 'mozilla::dom::CanvasRenderingContext2D::DrawWindow(nsGlobalWindow&, double, double, double, double, nsAString_internal const&, unsigned int, mozilla::ErrorResult&)'</li> - <li>cont</li> - <li>break 'PresShell::RenderDocument(nsRect const&, unsigned int, unsigned int, gfxContext*)'</li> - <li>set print object on</li> - <li>set $x = <YOUR X VALUE></li> - <li>set $y = <YOUR Y VALUE></li> - <li>print &((cairo_image_surface_t*)aThebesContext->mDT.mRawPtr->mSurface).data[$y * ((cairo_image_surface_t*)aThebesContext->mDT.mRawPtr->mSurface).stride + $x * ((cairo_image_surface_t*)aThebesContext->mDT.mRawPtr->mSurface).depth / 8]</li> - <li> - <p>watch *(char*)<ADDRESS OF PREVIOUS COMMAND> (NOTE: If you set a watch on the previous expression gdb will watch the expression and run out of watchpoint)</p> - </li> -</ol> - -<h4 id="rr_with_emacs">rr with emacs</h4> - -<p>Within emacs, do <code>M-x gud-gdb</code> and replace the command line with <code>rr replay</code>. When gdb comes up, enter</p> - -<pre><code>set annot 1</code></pre> - -<p>to get it to emit file location information so that emacs will pop up the corresponding source. Note that if you <code>reverse-continue</code> over a SIGSEGV and you're using the standard .gdbinit that sets a catchpoint for that signal, you'll get an additional stop at the catchpoint. Just <code>reverse-continue</code> again to continue to your breakpoints or whatever.</p> - -<h3 id="Hack_Replacing_one_instruction">[Hack] Replacing one instruction</h3> - -<p>To replace one specific instruction, you can use in visit function of each instruction the JSScript <strong>filename</strong> in <strong>lineno</strong> fields as well as the <strong>id()</strong> of the LIR / MIR instructions. The JSScript can be obtained from <strong>info().script()</strong>.</p> - -<pre class="eval"><code>bool -CodeGeneratorX86Shared::visitGuardShape(LGuardShape *guard) -{ - if (info().script()->lineno == 16934 && guard->id() == 522) { - [… another impl only for this one …] - return true; - } - [… old impl …] -</code></pre> - -<h3 id="Hack_Spewing_all_compiled_code">[Hack] Spewing all compiled code</h3> - -<p>I usually just add this to the apropriate executableCopy.</p> - -<pre><span class="quote"> if (getenv("INST_DUMP")) { - char buf[4096]; - sprintf(buf, "gdb /proc/%d/exe %d -batch -ex 'set pagination off' -ex 'set arm force-mode arm' -ex 'x/%di %p' -ex 'set arm force-mode auto'", getpid(), getpid(), m_buffer.size() / 4, buffer); - system(buf); - }</span> - -</pre> - -<p>If you aren't running on arm, you should omit the -ex 'set arm force-mode arm' and -ex 'set arm force-mode auto'. And you should change the size()/4 to be something more apropriate for your architecture.</p> - -<h3 id="Benchmarking_with_sub-milliseconds_(JS_shell)">Benchmarking with sub-milliseconds (JS shell)</h3> - -<p>In the shell we have 2 simple ways to benchmark a script, we can either use the <strong>-b</strong> shell option (<strong>--print-timing</strong>) which will evaluate a script given on the command line without any need to instrument the benchmark and print an extra line showing the run-time of the script. The other way is to wrap the section that you want to measure with the <strong>dateNow()</strong> function call which returns the number of milliseconds, with a decimal part for sub-milliseconds.</p> - -<pre class="eval">js> dateNow() - dateNow() --0.0009765625<code> -</code></pre> - -<h3 id="Benchmarking_with_sub-milliseconds_(browser)">Benchmarking with sub-milliseconds (browser)</h3> - -<p>In a simillar way as <strong>dateNow()</strong> in the JS shell, you can use <strong>performance.now()</strong> in the JavaScript code of a page.</p> - -<h3 id="Dumping_the_JavaScript_heap">Dumping the JavaScript heap</h3> - -<p>From the shell, you can call the dumpHeap before Firefox function to dump out all GC things (reachable and unreachable) that are present in the heap. By default the function writes to stdout, but a filename can be specified as an argument.</p> - -<p>Example output might look as follows:</p> - -<pre class="eval"><code>0x1234abcd B global object -</code>========== -# zone 0x56789123 -# compartment http://gmail.com [in zone 0x56789123] -# compartment http://gmail.com/iframe [in zone 0x56789123] -# arena<code> allockind=3 size=64 -0x1234abcd B object -> 0x1234abcd B prop1 -> 0xabcd1234 W prop2 -0xabcd1234 W object -> 0xdeadbeef B prop3 -# arena allockind=5 size=72 -0xdeadbeef W object -> 0xabcd1234 W prop4 </code></pre> - -<p>The output is textual. The first section of the file contains a list of roots, one per line. Each root has the form "0xabcd1234 <color> <description>", where <color> is the color of the given GC thing (B for black, G for gray, W for white) and <description> is a string. The list of roots ends with a line containing "==========".</p> - -<p>After the roots come a series of zones. A zone starts with several "comment lines" that start with hashes. The first comment declares the zone. It is followed by lines listing each compartment within the zone. After all the compartments come arenas, which is where the GC things are actually stored. Each arena is followed by all the GC things in the arena. A GC thing starts with a line giving its address, its color, and the thing kind (object, function, whatever). After this come a list of addresses that the GC thing points to, each one starting with ">".</p> - -<p>It's also possible to dump the JavaScript heap from C++ code (or from gdb) using the js::DumpHeap function. It is part of jsfriendapi.h and it is available in release builds.</p> - -<h3 id="Inspecting_MIR_objects_within_a_debugger">Inspecting MIR objects within a debugger</h3> - -<p>For MIRGraph, MBasicBlock, and MDefinition and its subclasses (MInstruction, MConstant, etc.), call the dump member function.</p> - -<pre> (gdb) call graph->dump() - - (gdb) call block->dump() - - (gdb) call def->dump() - -</pre> - -<h3 id="Benchmarking_without_a_Phone">Benchmarking without a Phone</h3> - -<p>If you do not have a mobile device or prefer to test on your desktop first, you will need to downgrade your computer such as it is able to run programs as fast as-if they were running on a phone.</p> - -<p>On Linux, you can manage the resources available to one program by using cgroup, and to do you can install <strong>libcgroup</strong> which provides some convenient tools such as <strong>cgexec</strong> to wrap the program that you want to benchmark.</p> - -<p>The following list of commands is used to create 3 control groups. The top-level control group is just to group the <strong>mask</strong> and the <strong>negate-mask</strong>. The <strong>mask</strong> control group is used to run the program that we want to benchmark. The <strong>negate-mask</strong> control group is used to reserve resources which might be used by the other program if not reserved.</p> - -<pre> $ sudo cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks - $ cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks/mask - $ cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks/negate-mask -</pre> - -<p>Then we restrict programs of these groups to the first core of the CPU. This is a list of cpu, which means that we can allocate 2 cores by doing <strong>0-1</strong> instead of <strong>0</strong>.</p> - -<pre> $ cgset -r cpuset.cpus=0 /benchmarks - $ cgset -r cpuset.cpus=0 /benchmarks/mask - $ cgset -r cpuset.cpus=0 /benchmarks/negate-mask -</pre> - -<p>Then we restrict programs of these groups to the first memory node. Most of the time you will only have one, otherwise you should read what is the best setting to set here. If this is not set, you will have some error when you will try to write a pid in <strong>/sys/fs/cgroup/cpuset/benchmarks/mask/tasks</strong> while running <strong>cgexec</strong>.</p> - -<pre> $ cgset -r cpuset.mems=0 /benchmarks - $ cgset -r cpuset.mems=0 /benchmarks/mask - $ cgset -r cpuset.mems=0 /benchmarks/negate-mask -</pre> - -<p>Then we limit the performance of the CPU, as a proportion such as the result approximately correspond to what you might have if you were running on a phone. For example an Unagi is approximately 40 times slower than my computer. So I allocate <strong>1/40</strong> for the mask, and <strong>39/40</strong> for the negate-mask.</p> - -<pre> $ cgset -r cpu.shares=1 /benchmarks/mask - $ cgset -r cpu.shares=39 /benchmarks/negate-mask -</pre> - -<p>Then we limit the memory available, to what would be available on the phone. For example an Unagi you want to limit this to 512 MB. As there is no swap, on this device, we set the <strong>memsw</strong> (Memory+Swap) to the same value.</p> - -<pre> $ cgset -r memory.limit_in_bytes=$((512*1024*1024)) /benchmarks/mask - $ cgset -r memory.memsw.limit_in_bytes=$((512*1024*1024)) /benchmarks/mask -</pre> - -<p>And finally, we run the program that we want to benchmark after the one which is consuming resources. In case of the JS Shell we might also want to set the amount of memory available to change the GC settings as if we were running on a Firefox OS device.</p> - -<pre> $ cgexec -g 'cpuset,cpu,memory:/benchmarks/negate-mask' yes > /dev/null & - $ cgexec -g 'cpuset,cpu,memory:/benchmarks/mask' ./js --available-memory=512 ./run.js -</pre> - -<h3 id="How_to_debug_oomTest()_failures">How to debug oomTest() failures</h3> - -<p>The oomTest() function executes a piece of code many times, simulating an OOM failure at each successive allocation it makes. It's designed to highlight incorrect OOM handling and this may show up as a crash or assertion failure at some later point.</p> - -<p>When debugging such a crash the most useful thing is to locate the last simulated alloction failure, as it's usually this that has caused the subsequent crash.</p> - -<p>My workflow for doing this is as follows:</p> - -<ol> - <li>Build a version of the engine with <code>--enable-debug</code> and <code>--enable-oom-breakpoint</code> configure flags.</li> - <li>Set the environment variable <code>OOM_VERBOSE=1</code> and reproduce the failure. This will print an allocation count at each simulated failure. Note the count of the last allocation.</li> - <li>Run the engine under a debugger and set a breakpoint on the function <code>js_failedAllocBreakpoint</code>.</li> - <li>Run the program and continue the necessary number of times until you reach the final allocation. - <ul> - <li>e.g. in lldb, if the allocation failure number shown is 1500, run `continue -i 1498` (subtracted 2 because we've already hit it once and don't want to skip the last). Drop "-i" for gdb.</li> - </ul> - </li> - <li>Dump a backtrace. This should show you the point at which the OOM is incorrectly handled, which will be a few frames up from the breakpoint.</li> -</ol> - -<p>Note: if you are on linux it may be simpler to use rr.</p> - -<p>Some guidelines for handling OOM that lead to failures when they are not followed:</p> - -<ol> - <li>Check for allocation failure! - <ul> - <li>Fallible allocations should always must be checked and handled, at a minimum by returning a status indicating failure to the caller.</li> - </ul> - </li> - <li>Report OOM to the context if you have one - <ul> - <li>If a function has a <code>JSContext*</code> argument, usually it should call <code>js::ReportOutOfMemory(cx)</code> on allocation failure to report this to the context.</li> - </ul> - </li> - <li>Sometimes it's OK to ignore OOM - <ul> - <li>For example if you are performing a speculative optimisation you might abandon it and continue anyway. But in this case you may have to call cx->recoverFromOutOfMemory() if something further down the stack has already reported the failure.</li> - </ul> - </li> -</ol> - -<h3 id="Debugging_GC_markingrooting">Debugging GC marking/rooting</h3> - -<p>The <strong>js::debug</strong> namespace contains some functions that are useful for watching mark bits for an individual JSObject* (or any Cell*). <strong>js/src/gc/Heap.h</strong> contains a comment describing an example usage. Reproduced here:</p> - -<pre>// Sample usage from gdb: -// -// (gdb) p $word = js::debug::GetMarkWordAddress(obj) -// $1 = (uintptr_t *) 0x7fa56d5fe360 -// (gdb) p/x $mask = js::debug::GetMarkMask(obj, js::gc::GRAY) -// $2 = 0x200000000 -// (gdb) watch *$word -// Hardware watchpoint 7: *$word -// (gdb) cond 7 *$word & $mask -// (gdb) cont -// -// Note that this is *not* a watchpoint on a single bit. It is a watchpoint on -// the whole word, which will trigger whenever the word changes and the -// selected bit is set after the change. -// -// So if the bit changing is the desired one, this is exactly what you want. -// But if a different bit changes (either set or cleared), you may still stop -// execution if the $mask bit happened to already be set. gdb does not expose -// enough information to restrict the watchpoint to just a single bit. -</pre> - -<p>Most of the time, you will want <strong>js::gc::BLACK</strong> (or you can just use 0) for the 2nd param to <strong>js::debug::GetMarkMask</strong>.</p> diff --git a/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html b/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html deleted file mode 100644 index 7b623d6cbd..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html +++ /dev/null @@ -1,474 +0,0 @@ ---- -title: JavaScript エンジンを埋め込む方法 -slug: Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine -tags: - - Embedding Mozilla - - JavaScript - - SpiderMonkey - - チュートリアル -translation_of: Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine ---- -<div>{{SpiderMonkeySidebar("General")}}</div> - -<p>特により良いコードの例として <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide" title="En/SpiderMonkey/JSAPI_User_Guide">JSAPI User Guide</a> も参照して下さい。</p> - -<h2 id="A_Bare_Bones_Tutorial" name="A_Bare_Bones_Tutorial">チュートリアル要点</h2> - -<h3 id="Hello_World_サンプル組み込みアプリケーション">Hello World サンプル組み込みアプリケーション</h3> - -<p>次のコードは、SpiderMonkey を埋め込んで単純な JavaScript スクリプトを実行する方法を示す非常に単純なアプリケーションです。下のコードのサンプルをビルドして実行するための手順を参照してください。</p> - -<p>コードは SpiderMonkey のバージョンごとに異なりますので、SpiderMonkey の正しいバージョンを選択してください。</p> - -<h4 id="SpiderMonkey_24">SpiderMonkey 24</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span> -<span class="comment token">// #define __STDC_LIMIT_MACROS</span> -<span class="comment token">// #include <stdint.h></span> -#include <span class="string token">"jsapi.h"</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - JS_PropertyStub<span class="punctuation token">,</span> - JS_DeletePropertyStub<span class="punctuation token">,</span> - JS_PropertyStub<span class="punctuation token">,</span> - JS_StrictPropertyStub<span class="punctuation token">,</span> - JS_EnumerateStub<span class="punctuation token">,</span> - JS_ResolveStub<span class="punctuation token">,</span> - JS_ConvertStub<span class="punctuation token">,</span> -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">,</span> JS_USE_HELPER_THREADS<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> <span class="function token">JS_EvaluateScript</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> filename<span class="punctuation token">,</span> lineno<span class="punctuation token">,</span> rval<span class="punctuation token">.</span><span class="function token">address</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h4 id="SpiderMonkey_31">SpiderMonkey 31</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span> -<span class="comment token">// #define __STDC_LIMIT_MACROS</span> -<span class="comment token">// #include <stdint.h></span> -#include <span class="string token">"jsapi.h"</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - JS_PropertyStub<span class="punctuation token">,</span> - JS_DeletePropertyStub<span class="punctuation token">,</span> - JS_PropertyStub<span class="punctuation token">,</span> - JS_StrictPropertyStub<span class="punctuation token">,</span> - JS_EnumerateStub<span class="punctuation token">,</span> - JS_ResolveStub<span class="punctuation token">,</span> - JS_ConvertStub<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - JS_GlobalObjectTraceHook -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - - JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">,</span> JS_USE_HELPER_THREADS<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> <span class="function token">JS_EvaluateScript</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> filename<span class="punctuation token">,</span> lineno<span class="punctuation token">,</span> <span class="operator token">&</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h4 id="SpiderMonkey_38">SpiderMonkey 38</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span> -<span class="comment token">// #define __STDC_LIMIT_MACROS</span> -<span class="comment token">// #include <stdint.h></span> -#include <span class="string token">"jsapi.h"</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - JS_GlobalObjectTraceHook -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - - JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h4 id="SpiderMonkey_45">SpiderMonkey 45</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span> -<span class="comment token">// #define __STDC_LIMIT_MACROS</span> -<span class="comment token">// #include <stdint.h></span> -#include <span class="string token">"jsapi.h"</span> -#include <span class="string token">"js/Initialization.h"</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - JS_GlobalObjectTraceHook -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - - JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h4 id="SpiderMonkey_52">SpiderMonkey 52</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp">#include <span class="string token">"jsapi.h"</span> -#include <span class="string token">"js/Initialization.h"</span> - -static JSClassOps global_ops <span class="operator token">=</span> <span class="punctuation token">{</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - JS_GlobalObjectTraceHook -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - <span class="operator token">&</span>global_ops -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">InitSelfHostedCode</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompartmentOptions options<span class="punctuation token">;</span> - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">,</span> options<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h3 id="Hello_Worldの例のビルドと実行">Hello Worldの例のビルドと実行</h3> - -<div> -<p>ビルドコマンドラインは OS とツールに依存します。Mac と Linux のコマンドラインのサンプルを次に示します (<code><objdir></code> は SpiderMonkey がビルドされたディレクトリです)。</p> - -<pre class="line-numbers language-html"><code class="language-html"># </code>SpiderMonkey のデバッグビルドを使用している場合は、以下のコマンドに加えて -DDEBUG が必要です。<code class="language-html"> -# </code>SpiderMonkey 31 以外のバージョンを使用している場合は、-lmozjs-XX を自分のバージョンに変更してください。<code class="language-html"> - -[Mac] -clang++ -std=c++11 -I<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>objdir</span><span class="punctuation token">></span></span>/dist/include -L<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>objdir</span><span class="punctuation token">></span></span>/dist/lib helloworld.cpp -o helloworld -lmozjs-31 -lz -[Linux] -g++ -std=c++11 -I<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>objdir</span><span class="punctuation token">></span></span>/dist/include -L<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>objdir</span><span class="punctuation token">></span></span>/dist/lib helloworld.cpp -o helloworld -lmozjs-31 -lz -lpthread -ldl</code></pre> - -<p><code>"helloworld, it is TIME"</code> と表示されます (ここでは TIME が現在の時刻です)。</p> - -<ol> - <li>Make sure the build computer has the prerequisites for building SpiderMonkey: <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Linux_Prerequisites" title="Linux Prerequisites">Linux</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites" title="Windows build prerequisites">Windows</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Mac_OS_X_Prerequisites" title="Mac OS X Build Prerequisites">Mac OS X</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions" title="Build Instructions">others</a>. For Windows, the following steps will assume that you have installed the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites" title="MozillaBuild">MozillaBuild</a> package.</li> - <li>Get the SpiderMonkey source code. You can <a href="http://ftp.mozilla.org/pub/mozilla.org/js/" title="http://ftp.mozilla.org/pub/mozilla.org/js/">download a source archive</a> or use Mercurial (hg) to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code#Getting_the_latest_SpiderMonkey_source_code" title="Getting the latest SpiderMonkey source code">pull the SpiderMonkey repository</a>. On Windows, do not install the SpiderMonkey source code under the MSYS root directory (which is usually c:\mozilla-build\msys). Instead use something like c:\mozjs-31.2.0</li> - <li>Compile SpiderMonkey using the build instructions at <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation" title="Build Documentation">SpiderMonkey Build Documentation</a>. By default this will build a SpiderMonkey shared library that you will link into your application in a later step.</li> - <li>Copy the code example above into a text editor and save the file as helloworld.cpp in the SpiderMonkey js\src directory. To get a copy of the code sample without line numbers, hover over the sample near the top until buttons appear. Then click the view source button, and copy the code from the window that appears.</li> - <li>Compile the helloworld application and link to the SpiderMonkey library.</li> - <li>Run the helloworld executable at the command line: - <pre class="line-numbers language-html"><code class="language-html">./helloworld</code></pre> - </li> -</ol> -</div> - -<h3 id="JavaScript_から_C_関数の呼び出し方">JavaScript から C 関数の呼び出し方</h3> - -<p><code>doit</code> という名前のC関数について言及します。これは呼び出されるときに少なくとも二つの実際のパラメータを使います。(もし呼びだし元がより少ないパラメータを使う場合、JSエンジンは無くなった一つの変数に対して未定義の変数が渡される事を確認すべきです):</p> - -<pre class="eval">#define DOIT_MINARGS 2 - -static JSBool -doit(JSContext *cx, unsigned argc, jsval *vp) -{ -<span id="the-code"><a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=jsval"> jsval</a> *<a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=argv">argv</a> = <a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=JS_ARGV">JS_ARGV</a>(<a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=cx">cx</a>, <a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=vp">vp</a>);</span> - /* - * Look in argv for argc actual parameters, set *rval to return a - * value to the caller. - */ - ... -} -</pre> - -<p>そして、以下のようにコーディングし、JSに渡します:</p> - -<pre class="eval">ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction">JS_DefineFunction</a>(cx, global, "doit", doit, DOIT_MINARGS, 0); -</pre> - -<p>または、ネイティブな関数群として定義するならば、おそらくそれらをテーブルの中に置き、関数テーブルとして定義するでしょう:</p> - -<pre class="eval">static <a href="/En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a> my_functions[] = { - {"doit", doit, DOIT_MINARGS, 0, 0}, - etc... - {0,0,0,0,0}, -}; -</pre> - -<p>(最終的に、すべてのNULL 関数はテーブルを終端します)そして、以下のようにします:</p> - -<pre class="eval">ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions">JS_DefineFunctions</a>(cx, global, my_functions); -</pre> - -<h3 id="C_から_JavaScript_の関数の呼び出し方">C から JavaScript の関数の呼び出し方</h3> - -<p>クリックイベントを最上位の UI から座標 (x,y) の UI 要素に焦点をあてます:</p> - -<pre class="eval">JSObject *target, *event; -jsval argv[1], rval; - -/* - * Find event target and make event object to represent this click. - * Pass cx to NewEventObject so JS_NewObject can be called. - */ -target = FindEventTargetAt(cx, global, x, y); -event = NewEventObject(cx, "click", x, y); -argv[0] = <a href="/en/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a>(event); - -/* To emulate the DOM, you might want to try "onclick" too. */ -ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, target, "onClick", 1, argv, &rval); - -/* Now test rval to see whether we should cancel the event. */ -if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a>(rval) && !<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a>(rval)) - CancelEvent(event); -</pre> - -<p>繰り返しますが、ここではエラーチェックは無視しています。(関数呼び出し後の 戻り値 !ok のテストような)、いくつかのCのイベント管理処理やハンドラーが偽値を返したときのイベントをキャンセルする場合のDOMの伝統的なやり方を適切にエミュレートするために疑似コードを用いています。</p> - -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - -<ul> - <li>Author: Brendan Eich</li> - <li>Last Updated Date: 21 February, 2000</li> -</ul> -</div> diff --git a/files/ja/mozilla/projects/spidermonkey/index.html b/files/ja/mozilla/projects/spidermonkey/index.html deleted file mode 100644 index e285c49690..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: SpiderMonkey -slug: Mozilla/Projects/SpiderMonkey -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey ---- -<div>{{SpiderMonkeySidebar}}</div> - -<p class="summary"><strong>SpiderMonkey</strong> は 、C / C++ で書かれた <a href="/ja/docs/Web/JavaScript">JavaScript</a> エンジンです。Firefoxを含む、Mozillaの複数の製品で使用されており、MPL2 ライセンスの下で利用できます。</p> - -<p>独立したソースコードリリースは、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases">リリースページ</a>にあります。</p> - -<div class="topicpage-table"> -<div class="section"> -<h2 id="ガイド">ガイド</h2> - -<h3 id="ビルド">ビルド</h3> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">SpiderMonkey のビルド手順</a></dt> - <dd>SpiderMonkey をビルドしてテストスイートを実行する方法について。</dd> -</dl> - -<h3 id="SpiderMonkey_の利用">SpiderMonkey の利用</h3> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">JavaScript シェルの手引き</a></dt> - <dd>JavaScript シェルの取得、構築、利用方法について。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide">JSAPI ユーザガイド</a></dt> - <dd>このガイドでは、SpiderMonkey の概要と、あなたのアプリケーションを JavaScript 対応にするため、アプリケーションから組み込んだエンジンを呼び出す方法について説明します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook">JSAPI クックブック</a></dt> - <dd>よく使われる JavaScript の式や文の JSAPI 表現を解説します。</dd> - <dt><a href="/ja/docs/SpiderMonkey/GC_Rooting_Guide">GC ルーティングガイド</a></dt> - <dd>SpiderMonkey の世代別 GC に対応したコードの書き方を解説します。</dd> - <dt><a href="/ja/docs/How_to_embed_the_JavaScript_engine">JavaScript エンジンの埋め込み方</a></dt> - <dd>SpiderMonkey の埋め込み方の古い解説です。</dd> -</dl> - -<h2 id="SpiderMonkey_のハック">SpiderMonkey のハック</h2> - -<dl> - <dt><a href="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey">SpiderMonkey 入門</a></dt> - <dd>SpiderMonkey をハックするためのガイド。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Setting_up_CDT_to_work_on_SpiderMonkey">SpiderMonkey 開発のための CDT 設定</a></dt> - <dd>SpiderMonkey を開発するための Eclipse 設定手順を解説します。</dd> - <dt><a href="http://blog.cdleary.com/2011/11/contributing-to-spidermonkey/">SpiderMonkey に貢献するには</a></dt> - <dd>4 分弱のスライドキャストです。</dd> -</dl> - -<dl> - <dt><a href="/ja/docs/SpiderMonkey/Running_Automated_JavaScript_Tests">JavaScript テストの自動実行</a></dt> - <dd>JavaScript テストスイートの自動実行方法について解説します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests">JavaScript のテストを作成する</a></dt> - <dd>JavaScript テストスイートに対するテストの追加方法を解説します。</dd> -</dl> -</div> - -<div class="section"> -<h2 id="リファレンス">リファレンス</h2> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference">JSAPI レファレンス</a></dt> - <dd>SpiderMonkey の API レファレンスです。</dd> - <dt><a href="/ja/docs/SpiderMonkey/JS_Debugger_API_Reference">JS Debugger API レファレンス</a></dt> - <dd>Gecko 8.0 {{GeckoRelease("8.0")}} と同時にリリースされた SpiderMonkey 1.8.6 で導入された、<code>Debugger</code> オブジェクトの API について解説します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode">バイトコードの解説</a></dt> - <dd>SpiderMonkey が利用するバイトコードのリストです。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Parser_API">Parser API</a></dt> - <dd>SpiderMonkey の持つ構文解析器と、JavaScript API からの利用方法を解説しています。</dd> -</dl> - -<h2 id="TIPS、トリック、哲学">TIPS、トリック、哲学</h2> - -<dl> - <dt><a href="/ja/docs/SpiderMonkey/Future_directions">今後の方針</a></dt> - <dd>機能、設計、コーディングにおける今後の方針を述べています。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Internals">SpiderMonkey の内部構造</a></dt> - <dd>設計の概要と、ファイル単位での実装の解説です。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Bytecodes">バイトコードのレファレンス</a></dt> - <dd>SpiderMonkey の使用するバイトコードのレファレンスです。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Internals/Garbage_collection">SpiderMonkey の内部構造: GC</a></dt> - <dd>GC の内部構造を解説します。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Hacking_Tips">SpiderMonkey の内部構造: ハックのための TIPS </a></dt> - <dd>SpiderMonkey をハックするために有用なツールと TIPS がまとめられています。</dd> -</dl> - -<h2 id="関連項目">関連項目</h2> - -<ul> - <li><a href="/ja/docs/Web/JavaScript">JavaScript</a></li> - <li><a href="/ja/docs/SpiderMonkey/FOSS">SpiderMonkey を利用した FOSS プロジェクト</a></li> -</ul> - -<h2 id="リリースノート">リリースノート</h2> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases">SpiderMonkey リリースノート</a></dt> - <dd>現在のリリースと、次にあげる過去のリリースに対するリリースノートがまとめられています:<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/52">52</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/45">45</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/38">38</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/31">31</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/24">24</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/17">17</a></dd> -</dl> -</div> -</div> diff --git a/files/ja/mozilla/projects/spidermonkey/index/index.html b/files/ja/mozilla/projects/spidermonkey/index/index.html deleted file mode 100644 index f59feeeb07..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/index/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Index -slug: Mozilla/Projects/SpiderMonkey/Index -tags: - - Index - - MDN Meta - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Index ---- -<p>{{Index("/ja/docs/Mozilla/Projects/SpiderMonkey")}}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html b/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html deleted file mode 100644 index f4e65a7748..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html +++ /dev/null @@ -1,6855 +0,0 @@ ---- -title: バイトコードの説明 -slug: Mozilla/Projects/SpiderMonkey/Internals/Bytecode -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Internals/Bytecode ---- -<div>{{SpiderMonkeySidebar("Internals")}}</div> - -<h2 id="バイトコード一覧">バイトコード一覧</h2> - -<p>この文書は <a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/make_opcode_doc.py">make_opcode_doc.py</a> によって <a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/Opcodes.h">Opcodes.h</a> から自動的に生成されます。</p> - -<h3 id="ステートメント">ステートメント</h3> - -<h4 id="Jumps">Jumps</h4> - -<dl> - <dt id="JSOP_AND">JSOP_AND [-1, +1] (JUMP, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>69 (0x45)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>cond</code></td> - </tr> - </tbody> - </table> - - <p>スタックの先頭の値をブール値に変換し、結果が <code>false</code> の場合、現在のバイトコードから 32-bit のオフセットにジャンプします。</p> - </dd> - <dt id="JSOP_GOTO">JSOP_GOTO [-0, +0] (JUMP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>6 (0x06)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>現在のバイトコードから 32-bit のオフセットにジャンプします。</p> - </dd> - <dt id="JSOP_IFEQ">JSOP_IFEQ [-1, +0] (JUMP, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>7 (0x07)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, converts it into a boolean, if the result is <code>false</code>, jumps to a 32-bit offset from the current bytecode.</p> - - <p>The idea is that a sequence like <code>JSOP_ZERO</code>; <code>JSOP_ZERO</code>; <code>JSOP_EQ</code>; <code>JSOP_IFEQ</code>; <code>JSOP_RETURN</code>; reads like a nice linear sequence that will execute the return.</p> - </dd> - <dt id="JSOP_IFNE">JSOP_IFNE [-1, +0] (JUMP, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>8 (0x08)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, converts it into a boolean, if the result is <code>true</code>, jumps to a 32-bit offset from the current bytecode.</p> - </dd> - <dt id="JSOP_LABEL">JSOP_LABEL [-0, +0] (CODE_OFFSET)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>106 (0x6a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode precedes every labeled statement. It's a no-op.</p> - - <p><code>offset</code> is the offset to the next instruction after this statement, the one <code>break LABEL;</code> would jump to. IonMonkey uses this.</p> - </dd> - <dt id="JSOP_LOOPENTRY">JSOP_LOOPENTRY [-0, +0] (LOOPENTRY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>227 (0xe3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t icIndex, uint8_t BITFIELD</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>6</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode is the target of the entry jump for some loop. The uint8 argument is a bitfield. The lower 7 bits of the argument indicate the loop depth. This value starts at 1 and is just a hint: deeply nested loops all have the same value. The upper bit is set if Ion should be able to OSR at this point, which is true unless there is non-loop state on the stack. See <code>JSOP_JUMPTARGET</code> for the icIndex argument.</p> - </dd> - <dt id="JSOP_LOOPHEAD">JSOP_LOOPHEAD [-0, +0] (ICINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>109 (0x6d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t icIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Another no-op.</p> - - <p>This opcode is the target of the backwards jump for some loop. See <code>JSOP_JUMPTARGET</code> for the icIndex operand.</p> - </dd> - <dt id="JSOP_OR">JSOP_OR [-1, +1] (JUMP, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>68 (0x44)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>cond</code></td> - </tr> - </tbody> - </table> - - <p>Converts the top of stack value into a boolean, if the result is <code>true</code>, jumps to a 32-bit offset from the current bytecode.</p> - </dd> -</dl> - -<h4 id="Switch_Statement">Switch Statement</h4> - -<dl> - <dt id="JSOP_CASE">JSOP_CASE [-2, +1] (JUMP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>121 (0x79)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val, cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val(if !cond)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>cond</code>. If <code>cond</code> is <code>true</code>, jumps to a 32-bit offset from the current bytecode, re-pushes <code>val</code> onto the stack if <code>false</code>.</p> - </dd> - <dt id="JSOP_CONDSWITCH">JSOP_CONDSWITCH [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>120 (0x78)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This no-op appears after the bytecode for EXPR in <code>switch (EXPR) {...}</code> if the switch cannot be optimized using <code>JSOP_TABLESWITCH</code>.</p> - - <p>For a non-optimized switch statement like this:</p> - - <pre class="notranslate"> switch (EXPR) { - case V0: - C0; - ... - default: - D; - } -</pre> - - <p>the bytecode looks like this:</p> - - <pre class="notranslate"> (EXPR) - condswitch - (V0) - case ->C0 - ... - default ->D - (C0) - ... - (D) -</pre> - - <p>Note that code for all case-labels is emitted first, then code for the body of each case clause.</p> - </dd> - <dt id="JSOP_DEFAULT">JSOP_DEFAULT [-1, +0] (JUMP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>122 (0x7a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This appears after all cases in a <code>JSOP_CONDSWITCH</code>, whether there is a <code>default:</code> label in the switch statement or not. Pop the switch operand from the stack and jump to a 32-bit offset from the current bytecode. offset from the current bytecode.</p> - </dd> - <dt id="JSOP_TABLESWITCH">JSOP_TABLESWITCH [-1, +0] (TABLESWITCH, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>70 (0x46)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t len, int32_t low, int32_t high,uint24_t firstResumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>len</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>i</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>i</code>, if <code>low <= i <= high</code>, jumps to a 32-bit offset: offset is stored in the script's resumeOffsets</p> - - <pre class="notranslate"> list at index 'firstResumeIndex + (i - low)' -</pre> - - <p>jumps to a 32-bit offset: <code>len</code> from the current bytecode otherwise</p> - </dd> -</dl> - -<h4 id="For-In_Statement">For-In Statement</h4> - -<dl> - <dt id="JSOP_ENDITER">JSOP_ENDITER [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>78 (0x4e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>iter</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Exits a for-in loop by popping the iterator object from the stack and closing it.</p> - </dd> - <dt id="JSOP_ISGENCLOSING">JSOP_ISGENCLOSING [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>187 (0xbb)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val, res</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a boolean indicating whether the top of the stack is MagicValue(<code>JS_GENERATOR_CLOSING</code>).</p> - </dd> - <dt id="JSOP_ISNOITER">JSOP_ISNOITER [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>77 (0x4d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val, res</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a boolean indicating whether the value on top of the stack is MagicValue(<code>JS_NO_ITER_VALUE</code>).</p> - </dd> - <dt id="JSOP_ITER">JSOP_ITER [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>75 (0x4b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>iter</code></td> - </tr> - </tbody> - </table> - - <p>Sets up a for-in loop. It pops the top of stack value as <code>val</code> and pushes <code>iter</code> which is an iterator for <code>val</code>.</p> - </dd> - <dt id="JSOP_MOREITER">JSOP_MOREITER [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>76 (0x4c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>iter</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>iter, val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the next iterated value onto the stack. If no value is available, MagicValue(<code>JS_NO_ITER_VALUE</code>) is pushed.</p> - </dd> -</dl> - -<h4 id="With_Statement">With Statement</h4> - -<dl> - <dt id="JSOP_ENTERWITH">JSOP_ENTERWITH [-1, +0] (SCOPE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>3 (0x03)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t staticWithIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, converts it to an object, and adds a <code>WithEnvironmentObject</code> wrapping that object to the environment chain.</p> - - <p>There is a matching <code>JSOP_LEAVEWITH</code> instruction later. All name lookups between the two that may need to consult the With object are deoptimized.</p> - </dd> - <dt id="JSOP_LEAVEWITH">JSOP_LEAVEWITH [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>4 (0x04)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the environment chain object pushed by <code>JSOP_ENTERWITH</code>.</p> - </dd> -</dl> - -<h4 id="Exception_Handling">Exception Handling</h4> - -<dl> - <dt id="JSOP_EXCEPTION">JSOP_EXCEPTION [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>118 (0x76)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>exception</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the current pending exception onto the stack and clears the pending exception. This is only emitted at the beginning of code for a catch-block, so it is known that an exception is pending. It is used to implement catch-blocks and <code>yield*</code>.</p> - </dd> - <dt id="JSOP_FINALLY">JSOP_FINALLY [-0, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>135 (0x87)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>false, resumeIndex</code></td> - </tr> - </tbody> - </table> - - <p>This opcode has a def count of 2, but these values are already on the stack (they're pushed by <code>JSOP_GOSUB</code>).</p> - </dd> - <dt id="JSOP_GOSUB">JSOP_GOSUB [-2, +0] (JUMP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>116 (0x74)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>false, resumeIndex</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode is used for entering a <code>finally</code> block. Jumps to a 32-bit offset from the current pc.</p> - - <p>Note: this op doesn't actually push/pop any values, but it has a use count of 2 (for the <code>false</code> + resumeIndex values pushed by preceding bytecode ops) because the <code>finally</code> entry point does not expect these values on the stack. See also <code>JSOP_FINALLY</code> (it has a def count of 2).</p> - - <p>When the execution resumes from <code>finally</code> block, those stack values are popped.</p> - </dd> - <dt id="JSOP_RETSUB">JSOP_RETSUB [-2, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>117 (0x75)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode is used for returning from a <code>finally</code> block.</p> - - <p>Pops the top two values on the stack as <code>rval</code> and <code>lval</code>. Then: - If <code>lval</code> is true, throws <code>rval</code>. - If <code>lval</code> is false, jumps to the resumeIndex stored in <code>lval</code>.</p> - </dd> - <dt id="JSOP_THROW">JSOP_THROW [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>112 (0x70)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>v</code>, sets pending exception as <code>v</code>, then raises error.</p> - </dd> - <dt id="JSOP_THROWMSG">JSOP_THROWMSG [-0, +0] (UINT16)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>74 (0x4a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t msgNumber</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Sometimes we know when emitting that an operation will always throw.</p> - - <p>Throws the indicated <code>JSMSG</code>.</p> - </dd> - <dt id="JSOP_TRY">JSOP_TRY [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>134 (0x86)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This no-op appears at the top of the bytecode for a <code>TryStatement</code>.</p> - - <p>Location information for catch/finally blocks is stored in a side table, <code>script->trynotes()</code>.</p> - </dd> -</dl> - -<h4 id="Function">Function</h4> - -<dl> - <dt id="JSOP_CALL">JSOP_CALL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>58 (0x3a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_CALLITER">JSOP_CALLITER [-2, +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>145 (0x91)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc (must be 0)</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Like <code>JSOP_CALL</code>, but used as part of for-of and destructuring bytecode to provide better error messages.</p> - </dd> - <dt id="JSOP_CALL_IGNORES_RV">JSOP_CALL_IGNORES_RV [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>231 (0xe7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Like <code>JSOP_CALL</code>, but tells the function that the return value is ignored. stack.</p> - </dd> - <dt id="JSOP_CHECKISCALLABLE">JSOP_CHECKISCALLABLE [-1, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>219 (0xdb)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t kind</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Checks that the top value on the stack is callable, and throws a TypeError if not. The operand <code>kind</code> is used only to generate an appropriate error message.</p> - </dd> - <dt id="JSOP_EVAL">JSOP_EVAL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>123 (0x7b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>eval</code> with <code>args</code> and pushes return value onto the stack.</p> - - <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_FUNAPPLY">JSOP_FUNAPPLY [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>79 (0x4f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p> - - <p>This is for <code>f.apply</code>.</p> - </dd> - <dt id="JSOP_FUNCALL">JSOP_FUNCALL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>108 (0x6c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p> - - <p>If <code>callee</code> is determined to be the canonical <code>Function.prototype.call</code> function, then this operation is optimized to directly call <code>callee</code> with <code>args[0]</code> as <code>this</code>, and the remaining arguments as formal args to <code>callee</code>.</p> - - <p>Like <code>JSOP_FUNAPPLY</code> but for <code>f.call</code> instead of <code>f.apply</code>.</p> - </dd> - <dt id="JSOP_FUNWITHPROTO">JSOP_FUNWITHPROTO [-1, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>52 (0x34)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t funcIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>proto</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a clone of a function with a given [[Prototype]] onto the stack.</p> - </dd> - <dt id="JSOP_GETRVAL">JSOP_GETRVAL [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>2 (0x02)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Pushes stack frame's <code>rval</code> onto the stack.</p> - </dd> - <dt id="JSOP_LAMBDA">JSOP_LAMBDA [-0, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>130 (0x82)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t funcIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a closure for a named or anonymous function expression onto the stack.</p> - </dd> - <dt id="JSOP_LAMBDA_ARROW">JSOP_LAMBDA_ARROW [-1, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>131 (0x83)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t funcIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>new.target</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>new.target</code>, pushes an arrow function with lexical <code>new.target</code> onto the stack.</p> - </dd> - <dt id="JSOP_NEW">JSOP_NEW [-(argc+3), +1] (ARGC, INVOKE, TYPESET, IC, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>82 (0x52)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1], newTarget</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>callee</code> as a constructor with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_OPTIMIZE_SPREADCALL">JSOP_OPTIMIZE_SPREADCALL [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>178 (0xb2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>arr</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>arr, optimized</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top stack value, pushes the value and a boolean value that indicates whether the spread operation for the value can be optimized in spread call.</p> - </dd> - <dt id="JSOP_RETRVAL">JSOP_RETRVAL [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>153 (0x99)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Stops interpretation and returns value set by <code>JSOP_SETRVAL</code>. When not set, returns <code>undefined</code>.</p> - - <p>Also emitted at end of script so interpreter don't need to check if opcode is still in script range.</p> - </dd> - <dt id="JSOP_RETURN">JSOP_RETURN [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>5 (0x05)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>rval</code>, stops interpretation of current script and returns <code>rval</code>.</p> - </dd> - <dt id="JSOP_SETFUNNAME">JSOP_SETFUNNAME [-2, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>182 (0xb6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t prefixKind</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>fun, name</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>fun</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>name</code> and <code>fun</code>, defines the name of <code>fun</code> to <code>name</code> with prefix if any, and pushes <code>fun</code> back onto the stack.</p> - </dd> - <dt id="JSOP_SETRVAL">JSOP_SETRVAL [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>152 (0x98)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>rval</code>, sets the return value in stack frame as <code>rval</code>.</p> - </dd> - <dt id="JSOP_SPREADCALL">JSOP_SPREADCALL [-3, +1] (INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>41 (0x29)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_CALL</code>.</p> - - <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes the return value onto the stack.</p> - - <p><code>args</code> is an Array object which contains actual arguments.</p> - </dd> - <dt id="JSOP_SPREADEVAL">JSOP_SPREADEVAL [-3, +1] (INVOKE, TYPESET, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>43 (0x2b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_EVAL</code></p> - - <p>Invokes <code>eval</code> with <code>args</code> and pushes the return value onto the stack.</p> - - <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_SPREADNEW">JSOP_SPREADNEW [-4, +1] (INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>42 (0x2a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args, newTarget</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_NEW</code></p> - - <p>Invokes <code>callee</code> as a constructor with <code>this</code> and <code>args</code>, pushes the return value onto the stack.</p> - </dd> - <dt id="JSOP_SPREADSUPERCALL">JSOP_SPREADSUPERCALL [-4, +1] (INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>166 (0xa6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args, newTarget</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_SUPERCALL</code>.</p> - - <p>Behaves exactly like <code>JSOP_SPREADNEW</code>.</p> - </dd> - <dt id="JSOP_STRICTEVAL">JSOP_STRICTEVAL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>124 (0x7c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>eval</code> with <code>args</code> and pushes return value onto the stack.</p> - - <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_STRICTSPREADEVAL">JSOP_STRICTSPREADEVAL [-3, +1] (INVOKE, TYPESET, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>50 (0x32)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_EVAL</code></p> - - <p>Invokes <code>eval</code> with <code>args</code> and pushes the return value onto the stack.</p> - - <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_SUPERCALL">JSOP_SUPERCALL [-(argc+3), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>165 (0xa5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1], newTarget</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Behaves exactly like <code>JSOP_NEW</code>, but allows JITs to distinguish the two cases.</p> - </dd> - <dt id="JSOP_TRYSKIPAWAIT">JSOP_TRYSKIPAWAIT [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>223 (0xdf)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>value</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>value_or_resolved, canskip</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>value</code>, checks if the await for <code>value</code> can be skipped. If the await operation can be skipped and the resolution value for <code>value</code> can be acquired, pushes the resolution value and <code>true</code> onto the stack. Otherwise, pushes <code>value</code> and <code>false</code> on the stack.</p> - </dd> -</dl> - -<h4 id="Generator">Generator</h4> - -<dl> - <dt id="JSOP_ASYNCAWAIT">JSOP_ASYNCAWAIT [-2, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>151 (0x97)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>value, gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>promise</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>value</code> and <code>gen</code> from the stack, then starts "awaiting" for <code>value</code> to be resolved, which will then resume the execution of <code>gen</code>. Pushes the async function promise on the stack, so that it'll be returned to the caller on the very first "await".</p> - </dd> - <dt id="JSOP_ASYNCRESOLVE">JSOP_ASYNCRESOLVE [-2, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>192 (0xc0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t fulfillOrReject</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>valueOrReason, gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>promise</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>valueOrReason</code> and <code>gen</code> from the stack, then pushes the promise resolved with <code>valueOrReason</code>. `gen` must be the internal generator object created in async functions. The pushed promise is the async function's result promise, which is stored in `gen`.</p> - </dd> - <dt id="JSOP_AWAIT">JSOP_AWAIT [-2, +1] (RESUMEINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>209 (0xd1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t resumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>promise, gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>resolved</code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator and the return value <code>promise</code>, stops interpretation and returns <code>promise</code>. Pushes resolved value onto the stack.</p> - </dd> - <dt id="JSOP_CHECKISOBJ">JSOP_CHECKISOBJ [-1, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>14 (0x0e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t kind</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>result</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>result</code></td> - </tr> - </tbody> - </table> - - <p>Checks that the top value on the stack is an object, and throws a TypeError if not. The operand <code>kind</code> is used only to generate an appropriate error message.</p> - </dd> - <dt id="JSOP_FINALYIELDRVAL">JSOP_FINALYIELDRVAL [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>204 (0xcc)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator and suspends and closes it. Yields the value in the frame's return value slot.</p> - </dd> - <dt id="JSOP_GENERATOR">JSOP_GENERATOR [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>212 (0xd4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>generator</code></td> - </tr> - </tbody> - </table> - - <p>Initializes generator frame, creates a generator and pushes it on the stack.</p> - </dd> - <dt id="JSOP_INITIALYIELD">JSOP_INITIALYIELD [-1, +1] (RESUMEINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>202 (0xca)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t resumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>generator</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>generator</code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator from the top of the stack, suspends it and stops interpretation.</p> - </dd> - <dt id="JSOP_RESUME">JSOP_RESUME [-2, +1] (UINT8, INVOKE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>205 (0xcd)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>resume kind (AbstractGeneratorObject::ResumeKind)</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>gen, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator and argument from the stack, pushes a new generator frame and resumes execution of it. Pushes the return value after the generator yields.</p> - </dd> - <dt id="JSOP_TOASYNCITER">JSOP_TOASYNCITER [-2, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>210 (0xd2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>iter, next</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>asynciter</code></td> - </tr> - </tbody> - </table> - - <p>Pops the iterator and its next method from the top of the stack, and create async iterator from it and push the async iterator back onto the stack.</p> - </dd> - <dt id="JSOP_YIELD">JSOP_YIELD [-2, +1] (RESUMEINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>203 (0xcb)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t resumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>rval1, gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval2</code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator and the return value <code>rval1</code>, stops interpretation and returns <code>rval1</code>. Pushes sent value from <code>send()</code> onto the stack.</p> - </dd> -</dl> - -<h4 id="Debugger">Debugger</h4> - -<dl> - <dt id="JSOP_DEBUGGER">JSOP_DEBUGGER [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>115 (0x73)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Invokes debugger.</p> - </dd> - <dt id="JSOP_DEBUGLEAVELEXICALENV">JSOP_DEBUGLEAVELEXICALENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>201 (0xc9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>The opcode to assist the debugger.</p> - </dd> -</dl> - -<h3 id="Variables_and_Scopes">Variables and Scopes</h3> - -<h4 id="Variables">Variables</h4> - -<dl> - <dt id="JSOP_BINDNAME">JSOP_BINDNAME [-0, +1] (ATOM, NAME, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>110 (0x6e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>env</code></td> - </tr> - </tbody> - </table> - - <p>Looks up name on the environment chain and pushes the environment which contains the name onto the stack. If not found, pushes global lexical environment onto the stack.</p> - </dd> - <dt id="JSOP_DEFCONST">JSOP_DEFCONST [-0, +0] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>128 (0x80)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Defines the new constant binding on global lexical environment.</p> - - <p>Throws if a binding with the same name already exists on the environment, or if a var binding with the same name exists on the global.</p> - </dd> - <dt id="JSOP_DEFFUN">JSOP_DEFFUN [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>127 (0x7f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>fun</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Defines the given function on the current scope.</p> - - <p>This is used for global scripts and also in some cases for function scripts where use of dynamic scoping inhibits optimization.</p> - </dd> - <dt id="JSOP_DEFLET">JSOP_DEFLET [-0, +0] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>162 (0xa2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Defines the new mutable binding on global lexical environment.</p> - - <p>Throws if a binding with the same name already exists on the environment, or if a var binding with the same name exists on the global.</p> - </dd> - <dt id="JSOP_DEFVAR">JSOP_DEFVAR [-0, +0] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>129 (0x81)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Defines the new binding on the frame's current variables-object (the environment on the environment chain designated to receive new variables).</p> - - <p>Throws if the current variables-object is the global object and a binding with the same name exists on the global lexical environment.</p> - - <p>This is used for global scripts and also in some cases for function scripts where use of dynamic scoping inhibits optimization.</p> - </dd> - <dt id="JSOP_DELNAME">JSOP_DELNAME [-0, +1] (ATOM, NAME, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>36 (0x24)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Looks up name on the environment chain and deletes it, pushes <code>true</code> onto the stack if succeeded (if the property was present and deleted or if the property wasn't present in the first place), <code>false</code> if not.</p> - - <p>Strict mode code should never contain this opcode.</p> - </dd> - <dt id="JSOP_GETIMPORT">JSOP_GETIMPORT [-0, +1] (ATOM, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>176 (0xb0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Gets the value of a module import by name and pushes it onto the stack.</p> - </dd> - <dt id="JSOP_GETNAME">JSOP_GETNAME [-0, +1] (ATOM, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>59 (0x3b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Looks up name on the environment chain and pushes its value onto the stack.</p> - </dd> - <dt id="JSOP_SETNAME">JSOP_SETNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>111 (0x6f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops an environment and value from the stack, assigns value to the given name, and pushes the value back on the stack</p> - </dd> - <dt id="JSOP_STRICTSETNAME">JSOP_STRICTSETNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>49 (0x31)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops a environment and value from the stack, assigns value to the given name, and pushes the value back on the stack. If the set failed, then throw a TypeError, per usual strict mode semantics.</p> - </dd> -</dl> - -<h4 id="Free_Variables">Free Variables</h4> - -<dl> - <dt id="JSOP_BINDGNAME">JSOP_BINDGNAME [-0, +1] (ATOM, NAME, GNAME, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>214 (0xd6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>global</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the global environment onto the stack if the script doesn't have a non-syntactic global scope. Otherwise will act like <code>JSOP_BINDNAME</code>.</p> - - <p><code>nameIndex</code> is only used when acting like <code>JSOP_BINDNAME</code>.</p> - </dd> - <dt id="JSOP_BINDVAR">JSOP_BINDVAR [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>213 (0xd5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>env</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the nearest <code>var</code> environment.</p> - </dd> - <dt id="JSOP_GETGNAME">JSOP_GETGNAME [-0, +1] (ATOM, NAME, TYPESET, GNAME, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>154 (0x9a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Looks up name on global environment and pushes its value onto the stack, unless the script has a non-syntactic global scope, in which case it acts just like <code>JSOP_NAME</code>.</p> - - <p>Free variable references that must either be found on the global or a ReferenceError.</p> - </dd> - <dt id="JSOP_INITGLEXICAL">JSOP_INITGLEXICAL [-1, +1] (ATOM, NAME, PROPINIT, GNAME, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>161 (0xa1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Initializes an uninitialized global lexical binding with the top of stack value.</p> - </dd> - <dt id="JSOP_SETGNAME">JSOP_SETGNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, GNAME, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>155 (0x9b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>env</code>, sets property of <code>env</code> as <code>val</code> and pushes <code>val</code> back on the stack.</p> - - <p><code>env</code> should be the global lexical environment unless the script has a non-syntactic global scope, in which case acts like <code>JSOP_SETNAME</code>.</p> - </dd> - <dt id="JSOP_STRICTSETGNAME">JSOP_STRICTSETGNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, GNAME, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>156 (0x9c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>env</code>, sets property of <code>env</code> as <code>val</code> and pushes <code>val</code> back on the stack. Throws a TypeError if the set fails, per strict mode semantics.</p> - - <p><code>env</code> should be the global lexical environment unless the script has a non-syntactic global scope, in which case acts like <code>JSOP_STRICTSETNAME</code>.</p> - </dd> -</dl> - -<h4 id="Local_Variables">Local Variables</h4> - -<dl> - <dt id="JSOP_CHECKLEXICAL">JSOP_CHECKLEXICAL [-0, +0] (LOCAL, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>138 (0x8a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Checks if the value of the local variable is the <code>JS_UNINITIALIZED_LEXICAL</code> magic, throwing an error if so.</p> - </dd> - <dt id="JSOP_GETLOCAL">JSOP_GETLOCAL [-0, +1] (LOCAL, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>86 (0x56)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the value of local variable onto the stack.</p> - </dd> - <dt id="JSOP_INITLEXICAL">JSOP_INITLEXICAL [-1, +1] (LOCAL, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>139 (0x8b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Initializes an uninitialized local lexical binding with the top of stack value.</p> - </dd> - <dt id="JSOP_SETLOCAL">JSOP_SETLOCAL [-1, +1] (LOCAL, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>87 (0x57)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Stores the top stack value to the given local.</p> - </dd> - <dt id="JSOP_THROWSETCALLEE">JSOP_THROWSETCALLEE [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>179 (0xb3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Throws a runtime TypeError for invalid assignment to the callee in a named lambda, which is always a <code>const</code> binding. This is a different bytecode than <code>JSOP_SETCONST</code> because the named lambda callee, if not closed over, does not have a frame slot to look up the name with for the error message.</p> - </dd> - <dt id="JSOP_THROWSETCONST">JSOP_THROWSETCONST [-1, +1] (LOCAL, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>169 (0xa9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Throws a runtime TypeError for invalid assignment to <code>const</code>. The localno is used for better error messages.</p> - </dd> -</dl> - -<h4 id="Aliased_Variables">Aliased Variables</h4> - -<dl> - <dt id="JSOP_CHECKALIASEDLEXICAL">JSOP_CHECKALIASEDLEXICAL [-0, +0] (ENVCOORD, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>140 (0x8c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Checks if the value of the aliased variable is the <code>JS_UNINITIALIZED_LEXICAL</code> magic, throwing an error if so.</p> - </dd> - <dt id="JSOP_GETALIASEDVAR">JSOP_GETALIASEDVAR [-0, +1] (ENVCOORD, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>136 (0x88)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>aliasedVar</code></td> - </tr> - </tbody> - </table> - - <p>Pushes aliased variable onto the stack.</p> - - <p>An "aliased variable" is a var, let, or formal arg that is aliased. Sources of aliasing include: nested functions accessing the vars of an enclosing function, function statements that are conditionally executed, <code>eval</code>, <code>with</code>, and <code>arguments</code>. All of these cases require creating a CallObject to own the aliased variable.</p> - - <p>An ALIASEDVAR opcode contains the following immediates:</p> - - <pre class="notranslate">uint8 hops: the number of environment objects to skip to find the - EnvironmentObject containing the variable being accessed -uint24 slot: the slot containing the variable in the EnvironmentObject - (this 'slot' does not include RESERVED_SLOTS). -</pre> - </dd> - <dt id="JSOP_INITALIASEDLEXICAL">JSOP_INITALIASEDLEXICAL [-1, +1] (ENVCOORD, NAME, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>141 (0x8d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Initializes an uninitialized aliased lexical binding with the top of stack value.</p> - </dd> - <dt id="JSOP_SETALIASEDVAR">JSOP_SETALIASEDVAR [-1, +1] (ENVCOORD, NAME, PROPSET, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>137 (0x89)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Sets aliased variable as the top of stack value.</p> - </dd> - <dt id="JSOP_THROWSETALIASEDCONST">JSOP_THROWSETALIASEDCONST [-1, +1] (ENVCOORD, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>170 (0xaa)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Throws a runtime TypeError for invalid assignment to <code>const</code>. The environment coordinate is used for better error messages.</p> - </dd> -</dl> - -<h4 id="Intrinsics">Intrinsics</h4> - -<dl> - <dt id="JSOP_GETINTRINSIC">JSOP_GETINTRINSIC [-0, +1] (ATOM, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>143 (0x8f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>intrinsic[name]</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the value of the intrinsic onto the stack.</p> - - <p>Intrinsic names are emitted instead of <code>JSOP_*NAME</code> ops when the <code>CompileOptions</code> flag <code>selfHostingMode</code> is set.</p> - - <p>They are used in self-hosted code to access other self-hosted values and intrinsic functions the runtime doesn't give client JS code access to.</p> - </dd> - <dt id="JSOP_SETINTRINSIC">JSOP_SETINTRINSIC [-1, +1] (ATOM, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>144 (0x90)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Stores the top stack value in the specified intrinsic.</p> - </dd> -</dl> - -<h4 id="Block-local_Scope">Block-local Scope</h4> - -<dl> - <dt id="JSOP_FRESHENLEXICALENV">JSOP_FRESHENLEXICALENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>197 (0xc5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Replaces the current block on the env chain with a fresh block that copies all the bindings in the block. This operation implements the behavior of inducing a fresh lexical environment for every iteration of a for(let ...; ...; ...) loop, if any declarations induced by such a loop are captured within the loop.</p> - </dd> - <dt id="JSOP_POPLEXICALENV">JSOP_POPLEXICALENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>200 (0xc8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops lexical environment from the env chain.</p> - </dd> - <dt id="JSOP_PUSHLEXICALENV">JSOP_PUSHLEXICALENV [-0, +0] (SCOPE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>199 (0xc7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t scopeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pushes lexical environment onto the env chain.</p> - </dd> - <dt id="JSOP_RECREATELEXICALENV">JSOP_RECREATELEXICALENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>198 (0xc6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Recreates the current block on the env chain with a fresh block with uninitialized bindings. This operation implements the behavior of inducing a fresh lexical environment for every iteration of a for-in/of loop whose loop-head has a (captured) lexical declaration.</p> - </dd> -</dl> - -<h4 id="This">This</h4> - -<dl> - <dt id="JSOP_CHECKRETURN">JSOP_CHECKRETURN [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>190 (0xbe)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>this</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Check if a derived class constructor has a valid return value and <code>this</code> value before it returns. If the return value is not an object, stores the <code>this</code> value to the return value slot.</p> - </dd> - <dt id="JSOP_CHECKTHIS">JSOP_CHECKTHIS [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>189 (0xbd)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>this</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Throw if the value on top of the stack is the TDZ MagicValue. Used in derived class constructors.</p> - </dd> - <dt id="JSOP_CHECKTHISREINIT">JSOP_CHECKTHISREINIT [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>191 (0xbf)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>this</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Throw an exception if the value on top of the stack is not the TDZ MagicValue. Used in derived class constructors.</p> - </dd> - <dt id="JSOP_FUNCTIONTHIS">JSOP_FUNCTIONTHIS [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>185 (0xb9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Determines the <code>this</code> value for current function frame and pushes it onto the stack. Emitted in the prologue of functions with a this-binding.</p> - </dd> - <dt id="JSOP_GIMPLICITTHIS">JSOP_GIMPLICITTHIS [-0, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>157 (0x9d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the implicit <code>this</code> value for calls to the associated name onto the stack; only used when the implicit this might be derived from a non-syntactic scope (instead of the global itself).</p> - - <p>Note that code evaluated via the Debugger API uses DebugEnvironmentProxy objects on its scope chain, which are non-syntactic environments that refer to syntactic environments. As a result, the binding we want may be held by a syntactic environments such as CallObject or VarEnvrionmentObject.</p> - </dd> - <dt id="JSOP_GLOBALTHIS">JSOP_GLOBALTHIS [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>186 (0xba)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>this</code> value for current stack frame onto the stack. Emitted when <code>this</code> refers to the global <code>this</code>.</p> - </dd> - <dt id="JSOP_IMPLICITTHIS">JSOP_IMPLICITTHIS [-0, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>226 (0xe2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the implicit <code>this</code> value for calls to the associated name onto the stack.</p> - </dd> -</dl> - -<h4 id="Super">Super</h4> - -<dl> - <dt id="JSOP_SUPERBASE">JSOP_SUPERBASE [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>103 (0x67)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>homeObjectProto</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the prototype of the home object for |callee| onto the stack.</p> - </dd> - <dt id="JSOP_SUPERFUN">JSOP_SUPERFUN [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>164 (0xa4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>superFun</code></td> - </tr> - </tbody> - </table> - - <p>Push the function to invoke with |super()|. This is the prototype of the function passed in as |callee|.</p> - </dd> -</dl> - -<h4 id="Arguments">Arguments</h4> - -<dl> - <dt id="JSOP_ARGUMENTS">JSOP_ARGUMENTS [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>9 (0x09)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>arguments</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the <code>arguments</code> object for the current function activation.</p> - - <p>If <code><code>JSS</code>cript</code> is not marked <code>needsArgsObj</code>, then a <code>JS_OPTIMIZED_ARGUMENTS</code> magic value is pushed. Otherwise, a proper arguments object is constructed and pushed.</p> - - <p>This opcode requires that the function does not have rest parameter.</p> - </dd> - <dt id="JSOP_CALLEE">JSOP_CALLEE [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>132 (0x84)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>callee</code></td> - </tr> - </tbody> - </table> - - <p>Pushes current callee onto the stack.</p> - - <p>Used for named function expression self-naming, if lightweight.</p> - </dd> - <dt id="JSOP_ENVCALLEE">JSOP_ENVCALLEE [-0, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>206 (0xce)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t numHops</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>callee</code></td> - </tr> - </tbody> - </table> - - <p>Load the callee stored in a CallObject on the environment chain. The numHops operand is the number of environment objects to skip on the environment chain.</p> - </dd> - <dt id="JSOP_GETARG">JSOP_GETARG [-0, +1] (QARG, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>84 (0x54)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>arguments[argno]</code></td> - </tr> - </tbody> - </table> - - <p>Fast get op for function arguments and local variables.</p> - - <p>Pushes <code>arguments[argno]</code> onto the stack.</p> - </dd> - <dt id="JSOP_NEWTARGET">JSOP_NEWTARGET [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>148 (0x94)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>new.target</code></td> - </tr> - </tbody> - </table> - - <p>Push "new.target"</p> - </dd> - <dt id="JSOP_REST">JSOP_REST [-0, +1] (TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>224 (0xe0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rest</code></td> - </tr> - </tbody> - </table> - - <p>Creates rest parameter array for current function call, and pushes it onto the stack.</p> - </dd> - <dt id="JSOP_SETARG">JSOP_SETARG [-1, +1] (QARG, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>85 (0x55)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Fast set op for function arguments and local variables.</p> - - <p>Sets <code>arguments[argno]</code> as the top of stack value.</p> - </dd> -</dl> - -<h4 id="Var_Scope">Var Scope</h4> - -<dl> - <dt id="JSOP_POPVARENV">JSOP_POPVARENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>181 (0xb5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops a var environment from the env chain.</p> - </dd> - <dt id="JSOP_PUSHVARENV">JSOP_PUSHVARENV [-0, +0] (SCOPE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>180 (0xb4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t scopeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pushes a var environment onto the env chain.</p> - </dd> -</dl> - -<h4 id="Modules">Modules</h4> - -<dl> - <dt id="JSOP_DYNAMIC_IMPORT">JSOP_DYNAMIC_IMPORT [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>233 (0xe9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>arg</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Dynamic import of the module specified by the string value on the top of the stack.</p> - </dd> - <dt id="JSOP_IMPORTMETA">JSOP_IMPORTMETA [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>232 (0xe8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>import.meta</code></td> - </tr> - </tbody> - </table> - - <p>Push "import.meta"</p> - </dd> -</dl> - -<h3 id="Operators">Operators</h3> - -<h4 id="Comparison_Operators">Comparison Operators</h4> - -<dl> - <dt id="JSOP_EQ">JSOP_EQ [-2, +1] (DETECTING, IC)<br> - JSOP_GE [-2, +1] (IC)<br> - JSOP_GT [-2, +1] (IC)<br> - JSOP_LE [-2, +1] (IC)<br> - JSOP_LT [-2, +1] (IC)<br> - JSOP_NE [-2, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_EQ: 18 (0x12)<br> - JSOP_GE: 23 (0x17)<br> - JSOP_GT: 22 (0x16)<br> - JSOP_LE: 21 (0x15)<br> - JSOP_LT: 20 (0x14)<br> - JSOP_NE: 19 (0x13)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values from the stack and pushes the result of comparing them.</p> - </dd> - <dt id="JSOP_STRICTEQ">JSOP_STRICTEQ [-2, +1] (DETECTING, IC)<br> - JSOP_STRICTNE [-2, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_STRICTEQ: 72 (0x48)<br> - JSOP_STRICTNE: 73 (0x49)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values from the stack, then pushes the result of applying the operator to the two values.</p> - </dd> -</dl> - -<h4 id="Arithmetic_Operators">Arithmetic Operators</h4> - -<dl> - <dt id="JSOP_ADD">JSOP_ADD [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>27 (0x1b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval + rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of <code>lval + rval</code>.</p> - </dd> - <dt id="JSOP_DEC">JSOP_DEC [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>235 (0xeb)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(val - 1)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the numeric value <code>val</code> from the stack, then pushes <code>val - 1</code>.</p> - </dd> - <dt id="JSOP_INC">JSOP_INC [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>234 (0xea)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(val + 1)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the numeric value <code>val</code> from the stack, then pushes <code>val + 1</code>.</p> - </dd> - <dt id="JSOP_DIV">JSOP_DIV [-2, +1] (IC)<br> - JSOP_MOD [-2, +1] (IC)<br> - JSOP_MUL [-2, +1] (IC)<br> - JSOP_SUB [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_DIV: 30 (0x1e)<br> - JSOP_MOD: 31 (0x1f)<br> - JSOP_MUL: 29 (0x1d)<br> - JSOP_SUB: 28 (0x1c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of applying the arithmetic operation to them.</p> - </dd> - <dt id="JSOP_NEG">JSOP_NEG [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>34 (0x22)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(-val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>-val</code>.</p> - </dd> - <dt id="JSOP_POS">JSOP_POS [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>35 (0x23)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(+val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>+val</code>. (<code>+val</code> is the value converted to a number.)</p> - </dd> - <dt id="JSOP_POW">JSOP_POW [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>150 (0x96)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval ** rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of <code>Math.pow(lval, rval)</code>.</p> - </dd> - <dt id="JSOP_TONUMERIC">JSOP_TONUMERIC [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>236 (0xec)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>ToNumeric(val)</code></td> - </tr> - </tbody> - </table> - - <p>Pop <code>val</code> from the stack, then push the result of <code>ToNumeric(val)</code>.</p> - </dd> -</dl> - -<h4 id="Bitwise_Logical_Operators">Bitwise Logical Operators</h4> - -<dl> - <dt id="JSOP_BITAND">JSOP_BITAND [-2, +1] (IC)<br> - JSOP_BITOR [-2, +1] (IC)<br> - JSOP_BITXOR [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_BITAND: 17 (0x11)<br> - JSOP_BITOR: 15 (0x0f)<br> - JSOP_BITXOR: 16 (0x10)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of the operation applied to the two operands, converting both to 32-bit signed integers if necessary.</p> - </dd> - <dt id="JSOP_BITNOT">JSOP_BITNOT [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>33 (0x21)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(~val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>~val</code>.</p> - </dd> -</dl> - -<h4 id="Bitwise_Shift_Operators">Bitwise Shift Operators</h4> - -<dl> - <dt id="JSOP_LSH">JSOP_LSH [-2, +1] (IC)<br> - JSOP_RSH [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_LSH: 24 (0x18)<br> - JSOP_RSH: 25 (0x19)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of the operation applied to the operands.</p> - </dd> - <dt id="JSOP_URSH">JSOP_URSH [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>26 (0x1a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval >>> rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes <code>lval >>> rval</code>.</p> - </dd> -</dl> - -<h4 id="Logical_Operators">Logical Operators</h4> - -<dl> - <dt id="JSOP_NOT">JSOP_NOT [-1, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>32 (0x20)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(!val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>!val</code>.</p> - </dd> -</dl> - -<h4 id="Special_Operators">Special Operators</h4> - -<dl> - <dt id="JSOP_DELELEM">JSOP_DELELEM [-2, +1] (ELEM, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>38 (0x26)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, deletes <code>propval</code> property from <code>obj</code>, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p> - </dd> - <dt id="JSOP_DELPROP">JSOP_DELPROP [-1, +1] (ATOM, PROP, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>37 (0x25)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, deletes property from it, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p> - </dd> - <dt id="JSOP_IN">JSOP_IN [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>113 (0x71)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>id, obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(id in obj)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>id</code> and <code>obj</code> from the stack, then pushes <code>id in obj</code>. This will throw a <code>TypeError</code> if <code>obj</code> is not an object.</p> - - <p>Note that <code>obj</code> is the top value.</p> - </dd> - <dt id="JSOP_INSTANCEOF">JSOP_INSTANCEOF [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>114 (0x72)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, ctor</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(obj instanceof ctor)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>obj</code> and <code>ctor</code> from the stack, then pushes <code>obj instanceof ctor</code>. This will throw a <code>TypeError</code> if <code>obj</code> is not an object.</p> - </dd> - <dt id="JSOP_STRICTDELPROP">JSOP_STRICTDELPROP [-1, +1] (ATOM, PROP, CHECKSTRICT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>46 (0x2e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value and attempts to delete the given property from it. Pushes <code>true</code> onto success, else throws a TypeError per strict mode property-deletion requirements.</p> - </dd> - <dt id="JSOP_TYPEOF">JSOP_TYPEOF [-1, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>39 (0x27)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(typeof val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>typeof val</code>.</p> - </dd> - <dt id="JSOP_TYPEOFEXPR">JSOP_TYPEOFEXPR [-1, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>196 (0xc4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(typeof val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top stack value as <code>val</code> and pushes <code>typeof val</code>. Note that this opcode isn't used when, in the original source code, <code>val</code> is a name -- see <code><code>JSOP_TYPEOF</code></code> for that. (This is because <code>typeof undefinedName === "undefined"</code>.)</p> - </dd> - <dt id="JSOP_VOID">JSOP_VOID [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>40 (0x28)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>undefined</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top value on the stack and pushes <code>undefined</code>.</p> - </dd> -</dl> - -<h4 id="Stack_Operations">Stack Operations</h4> - -<dl> - <dt id="JSOP_DUP">JSOP_DUP [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>12 (0x0c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v, v</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a copy of the top value on the stack.</p> - </dd> - <dt id="JSOP_DUP2">JSOP_DUP2 [-2, +4]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>13 (0x0d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v1, v2</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v1, v2, v1, v2</code></td> - </tr> - </tbody> - </table> - - <p>Duplicates the top two values on the stack.</p> - </dd> - <dt id="JSOP_DUPAT">JSOP_DUPAT [-0, +1] (UINT24)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>44 (0x2c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t n</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v[n], v[n-1], ..., v[1], v[0], v[n]</code></td> - </tr> - </tbody> - </table> - - <p>Duplicates the Nth value from the top onto the stack.</p> - </dd> - <dt id="JSOP_PICK">JSOP_PICK [-0, +0] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>133 (0x85)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t n</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v[n-1], ..., v[1], v[0], v[n]</code></td> - </tr> - </tbody> - </table> - - <p>Picks the nth element from the stack and moves it to the top of the stack.</p> - </dd> - <dt id="JSOP_POP">JSOP_POP [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>81 (0x51)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top value off the stack.</p> - </dd> - <dt id="JSOP_POPN">JSOP_POPN [-n, +0] (UINT16)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>11 (0x0b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t n</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v[n-1], ..., v[1], v[0]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top <code>n</code> values from the stack.</p> - </dd> - <dt id="JSOP_SWAP">JSOP_SWAP [-2, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>10 (0x0a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v1, v2</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v2, v1</code></td> - </tr> - </tbody> - </table> - - <p>Swaps the top two values on the stack. This is useful for things like post-increment/decrement.</p> - </dd> - <dt id="JSOP_UNPICK">JSOP_UNPICK [-0, +0] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>183 (0xb7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t n</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v[0], v[n], v[n-1], ..., v[1]</code></td> - </tr> - </tbody> - </table> - - <p>Moves the top of the stack value under the nth element of the stack. Note: n must NOT be 0.</p> - </dd> -</dl> - -<h4 id="Debugger_2">Debugger</h4> - -<dl> - <dt id="JSOP_DEBUGAFTERYIELD">JSOP_DEBUGAFTERYIELD [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>208 (0xd0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Bytecode emitted after <code>yield</code> expressions to help the Debugger fix up the frame in the JITs. No-op in the interpreter.</p> - </dd> -</dl> - -<h3 id="Literals">Literals</h3> - -<h4 id="Constants">Constants</h4> - -<dl> - <dt id="JSOP_BIGINT">JSOP_BIGINT [-0, +1] (BIGINT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>237 (0xed)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t constIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a BigInt constant onto the stack.</p> - </dd> - <dt id="JSOP_BUILTINPROTO">JSOP_BUILTINPROTO [-0, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>221 (0xdd)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t kind</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>%BuiltinPrototype%</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the current global's builtin prototype for a given proto key.</p> - </dd> - <dt id="JSOP_DOUBLE">JSOP_DOUBLE [-0, +1] (DOUBLE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>60 (0x3c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>DoubleValue literal</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>9</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes numeric constant onto the stack.</p> - </dd> - <dt id="JSOP_FALSE">JSOP_FALSE [-0, +1]<br> - JSOP_TRUE [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_FALSE: 66 (0x42)<br> - JSOP_TRUE: 67 (0x43)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>true/false</code></td> - </tr> - </tbody> - </table> - - <p>Pushes boolean value onto the stack.</p> - </dd> - <dt id="JSOP_INT32">JSOP_INT32 [-0, +1] (INT32)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>216 (0xd8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t val</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes 32-bit int immediate integer operand onto the stack.</p> - </dd> - <dt id="JSOP_INT8">JSOP_INT8 [-0, +1] (INT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>215 (0xd7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int8_t val</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes 8-bit int immediate integer operand onto the stack.</p> - </dd> - <dt id="JSOP_IS_CONSTRUCTING">JSOP_IS_CONSTRUCTING [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>65 (0x41)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>JS_IS_CONSTRUCTING</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code><code>JS_IS_CONSTRUCTING</code></code></p> - </dd> - <dt id="JSOP_NULL">JSOP_NULL [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>64 (0x40)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>null</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>null</code> onto the stack.</p> - </dd> - <dt id="JSOP_ONE">JSOP_ONE [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>63 (0x3f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>1</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>1</code> onto the stack.</p> - </dd> - <dt id="JSOP_STRING">JSOP_STRING [-0, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>61 (0x3d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t atomIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>atom</code></td> - </tr> - </tbody> - </table> - - <p>Pushes string constant onto the stack.</p> - </dd> - <dt id="JSOP_SYMBOL">JSOP_SYMBOL [-0, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>45 (0x2d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t symbol (the JS::SymbolCode of the symbol to use)</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>symbol</code></td> - </tr> - </tbody> - </table> - - <p>Push a well-known symbol onto the operand stack.</p> - </dd> - <dt id="JSOP_UINT16">JSOP_UINT16 [-0, +1] (UINT16)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>88 (0x58)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t val</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes unsigned 16-bit int immediate integer operand onto the stack.</p> - </dd> - <dt id="JSOP_UINT24">JSOP_UINT24 [-0, +1] (UINT24)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>188 (0xbc)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t val</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes unsigned 24-bit int immediate integer operand onto the stack.</p> - </dd> - <dt id="JSOP_UNDEFINED">JSOP_UNDEFINED [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>1 (0x01)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>undefined</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>undefined</code> onto the stack.</p> - </dd> - <dt id="JSOP_UNINITIALIZED">JSOP_UNINITIALIZED [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>142 (0x8e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>uninitialized</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a <code>JS_UNINITIALIZED_LEXICAL</code> value onto the stack, representing an uninitialized lexical binding.</p> - - <p>This opcode is used with the <code>JSOP_INITLEXICAL</code> opcode.</p> - </dd> - <dt id="JSOP_ZERO">JSOP_ZERO [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>62 (0x3e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>0</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>0</code> onto the stack.</p> - </dd> -</dl> - -<h4 id="Object">Object</h4> - -<dl> - <dt id="JSOP_CALLELEM">JSOP_CALLELEM [-2, +1] (ELEM, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>193 (0xc1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[propval]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, pushes <code>propval</code> property of <code>obj</code> onto the stack. Requires the value under <code>obj</code> to be the receiver of the following call.</p> - - <p>Like <code>JSOP_GETELEM</code> but for call context.</p> - </dd> - <dt id="JSOP_CALLPROP">JSOP_CALLPROP [-1, +1] (ATOM, PROP, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>184 (0xb8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[name]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, pushes property of it onto the stack. Requires the value under <code>obj</code> to be the receiver of the following call.</p> - - <p>Like <code>JSOP_GETPROP</code> but for call context.</p> - </dd> - <dt id="JSOP_CALLSITEOBJ">JSOP_CALLSITEOBJ [-0, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>101 (0x65)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t objectIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the call site object specified by objectIndex onto the stack. Defines the raw property specified by objectIndex + 1 on the call site object and freezes both the call site object as well as its raw property.</p> - </dd> - <dt id="JSOP_CHECKCLASSHERITAGE">JSOP_CHECKCLASSHERITAGE [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>51 (0x33)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>heritage</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>heritage</code></td> - </tr> - </tbody> - </table> - - <p>Ensures the result of a class's heritage expression is either null or a constructor.</p> - </dd> - <dt id="JSOP_CHECKOBJCOERCIBLE">JSOP_CHECKOBJCOERCIBLE [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>163 (0xa3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Throw if the value on the stack is not coerscible to an object (is |null| or |undefined|).</p> - </dd> - <dt id="JSOP_GETBOUNDNAME">JSOP_GETBOUNDNAME [-1, +1] (ATOM, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>195 (0xc3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Pops an environment, gets the value of a bound name on it. If the name is not bound to the environment, throw a ReferenceError. Used in conjunction with BINDNAME.</p> - </dd> - <dt id="JSOP_GETELEM">JSOP_GETELEM [-2, +1] (ELEM, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>55 (0x37)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[propval]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, pushes <code>propval</code> property of <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_GETELEM_SUPER">JSOP_GETELEM_SUPER [-3, +1] (ELEM, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>125 (0x7d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, propval, obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[propval]</code></td> - </tr> - </tbody> - </table> - - <p>LIKE <code>JSOP_GETELEM</code> but takes receiver on stack, and the propval is evaluated before the obj.</p> - </dd> - <dt id="JSOP_GETPROP">JSOP_GETPROP [-1, +1] (ATOM, PROP, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>53 (0x35)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[name]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, pushes property of it onto the stack.</p> - </dd> - <dt id="JSOP_GETPROP_SUPER">JSOP_GETPROP_SUPER [-2, +1] (ATOM, PROP, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>104 (0x68)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[name]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values, and pushes the property of one, using the other as the receiver.</p> - </dd> - <dt id="JSOP_INITELEM">JSOP_INITELEM [-3, +1] (ELEM, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>94 (0x5e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a numeric property in an object literal, like <code>{1: x}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITELEM_GETTER">JSOP_INITELEM_GETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>99 (0x63)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a numeric getter in an object literal like <code>{get 2() {}}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITELEM_SETTER">JSOP_INITELEM_SETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>100 (0x64)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a numeric setter in an object literal like <code>{set 2(v) {}}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENELEM">JSOP_INITHIDDENELEM [-3, +1] (ELEM, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>175 (0xaf)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable numeric property in an object literal, like <code>{1: x}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENELEM_GETTER">JSOP_INITHIDDENELEM_GETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>173 (0xad)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable numeric getter in an object literal like <code>{get 2() {}}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENELEM_SETTER">JSOP_INITHIDDENELEM_SETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>174 (0xae)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable numeric setter in an object literal like <code>{set 2(v) {}}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENPROP">JSOP_INITHIDDENPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>147 (0x93)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable data-property on an object.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENPROP_GETTER">JSOP_INITHIDDENPROP_GETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>171 (0xab)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable getter in an object literal.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENPROP_SETTER">JSOP_INITHIDDENPROP_SETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>172 (0xac)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable setter in an object literal.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHOMEOBJECT">JSOP_INITHOMEOBJECT [-2, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>92 (0x5c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>fun, homeObject</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>fun</code></td> - </tr> - </tbody> - </table> - - <p>Initialize the home object for functions with super bindings.</p> - - <p>This opcode takes the function and the object to be the home object, does the set, and leaves the function on the stack.</p> - </dd> - <dt id="JSOP_INITLOCKEDPROP">JSOP_INITLOCKEDPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>146 (0x92)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-configurable, non-writable, non-enumerable data-property on an object.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITPROP">JSOP_INITPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>93 (0x5d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a named property in an object literal, like <code>{a: x}</code>.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITPROP_GETTER">JSOP_INITPROP_GETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>97 (0x61)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a getter in an object literal.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITPROP_SETTER">JSOP_INITPROP_SETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>98 (0x62)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a setter in an object literal.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_MUTATEPROTO">JSOP_MUTATEPROTO [-2, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>194 (0xc2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, newProto</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p><code>__proto__: v</code> inside an object initializer.</p> - - <p>Pops the top two values on the stack as <code>newProto</code> and <code>obj</code>, sets prototype of <code>obj</code> as <code>newProto</code>, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p> - </dd> - <dt id="JSOP_NEWINIT">JSOP_NEWINIT [-0, +1] (UINT32, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>89 (0x59)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>(uint32_t extra)</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes newly created object onto the stack.</p> - - <p>This opcode has four extra bytes so it can be exchanged with <code>JSOP_NEWOBJECT</code> during emit.</p> - </dd> - <dt id="JSOP_NEWOBJECT">JSOP_NEWOBJECT [-0, +1] (OBJECT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>91 (0x5b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t baseobjIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes newly created object onto the stack.</p> - - <p>This opcode takes an object with the final shape, which can be set at the start and slots then filled in directly.</p> - </dd> - <dt id="JSOP_OBJECT">JSOP_OBJECT [-0, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>80 (0x50)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t objectIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes deep-cloned object literal or singleton onto the stack.</p> - </dd> - <dt id="JSOP_OBJWITHPROTO">JSOP_OBJWITHPROTO [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>83 (0x53)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>proto</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes newly created object onto the stack with provided [[Prototype]].</p> - </dd> - <dt id="JSOP_SETELEM">JSOP_SETELEM [-3, +1] (ELEM, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>56 (0x38)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code>, <code>propval</code> and <code>obj</code>, sets <code>propval</code> property of <code>obj</code> as <code>val</code>, pushes <code>val</code> onto the stack.</p> - </dd> - <dt id="JSOP_SETELEM_SUPER">JSOP_SETELEM_SUPER [-4, +1] (ELEM, PROPSET, DETECTING, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>158 (0x9e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, propval, obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>LIKE <code>JSOP_SETELEM</code>, but takes receiver on the stack, and the propval is evaluated before the base.</p> - </dd> - <dt id="JSOP_SETPROP">JSOP_SETPROP [-2, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>54 (0x36)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code> and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack.</p> - </dd> - <dt id="JSOP_SETPROP_SUPER">JSOP_SETPROP_SUPER [-3, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>107 (0x6b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code>, <code>obj</code> and <code>receiver</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack.</p> - </dd> - <dt id="JSOP_STRICTDELELEM">JSOP_STRICTDELELEM [-2, +1] (ELEM, CHECKSTRICT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>47 (0x2f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, and attempts to delete <code>propval</code> property from <code>obj</code>. Pushes <code>true</code> onto the stack on success, else throws a TypeError per strict mode property deletion requirements.</p> - </dd> - <dt id="JSOP_STRICTSETELEM">JSOP_STRICTSETELEM [-3, +1] (ELEM, PROPSET, DETECTING, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>57 (0x39)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code>, <code>propval</code> and <code>obj</code>, sets <code>propval</code> property of <code>obj</code> as <code>val</code>, pushes <code>val</code> onto the stack. Throws a TypeError if the set fails, per strict mode semantics.</p> - </dd> - <dt id="JSOP_STRICTSETELEM_SUPER">JSOP_STRICTSETELEM_SUPER [-4, +1] (ELEM, PROPSET, DETECTING, CHECKSTRICT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>159 (0x9f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, propval, obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>LIKE <code>JSOP_STRICTSETELEM</code>, but takes receiver on the stack, and the propval is evaluated before the base.</p> - </dd> - <dt id="JSOP_STRICTSETPROP">JSOP_STRICTSETPROP [-2, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>48 (0x30)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack. Throws a TypeError if the set-operation failed (per strict mode semantics).</p> - </dd> - <dt id="JSOP_STRICTSETPROP_SUPER">JSOP_STRICTSETPROP_SUPER [-3, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSTRICT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>105 (0x69)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code> and <code>obj</code>, and <code>receiver</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack. Throws a TypeError if the set-operation failed (per strict mode semantics).</p> - </dd> - <dt id="JSOP_TOID">JSOP_TOID [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>225 (0xe1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>propertyNameValue</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>propertyKey</code></td> - </tr> - </tbody> - </table> - - <p>Replace the top-of-stack value propertyNameValue with ToPropertyKey(propertyNameValue).</p> - </dd> -</dl> - -<h4 id="Array">Array</h4> - -<dl> - <dt id="JSOP_HOLE">JSOP_HOLE [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>218 (0xda)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>hole</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a <code>JS_ELEMENTS_HOLE</code> value onto the stack, representing an omitted property in an array literal (e.g. property 0 in the array <code>[, 1]</code>).</p> - - <p>This opcode is used with the <code>JSOP_NEWARRAY</code> opcode.</p> - </dd> - <dt id="JSOP_INITELEM_ARRAY">JSOP_INITELEM_ARRAY [-2, +1] (UINT32, ELEM, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>96 (0x60)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t index</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize an array element.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, sets <code>index</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITELEM_INC">JSOP_INITELEM_INC [-3, +2] (ELEM, PROPINIT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>95 (0x5f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, index, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj, (index + 1)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code>, <code>index</code> and <code>obj</code>, sets <code>index</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> and <code>index + 1</code> onto the stack.</p> - - <p>This opcode is used in Array literals with spread and spreadcall arguments.</p> - </dd> - <dt id="JSOP_LENGTH">JSOP_LENGTH [-1, +1] (ATOM, PROP, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>217 (0xd9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj['length']</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, pushes the <code>length</code> property of it onto the stack.</p> - </dd> - <dt id="JSOP_NEWARRAY">JSOP_NEWARRAY [-0, +1] (UINT32, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>90 (0x5a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t length</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes newly created array onto the stack.</p> - - <p>This opcode takes the final length, which is preallocated.</p> - </dd> - <dt id="JSOP_NEWARRAY_COPYONWRITE">JSOP_NEWARRAY_COPYONWRITE [-0, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>102 (0x66)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t objectIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a newly created array onto the stack, whose elements are the same as that of a template object's copy on write elements.</p> - </dd> -</dl> - -<h4 id="RegExp">RegExp</h4> - -<dl> - <dt id="JSOP_REGEXP">JSOP_REGEXP [-0, +1] (REGEXP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>160 (0xa0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t regexpIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>regexp</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a regular expression literal onto the stack. It requires special "clone on exec" handling.</p> - </dd> -</dl> - -<h4 id="Class">Class</h4> - -<dl> - <dt id="JSOP_CLASSCONSTRUCTOR">JSOP_CLASSCONSTRUCTOR [-0, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>167 (0xa7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>atom className</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>constructor</code></td> - </tr> - </tbody> - </table> - - <p>Push a default constructor for a base class literal.</p> - </dd> - <dt id="JSOP_DERIVEDCONSTRUCTOR">JSOP_DERIVEDCONSTRUCTOR [-1, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>168 (0xa8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>atom className</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>proto</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>constructor</code></td> - </tr> - </tbody> - </table> - - <p>Push a default constructor for a derived class literal.</p> - </dd> -</dl> - -<h3 id="Other">Other</h3> - -<dl> - <dt id="JSOP_DEBUGCHECKSELFHOSTED">JSOP_DEBUGCHECKSELFHOSTED [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>177 (0xb1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>checkVal</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>checkVal</code></td> - </tr> - </tbody> - </table> - - <p>Examines the top stack value, asserting that it's either a self-hosted function or a self-hosted intrinsic. This opcode does nothing in a non-debug build.</p> - </dd> - <dt id="JSOP_FORCEINTERPRETER">JSOP_FORCEINTERPRETER [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>207 (0xcf)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>No-op bytecode only emitted in some self-hosted functions. Not handled by the JITs so the script always runs in the interpreter.</p> - </dd> - <dt id="JSOP_HASOWN">JSOP_HASOWN [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>211 (0xd3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>id, obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(obj.hasOwnProperty(id))</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>id</code> and <code>obj</code> from the stack, then pushes obj.hasOwnProperty(id)</p> - - <p>Note that <code>obj</code> is the top value.</p> - </dd> - <dt id="JSOP_ITERNEXT">JSOP_ITERNEXT [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>222 (0xde)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>NOP opcode to hint to IonBuilder that the value on top of the stack is the (likely string) key in a for-in loop.</p> - </dd> - <dt id="JSOP_JUMPTARGET">JSOP_JUMPTARGET [-0, +0] (ICINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>230 (0xe6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t icIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode is a no-op and it indicates the location of a jump instruction target. Some other opcodes act as jump targets as well, see BytecodeIsJumpTarget. The IC index is used by the Baseline interpreter.</p> - </dd> - <dt id="JSOP_LINENO">JSOP_LINENO [-0, +0] (UINT32)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>119 (0x77)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t lineno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Embedded lineno to speedup <code>pc->line</code> mapping.</p> - </dd> - <dt id="JSOP_NOP">JSOP_NOP [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>0 (0x00)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>No operation is performed.</p> - </dd> - <dt id="JSOP_NOP_DESTRUCTURING">JSOP_NOP_DESTRUCTURING [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>229 (0xe5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>No-op used by the decompiler to produce nicer error messages about destructuring code.</p> - </dd> - <dt id="JSOP_RESUMEINDEX">JSOP_RESUMEINDEX [-0, +1] (RESUMEINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>126 (0x7e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t resumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>resumeIndex</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a resumeIndex (stored as 24-bit operand) on the stack.</p> - - <p>Resume indexes are used for ops like <code>JSOP_YIELD</code> and <code>JSOP_GOSUB</code>. <code>JSS</code>cript and BaselineScript have lists of resume entries (one for each resumeIndex); this lets the JIT resume at these ops from JIT code.</p> - </dd> - <dt id="JSOP_TOSTRING">JSOP_TOSTRING [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>228 (0xe4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>ToString(val)</code></td> - </tr> - </tbody> - </table> - - <p>Converts the value on the top of the stack to a String.</p> - </dd> - <dt id="JSOP_TRY_DESTRUCTURING">JSOP_TRY_DESTRUCTURING [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>220 (0xdc)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>No-op used by the exception unwinder to determine the correct environment to unwind to when performing IteratorClose due to destructuring.</p> - </dd> -</dl> diff --git a/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html b/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html deleted file mode 100644 index e12b08f89b..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Garbage collection -slug: Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection -translation_of: Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection ---- -<div class="note"> - <strong>この文書について: これはSpiderMonkeyのGC内部についての雑多な草案です。内容が古いまたは不正確な場合があります。</strong></div> -<div class="warning"> - <p><strong>警告:</strong>SpiderMonkey ガベージコレクションTipsは悲しいことに古い内容であり、完全に無視されるべきものとなってしまいました、</p> -</div> -<h2 id="デザインの概要">デザインの概要</h2> -<p>SpiderMonkeyは、オプションでインクリメンタルマーキングモード(<span style="line-height: 1.5;">incremental marking mode)を有効にされたマーク & スイープ方式のガベージコレクション(GC)を持っています。マークフェイズでは、インクリメンタルマーキングに必要なマークスタックを用います。ファイナライザを伴わないオブジェクトのスイープは、バックグラウンドスレッドにて実行されます。</span></p> -<p>世代別GCおよびコンパクションGC(compacting GC)の実装に向けた作業が進行中です。</p> -<p> </p> -<h2 id="主要なデータ構造">主要なデータ構造</h2> -<h3 id="Cell">Cell</h3> -<p><strong>Cell</strong> は、外部からも使用される、GCによって割当と回収が行われるメモリーの単位です。つまり、GC以外から見れば、GCの仕事はCellの割当と自動的な回収ということになります。</p> -<p>例えばJSObjectのように、CellはGCによって割り当てられる全てのクラスの基底クラスとなります。</p> -<h3 id="Allocation_Kind">Allocation Kind</h3> -<p>Cellは、Allocation Kindにより分類されます。Allocation Kindはオブジェクトのサイズおよびファイナライズの振る舞いを定義します。Allocation Kindは<strong>AllocKind列挙型</strong>によって定義されます。</p> -<p>Arenas always hold objects of the same allocation kind. Thus, an arena holds objects all of the same size and finalization behavior.</p> -<h3 id="Compartment">Compartment</h3> -<p>JSヒープはCompartmentに分割されます。Compartmentの要点は以下になります:</p> -<ul> - <li>あらゆるCell(JSヒープオブジェクト)は、Compartmentのどれか一つに属します(ヒープはCompartmentに分類されることを意味します)。</li> - <li>オブジェクトは、別のCompartment内のオブジェクトに対する直接のポインタを保持することはできません。代わりに、他のオブジェクト用のラッパーを保持することになります。ラッパーは、Compartment間のセキュリティチェックに用いられます。同じCompartment内のオブジェクトは同じアクセス権限を持っているため、セキュリティチェックの必要はありませんが、cross-compartment wrapper(Compartment間ラッパー)のトラバース時にチェックが行われるかもしれません。</li> - <li>エンジンは同時にひとつのCompartmentのGCが可能です。同様に、エンジンは他をGCしている場合を除いて、Compartmentの集合に対してGCが可能です。cross-compartment wrapperは、ひとつないし複数のCompartmentのGCのrootとして用いられます。</li> -</ul> -<p>Compartmentは、SpiderMonkeyにおける、GCを含む特にメモリに関連した事項の構造的かつ分野横断的なコンセプトになっています。詳細は<a href="“/ja/SpiderMonkey/SpiderMonkey_compartments" title="https://developer.mozilla.org/ja/SpiderMonkey/SpiderMonkey_compartments">Compartments</a>を参照してください。</p> -<p><strong>JSCompartment</strong>はGCに関連した重要なフィールドを保持しています:</p> -<dl> - <dt style="margin-left: 40px;"> - ArenaLists型 arenas</dt> - <dd style="margin-left: 40px;"> - この構造体は、それぞれのAllocation KindのArenaの2つのリストを記録しています。未使用のArenaのリストと、割当済みのArenaのリストです。</dd> - <dt style="margin-left: 40px;"> - bool型 needsBarrier</dt> - <dd style="margin-left: 40px;"> - このCompartmentにおけるGCが、インクリメンタルバリアの実行を必要とする場合にtrueとなります。すなわり、このCompartmentが現在インクリメンタルGCを実行しているかどうかを表します。</dd> - <dt style="margin-left: 40px;"> - CompartmentGCState型 gcState</dt> - <dd style="margin-left: 40px;"> - このCompartmentが現在GCを実行しているかどうかを表します。もし実行していなければ、GCの実行がスケジュールされているかを表します。</dd> - <dt style="margin-left: 40px;"> - size_t型 gcBytes, gcTriggerBytes, gcMallocBytes, gcMaxMallocBytes</dt> - <dd style="margin-left: 40px;"> - GCのスケジュールに使用される情報を表します</dd> - <dt style="margin-left: 40px;"> - WrapperMap型 crossCompartmentWrappers</dt> - <dd style="margin-left: 40px;"> - このCompartment内のオブジェクトのラッパーの集合です。Mapのキーはオブジェクト、値はラッパーです。同じオブジェクトに対するラッパーが複数回要求される場合、エンジンが同一のラッパーを毎回返せるようにするためにマッピングが必要とされます。ラッパーオブジェクトの集合は同様に、単一および複数のcompartmentの(non-globalな)GCにおいても必要となります</dd> -</dl> -<h3 id="Zone">Zone</h3> -<p>TODO(原文ママ)</p> -<h3 id="Chunk">Chunk</h3> -<p>Chunkはメモリの割当における最大の内部単位となります。</p> -<p>Chunkは1MBのサイズを持ち、内部にArena、パディング、Mark Bitmap(ChunkBitmap)、解放されたArenaのビットマップ、およびChunkヘッダ(ChunkInfo)を保持しています。</p> -<p>ChunkInfoは、ChunkInfo::freeArenasHeadから開始しており、ArenaHeader::nextを介してリンクしている未割当のArenaのリストを保持します。また、ChunkInfoは未割当のArenaの数の基本的な情報を保持しています。</p> -<p>TODO ChunkInfo next/prev(原文ママ)</p> -<h3 id="Arena">Arena</h3> -<p>Arenaはメモリ割当の内部単位です。</p> -<p>Arenaは1ページ(ほぼ全てのプラットフォームで4096バイト)の大きさであり、ArenaHeaderと、僅かなパディングとなるバイト領域と、整列された要素の配列を含みます。Arena内のすべての要素は、同じAllocation Kindとサイズを持ちます。</p> -<p>すべてのArenaは、ArenaHeader::firstFreeSpanOffetsから始まる自由なメモリ区間のリストを保持します。自由なメモリ区間の最後のCell(最後であるのが望ましい)は、次の自由なメモリ区間を表すFreeSpanを保持します。</p> -<h3 id="Free_Span">Free Span</h3> -<p><strong>構造体<code>FreeSpan</code></strong>は、Arena内の自由なCell <strong>[first, last]</strong>の連続を表します。FreeSpanは、自由なメモリ区間から割当を行うための関数を保持しています。</p> -<h3 id="Mark_Bitmap">Mark Bitmap</h3> -<p>マークビットマップは<strong>ChunkBitmap</strong>によって表されます。</p> -<p>マークビットマップはGC Cellごとのビットを持ちます。故に、複数のCellによって構成されているオブジェクトは、ビットマップ中の複数のビットを使います。</p> -<h2 id="Exact_Stack_Rooting_API">Exact Stack Rooting API</h2> -<div class="note"> - <p><strong>注</strong>:GC rootの実装とおよびSpiderMonkey内での使用についての情報となります。SpiderMonkeyを埋め込んで使う場合の、Rooting APIの使用方法については、<a href="“/ja/docs/SpiderMonkey/GC_Rooting_Guide" title='“/ja/docs/SpiderMonkey/GC_Rooting_Guide"'> GC Rooting Guide</a>を参照してください。</p> -</div> -<p>GC rootの実装とおよびSpiderMonkey内での使用についての情報となります。 <a href="/en-US/docs/SpiderMonkey/Internals/GC/Exact_Stack_Rooting" title="/en-US/docs/SpiderMonkey/Internals/GC/Exact_Stack_Rooting">Exact Stack Rooting</a>.</p> -<h2 id="マーキング">マーキング</h2> -<p>TODO(原文ママ)</p> -<h2 id="インクリメンタルマーキング">インクリメンタルマーキング</h2> -<p>インクリメンタルマーキングは、マーキングの最中に(JavaScriptプログラムによる)状態の変更が発生しても、他のマーキング作業の実行が可能であることを意味します。つまり、マーキングによる長時間のプログラムの実行の停止の代わりに、小さな停止の集まりがGCの実行となるのです。停止時間は10msもしくはそれ以下に抑えられます。</p> -<p>長時間の停止が必要となる可能性も常に存在します。インクリメンタルGCの間のメモリ割当の頻度が高い場合、エンジンはインクリメンタルGCの完了の前にout of memoryを実行するかもしれません。そのような場合、エンジンは幾つかのメモリーの返還とプログラムの実行の継続のために、非インクリメンタルな完全なGCを直ちに再実行しなくてはなりません。</p> -<h3 id="Incremental_write_barrier(インクリメンタル書き込みバリア)">Incremental write barrier(インクリメンタル書き込みバリア)</h3> -<h4 id="write_barrierを必要とする問題">write barrierを必要とする問題</h4> -<p>インクリメンタルGCは正確性の担保のためにwrite barrierを必要とします。</p> -<p>TODO(原文ママ)、基本的な問題を表す図を用意する<img alt="Very poor diagram showing IGC hazard that requires a write barrier" src="https://mdn.mozillademos.org/files/5187/IGC-hazard.png" style="width: 640px; height: 400px;"></p> -<p>基本的な問題は以下の通りです(色の説明については、辞書を参照)。オブジェクトAはblackかつポインタ領域を所持しています。オブジェクトBはwhiteとします。ここで、インクリメンタルなスライスが止まり、プログラムの実行による状態の変更が再開しました。プログラムがBをAに保存したことにより、AはBへのポインタを持つことになります。そして、Bへのすべての既存のポインタが削除されました。そのとき、</p> -<ul> - <li>Bは生存している。なぜならAはblackであり、Bへのポインタを含んでいるから。</li> - <li>Bはマーク作業が実行されない。なぜならBはAを介してのみ到達可能であり、Aがblackである故にAはすでにマーク作業が完了しているから。</li> - <li>以上により、Bは生存しているが、GCの回収対象となってしまう。</li> -</ul> -<p>write barrierは、ポインタの保存の発生前に実行され、生存しているオブジェクトが回収されないようにするために情報を記録する機構の一つです。</p> -<h4 id="SpiderMonkeyのincremental_write_barrier">SpiderMonkeyのincremental write barrier</h4> -<p>SpiderMonkeyは、(相対的に)シンプルな、s<strong>snapshot-at-the-beginning allocate-black barrier</strong>と呼ばれる一般的なincremental write barrierを用いています。</p> -<p>このバリアの動作を理解するために、事象を単純にするために、新規にオブジェクトが割り当てられることの無いインクリメンタルGCを仮定します。生存しているオブジェクトを回収しないようにするためにはどうすればよいでしょうか? 一つの方法としては、インクリメンタルGCの最初の時点で生存していたすべてのオブジェクトをマークするという手法があります(これは、オブジェクトへの全ての参照が現在のインクリメンタルGC中に消えた場合は、次のインクリメンタルGC時にそのオブジェクトが回収されるということです)。この手法は、インクリメンタルGCの開始時に生存しているオブジェクトのスナップショットを保存し、それら全てをマークするのと<em>コンセプト上は</em>同義であるために、<strong>snapshot-at-the-beginning</strong>と呼ばれています。実際にはスナップショットを撮る訳ではありません。そのような場合は完全な非インクリメンタルなマーク作業が必要となります。</p> -<p style="">snapshot-at-the-beginningバリアの実装は単純です。GCポインタを保持する場所がプログラムによって上書きされたタイミングで、バリアは開始します。バリアは単純にポインタによって指し示されているオブジェクトをblackにします。鍵となるのは、オブジェクトへの全てのポインタが上書きされた場合にのみ、オブジェクトはマークされず”死んだもの”となりうるという点です。そのため、オブジェクトへのポインタが上書きされたタイミングでオブジェクトをblackにすれば、オブジェクトが”死ぬ”ということは発生し得ないのです。</p> -<p style="">FIXME(原文ママ):指し示されたオブジェクトをblackにするだけは十分ではないと思います。マークされていない別のオブジェクトがあったら何がおこりますか? マークスタックについても言及すべきです。「指し示されているオブジェクトをblackにする」というのは、「再帰的に指し示されたオブジェクトをblackにする」という意味で書かれていますか?</p> -<p>これで、メモリの割当の正確性についても話します。新規に割り当てられたオブジェクトはGCの開始時には存在していませんでした。snapshot-at-the-beginningバリアはこれについては巧くカバーしません。ですが、もし新規に割り当てられたオブジェクトが生存している場合は、それが回収されないようにする必要があります。これは簡単で、インクリメンタルGC中に新規にオブジェクトが割り当てられたら、それをマークすれば良いのです。これを名付けて<strong>allocate-black</strong>と言います。</p> -<h4 id="SpiderMonkeyの_incremental_read_barrier(インクリメンタル読み取りバリア)">SpiderMonkeyの incremental read barrier(インクリメンタル読み取りバリア)</h4> -<p>インクリメンタルGCの教科書的な実装では、write barrierしかありません。SpiderMonkeyでは、weak pointer(用語集参照)のためにread barrierも用意しています。</p> -<p>TODO(原文ママ):解説の完成</p> -<h4 id="実装の詳細">実装の詳細</h4> -<p>write barrierは実行時のコストを伴うので、SpiderMonkeyはインクリメンタルGCの実行中以外ではスキップするようにしています。各compartmentの<code>needsBarrier()</code>フラグによって、バリアが必要かどうかを示しています。</p> -<p><code>T*</code>型のフィールドのように、全ての<code>T</code>型はwrite barrierを必要としており、<code>T::writeBarrierPre(old)</code>という関数が存在しています。たとえば、<code>JSObject*</code>がwrite barrierを必要とする場合、関数<code>ObjectImpl::writeBarrierPre(ObjectImpl *old)</code>が存在します(<code>JSObject</code>は<code>ObjectImpl</code>を継承しています。)。 <code><strong>zone->needsBarrier()</strong></code>がtrueである場合、<code>writeBarrierPre()</code>は<code>old</code>をマークする、ということです。</p> -<p>HeapPtr<t>クラスはwrite barrierの起動を簡単にするために提供されています。HeapPtr<t>は<strong><code>T*</code></strong>をカプセル化し、割当時にwrite barrierを起動します。これにより、GCポインタ型のオブジェクトの領域は、通常、HeapPtr<T><t>として定義されています。<strong>HeapValue</strong>クラスはValueに対して同じことを行います。<strong>HeapSlot</strong>(および関連する<strong>HeapSlotArray</strong>)も同様に、オブジェクトスロットに対するものです。<strong>HeapId</strong>は、同じくjsidに対する物です。TODO(原文ママ):なぜHeapValueとHeapSlotの2つが存在するのか</t></t></t></p> -<p>オブジェクトのプライベート領域は、特別に取り扱う必要があります。プライベート領域自体は、エンジンに対しては隠されていますが、マークされる必要があるものを指し示すかもしれません(例:JSObjectのポインタの配列)。この例では、プライベート領域が上書きされた場合、JSObjectのポインタは”死ぬ”ことになります。そのため、write barrierはそれらをマークしなければなりません。<strong>ObjectImpl::privateWriteBarrierPre</strong>はプライベート領域が上書きされる前にJSObjectクラスのトレースフックによって起動され、これに対処します。</p> -<p>他の詳細事項として、write barrierは新規に確保されたオブジェクトのフィールドの初期化時には、上書きされるポインタが存在しないことから、スキップすることができます。</p> -<h2 id="Sweeping(スイーピング)">Sweeping(スイーピング)</h2> -<p>TODO(原文ママ)</p> -<h2 id="世代別GC">世代別GC</h2> -<p>TODO(原文ママ)</p> -<h2 id="GC統計API">GC統計API</h2> -<p>実行時に<a href="“/ja/docs/SpiderMonkey/Internals/GC/Statistics_API" title='“/ja/docs/SpiderMonkey/Internals/GC/StatisticsAPI"'>GC統計API</a>.を通じて、GCが保持する明確な統計情報にアクセスする事ができます。</p> -<h2 id="ソースファイル">ソースファイル</h2> -<p><strong>jsgc{.h,inlines.h,.cpp}</strong> GCを起動するためのエントリーポイントを含む内部API関数群を定義します。</p> -<p><strong>jsgcstats.{h,cpp}</strong> 保守的なスタックスキャンに基づく情報収集のための構造体ConservativeGCStatsを定義します。TODO(原文ママ):削除されたときに消す</p> -<p><strong>gc/Barrier[-inl].h</strong> インクリメンタルおよび世代別用のwrite barrierを実装しています。</p> -<p><strong>gc/Heap.h</strong> GCのヒープ構造の根幹を成す、<code>Chunk</code>, <code>ChunkInfo</code>, <code>ChunkBitmap</code>, <code>Arena</code>, <code>ArenaHeader</code>, <code>Cell</code>, <code>FreeSpan</code>といった一連の構造体を定義します。</p> -<p><strong>gc/Marking.{h,cpp}</strong> 多様なGC対象用のマーク作業関数の全てを定義します。</p> -<p><strong>gc/Memory.{h,cpp}</strong> ページの配置と解放(mapping and unmapping)のための僅かな関数に加えて、プラットフォーム固有の実装を保持しています。配置・解放(map/unmap)用の関数はチャンクの確保と解放(allocate and release )用のために、 jsgc.cppによって使用されています。使用されておらずディスクに格納する代わりメモリ破棄が可能なページをOS伝えるなどに用いる、確保または解放(commit or decommit)のための関数もあります。</p> -<p><strong>gc/Root.h</strong> GCルートとして用いられる変数クラスを定義します。</p> -<p><strong>gc/Statistics.{h,cpp}</strong> SpiderMonkey GCのパフォーマンスカウンタとして保存される Statics構造体を定義しています。</p> -<h2 id="用語の解説">用語の解説</h2> -<p>TODO(原文ママ): SpiderMonkeyの実装と色の名前が一致しているかを確認</p> -<p><strong>black(黒)</strong>一般的な計算機科学の文脈において、マークフェイズ中、マーク済かつ子供がgray(マークキューに積まれている)なオブジェクトをblackとします。SpiderMonkeyでは、マークビットが設定されたオブジェクトをblackと見なします。</p> -<p><strong>gray(灰色)</strong>:一般的な計算機科学の文脈において、マークフェイズ中、マークキューに積まれているオブジェクトをgrayとします。SpiderMonkeyでは、マークスタック内のオブジェクトの子孫かつblackで無いものはgrayとなります。つまり、状態が明白でないオブジェクトがgrayであるということです。</p> -<p><strong>Handle(ハンドル)</strong> 私たちのGCでは、Handleはルートによって登録されたどこかを指し示すポインタです。</p> -<p><strong>root</strong> TODO(原文ママ): 上からコピーする</p> -<p><strong>weak pointer(弱参照ポインタ)</strong> 一般的な計算機科学の文脈において、weak pointerはGC目的で指し示された値が生存し続ける必要がなくなるポインタです。具体的には、既にポインタの指し示す対象が既にGCされている場合は、weak pointerのget()メソッドが返す値はnullポインタとなります。Gecko/SpiderMonkeyでは、weak pointerはマークされていないがGC対象となりうるオブジェクトへのポインタとなります。そのため、get()メソッドは存在せず、指し示す値がGCされたかどうかの保証も存在しません。プログラマは、指し示されたオブジェクトの生存時間が、weak pointerの生存時間よりも長いことを保証する必要があります。TODO(原文ママ) これが正しいか確認。</p> -<p><strong>white(白)</strong> 一般的な計算機科学の文脈において、マークフェイズ中、まだ辿れていないオブジェクトはwhiteとなります。マークされなかった場合、マークフェイズの後にオブジェクトはwhiteとなります。SpiderMonkeyでは、grayでもblackでもない(blackでもマークスタック内のオブジェクトの子でもない)オブジェクトがwhiteとなります。</p> -<h2 id="クリーンアップの可能性">クリーンアップの可能性</h2> -<p><strong>MarkPagesInUse</strong> はすべてのプラットフォームで何の操作も実施しません。</p> -<p>統計ファイルのマージ。</p> -<p><code>ArenaLists::refillFreeLists</code>は悪いネーミングです。それは、たとえ<code>Arena</code>の解放リストが完全ではなくても、<code>Cell</code>の確保を試みるように見えます。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/internals/index.html b/files/ja/mozilla/projects/spidermonkey/internals/index.html deleted file mode 100644 index 49e8157aa7..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/internals/index.html +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: Internals -slug: Mozilla/Projects/SpiderMonkey/Internals -tags: - - JavaScript - - SpiderMonkey - - 要更新 - - 要翻訳 -translation_of: Mozilla/Projects/SpiderMonkey/Internals ---- -<div>{{SpiderMonkeySidebar("Internals")}}</div> - -<h2 id="Design_walk-through" name="Design_walk-through">設計</h2> - -<p>SpiderMonkey は型付けされていないバイトコードと JavaScript で扱いうる値を表す<code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value"> JS::Value </a></code>型に対する演算を高速に行えるインタプリタです。Just-In-Time (JIT) コンパイラやガベージコレクションの機構を備え、JavaScript の値が持つ基本的な振る舞いと <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-15">ECMA 262-5.1 §15</a> とその他の拡張で定義された標準ライブラリを実装し、いくつかのパブリックな API が提供されています。</p> - -<h3 id="インタプリタ">インタプリタ</h3> - -<p>多くの移植可能なインタプリタと同様、SpiderMonkey のインタプリタは主に単一の長大な関数として実装されています。バイトコードを 1 つずつ実行され、現在の命令に対応するコードへの分岐は <code>switch </code>文を利用して行われます(コンパイラによっては、より高速な手法が利用されます)。JS で記述された関数同士の呼び出し時にはJavaScript のスタックフレームが伸長し、C のスタックは消費されません。一方 JS で記述された関数から、C で定義された関数を呼び出し、また JS で記述された関数を呼ぶような場合は、コールスタックは通常通りに消費されるため、インタプリタは再突入可能となっています。</p> - -<p>SpiderMonkey バイトコードの処理には、引数の型による多くの特例が存在します。通常はインタプリタのループ内で処理されますが、邪魔な抽象化を無視する場合もあります。密な配列やプロパティキャッシュのような最適化は、<code>jsinterp.cpp</code> に定義されている <code>jsarray.*</code> や <code>jsobj.*</code> によって隠蔽され、透過的に行われるわけでは「ありません」。</p> - -<p>インタプリタに関する状態は、インタプリタのエントリポイントに引数として渡されます。暗黙的な状態は <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSRuntime" title="SpiderMonkey/JSAPI_Reference/JSRuntime">JSContext</a></code> 型の値にまとめられており、API であろうがなかろうが、SpiderMonkey のすべての関数は第 1 引数に、JSContext 型のポインタをとります。</p> - -<h3 id="コンパイラ">コンパイラ</h3> - -<p>コンパイラは JavaScript のソースコードを処理し、<em>script</em> を生成します。script にはバイトコードとそのソースコード、ソースに対するアノテーション、文字列、数値、識別子のリテラルが含まれます。またソースコード中で定義されている関数も含む、オブジェクトも script には含まれます。それぞれの関数は入れ子になった script を保持します。</p> - -<p>The compiler consists of: a random-logic rather than table-driven lexical scanner, a recursive-descent parser that produces an AST, and a tree-walking code generator. Semantic and lexical feedback are used to disambiguate hard cases such as missing semicolons, assignable expressions ("lvalues" in C parlance), and whether <code>/</code> is the division symbol or the start of a regular expression. The compiler attempts no error recovery; it bails out on the first error. The emitter does some constant folding and a few codegen optimizations; about the fanciest thing it does is to attach source notes to the script for the decompiler's benefit.</p> - -<p>The decompiler implements <code>Function.toSource()</code>, which reconstructs a function's source code. It translates postfix bytecode into infix source by consulting a separate byte-sized code, called <em>source notes</em>, to disambiguate bytecodes that result from more than one grammatical production.</p> - -<h3 id="Garbage_collector">Garbage collector</h3> - -<p>The GC is a mark-and-sweep, non-conservative (exact) collector. It is used to hold JS objects and string descriptors (<a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/String.h">JSString</a>), but not string bytes. It runs automatically only when maxbytes (as passed to <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_NewRuntime" title="SpiderMonkey/JSAPI_Reference/JS_NewRuntime">JS_NewRuntime</a></code>) bytes of GC things have been allocated and another thing-allocation request is made. JS API users should call <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GC" title="SpiderMonkey/JSAPI_Reference/JS_GC">JS_GC</a></code> or <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_MaybeGC" title="SpiderMonkey/JSAPI_Reference/JS_MaybeGC">JS_MaybeGC</a></code> between script executions or from the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetOperationCallback" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetOperationCallback">operation callback</a>, as often as necessary.</p> - -<p>Because the GC is exact, C/C++ applications must ensure that all live objects, strings, and numbers are GC-reachable.</p> - -<h3 id="JavaScript_values">JavaScript values</h3> - -<p>The type <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value">JS::Value</a></code> represents a JavaScript value.</p> - -<p>The representation is 64 bits and uses NaN-boxing on all platforms, although the exact NaN-boxing format depends on the platform. NaN-boxing is a technique based on the fact that in IEEE-754 there are 2**47 different bit patterns that all represent NaN. Hence, we can encode any floating-point value as a C++ <code>double </code>(noting that JavaScript NaN must be represented as one canonical NaN format). Other values are encoded as a value and a type tag:</p> - -<ul> - <li>On x86, ARM, and similar 32-bit platforms, we use what we call "nunboxing", in which non-<code>double </code>values are a 32-bit type tag and a 32-bit payload, which is normally either a pointer or a signed 32-bit integer. There are a few special values: <code>NullValue()</code>, <code>UndefinedValue()</code>, <code>TrueValue()</code> and <code>FalseValue().</code></li> - <li>On x64 and similar 64-bit platforms, pointers are longer than 32 bits, so we can't use the nunboxing format. Instead, we use "punboxing", which has 17 bits of tag and 47 bits of payload.</li> -</ul> - -<p>Only JIT code really depends on the layout--everything else in the engine interacts with values through functions like <code>val.isDouble()</code>. Most parts of the JIT also avoid depending directly on the layout: the files <code>PunboxAssembler.h</code> and <code>NunboxAssembler.h</code> are used to generate native code that depends on the value layout.</p> - -<p>Objects consist of a possibly shared structural description, called the map or scope; and unshared property values in a vector, called the slots. Each property has an <a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/jsid" title="SpiderMonkey/JSAPI_Reference/jsid">id</a>, either a nonnegative integer or an atom (unique string), with the same tagged-pointer encoding as a <code>jsval</code>.</p> - -<p>The atom manager consists of a hash table associating strings uniquely with scanner/parser information such as keyword type, index in script or function literal pool, etc. Atoms play three roles: as literals referred to by unaligned 16-bit immediate bytecode operands, as unique string descriptors for efficient property name hashing, and as members of the root GC set for exact GC.</p> - -<h3 id="Standard_library">Standard library</h3> - -<p>The methods for arrays, booleans, dates, functions, numbers, and strings are implemented using the JS API. Most are <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSFastNative" title="SpiderMonkey/JSAPI_Reference/JSFastNative">JSFastNative</a></code>s. Most string methods are customized to accept a primitive string as the <code>this</code> argument. (Otherwise, SpiderMonkey converts primitive values to objects before invoking their methods, per <span class="pl-s1"><span class="pl-s">ECMA 262-3 §</span></span>11.2.1.)</p> - -<h3 id="Error_handling">Error handling</h3> - -<p>SpiderMonkey has two interdependent error-handling systems: JavaScript exceptions (which are <em>not</em> implemented with, or even compatible with, any kind of native C/C++ exception handling) and error reporting. In general, both functions inside SpiderMonkey and JSAPI callback functions signal errors by calling <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="SpiderMonkey/JSAPI_Reference/JS_ReportError">JS_ReportError</a></code> or one of its variants, or <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a></code>, and returning <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSBool" title="SpiderMonkey/JSAPI_Reference/JSBool">JS_FALSE</a></code> or <code>NULL</code>.</p> - -<h3 id="Public_APIs">Public APIs</h3> - -<p>The public C/C++ interface, called the JSAPI, is in most places a thin (but source-compatible across versions) layer over the implementation. See the <a href="/en-US/docs/SpiderMonkey/JSAPI_User_Guide" title="JSAPI_User_Guide">JSAPI User Guide</a>. There is an additional public API for JavaScript debuggers, <a href="/en-US/docs/JSDBGAPI_Reference" title="JSDBGAPI_Reference">JSDBGAPI</a>, but {{Source("js/jsd/jsdebug.h")}} might be a better API for debuggers. Another API, <a href="/en-US/docs/JSXDRAPI" title="JSXDRAPI">JSXDRAPI</a>, provides serialization for JavaScript scripts. (XUL Fastload uses this.)</p> - -<h3 id="Just-In-Time_compiler">Just-In-Time compiler</h3> - -<p>SpiderMonkey contains a <a href="https://blog.mozilla.org/javascript/2013/04/05/the-baseline-compiler-has-landed/">baseline compiler</a> as first tier. A second tier JIT, code-named <em>IonMonkey</em> was enabled in <a href="https://blog.mozilla.org/javascript/2012/09/12/ionmonkey-in-firefox-18/" title="https://blog.mozilla.org/javascript/2012/09/12/ionmonkey-in-firefox-18/">Firefox 18</a>. <a href="https://wiki.mozilla.org/IonMonkey">IonMonkey</a> is an optimizing compiler.</p> - -<h3 id="Self-hosting_of_built-in_functions_in_JS">Self-hosting of built-in functions in JS</h3> - -<p>Starting with Firefox 17, SpiderMonkey has the ability to implement built-in functions in self-hosted JS code. This code is compiled in a special compilation mode that gives it access to functionality that's not normally exposed to JS code, but that's required for safe and specification-conformant implementation of built-in functions.</p> - -<p>All self-hosted code lives in <code>.js</code> files under <code>builtin/</code>. For details on implementing self-hosted built-ins, see <a href="/en-US/docs/SpiderMonkey/Internals/self-hosting" title="SpiderMonkey/self-hosting">self-hosting</a>.</p> - -<h2 id="File_walkthrough" name="File_walkthrough">File walkthrough</h2> - -<h4 id="jsapi.cpp.2C_jsapi.h" name="jsapi.cpp.2C_jsapi.h">jsapi.cpp, jsapi.h</h4> - -<p>The public API to be used by almost all client code.</p> - -<h4 id="jspubtd.h.2C_jsprvtd.h" name="jspubtd.h.2C_jsprvtd.h">jspubtd.h, jsprvtd.h</h4> - -<p>These files exist to group struct and scalar typedefs so they can be used everywhere without dragging in struct definitions from N different files. The <code>jspubtd.h</code> file contains public typedefs, and is included automatically when needed. The <code>jsprvtd.h</code> file contains private typedefs and is included by various .h files that need type names, but not type sizes or declarations.</p> - -<h4 id="jsdbgapi.cpp.2C_jsdbgapi.h" name="jsdbgapi.cpp.2C_jsdbgapi.h">jsdbgapi.cpp, jsdbgapi.h</h4> - -<p>The debugging API. Provided so far:</p> - -<p><strong>Traps</strong>, with which breakpoints, single-stepping, step over, step out, and so on can be implemented. The debugger will have to consult jsopcode.def on its own to figure out where to plant trap instructions to implement functions like step out, but a future jsdbgapi.h will provide convenience interfaces to do these things. At most one trap per bytecode can be set. When a script (<code><a href="/en-US/docs/JSScript" title="JSScript">JSScript</a></code>) is destroyed, all traps set in its bytecode are cleared.</p> - -<p><strong>Watchpoints</strong>, for intercepting set operations on properties and running a debugger-supplied function that receives the old value and a pointer to the new one, which it can use to modify the new value being set.</p> - -<p><strong>Line number</strong> to PC and back mapping functions. The line-to-PC direction "rounds" toward the next bytecode generated from a line greater than or equal to the input line, and may return the PC of a for-loop update part, if given the line number of the loop body's closing brace. Any line after the last one in a script or function maps to a PC one byte beyond the last bytecode in the script. An example, from perfect.js:</p> - -<pre class="brush:js;first-line:14">function perfect(n) { - print("The perfect numbers up to " + n + " are:"); - // We build sumOfDivisors[i] to hold a string expression for - // the sum of the divisors of i, excluding i itself. - var sumOfDivisors = new ExprArray(n + 1, 1); - for (var divisor = 2; divisor <= n; divisor++) { - for (var j = divisor + divisor; j <= n; j += divisor) { - sumOfDivisors[j] += " + " + divisor; - } - // At this point everything up to 'divisor' has its sumOfDivisors - // expression calculated, so we can determine whether it's perfect - // already by evaluating. - if (eval(sumOfDivisors[divisor]) == divisor) { - print("" + divisor + " = " + sumOfDivisors[divisor]); - } - } - delete sumOfDivisors; - print("That's all."); -}</pre> - -<p>The line number to PC and back mappings can be tested using the js program with the following script:</p> - -<pre class="brush:js">load("perfect.js"); -print(perfect); -dis(perfect); -print(); -for (var ln = 0; ln <= 40; ln++) { - var pc = line2pc(perfect, ln); - var ln2 = pc2line(perfect, pc); - print("\tline " + ln + " => pc " + pc + " => line " + ln2); -} -</pre> - -<p>The result of the for loop over lines 0 to 40 inclusive is:</p> - -<pre>line 0 => pc 0 => line 16 -line 1 => pc 0 => line 16 -line 2 => pc 0 => line 16 -line 3 => pc 0 => line 16 -line 4 => pc 0 => line 16 -line 5 => pc 0 => line 16 -line 6 => pc 0 => line 16 -line 7 => pc 0 => line 16 -line 8 => pc 0 => line 16 -line 9 => pc 0 => line 16 -line 10 => pc 0 => line 16 -line 11 => pc 0 => line 16 -line 12 => pc 0 => line 16 -line 13 => pc 0 => line 16 -line 14 => pc 0 => line 16 -line 15 => pc 0 => line 16 -line 16 => pc 0 => line 16 -line 17 => pc 19 => line 20 -line 18 => pc 19 => line 20 -line 19 => pc 19 => line 20 -line 20 => pc 19 => line 20 -line 21 => pc 36 => line 21 -line 22 => pc 53 => line 22 -line 23 => pc 74 => line 23 -line 24 => pc 92 => line 22 -line 25 => pc 106 => line 28 -line 26 => pc 106 => line 28 -line 27 => pc 106 => line 28 -line 28 => pc 106 => line 28 -line 29 => pc 127 => line 29 -line 30 => pc 154 => line 21 -line 31 => pc 154 => line 21 -line 32 => pc 161 => line 32 -line 33 => pc 172 => line 33 -line 34 => pc 172 => line 33 -line 35 => pc 172 => line 33 -line 36 => pc 172 => line 33 -line 37 => pc 172 => line 33 -line 38 => pc 172 => line 33 -line 39 => pc 172 => line 33 -line 40 => pc 172 => line 33 -</pre> - -<h4 id="jsconfig.h" name="jsconfig.h">jsconfig.h</h4> - -<p>Various configuration macros defined as 0 or 1 depending on how <code><a href="/en-US/docs/JS_VERSION" title="JS_VERSION">JS_VERSION</a></code> is defined (as 10 for JavaScript 1.0, 11 for JavaScript 1.1, etc.). Not all macros are tested around related code yet. In particular, JS 1.0 support is missing from SpiderMonkey.</p> - -<h4 id="js.cpp.2C_jsshell.msg" name="js.cpp.2C_jsshell.msg">js.cpp, jsshell.msg</h4> - -<p>The "JS shell", a simple interpreter program that uses the JS API and more than a few internal interfaces (some of these internal interfaces could be replaced by <code>jsapi.h</code> calls). The js program built from this source provides a test vehicle for evaluating scripts and calling functions, trying out new debugger primitives, etc.</p> - -<p>A look at the places where <code>jsshell.msg</code> is used in <code>js.cpp</code> shows how error messages can be handled in JSAPI applications. These messages can be localized at compile time by replacing the <code>.msg</code> file; or, with a little modification to the source, at run time.</p> - -<p><a href="/en-US/docs/SpiderMonkey/Introduction_to_the_JavaScript_shell" title="https://developer.mozilla.org/en/introduction_to_the_javascript_shell">More information on the JavaScript shell</a>.</p> - -<h4 id="js.msg" name="js.msg">js.msg</h4> - -<p>SpiderMonkey error messages.</p> - -<h4 id="jsarray..2A.2C_jsbool..2A.2C_jdsdate..2A.2C_jsfun..2A.2C_jsmath..2A.2C_jsnum..2A.2C_jsstr..2A" name="jsarray..2A.2C_jsbool..2A.2C_jdsdate..2A.2C_jsfun..2A.2C_jsmath..2A.2C_jsnum..2A.2C_jsstr..2A">jsarray.*, jsbool.*, jsdate.*, jsfun.*, jsmath.*, jsnum.*, jsstr.*</h4> - -<p>These file pairs implement the standard classes and (where they exist) their underlying primitive types. They have similar structure, generally starting with class definitions and continuing with internal constructors, finalizers, and helper functions.</p> - -<h4 id="jsobj..2A.2C_jsscope..2A" name="jsobj..2A.2C_jsscope..2A">jsobj.*, jsscope.*</h4> - -<p>These two pairs declare and implement the JS object system. All of the following happen here:</p> - -<ul> - <li>creating objects by class and prototype, and finalizing objects;</li> - <li>defining, looking up, getting, setting, and deleting properties;</li> - <li>creating and destroying properties and binding names to them.</li> -</ul> - -<p>The details of a native object's map (scope) are mostly hidden in <code>jsscope.{{mediawiki.external('ch')}}</code>.</p> - -<h4 id="jsatom.cpp.2C_jsatom.h" name="jsatom.cpp.2C_jsatom.h">jsatom.cpp, jsatom.h</h4> - -<p>The atom manager. Contains well-known string constants, their atoms, the global atom hash table and related state, the js_Atomize() function that turns a counted string of bytes into an atom, and literal pool (<code>JSAtomMap</code>) methods.</p> - -<h4 id="jsarena.cpp.2C_jsarena.h" name="jsarena.cpp.2C_jsarena.h">jsarena.cpp, jsarena.h</h4> - -<p>Last-In-First-Out allocation macros that amortize malloc costs and allow for en-masse freeing. See the paper mentioned in <code>jsarena.h</code>'s major comment.</p> - -<h4 id="jsgc.cpp.2C_jsgc.h" name="jsgc.cpp.2C_jsgc.h">jsgc.cpp, jsgc.h</h4> - -<p>The garbage collector and tracing routines.</p> - -<h4 id="jsinterp..2A.2C_jscntxt..2A.2C_jsinvoke.cpp" name="jsinterp..2A.2C_jscntxt..2A.2C_jsinvoke.cpp">jsinterp.*, jscntxt.*, jsinvoke.cpp</h4> - -<p>The bytecode interpreter, and related functions such as Call and AllocStack, live in <em>jsinterp.cpp</em>. The JSContext constructor and destructor are factored out into <em>jscntxt.cpp</em> for minimal linking when the compiler part of JS is split from the interpreter part into a separate program.</p> - -<p><code>jsinvoke.cpp</code> is a build hack used on some platforms to build <code>js_Interpret</code> under different compiler options from the rest of <code>jsinterp.cpp</code>.</p> - -<h4 id="jstracer.*_nanojit*">jstracer.*, nanojit/*</h4> - -<p><a href="/en-US/docs/SpiderMonkey/Internals/Tracing_JIT" title="SpiderMonkey/Internals/Tracing JIT">The tracing JIT</a>. The interface between the JIT and the rest of SpiderMonkey is conceptually small—the interpreter calls into the trace recorder—but as with everything else, there are tendrils everywhere.</p> - -<h4 id="jsemit..2A.2C_jsopcode.tbl.2C_jsopcode..2A.2C_jsparse..2A.2C_jsscan..2A.2C_jsscript..2A" name="jsemit..2A.2C_jsopcode.tbl.2C_jsopcode..2A.2C_jsparse..2A.2C_jsscan..2A.2C_jsscript..2A">jsemit.*, jsopcode.tbl, jsopcode.*, jsparse.*, jsscan.*, jsscript.*</h4> - -<p>Compiler and decompiler modules. The <em>jsopcode.tbl</em> file is a C preprocessor source that defines almost everything there is to know about JS bytecodes. See its major comment for how to use it. For now, a debugger will use it and its dependents such as <em>jsopcode.h</em> directly, but over time we intend to extend <em>jsdbgapi.h</em> to hide uninteresting details and provide conveniences. The code generator is split across paragraphs of code in <em>jsparse.cpp</em>, and the utility methods called on <code>JSCodeGenerator</code> appear in <em>jsemit.cpp</em>. Source notes generated by <em>jsparse.cpp</em> and <em>jsemit.cpp</em> are used in <em>jsscript.cpp</em> to map line number to program counter and back.</p> - -<h4 id="jstypes.h" name="jstypes.h">jstypes.h</h4> - -<p>Fundamental representation types and utility macros. This file alone among all .h files in SpiderMonkey must be included first by .cpp files. It is not nested in .h files, as other prerequisite .h files generally are, since it is also a direct dependency of most .cpp files and would be over-included if nested in addition to being directly included.</p> - -<h4 id="jsbit.h.2C_jslog2.cpp" name="jsbit.h.2C_jslog2.cpp">jsbit.h, jslog2.cpp</h4> - -<p>Bit-twiddling routines. Most of the work here is selectively enabling compiler-specific intrinsics such as GCC's <code>__builtin_ctz</code>, which is useful in calculating base-2 logarithms of integers.</p> - -<h4 id="jsutil.cpp.2C_jsutil.h" name="jsutil.cpp.2C_jsutil.h">jsutil.cpp, jsutil.h</h4> - -<p>The <code>JS_ASSERT</code> macro is used throughout the source as a proof device to make invariants and preconditions clear to the reader, and to hold the line during maintenance and evolution against regressions or violations of assumptions that it would be too expensive to test unconditionally at run-time. Certain assertions are followed by run-time tests that cope with assertion failure, but only where I'm too smart or paranoid to believe the assertion will never fail...</p> - -<h4 id="jsclist.h" name="jsclist.h">jsclist.h</h4> - -<p>Doubly-linked circular list struct and macros.</p> - -<h4 id="jscpucfg.cpp" name="jscpucfg.cpp">jscpucfg.cpp</h4> - -<p>This standalone program generates <em>jscpucfg.h</em>, a header file containing bytes per word and other constants that depend on CPU architecture and C compiler type model. It tries to discover most of these constants by running its own experiments on the build host, so if you are cross-compiling, beware.</p> - -<h4 id="jsdtoa.cpp.2C_jsdtoa.h.2C_dtoa.c" name="jsdtoa.cpp.2C_jsdtoa.h.2C_dtoa.c">jsdtoa.cpp, jsdtoa.h, dtoa.c</h4> - -<p>dtoa.c contains David Gay's portable double-precision floating point to string conversion code, with Permission To Use notice included. jsdtoa.cpp <code>#include</code>s this file.</p> - -<h4 id="jshash.cpp.2C_jshash.h.2C_jsdhash.cpp.2C_jsdhash.h" name="jshash.cpp.2C_jshash.h.2C_jsdhash.cpp.2C_jsdhash.h">jshash.cpp, jshash.h, jsdhash.cpp, jsdhash.h</h4> - -<p>Portable, extensible hash tables. These use multiplicative hash for strength reduction over division hash, yet with very good key distribution over power of two table sizes. jshash resolves collisions via chaining, so each entry burns a malloc and can fragment the heap. jsdhash uses open addressing.</p> - -<h4 id="jslong.cpp.2C_jslong.h" name="jslong.cpp.2C_jslong.h">jslong.cpp, jslong.h</h4> - -<p>64-bit integer emulation, and compatible macros that use intrinsic C types, like <code>long long</code>, on platforms where they exist (most everywhere, these days).</p> - -<h4 id="jsprf..2A" name="jsprf..2A">jsprf.*</h4> - -<p>Portable, buffer-overrun-resistant sprintf and friends. For no good reason save lack of time, the %e, %f, and %g formats cause your system's native sprintf, rather than <code>JS_dtoa()</code>, to be used. This bug doesn't affect SpiderMonkey, because it uses its own <code>JS_dtoa()</code> call in <code>jsnum.cpp</code> to convert from double to string, but it's a bug that we'll fix later, and one you should be aware of if you intend to use a <code>JS_*printf()</code> function with your own floating type arguments - various vendor sprintf's mishandle NaN, +/-Inf, and some even print normal floating values inaccurately.</p> - -<h4 id="prmjtime.c.2C_prmjtime.h" name="prmjtime.c.2C_prmjtime.h">prmjtime.c, prmjtime.h</h4> - -<p>Time functions. These interfaces are named in a way that makes local vs. universal time confusion likely. Caveat emptor, and we're working on it. To make matters worse, Java (and therefore JavaScript) uses "local" time numbers (offsets from the epoch) in its Date class.</p> - -<h4 id="jsfile.cpp.2C_jsfile.h.2C_jsfile.msg" name="jsfile.cpp.2C_jsfile.h.2C_jsfile.msg">jsfile.cpp, jsfile.h, jsfile.msg</h4> - -<p>Obsolete. Do not use these files.</p> - -<h4 id="Makefile.in.2C_build.mk" name="Makefile.in.2C_build.mk">Makefile.in, build.mk</h4> - -<p>Mozilla makefiles. If you're building Gecko or Firefox, the larger build system will use these files. They are also used for current standalone builds.</p> - -<h4 id="Makefile.ref.2C_rules.mk.2C_config.mk.2C_config.2F.2A" name="Makefile.ref.2C_rules.mk.2C_config.mk.2C_config.2F.2A">Makefile.ref, rules.mk, config.mk, config/*</h4> - -<p>Obsolete SpiderMonkey standalone makefiles from 1.8 and earlier. See <a href="/en-US/docs/SpiderMonkey/Build_Documentation#Building_SpiderMonkey_1.8_or_earlier" title="SpiderMonkey/Build Documentation#Building SpiderMonkey 1.8 or earlier">SpiderMonkey Build Documentation</a>.</p> - -<h3 id="See_also">See also</h3> - -<ul> - <li><a href="/jsd" title="jsd">jsd</a></li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html b/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html deleted file mode 100644 index 90bfb3fb10..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Thread Safety -slug: Mozilla/Projects/SpiderMonkey/Internals/Thread_Safety -tags: - - JavaScript - - SpiderMonkey ---- -<p>This page describes implementation details of the <a href="/ja/SpiderMonkey" title="ja/SpiderMonkey">SpiderMonkey</a> JavaScript engine. It is mainly of interest to people working on SpiderMonkey itself, but this information is also helpful for anyone embedding SpiderMonkey in a multithreaded environment. See also <code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>.</p> -<p>{{ 英語版章題("General background") }}</p> -<h4 id="General_background" name="General_background">General background</h4> -<p>SpiderMonkeyは、最上位の構造体として<code><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JSRuntime</a></code>を利用します。これらの構造体は、メモリの管理とグローバルなデータ構造を扱います。 通常の場合プログラムは、多くのスレッドを利用する場合でも、1つだけ<code>JSRuntime</code>を使います。<code>JSRuntime</code>は、JSオブジェクトが動作する 世界といってもよいでしょう。オブジェクトは、他の<code>JSRuntime</code>に移って動作することはできません。 <span class="comment">SpiderMonkey has a top-level struct, <code><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime"></code>, that handles, among other things, memory management and "global" data structures. A program typically has only one <code>JSRuntime</code>, even if it has many threads. The <code>JSRuntime</code> is the universe in which JS objects live; they can't travel to other <code>JSRuntime</code>s.</a></span></p> -<p>全てのJSコードとほとんどのJSAPIの呼び出しは、<code><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JSContext</a></code>の中で動作します。<code>JSContext</code>は、 <code>JSRuntime</code>の子供のようなもので、例えば、例外の処理などは、<code>JSContext</code>ごとに実行されます。 各<code>JSContext</code>は、同時に複数スレッドからアクセスしてはなりません。 <span class="comment">All JS code and most JSAPI calls run within a <code><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JSContext</a></code>. The <code>JSContext</code> is a child of the <code>JSRuntime</code>; exception handling, for example, is per-<code>JSContext</code>. Each <code>JSContext</code> must be used by only one thread at a time.</span></p> -<p>オブジェクトは、同じ<code>JSRuntime</code>内の<code>JSContext</code>間で共有できます。コンテキストとオブジェクトの間には、固定的な関係はありません。 <span class="comment">Objects may be shared among <code>JSContext</code>s within a <code>JSRuntime</code>. There's no fixed association between an object and a context.</span></p> -<p>SpiderMonkeyにおけるスレッドセーフ機能は、<code>-DJS_THREADSAFE</code>をつけてコンパイルすることで有効になります。<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、次のような操作について特別な処理が行われます。 <span class="comment">Thread-safety in SpiderMonkey is turned on by compiling with <code>-DJS_THREADSAFE</code>. In a <code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code> build, these operations are handled specially:</span></p> -<ul> <li><code>JSRuntime</code>のデータ構造にアクセスする場合</li> <li>ガーベジコレクションを行う場合</li> <li>オブジェクトのプロパティにアクセスする場合</li> -</ul> -<p><span class="comment">* access to <code>JSRuntime</code> data structures * garbage collection * access to properties of objects</span></p> -<p><code>JSRuntime</code>のデータ構造へのアクセスは、mutexによってシリアライズされます。 GCとプロパティに関する処理については、もう少し詳しく説明します。 <span class="comment">Accesses to <code>JSRuntime</code> data structures are serialized with a few mutexes. The treatment of GC and properties requires more explanation.</span></p> -<p>{{ 英語版章題("Making GC thread-safe") }}</p> -<h4 id="Making_GC_thread-safe" name="Making_GC_thread-safe">Making GC thread-safe</h4> -<p><code>JS_THREADSAFE</code>を用いるときは、APIを若干変更します。プログラム中でJSAPIを呼び出すときは、次に示す"request"で くくらなくてはなりません。 <span class="comment">With <code>JS_THREADSAFE</code>, the API changes slightly. The program must group JSAPI calls into "requests":</span></p> -<pre class="eval"> <a href="/ja/JS_SetContextThread" title="ja/JS_SetContextThread">JS_SetContextThread</a>(cx); - <a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>(cx); - /* ... do stuff ... */ - <a href="/ja/JS_EndRequest" title="ja/JS_EndRequest">JS_EndRequest</a>(cx); - <a href="/ja/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a>(cx); -</pre> -<p>複数のスレッドがrequest内で同じ<code>JSRuntime</code>を同時にアクセスできるため、この操作がボトルネックになることはありません。詳細は<a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>を参照してください。 <span class="comment">It isn't a bottleneck; multiple threads are allowed to be in requests on the same <code>JSRuntime</code> at once. See <a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>.</span></p> -<p>requestの最も顕著な効果は、いつでも複数のスレッドがrequestのくくりを実行することができるか、1つのスレッドだけがGCを実行していて他のスレッドが停止させられている 用にすることです。JS_GC()を呼び出しても、他のスレッドが停止させられるまでは、処理がブロックされます。つまり、他のスレッドがJSAPIを呼び出していないか (呼び出していないときには、特に注意する必要がないので)、JSAPIを実行中であってもGCが終了するのを待っているブロックしている状態になるまで、 GCの実行は停止させられます。 <span class="comment">The most obvious effect of a request is: at any given moment there can either be multiple threads in active requests, or one thread doing GC and all requests suspended. A call to JS_GC() will block until the latter becomes possible. In other words, GC waits until each other thread is either outside JSAPI (in which case we don't care what it's doing) or else in JSAPI, but blocked, waiting for GC to finish.</span></p> -<p>requestのくくりの中にいないときには、スレッドは、GCに影響を与えるような処理を行ってはいけません。 当たり前のことですが、requestのくくりの中では、GCが抑止されてしまうので、ブロックしたり、時間のかかる処理を行ってはいけません。 <span class="comment">Threads must not do anything that would affect GC while outside a request. And obviously you shouldn't block or otherwise dilly-dally while in a request; it prohibits GC. 最適化のために、スレッドには、スレッドごとの大きさごとに分けられた、割り当て可能なGC用のメモリの集合に関するフリーリストを持っています。 このリストにより、ほとんどの場合ロックせずにメモリを割り当てることができます。スレッドがロックを必要とするのは、スレッドの対応するフリーリストが 空だった場合だけです。このようなことが怒った場合に、ロックして広域のGC割り当てを行い、<code>JSRuntime</code>から、フリーリストに領域を補充します。 <!--As an optimization, each thread has its own size-classified freelists containing chunks of GC-managed memory ready to be allocated. This allows allocation to avoid locking most of the time (a significant speed win). A thread needs to lock on allocation only when the relevant per-thread freelist is empty. When this happens, the thread also refills that freelist from the <code>JSRuntime</code>-wide GC allocator while it's in the lock.</span></p> -<p>{{ 英語版章題("Making property accesses thread-safe") }}</p> -<h4 id="Making_property_accesses_thread-safe" name="Making_property_accesses_thread-safe">Making property accesses thread-safe</h4> -<p>JSAPIのユーザにとっては、プロパティへのアクセスは全てシリアライズされているように見えます。これから記述する方法は、SpiderMonkeyの内部に関するもので ユーザにとっては見えない、最適化についてです。 <span class="comment">To the JSAPI user, all property accesses appear to be serialized. The scheme described below is an optimization, internal to SpiderMonkey and invisible to the user.</span></p> -<p>SpiderMonkeyの実装では、mutableなオブジェクトは必要に応じて暗黙のうちにロックされます。ロックの手順は、うまく最適化されていて、単なるmutexではありません。 <span class="comment">SpiderMonkey implicitly locks mutable objects as needed. The locking protocol is cleverly optimized. It's not a simple mutex.</span></p> -<p>それぞれの、mutableなオブジェクトは、<code>JSContext</code>が"占有"している(つまり、コンテキストがロックをしなくてもプロパティにアクセスできる) か、<code>JSRuntime</code>内の<code>JSContext</code>で、"共有"しているかのいずれかです。(繰り返しになりますが、JSAPIのユーザにとっては、全てのオブジェクトは 共有されており、この"所有関係"は、ユーザには見えないように最適化されています。) <span class="comment">Each mutable object is either "owned" by a <code>JSContext</code>, meaning that context may access its properties without locking; or "shared" across all <code>JSContext</code>s in the <code>JSRuntime</code>. (Again, to the end user, all objects are shared--this "ownership" is a transparent optimization.)</span></p> -<p>初期状態では、オブジェクトの所有者は、オブジェクトを作った<code>JSContext</code.です。他の<code>JSContext</code>がオブジェクトにアクセスしようとするまでは、 ロックは全く必要ではありません。他のコンテキストがアクセスしようとした時点で、<code>JSRuntime</code>の広域ロックを取得します。ただ、この時点においても プロパティへの通常のアクセスは、1つのオブジェクト(つまり、プロパティを持っているオブジェクトのこと)のmutable部分に触る必要があるだけです。 従って、デッドロックは問題になりません。* また、スレッドがロックする必要がある場合でも、オブジェクトを所有しているコンテキストが requestのくくりを実行していないのであれば、コストのかかる他のスレッドとのランデブ**を避けることができます。 <span class="comment">Initially an object is owned by the <code>JSContext</code> in which it was created. Locking is never needed until some other <code>JSContext</code> tries to access the object. At that point, we acquire a <code>JSRuntime</code>-wide lock. But even then, each ordinary property access only needs to touch mutable parts of one object (the one that has the property), so deadlock isn't an issue.* And even though the calling thread must lock, it can still avoid a costly rendezvous** with another thread, if the context that owns the object is not currently in a request.</span></p> -<p>I found it helpful to read the code for <code><a href="http://lxr.mozilla.org/seamonkey/ident?i=OBJ_GET_SLOT" class="external">OBJ_GET_SLOT</a></code>, defined in <a href="http://hg.mozilla.org/mozilla-central/?file/tip/js/src/jsobj.h" class="external">jsobj.h</a>, and track down the various things it calls.</p> -<pre class="eval"> /* Thread-safe functions and wrapper macros for accessing slots in obj. */ - #define OBJ_GET_SLOT(cx,obj,slot) \ - (OBJ_CHECK_SLOT(obj, slot), \ - (OBJ_IS_NATIVE(obj) && OBJ_SCOPE(obj)->ownercx == cx) \ - ? LOCKED_OBJ_GET_SLOT(obj, slot) \ - : js_GetSlotThreadSafe(cx, obj, slot)) -</pre> -<p>Here <code>OBJ_CHECK_SLOT()</code> is just an assertion. <code>LOCKED_OBJ_GET_SLOT()</code> is the fast path; it amounts to an array access. <code>OBJ_SCOPE(obj)->ownercx</code> is the object's owning context, or <code>NULL</code> if the object is "shared". (An <code>OBJ_SCOPE</code> is just a handy place to stick this field; it is often shared across multiple objects, so all this locking is somewhat higher than object-level.)</p> -<p>This may appear unsafe, at least in SMP environments where writing a word isn't guaranteed to make the new value immediately visible to other CPUs. Requests save the day again: entering or leaving a request always briefly acquires a lock, which forces a read-write barrier. This barrier is necessary and sufficient to make several of these optimizations safe.</p> -<p>In short, any <code>JSContext</code> may touch any object, yet not only is locking usually optimized away, the threads don't even have to execute atomic instructions or barrier instructions in the most common path.</p> -<hr> -<p>* deadlock isn't an issue: That is, SpiderMonkey doesn't need any special code to detect and avoid potential deadlock when getting or setting an ordinary property, because it can't happen--you're only locking one object at a time. Assigning to <code>__proto__</code> is an example of a special case: SpiderMonkey checks for prototype chain cycles, which means locking the whole chain. So in that case, and maybe others, SpiderMonkey does extra work to avoid deadlock.</p> -<p>** can still avoid a costly rendezvous: That is, it can avoid "asking" that thread to surrender the object and then waiting for the thread to respond. It just takes the object. See <a href="http://lxr.mozilla.org/seamonkey/ident?i=ClaimScope" class="external">ClaimScope</a> in jslock.c.</p> -<p>{{ 英語版章題("Patent") }}</p> -<h4 id="Patent" name="Patent">Patent</h4> -<p>The SpiderMonkey request model is patented: <a href="http://www.wipo.int/pctdb/en/wo.jsp?wo=2003042845" class=" external" rel="freelink">http://www.wipo.int/pctdb/en/wo.jsp?wo=2003042845</a></p> -<p>The Mozilla Public License in the SpiderMonkey source code grants a worldwide royalty-free license to this invention.</p> - -<p>{{ languages( { "en": "en/SpiderMonkey_Internals/Thread_Safety" } ) }} </p> diff --git a/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html b/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html deleted file mode 100644 index f07dc77d69..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html +++ /dev/null @@ -1,376 +0,0 @@ ---- -title: JavaScript シェルの紹介 -slug: Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell ---- -<div>{{SpiderMonkeySidebar("General")}}</div> - -<div class="summary"> -<p><strong>JavaScript シェル</strong> (<code>js</code>) は <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> ソース配布に含まれているコマンドラインプログラムです。 これは、Python の対話型プロンプト、Lisp の read-eval-print ループ、または Ruby の irb に相当する JavaScript です。この記事では、シェルを使用して JavaScript コードを試したり JavaScript プログラムを実行したりする方法について説明します。</p> -</div> - -<p>SpiderMonkey JavaScript シェルを入手するには、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">SpiderMonkey ビルドドキュメント</a>を参照するか、<a href="https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/">Nightly Builds</a> からプラットフォーム用にコンパイルされたバイナリをダウンロードしてください。</p> - -<p>他の JavaScript シェルのリストについては、<a href="/ja/docs/JavaScript/Shells">JavaScript シェル</a>を参照してください。</p> - -<div class="note"> -<p>メモ: SpiderMonkey 44 {{geckoRelease(44)}} 以降、標準の Web 互換の JavaScript バージョンがデフォルトで使用されます (JS 1.7 以降ではなくなりました)。組み込みの <code>version()</code> シェルは、従来の機能をテストするためにまだ存在しています。</p> -</div> - -<h2 id="Using_the_JavaScript_shell" name="Using_the_JavaScript_shell">JavaScript シェルを実行する</h2> - -<p>シェルには2つの動作モードがあります。インタラクティブシェルとして使用することができます。ここでは、プロンプトで JavaScript コードを入力してすぐに満足のいく結果を得ることができます。これは、新機能の実験やテストに便利です。実行する JavaScript プログラムファイルをコマンドラインで渡すこともできます。その場合、プログラムは自動的に実行されます。</p> - -<p>ビルドの資料に従って、make install を使用してビルド済みシェルをインストールした後は、次のコマンドを使用して対話モードでシェルを実行できます。</p> - -<pre class="eval">js -</pre> - -<p style="text-align: right;">[ If you get " symbol lookup error: ./js: undefined symbol: PR_SetCurrentThreadName" e.g. from a Bash console when using a pre-compiled binary, try <path to your Firefox's run-mozilla.sh>/run-mozilla.sh ./js -- that worked for me]</p> - -<p>ファイル <code>foo.js</code> 内の JavaScript コードを実行したい場合は、次のコマンドを使用できます:</p> - -<pre class="eval">js foo.js -</pre> - -<p><code>foo.js</code> を実行してからインタラクティブシェルにドロップするには、次のようにします:</p> - -<pre class="eval">js -f foo.js -i -</pre> - -<h2 id="リファレンス">リファレンス</h2> - -<div class="note"><strong>メモ:</strong> JavaScript シェルは JavaScript エンジンのテスト環境として使用されるため、使用可能なオプションと組み込み関数は時間の経過とともに変わる可能性があります。</div> - -<h3 id="Command_line_options" name="Command_line_options">コマンドラインオプション</h3> - -<p>シェルを制御するために指定できるコマンドラインオプションは多数あります。これらは以下に要約されています。文書化されていないものがあるかどうかを確認するには、必ず自分の jsshell で <strong>-h</strong> を使用してください。</p> - -<dl> - <dt><code>-c, --compileonly</code></dt> - <dd>プログラムをコンパイルして実行しないようシェルに指示します。これは、プログラムを実行せずにプログラム内の構文エラーを素早くチェックするのに便利な方法です。</dd> - <dt><code>-e <em>script</em></code></dt> - <dd>指定した<em>スクリプト</em>を実行します。これは、実行するコードを含むリテラル文字列です。</dd> - <dt><code>-f <em>filename</em></code></dt> - <dd><em>filename</em> で指定された JavaScript プログラムを実行します。</dd> - <dt><code>-i</code></dt> - <dd>インタラクティブモードを有効にします。(ファイル名が指定されていない場合はデフォルト)</dd> - <dt><code>--no-ion</code></dt> - <dd>最適化 JIT コンパイラを無効にします。</dd> - <dt><code>--no-baseline</code></dt> - <dd>ベースライン JIT コンパイラを無効にします。</dd> - <dt><code>-P</code></dt> - <dd>ファイルの最初の行が "/usr/bin/env js -P" の場合、ファイルの内容は JavaScript エンジンによって解釈されます。</dd> - <dd>これにより、JavaScript ファイルを UNIX および OS X マシン上で実行可能にすることができます。</dd> - <dt><code>-s</code></dt> - <dd>厳密な警告モードを有効にします。</dd> - <dt><code>-w, --warnings</code></dt> - <dd>警告メッセージを有効にします。</dd> - <dt><code>-W</code>, --nowarnings</dt> - <dd>警告メッセージを無効にします。</dd> -</dl> - -<h3 id="Environment_options" name="Environment_options">環境オプション</h3> - -<p>js シェルの動作を変更するために設定できる環境変数がいくつかあります。</p> - -<dl> - <dt><code>JS_STDOUT=<em>file</em></code></dt> - <dd>標準出力を <em>file</em> にリダイレクトします。</dd> - <dt><code>JS_STDERR=<em>file</em></code></dt> - <dd>標準エラー出力を <em>file</em> にリダイレクトします。</dd> -</dl> - -<h3 id="Built-in_functions" name="Built-in_functions">組み込み関数</h3> - -<p>JavaScript シェルをより便利にするために、JavaScript プログラムからでもインタラクティブモードでも使える、多くの組み込み関数が提供されています。</p> - -<div class="warning"> -<p><strong>注</strong>: このリストは不完全であり、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Shell_global_objects">Shell のグローバルオブジェクト</a>と重複しています。詳しくは {{Source("js/src/shell/js.cpp")}} を参照してください (<code>shell_functions</code>について)。</p> -</div> - -<h4 id="build.28.29" name="build.28.29"><code>build()</code></h4> - -<p>JavaScript シェルが構築された日時を返します。</p> - -<div class="note"><strong>メモ:</strong> パラメータなしの <code>clear()</code> は本当にすべてをクリアします。これにはこれらすべての組み込み関数が含まれます。</div> - -<h4 id="clone.28function.2C_.5Bscope.5D.29" name="clone.28function.2C_.5Bscope.5D.29"><code>clone(<em>function, [scope]</em>)</code></h4> - -<p>指定された <var>function</var> オブジェクトを複製します。scope が指定されていない場合、新しいオブジェクトの親は元のオブジェクトのものと同じです。それ以外の場合、新しいオブジェクトは <em>scope</em> で指定されたオブジェクトの範囲内に配置されます。</p> - -<h4 id="countHeap" name="countHeap"><code>countHeap(<em>[start[, kind]]</em>)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} ヒープ内のライブ GC のもの、または <em>start</em> から到達可能なもので、指定された値が null ではないものの数を数えます。<em>kind</em> はすべてのものを数える <code>'all'</code> (デフォルト)、またはその種類のものだけを数えるための <code>'object'</code>, <code>'double'</code>, <code>'string'</code>, <code>'function'</code>, <code>'qname'</code>, <code>'namespace'</code>, <code>'xml'</code> のいずれかです。</p> - -<h4 id="evalcx.28string.5B.2C_object.5D.29" name="evalcx.28string.5B.2C_object.5D.29"><code>dumpHeap(<em>[fileName[, start[, toFind[, maxDepth[, toIgnore]]]]]</em>)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} 既存のすべてのオブジェクト (または特定の興味深い部分グラフ) のグラフをファイルにダンプします。詳しくは、この関数の C/C++ バージョン、<code>JS_DumpHeap</code> を参照してください。</p> - -<h4 id="evalcx.28string.5B.2C_object.5D.29" name="evalcx.28string.5B.2C_object.5D.29"><code>evalcx(<em>string[, object]</em>)</code></h4> - -<p>JavaScript コードを文字列で評価します。<em>object</em> が指定されている場合、コードはそのオブジェクト内で実行され、サンドボックスとして扱われます。</p> - -<p><em>string</em> が空で <em>object</em> が指定されていない場合、<code>evalcx()</code> は、意欲的な標準クラスを持つ新しいオブジェクトを返します。</p> - -<p><em>string</em> が "lazy" で <em>object</em> が指定されていない場合、<code>evalcx()</code> は lazy 標準クラスを持つ新しいオブジェクトを返します。</p> - -<div class="note"><strong>メモ:</strong> <code>evalcx()</code> は、シェル内で <code>evalInSandbox</code> のような環境をテストするために、JavaScript エンジンの内部で深く作業している人にのみ役立ちます。</div> - -<h4 id="gc.28.29" name="gc.28.29"><code>gc()</code></h4> - -<p>ガベージコレクタを実行してメモリを解放します。</p> - -<h4 id="gcparam.28.29" name="gcparam.28.29"><code>gcparam(<em>name[, value]</em>)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} ガベージコレクタのパラメータを読み込むか設定します。</p> - -<p>名前は <a href="https://searchfox.org/mozilla-central/source/js/src/builtin/TestingFunctions.cpp#464">https://searchfox.org/mozilla-central/source/js/src/builtin/TestingFunctions.cpp#464</a> の <code>FOR_EACH_GC_PARAM</code> で定義されているパラメータキーのいずれか (<code>'maxBytes'</code>、<code>'maxMallocBytes'</code>、'<code>gcNumber</code>' など) でなければなりません。</p> - -<p><em>value</em> が指定されていない場合、<code>gcparam()</code> は name という名前の GC パラメータに関連付けられている現在の値を返します。</p> - -<p><em>value</em> が指定されている場合、それは正の uint32 に変換可能でなければなりません。<code>gcparam()</code> は GC パラメータの <em>name</em> を <em>value</em> に設定します。</p> - -<p>詳しくは C/C++ 関数の <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter">JS_GetGCParameter</a></code> および <a class="internal" href="https://developer.mozilla.org/En/SpiderMonkey/JSAPI_Reference/JS_SetGCParameter" title="en/SpiderMonkey/JSAPI Reference/JS SetGCParameter"><code>JS_SetGCParameter</code></a> を参照してください。</p> - -<h4 id="gczeal.28.29" name="gczeal.28.29"><code>gczeal(level)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} <code>DEBUG</code> のみ。デバッグ機能である GC の活動量のレベルを設定します。これは、通常の定期的なガベージコレクションの場合は 0、非常に頻繁な GC の場合は 1、非常に頻繁な GC の場合は 2 になります。<br> - 0 以外は JavaScript の実行を非常に遅くしますが、GC 関連のバグを明らかにしたり再現したりするのに役立ちます。詳しくは、この関数の C/C++ バージョンである <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal">JS_SetGCZeal</a></code> を参照してください。</p> - -<h4 id="getpda.28object.29" name="getpda.28object.29"><code>getpda(<em>object</em>)</code></h4> - -<p>指定した <em>object</em> のプロパティ記述子を返します。</p> - -<h4 id="getslx.28object.29" name="getslx.28object.29"><code>getslx(<em>object</em>)</code></h4> - -<p>指定されたオブジェクトを構成するコードの行数であるスクリプト行エクステントを返します。</p> - -<h4 id="help.28.5Bcommand_....5D.29" name="help.28.5Bcommand_....5D.29"><code>help(<em>[command ...]</em>)</code></h4> - -<p>指定されたコマンド、または指定されていない場合は使用可能なすべての機能に関する簡単なヘルプ情報を表示します。</p> - -<h4 id="intern.28string.29" name="intern.28string.29"><code>intern(<em>string</em>)</code></h4> - -<p>指定された <var>string</var> をアトムテーブルに内部化します。すべての文字列はアトムと呼ばれる一意の識別子を持ちます。このシステムにより、文字列間の比較が簡単になります。</p> - -<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用されることを意図しています。</div> - -<h4 id="line2pc.28.5Bfunction.2C_.5D_line.29" name="line2pc.28.5Bfunction.2C_.5D_line.29"><code>line2pc(<em>[function, ] line</em>)</code></h4> - -<p>指定されたコード行に対応するプログラムカウンタ値を返します。<em>function</em> が指定されている場合、<em>line</em> は指定された関数へのオフセットです。</p> - -<h4 id="load.28filename1_.5Bfilename.5D.29" name="load.28filename1_.5Bfilename.5D.29"><code>load(<em>filename1</em> <em>[filename]</em>)</code></h4> - -<p>指定された名前で JavaScript ファイルをロードします。</p> - -<div class="note"><strong>メモ:</strong> JavaScript 以外のファイルをロードするには、<code>read()</code> を使用してください。</div> - -<h4 id="options.28.5Boption_....5D.29" name="options.28.5Boption_....5D.29"><code>options(<em>[option ...]</em>)</code></h4> - -<p>オプションを設定または取得できます。コマンドラインでオプションを指定した場合、<code>options</code> を呼び出した結果は、どのオプションを要求したかを示します。新しいオプションを渡して設定することもできます。</p> - -<p>利用可能なオプションは以下のとおりです:</p> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">オプション名</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>strict</code></td> - <td>ストリクトモードが有効になります。</td> - </tr> - <tr> - <td><code>werror</code></td> - <td>警告はエラーとして扱われます。</td> - </tr> - <tr> - <td><code>atline</code></td> - <td><code>atline</code> が有効になっているとき、<code>//@line <em>num</em></code> の形式のコメントは次の行の番号を <code><em>num</em></code> に設定します。</td> - </tr> - </tbody> -</table> - -<h4 id="pc2line.28function.2C_.5Bpc.5D.29" name="pc2line.28function.2C_.5Bpc.5D.29"><code>pc2line(<em>function, [pc]</em>)</code></h4> - -<p>指定された <em>function</em> の最初の行に対応する JavaScript コードの行番号を返します。関数にプログラムカウンタオフセットを指定した場合は、そのオフセットを含むコード行の行番号が返されます。</p> - -<h4 id="print.28.5Bexpression_....5D.29" name="print.28.5Bexpression_....5D.29"><code>print(<em>[expression ...]</em>)</code></h4> - -<p><em>expression(s)</em> を評価し、その結果を <code>stdout</code> にスペース (" ") で区切って表示し、改行 ("\n") で終了します。</p> - -<h4 id="print.28.5Bexpression_....5D.29" name="print.28.5Bexpression_....5D.29"><code>putstr(<em>expression</em>)</code></h4> - -<p><em>expression</em> を評価し、その結果を <code>stdout</code> に表示します。</p> - -<h4 id="quit.28.29" name="quit.28.29"><code>quit(<em>[status]</em>)</code></h4> - -<p>シェルを終了します。省略した場合、<em>status</em> はデフォルトで 0 になります。</p> - -<h4 id="read.28filename.5B.2C_type.5D.29" name="read.28filename.5B.2C_type.5D.29"><code>read(<em>filename[, type]</em>)</code></h4> - -<p>ファイルの内容を読み込んで返します。typeが "binary" の場合は <code>Uint8Array</code> が返され、それ以外の場合は UTF-8 でデコードされた文字列が返されます。</p> - -<h4 id="readline.28.29" name="readline.28.29"><code>readline()</code></h4> - -<p><code>stdin</code> から単一行の入力を読み込み、呼び出し元に返します。これを使って JavaScript でインタラクティブシェルプログラムを作成することができます。</p> - -<h4 id="scatter.28fnArray.29" name="scatter.28fnArray.29">Reflect.parse()</h4> - -<p><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Parser_API" title="en/SpiderMonkey/Parser_API">Parser API</a> を参照してください。</p> - -<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用することを意図しています。</div> - -<h4 id="seal.28object.5B.2C_deep.5D.29" name="seal.28object.5B.2C_deep.5D.29"><code>seal(<em>object[, deep]</em>)</code></h4> - -<p>指定した <em>object</em>、または <em>deep</em> が <code>true</code> の場合はオブジェクトグラフをシールします。オブジェクトまたはオブジェクトグラフを封印することで、それらのオブジェクトの変更を無効にします。</p> - -<h4 id="sleep.28dt.29" name="sleep.28dt.29"><code>sleep(dt)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE">JS_THREADSAFE</a></code> でのみビルドされます。<em>dt</em> 秒間スリープします。秒の端数がサポートされています。成功した場合に<code>true</code>、スリープが中断された場合に<code>false</code>を返します。</p> - -<h4 id="stackQuota" name="stackQuota"><code>stackQuota(<em>[number]</em>)</code> {{obsolete_inline}}</h4> - -<p>スクリプトスタッククォータを取得または設定します。</p> - -<h4 id="throwError.28.29" name="throwError.28.29"><code>throwError()</code></h4> - -<p><code>JS_ReportError()</code> 関数からエラーをスローします。</p> - -<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用することを意図しています。</div> - -<h4 id="trap.28.5Bfunction.2C_.5Bpc.2C.5D.5D_expression.29" name="trap.28.5Bfunction.2C_.5Bpc.2C.5D.5D_expression.29"><code>trap(<em>[function, [pc,]] expression</em>)</code></h4> - -<p>JavaScript コードの特定の位置にトラップを設定します。関数 <em>function</em> の <em>pc</em> で指定されたオフセットのバイトコードが実行されようとしているとき、式は評価されます。</p> - -<p><code>line2pc()</code> と組み合わせて使用すると、これは強力なデバッグメカニズムです。たとえば、関数 <code>doSomething()</code> の 6 行目が実行されたときにメッセージを表示したい場合は、次のように入力します。</p> - -<pre>trap(doSomething, line2pc(doSomething, 6), "print('line 6!\n')"); -</pre> - -<div class="note"><strong>メモ:</strong> トラップが設定されると、<code>untrap()</code> を使用してトラップを削除するまで、プログラム内の対応するバイトコードが <code>trap</code> バイトコードに置き換えられます。</div> - -<h4 id="untrap.28function_.5B.2C_pc.5D.29" name="untrap.28function_.5B.2C_pc.5D.29"><code>untrap(<em>function [, pc]</em>)</code></h4> - -<p>オフセット <em>pc</em> で指定した <em>function</em> からトラップを削除します。<em>pc</em> が指定されていない場合、トラップは関数のエントリポイントから削除されます。</p> - -<p>指定された場所にトラップがない場合、この機能は無効です。</p> - -<h4 id="version.28.5Bnumber.5D.29" name="version.28.5Bnumber.5D.29"><code>version(<em>[number]</em>)</code></h4> - -<p><code>version()</code> 関数を使用すると、JavaScript のバージョン番号を取得または設定できます。これは、特定のバージョンの JavaScript でのみ使用可能な構文にアクセスするのに役立ちます (たとえば、<a href="/ja/docs/Web/JavaScript/New_in_JavaScript/1.7#Using_JavaScript_1.7">JavaScript 1.7 の使用</a>を参照)。</p> - -<h3 id="Debug_functions" name="Debug_functions">デバッグ関数</h3> - -<p>これらの組み込み関数は <code>DEBUG</code> ビルドでのみ利用可能です。</p> - -<h4 id="dis.28.5Bfunction.5D.29" name="dis.28.5Bfunction.5D.29"><code>dis(<em>[function]</em>)</code></h4> - -<p>プログラム全体、または指定された <em>function</em> の JavaScript バイトコードを逆アセンブルします。</p> - -<p>たとえば、以下の JavaScript 関数を入力したとします。</p> - -<pre class="eval">function test() { - var i = 3; - print(i+2); -} -</pre> - -<p>それから <code>dis(test);</code> コマンドを実行すると、この出力が得られます。</p> - -<pre>main: -00000: uint16 3 -00003: setvar 0 -00006: pop -00007: name "print" -00010: pushobj -00011: getvar 0 -00014: uint16 2 -00017: add -00018: call 1 -00021: pop -00022: stop - -Source notes: - 0: 0 [ 0] newline - 1: 3 [ 3] decl offset 0 - 2: 7 [ 4] newline - 3: 18 [ 11] xdelta - 4: 18 [ 0] pcbase offset 11 -</pre> - -<h4 id="dissrc.28.5Bfunction.5D.29" name="dissrc.28.5Bfunction.5D.29"><code>dissrc(<em>[function]</em>)</code></h4> - -<p>プログラム全体または指定された <em>function</em> の JavaScript バイトコードを逆アセンブルして、ソース行を表示します。この関数は、シェルの起動時に <code>-f</code> フラグを使用するか、<code>load()</code> 関数を使用してファイルからロードされたプログラムに対してのみ機能します。</p> - -<p>プログラムに関数 <code>doStuff()</code> が含まれている場合は、次のようになります。</p> - -<pre>function doStuff(input) { - print("Enter a number: "); - var n1 = readline(); - print("Enter another one: "); - var n2 = readline(); - - print("You entered " + n1 + " and " + n2 + "\n"); -} -</pre> - -<p><code>dissrc(doStuff)</code> 関数を呼び出すと、次の出力が得られます。</p> - -<pre>;------------------------- 10: print("Enter a number: "); -00000: 10 name "print" -00003: 10 pushobj -00004: 10 string "Enter a number: " -00007: 10 call 1 -00010: 10 pop -;------------------------- 11: var n1 = readline(); -00011: 11 name "readline" -00014: 11 pushobj -00015: 11 call 0 -00018: 11 setvar 0 -00021: 11 pop -;------------------------- 12: print("Enter another one: "); -00022: 12 name "print" -00025: 12 pushobj -00026: 12 string "Enter another one: " -00029: 12 call 1 -00032: 12 pop -;------------------------- 13: var n2 = readline(); -00033: 13 name "readline" -00036: 13 pushobj -00037: 13 call 0 -00040: 13 setvar 1 -00043: 13 pop -;------------------------- 14: -;------------------------- 15: print("You entered " + n1 + " and " + n2 + "\n"); -00044: 15 name "print" -00047: 15 pushobj -00048: 15 string "You entered " -00051: 15 getvar 0 -00054: 15 add -00055: 15 string " and " -00058: 15 add -00059: 15 getvar 1 -00062: 15 add -00063: 15 string "\\n" -00066: 15 add -00067: 15 call 1 -00070: 15 pop -00071: 15 stop -</pre> - -<h4 id="dumpheap.28.28.5BfileName.5B.2C_start.5B.2C_toFind.5B.2C_maxDepth.5B.2C_toIgnore.5D.5D.5D.5D.5D.29" name="dumpheap.28.28.5BfileName.5B.2C_start.5B.2C_toFind.5B.2C_maxDepth.5B.2C_toIgnore.5D.5D.5D.5D.5D.29"><code>dumpheap((<em>[fileName[, start[, toFind[, maxDepth[, toIgnore]]]]]</em>)</code></h4> - -<p>GC 情報をダンプします。これは <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap">JS_DumpHeap</a></code> の軽量なラッパーです。</p> - -<h4 id="gczeal.28zeal.29" name="gczeal.28zeal.29"><code>gczeal(<em>zeal</em>)</code></h4> - -<p>GC の危険性の発見に役立つように、頻繁な GC を有効にします。<em>zeal</em> は整数です。意味は <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal">JS_SetGCZeal</a></code> のパラメータと同じです。</p> - -<h4 id="notes.28.5Bfunction.5D.29" name="notes.28.5Bfunction.5D.29"><code>notes(<em>[function]</em>)</code></h4> - -<p>指定した機能のソースノートを表示します。ソースノートには、バイトコードをソースコードにマップする情報が含まれています。これは、<code>dissrc()</code> 関数を使用する場合など、コードを逆コンパイルするときに使用されます。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html deleted file mode 100644 index efb0e70aa0..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html +++ /dev/null @@ -1,514 +0,0 @@ ---- -title: JSAPI Cookbook -slug: Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook ---- -<p>この記事は僅かなJavaScript共通の用語であるJSAPIについて記載しています。</p> - -<div class="note"><strong>Note:</strong> <a class="internal" href="/En/SpiderMonkey/FOSS" title="En/SpiderMonkey/FOSS">FOSS</a> wiki ページには、 SpiderMonkey と JSAPI を使用する際に生活を楽にする他のライブラリやプログラムへのリンクがいくつか含まれています。</div> - -<h2 id="基礎">基礎</h2> - -<h3 id="Finding_the_global_object">Finding the global object</h3> - -<p>それらのレシピの多くは、最初に現在の大域オブジェクトを見つけることを要求します。</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var global = this; -</pre> - -<p>There is a function, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForScopeChain">JS_GetGlobalForScopeChain</a>(cx)</code>という関数があります。最良の考え方でありときにそれは大域オブジェクトの取得する場合最良の方法です。しかし<code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative">JSNative</a></code> の中では、これを実行する正しい方法は:</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSBool myNative(JSContext *cx, uintN argc, jsval *vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - JSObject *global = <a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForObject" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForObject">JS_GetGlobalForObject</a>(cx, &args.callee()); - ... -} -</pre> - -<h3 id="関数定義">関数定義</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -function justForFun() { - return null; -} -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSBool justForFun(JSContext *cx, uintN argc, jsval *vp) -{ - JS_SET_RVAL(cx, vp, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_NULL" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_NULL">JSVAL_NULL</a>); - return JS_TRUE; -} - -... - -/* - * Add this to your JSContext setup code. - * This makes your C function visible as a global function in JavaScript. - */ -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction">JS_DefineFunction</a>(cx, global, "justForFun", &justForFun, 0, 0)) - return JS_FALSE; -</pre> - -<p>JSAPI関数を一度に定義する場合、JS_DefineFunctions. を用います。 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions">JS_DefineFunctions</a></code>.</p> - -<h3 id="配列の生成">配列の生成</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var x = []; // or "x = Array()", or "x = new Array" -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSObject *x = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject" title="en/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject">JS_NewArrayObject</a>(cx, 0, NULL); -if (x == NULL) - return JS_FALSE; -</pre> - -<h3 id="オブジェクトの生成">オブジェクトの生成</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var x = {}; // or "x = Object()", or "x = new Object" -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSObject *x = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="en/SpiderMonkey/JSAPI_Reference/JS_NewObject">JS_NewObject</a>(cx, NULL, NULL, NULL); -if (x == NULL) - return JS_FALSE; -</pre> - -<h3 id="オブジェクトの生成と初期化">オブジェクトの生成と初期化</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var person = new Person("Dave", 24); -</pre> - -<p>JavaScriptではとても単純に処理されています。しかし、JSAPIのアプリケーションでは以下に記述するように3つのことを処理する必要があります:</p> - -<ul> - <li>コンストラクタを参照する、 <code>Person</code></li> - <li>引数を準備する <code>("Dave", 24)</code></li> - <li><code>new</code> キーワードで示す処理を擬似的に作り出すために <a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New"><code>JS_New</code></a> を呼び出します。</li> -</ul> - -<p>(コンストラクタがどのよいうな引数も取らないならば、2番目の段階は省略して 3段階目の処理である <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New">JS_New</a>(cx, constructor, 0, NULL)</code> を呼び出せます。)</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ - -jsval constructor_val; -JSObject *constructor; /* BUG - not rooted */ -JSString *name_str; -jsval argv[2]; /* BUG - not rooted */ -JSObject *obj; - -/* Step 1 - Get the value of |Person| and check that it is an object. */ -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), "Person", &constructor_val)) - return JS_FALSE; -if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(constructor_val)) { - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportError">JS_ReportError</a>(cx, "Person is not a constructor"); - return JS_FALSE; -} -constructor = <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(constructor_val); - -/* Step 2 - Set up the arguments. */ -name_str = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewStringCopyZ</a>(cx, "Dave"); -if (!name_str) - return JS_FALSE; -argv[0] = <a href="/en/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL">STRING_TO_JSVAL</a>(name_str); -argv[1] = <a href="/en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL">INT_TO_JSVAL</a>(24); - -/* Step 3 - Call |new Person(...argv)|, passing the arguments. */ -obj = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New">JS_New</a>(cx, constructor, 2, argv); -if (!obj) - return JS_FALSE; -</pre> - -<h3 id="大域的なJS関数の呼び出し">大域的なJS関数の呼び出し</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var r = foo(); // where f is a global function -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> - * - * Suppose the script defines a global JavaScript - * function foo() and we want to call it from C. - */ -jsval r; -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), "foo", 0, NULL, &r)) - return JS_FALSE; -</pre> - -<h3 id="局所変数を投資てJS関数を呼び出す">局所変数を投資てJS関数を呼び出す</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var r = f(); // where f is a local variable -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> - * - * Suppose f is a local C variable of type jsval. - */ -jsval r; -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue">JS_CallFunctionValue</a>(cx, NULL, f, 0, NULL, &r) - return JS_FALSE; -</pre> - -<h3 id="Returning_an_integer" name="Returning_an_integer">整数の戻り値</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -return 23; -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> - * - * Warning: This only works for integers that fit in 32 bits. - * Otherwise, convert the number to floating point (see the next example). - */ -<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SET_RVAL" title="en/SpiderMonkey/JSAPI_Reference/JS_SET_RVAL">JS_SET_RVAL</a>(cx, vp, <a href="/en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL">INT_TO_JSVAL</a>(23)); -return JS_TRUE; -</pre> - -<h3 id="Returning_a_floating-point_number" name="Returning_a_floating-point_number">浮動小数点少数の戻り値</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -return 3.14159; -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -<a href="/en/SpiderMonkey/JSAPI_Reference/jsdouble" title="en/SpiderMonkey/JSAPI_Reference/jsdouble">jsdouble</a> n = 3.14159; -return <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue" title="en/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue">JS_NewNumberValue</a>(cx, n, rval); -</pre> - -<h2 id="Exception_handling" name="Exception_handling">例外処理</h2> - -<h3 id="throw" name="throw"><code>throw</code></h3> - -<p>新規に最も共通の用語である <code>エラー</code> オブジェクトを生成した場合、それをハンドラに投げる場合 <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportError"><code>JS_ReportError</code></a> が処理を行います。 Note JavaScript の例外はC++の例外処理とは異なります。JSAPIコードでは呼び出し側に誤りを通知するために <code>JS_FALSE</code> を返す必要があります。</p> - -<pre class="notranslate">// <strong>JavaScript</strong> -throw new Error("Failed to grow " + varietal + ": too many greenflies."); -</pre> - -<pre class="notranslate">/* <strong>JSAPI</strong> */ -<a>JS_ReportError</a>(cx, "Failed to grow %s: too many greenflies.", varietal); -return JS_FALSE; -</pre> - -<p>エラーメッセージを他国間対応にするには、 <code>SyntaxError</code> や <code>TypeError</code>等のようにエラー種別を投げるように、 <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber"><code>JS_ReportErrorNumber</code></a> を代わりに用います。</p> - -<p>JavaScriptでは <code>Error</code> オブジェクトだけでなく、他の値を渡す事もサポートしています。 C/C++ から <code>jsval</code> という値を受け取るために<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException"><code>JS_SetPendingException</code></a> を使います。</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -throw exc; -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a>(cx, exc); -return JS_FALSE; -</pre> - -<p><code>JS_ReportError</code> が新規に <code>Error</code> オブジェクトを生成するとき、現在実行中のスタックの先頭にあるJavaScriptコードの行の属性である <code>fileName</code> と <code>lineNumber</code> をセットします。 これは通常、あなたが本当に必要としているものとは一致しないネイティブ関数を呼び出したコードの行になります。JSAPIコードは直接 <code>Error</code> オブジェクトを生成し、コンストラクタに追加の引数を渡す事でことでこれを無視することができます:</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -throw new Error(message, filename, lineno); -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSBool ThrowError(JSContext *cx, JSObject *global, - const char *message, const char *filename, int32 lineno) -{ - JSString *messageStr; - JSString *filenameStr; - jsval args[3]; - jsval exc; - - messageStr = JS_NewStringCopyZ(cx, message); - if (!messageStr) - return JS_FALSE; - filenameStr = JS_NewStringCopyZ(cx, filename); - if (!filenameStr) - return JS_FALSE; - - args[0] = STRING_TO_JSVAL(messageStr); - args[1] = STRING_TO_JSVAL(filenameStr); - args[2] = INT_TO_JSVAL(lineno); - if (<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, global, "Error", 3, args, &exc)) - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a>(cx, exc); - return JS_FALSE; -} - -... - -return ThrowError(cx, global, message, __FILE__, __LINE__); -</pre> - -<p>ここのJSAPIコードは、<code>new</code> がJSAPIを用いて擬似的に作り出すことが難しいため、 <code>new</code> なしに <code>throw Error(message)</code> を擬似的に作り出します。この場合、スクリプトが <code>Error</code>を再定義しなければ、同じ事になります。</p> - -<h3 id="catch" name="catch"><code>catch</code></h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -try { - // try some stuff here; for example: - foo(); - bar(); -} catch (exc) { - // do error-handling stuff here -} -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ - jsval exc; - - /* try some stuff here; for example: */ - if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &r)) - goto catch_block; /* instead of returning JS_FALSE */ - if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &r)) - goto catch_block; /* instead of returning JS_FALSE */ - return JS_TRUE; - -catch_block: - if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_GetPendingException">JS_GetPendingException</a>(cx, &exc)) - return JS_FALSE; - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException">JS_ClearPendingException</a>(cx); - /* do error-handling stuff here */ - return JS_TRUE; -</pre> - -<h3 id="finally" name="finally"><code>finally</code></h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -try { - foo(); - bar(); -} finally { - cleanup(); -} -</pre> - -<p>C/C++の浄化コードがJSAPI内にコールバックしなければ、処理は単純になります:</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ - <a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="En/SpiderMonkey/JSAPI_Reference/JSBool">JSBool</a> success = JS_FALSE; - - if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &r)) - goto finally_block; /* instead of returning JS_FALSE immediately */ - if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &r)) - goto finally_block; - success = JS_TRUE; - /* Intentionally fall through to the finally block. */ - -finally_block: - cleanup(); - return success; -</pre> - -<p>しかしながら、 <code>cleanup()</code> が実際にJavaScriptの関数であれば、それらはcatchされます。エラーが発生したとき、 <code>JSContext</code><em>の例外処理の待機がセットされます。</em> これは上の例で <code>foo()</code> や <code>bar()</code> で発生するならば、待機中の例外処理は より悪い状態になるであろう <code>cleanup()</code> 処理を呼び出しているときにセットされます。これを避ける為に、JSAPIコードの実装では <code>finally</code> ブロックには以下のことが必要ですt:</p> - -<ul> - <li>古い例外を保存する</li> - <li>cleanupコードを走らせる為に、待機中の例外処理をクリアします</li> - <li>あなたのcleanup処理wp実行します</li> - <li>古い例外を復帰させます</li> - <li>例外が発生していたならば、例外処理を上位に伝えるために、JS_FALSEを戻り値として返します</li> -</ul> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ - <a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="En/SpiderMonkey/JSAPI_Reference/JSBool">JSBool</a> success = JS_FALSE; - <a href="/en/SpiderMonkey/JSAPI_Reference/JSExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JSExceptionState">JSExceptionState</a> *exc_state; - - if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &r)) - goto finally_block; /* instead of returning JS_FALSE immediately */ - if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &r)) - goto finally_block; - success = JS_TRUE; - /* Intentionally fall through to the finally block. */ - -finally_block: - exc_state = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState">JS_SaveExceptionState</a>(cx); - if (exc_state == NULL) - return JS_FALSE; - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException">JS_ClearPendingException</a>(cx); - - if (!JS_CallFunctionName(cx, global, "cleanup", 0, NULL, &r)) { - /* The new error replaces the previous one, so discard the saved exception state. */ - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState">JS_DropExceptionState</a>(cx, exc_state); - return JS_FALSE; - } - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState">JS_RestoreExceptionState</a>(cx, exc_state); - return success; -</pre> - -<h2 id="Object_properties" name="Object_properties">オブジェクトの属性</h2> - -<h3 id="Getting_a_property" name="Getting_a_property">属性の取得</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var x = y.myprop; -</pre> - -<p>JSAPI関数で、属性を取得する関数が <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a></code>です。<code>JSObject *</code> を引数として必要とします。 JavaScriptの値は、通常 <code>jsval</code> 変数に保存されるため、変数のキャストまたは変換が必要になります。</p> - -<p><code>y</code> (ブール値、数値、文字列、 <code>null</code>, または <code>undefined</code>などではなく)がオブジェクトであることが確実な場合、これは非常に単純です。 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a></code> を使い、 <code>y</code> を <code>JSObject *</code>の型にキャストします。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -jsval x; - -assert(<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">!JSVAL_IS_PRIMITIVE</a>(y)); -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &x)) - return JS_FALSE; -</pre> - -<p>もし <code>y</code> がオブジェクトでなければ、コードは壊れます。これはときに受け入れ難いことです。代替的にJavaScriptに振る舞いを擬似的に実行することになります。非常に良い考えですJavaScriptはクラッシュしません。しかし、その正確な振る舞いの実装では、非常に複雑なものになります。</p> - -<p>多くの実装では、特別に処理が扱いやすくなるわけではありません。通常、 <code>!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)</code> を検査し、良いメッセージとともに <code>Error</code> を投げることが最良な処理です。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -jsval x; - -if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)) - return ThrowError(cx, global, "Parameter y must be an object.", __FILE__, __LINE__); /* see the <a href="#throw">#throw</a> example */ -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &x)) - return JS_FALSE; -</pre> - -<h3 id="Setting_a_property" name="Setting_a_property">属性の設定</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -y.myprop = x; -</pre> - -<p><code>y</code> がオブジェクトではない場合を懸念するならば、上述の属性の取得を参照して下さい。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -assert(!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)); -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_SetProperty">JS_SetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &x)) - return JS_FALSE; -</pre> - -<h3 id="Checking_for_a_property" name="Checking_for_a_property">属性の検査</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -if ("myprop" in y) { - // then do something -} -</pre> - -<p><code>y</code> がオブジェクトではない場合を懸念するならば、上述の属性の取得を参照して下さい。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSBool found; - -assert(!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)); -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_HasProperty">JS_HasProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &found)) - return JS_FALSE; -if (found) { - // then do something -} -</pre> - -<h3 id="固定属性を定義する">固定属性を定義する</h3> - -<p>これはビルトイン関数 <code>Object.defineProperty()</code>に関わる最初の3つの例です。この関数は、オブジェクトの個別の属性の挙動に関してはっきりした操作をJavaScriptのコードに与えます。</p> - -<p>この関数を使って、上書きや削除できない固定属性を生成できます。<code>writable: false</code> によって属性を読み出し専用に作り、 <code>configurable: false</code> に設定して、再定義や削除されることから防ぎます。 フラグ <code>enumerable: true</code> は forループ内にあるときにこの属性が設定されます。</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -Object.defineProperty(obj, "prop", {value: 123, - writable: false, - enumerable: true, - configurable: false}); -</pre> - -<p>JSAPI関数の類似した関数に、 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty">JS_DefineProperty</a></code>があります。属性 <code>JSPROP_READONLY</code> を持っており、その属性は<code>writeable: false</code>に一致します。<code>JSPROP_ENUMERATE</code> は <code>enumerable: true</code>,に一致し、 <code>JSPROP_PERMANENT</code> は <code>configurable: false</code>にその属性が一致します。これらの設定の相対的な挙動を得るためには、必要ない属性のビットを単純に省いて下さい。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -if (!JS_DefineProperty(cx, obj, "prop", INT_TO_JSVAL(123), - JS_PropertyStub, JS_StrictPropertyStub, - JSPROP_READONLY | JSPROP_ENUMERATE | JSPROP_PERMANENT)) { - return JS_FALSE; -} -</pre> - -<h3 id="設定と取得の属性の定義">設定と取得の属性の定義</h3> - -<p><code>Object.defineProperty()</code> は二つのアクセス関数の属性を定義する為に用いることができます。</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -Object.defineProperty(obj, "prop", {get: GetPropFunc, - set: SetPropFunc, - enumerable: true}); -</pre> - -<p>JSAPIバージョンでは、 <code>GetPropFunc</code> と <code>SetPropFunc</code> が <a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/SpiderMonkey/JSAPI_Reference/JSNative"><code>JSNative</code></a>型のC/C++ 関数関数として用意されています。of type .</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -if (!JS_DefineProperty(cx, obj, "prop", JSVAL_VOID, - (JSPropertyOp) GetPropFunc, (JSStrictPropertyOp) SetPropFunc, - JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE)) { - return JS_FALSE; -} -</pre> - -<h3 id="取得のための呼び出し専用属性の定義">取得のための呼び出し専用属性の定義</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -Object.defineProperty(obj, "prop", {get: GetPropFunc, - enumerable: true}); -</pre> - -<p>JSAPIバージョン では、属性を読み出し専用に定義し、設定用にはNULLを通します。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -if (!JS_DefineProperty(cx, obj, "prop", JSVAL_VOID, - GetPropFunc, NULL, - JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE)) { - return JS_FALSE; -} -</pre> - -<h2 id="Prototypes" name="Prototypes">プロトタイプチェインの働き</h2> - -<h3 id="String.prototypeにネイティブでは読み出し専用属性を定義します">String.prototypeにネイティブでは読み出し専用属性を定義します</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -Object.defineProperty(String.prototype, "md5sum", {get: GetMD5Func, - enumerable: true}); -</pre> - -<p>何かが大域的なStringオブジェクトを別な何かに取り替えるならば、以下のようなトリックは動作しません。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSObject *string, *string_prototype; -jsval val; - -// Get the String constructor from the global object. -if (!JS_GetProperty(cx, global, "String", &val)) - return JS_FALSE; -if (JSVAL_IS_PRIMITIVE(val)) - return ThrowError(cx, global, "String is not an object", __FILE__, __LINE__); -string = JSVAL_TO_OBJECT(val); - -// Get String.prototype. -if (!JS_GetProperty(cx, string, "prototype", &val)) - return JS_FALSE; -if (JSVAL_IS_PRIMITIVE(val)) - return ThrowError(cx, global, "String.prototype is not an object", __FILE__, __LINE__); -string_prototype = JSVAL_TO_OBJECT(val); - -// ...and now we can add some new functionality to all strings. -if (!JS_DefineProperty(cx, string_prototype, "md5sum", JSVAL_VOID, GetMD5Func, NULL, - JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE)) - return JS_FALSE; -</pre> - -<h2 id="Wanted" name="Wanted">Wanted</h2> - -<ul> - <li>Simulating <code>for</code> and <code>for each</code>.</li> - <li>Actually outputting errors.</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html deleted file mode 100644 index 4bf1ac4123..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html +++ /dev/null @@ -1,228 +0,0 @@ ---- -title: Alphabetical List -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List -tags: - - JSAPI_Reference - - SpiderMonkey ---- -<p>参照: <a href="/ja/docs/JSAPI_Reference">グループ別一覧</a>, <a href="/ja/docs/tag/JSAPI_Reference">カテゴリ表示 (自動)</a>.</p> -<ul> - <li><a href="/ja/docs/BOOLEAN_TO_JSVAL">BOOLEAN_TO_JSVAL</a></li> - <li><a href="/ja/docs/DOUBLE_TO_JSVAL">DOUBLE_TO_JSVAL</a></li> - <li><a href="/ja/docs/INT_FITS_IN_JSVAL">INT_FITS_IN_JSVAL</a></li> - <li><a href="/ja/docs/INT_TO_JSVAL">INT_TO_JSVAL</a></li> - <li><a href="/ja/docs/JS_AddNamedRoot">JS_AddNamedRoot</a></li> - <li><a href="/ja/docs/JS_AddRoot">JS_AddRoot</a></li> - <li><a href="/ja/docs/JS_AliasElement">JS_AliasElement</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_AliasProperty">JS_AliasProperty</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_BeginRequest">JS_BeginRequest</a></li> - <li><a href="/ja/docs/JS_CallFunction">JS_CallFunction</a></li> - <li><a href="/ja/docs/JS_CallFunctionName">JS_CallFunctionName</a></li> - <li><a href="/ja/docs/JS_CallFunctionValue">JS_CallFunctionValue</a></li> - <li><a href="/ja/docs/JS_CheckAccess">JS_CheckAccess</a></li> - <li><a href="/ja/docs/JS_ClearContextThread">JS_ClearContextThread</a></li> - <li><a href="/ja/docs/JS_ClearScope">JS_ClearScope</a></li> - <li><a href="/ja/docs/JS_CloneFunctionObject">JS_CloneFunctionObject</a></li> - <li><a href="/ja/docs/JS_CompareStrings">JS_CompareStrings</a></li> - <li><a href="/ja/docs/JS_CompileFile">JS_CompileFile</a></li> - <li><a href="/ja/docs/JS_CompileFunction">JS_CompileFunction</a></li> - <li><a href="/ja/docs/JS_CompileFunctionForPrincipals">JS_CompileFunctionForPrincipals</a></li> - <li><a href="/ja/docs/JS_CompileScript">JS_CompileScript</a></li> - <li><a href="/ja/docs/JS_CompileScriptForPrincipals">JS_CompileScriptForPrincipals</a></li> - <li><a href="/ja/docs/JS_CompileUCFunction">JS_CompileUCFunction</a></li> - <li><a href="/ja/docs/JS_CompileUCFunctionForPrincipals">JS_CompileUCFunctionForPrincipals</a></li> - <li><a href="/ja/docs/JS_CompileUCScript">JS_CompileUCScript</a></li> - <li><a href="/ja/docs/JS_CompileUCScriptForPrincipals">JS_CompileUCScriptForPrincipals</a></li> - <li><a href="/ja/docs/JS_ConstructObject">JS_ConstructObject</a></li> - <li><a href="/ja/docs/JS_ContextIterator">JS_ContextIterator</a></li> - <li><a href="/ja/docs/JS_ConvertArguments">JS_ConvertArguments</a></li> - <li><a href="/ja/docs/JS_ConvertStub">JS_ConvertStub</a></li> - <li><a href="/ja/docs/JS_ConvertValue">JS_ConvertValue</a></li> - <li><a href="/ja/docs/JS_DecompileFunction">JS_DecompileFunction</a></li> - <li><a href="/ja/docs/JS_DecompileFunctionBody">JS_DecompileFunctionBody</a></li> - <li><a href="/ja/docs/JS_DecompileScript">JS_DecompileScript</a></li> - <li><a href="/ja/docs/JS_DefineConstDoubles">JS_DefineConstDoubles</a></li> - <li><a href="/ja/docs/JS_DefineElement">JS_DefineElement</a></li> - <li><a href="/ja/docs/JS_DefineFunction">JS_DefineFunction</a></li> - <li><a href="/ja/docs/JS_DefineFunctions">JS_DefineFunctions</a></li> - <li><a href="/ja/docs/JS_DefineObject">JS_DefineObject</a></li> - <li><a href="/ja/docs/JS_DefineProperties">JS_DefineProperties</a></li> - <li><a href="/ja/docs/JS_DefineProperty">JS_DefineProperty</a></li> - <li><a href="/ja/docs/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a></li> - <li><a href="/ja/docs/JS_DefineUCProperty">JS_DefineUCProperty</a></li> - <li><a href="/ja/docs/JS_DefineUCPropertyWithTinyID">JS_DefineUCPropertyWithTinyID</a></li> - <li><a href="/ja/docs/JS_DeleteElement">JS_DeleteElement</a></li> - <li><a href="/ja/docs/JS_DeleteElement2">JS_DeleteElement2</a></li> - <li><a href="/ja/docs/JS_DeleteProperty">JS_DeleteProperty</a></li> - <li><a href="/ja/docs/JS_DeleteProperty2">JS_DeleteProperty2</a></li> - <li><a href="/ja/docs/JS_DeleteUCProperty2">JS_DeleteUCProperty2</a></li> - <li><a href="/ja/docs/JS_DestroyContext">JS_DestroyContext</a></li> - <li><a href="/ja/docs/JS_DestroyIdArray">JS_DestroyIdArray</a></li> - <li><a href="/ja/docs/JS_DestroyRuntime">JS_DestroyRuntime</a></li> - <li><a href="/ja/docs/JS_DestroyScript">JS_DestroyScript</a></li> - <li><a href="/ja/docs/JS_DumpNamedRoots">JS_DumpNamedRoots</a></li> - <li><a href="/ja/docs/JS_EndRequest">JS_EndRequest</a></li> - <li><a href="/ja/docs/JS_Enumerate">JS_Enumerate</a></li> - <li><a href="/ja/docs/JS_EnumerateStub">JS_EnumerateStub</a></li> - <li><a href="/ja/docs/JS_EvaluateScript">JS_EvaluateScript</a></li> - <li><a href="/ja/docs/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a></li> - <li><a href="/ja/docs/JS_EvaluateUCScript">JS_EvaluateUCScript</a></li> - <li><a href="/ja/docs/JS_EvaluateUCScriptForPrincipals">JS_EvaluateUCScriptForPrincipals</a></li> - <li><a href="/ja/docs/JS_ExecuteScript">JS_ExecuteScript</a></li> - <li><a href="/ja/docs/JS_FinalizeStub">JS_FinalizeStub</a></li> - <li><a href="/ja/docs/JS_Finish">JS_Finish</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_free">JS_free</a></li> - <li><a href="/ja/docs/JS_GC">JS_GC</a></li> - <li><a href="/ja/docs/JS_GetArrayLength">JS_GetArrayLength</a></li> - <li><a href="/ja/docs/JS_GetClass">JS_GetClass</a></li> - <li><a href="/ja/docs/JS_GetConstructor">JS_GetConstructor</a></li> - <li><a href="/ja/docs/JS_GetContextPrivate">JS_GetContextPrivate</a></li> - <li><a href="/ja/docs/JS_GetContextThread">JS_GetContextThread</a></li> - <li><a href="/ja/docs/JS_GetElement">JS_GetElement</a></li> - <li><a href="/ja/docs/JS_GetEmptyStringValue">JS_GetEmptyStringValue</a></li> - <li><a href="/ja/docs/JS_GetFunctionName">JS_GetFunctionName</a></li> - <li><a href="/ja/docs/JS_GetFunctionObject">JS_GetFunctionObject</a></li> - <li><a href="/ja/docs/JS_GetGlobalObject">JS_GetGlobalObject</a></li> - <li><a href="/ja/docs/JS_GetImplementationVersion">JS_GetImplementationVersion</a></li> - <li><a href="/ja/docs/JS_GetInstancePrivate">JS_GetInstancePrivate</a></li> - <li><a href="/ja/docs/JS_GetNaNValue">JS_GetNaNValue</a></li> - <li><a href="/ja/docs/JS_GetNegativeInfinityValue">JS_GetNegativeInfinityValue</a></li> - <li><a href="/ja/docs/JS_GetParent">JS_GetParent</a></li> - <li><a href="/ja/docs/JS_GetPositiveInfinityValue">JS_GetPositiveInfinityValue</a></li> - <li><a href="/ja/docs/JS_GetPrivate">JS_GetPrivate</a></li> - <li><a href="/ja/docs/JS_GetProperty">JS_GetProperty</a></li> - <li><a href="/ja/docs/JS_GetPropertyAttributes">JS_GetPropertyAttributes</a></li> - <li><a href="/ja/docs/JS_GetPrototype">JS_GetPrototype</a></li> - <li><a href="/ja/docs/JS_GetRuntime">JS_GetRuntime</a></li> - <li><a href="/ja/docs/JS_GetScopeChain">JS_GetScopeChain</a></li> - <li><a href="/ja/docs/JS_GetStringBytes">JS_GetStringBytes</a></li> - <li><a href="/ja/docs/JS_GetStringChars">JS_GetStringChars</a></li> - <li><a href="/ja/docs/JS_GetStringLength">JS_GetStringLength</a></li> - <li><a href="/ja/docs/JS_GetTypeName">JS_GetTypeName</a></li> - <li><a href="/ja/docs/JS_GetUCProperty">JS_GetUCProperty</a></li> - <li><a href="/ja/docs/JS_GetVersion">JS_GetVersion</a></li> - <li><a href="/ja/docs/JS_HasArrayLength">JS_HasArrayLength</a></li> - <li><a href="/ja/docs/JS_IdToValue">JS_IdToValue</a></li> - <li><a href="/ja/docs/JS_Init">JS_Init</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_InitClass">JS_InitClass</a></li> - <li><a href="/ja/docs/JS_InitStandardClasses">JS_InitStandardClasses</a></li> - <li><a href="/ja/docs/JS_InstanceOf">JS_InstanceOf</a></li> - <li><a href="/ja/docs/JS_InternString">JS_InternString</a></li> - <li><a href="/ja/docs/JS_InternUCString">JS_InternUCString</a></li> - <li><a href="/ja/docs/JS_InternUCStringN">JS_InternUCStringN</a></li> - <li><a href="/ja/docs/JS_IsArrayObject">JS_IsArrayObject</a></li> - <li><a href="/ja/docs/JS_IsConstructing">JS_IsConstructing</a></li> - <li><a href="/ja/docs/JS_IsRunning">JS_IsRunning</a></li> - <li><a href="/ja/docs/JS_Lock">JS_Lock</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_LockGCThing">JS_LockGCThing</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_LookupElement">JS_LookupElement</a></li> - <li><a href="/ja/docs/JS_LookupProperty">JS_LookupProperty</a></li> - <li><a href="/ja/docs/JS_LookupUCProperty">JS_LookupUCProperty</a></li> - <li><a href="/ja/docs/JS_malloc">JS_malloc</a></li> - <li><a href="/ja/docs/JS_MaybeGC">JS_MaybeGC</a></li> - <li><a href="/ja/docs/JS_NewArrayObject">JS_NewArrayObject</a></li> - <li><a href="/ja/docs/JS_NewContext">JS_NewContext</a></li> - <li><a href="/ja/docs/JS_NewDouble">JS_NewDouble</a></li> - <li><a href="/ja/docs/JS_NewDoubleValue">JS_NewDoubleValue</a></li> - <li><a href="/ja/docs/JS_NewFunction">JS_NewFunction</a></li> - <li><a href="/ja/docs/JS_NewIdArray">JS_NewIdArray</a></li> - <li><a href="/ja/docs/JS_NewNumberValue">JS_NewNumberValue</a></li> - <li><a href="/ja/docs/JS_NewObject">JS_NewObject</a></li> - <li><a href="/ja/docs/JS_NewRuntime">JS_NewRuntime</a></li> - <li><a href="/ja/docs/JS_NewScriptObject">JS_NewScriptObject</a></li> - <li><a href="/ja/docs/JS_NewString">JS_NewString</a></li> - <li><a href="/ja/docs/JS_NewStringCopyN">JS_NewStringCopyN</a></li> - <li><a href="/ja/docs/JS_NewStringCopyZ">JS_NewStringCopyZ</a></li> - <li><a href="/ja/docs/JS_NewUCString">JS_NewUCString</a></li> - <li><a href="/ja/docs/JS_NewUCStringCopyN">JS_NewUCStringCopyN</a></li> - <li><a href="/ja/docs/JS_NewUCStringCopyZ">JS_NewUCStringCopyZ</a></li> - <li><a href="/ja/docs/JS_ObjectIsFunction">JS_ObjectIsFunction</a></li> - <li><a href="/ja/docs/JS_PropertyStub">JS_PropertyStub</a></li> - <li><a href="/ja/docs/JS_realloc">JS_realloc</a></li> - <li><a href="/ja/docs/JS_RemoveRoot">JS_RemoveRoot</a></li> - <li><a href="/ja/docs/JS_ReportError">JS_ReportError</a></li> - <li><a href="/ja/docs/JS_ReportOutOfMemory">JS_ReportOutOfMemory</a></li> - <li><a href="/ja/docs/JS_ResolveStub">JS_ResolveStub</a></li> - <li><a href="/ja/docs/JS_ResumeRequest">JS_ResumeRequest</a></li> - <li><a href="/ja/docs/JS_SetArrayLength">JS_SetArrayLength</a></li> - <li><a href="/ja/docs/JS_SetBranchCallback">JS_SetBranchCallback</a></li> - <li><a href="/ja/docs/JS_SetContextPrivate">JS_SetContextPrivate</a></li> - <li><a href="/ja/docs/JS_SetContextThread">JS_SetContextThread</a></li> - <li><a href="/ja/docs/JS_SetElement">JS_SetElement</a></li> - <li><a href="/ja/docs/JS_SetErrorReporter">JS_SetErrorReporter</a></li> - <li><a href="/ja/docs/JS_SetGCCallback">JS_SetGCCallback</a></li> - <li><a href="/ja/docs/JS_SetGlobalObject">JS_SetGlobalObject</a></li> - <li><a href="/ja/docs/JS_SetParent">JS_SetParent</a></li> - <li><a href="/ja/docs/JS_SetPrivate">JS_SetPrivate</a></li> - <li><a href="/ja/docs/JS_SetProperty">JS_SetProperty</a></li> - <li><a href="/ja/docs/JS_SetPropertyAttributes">JS_SetPropertyAttributes</a></li> - <li><a href="/ja/docs/JS_SetPrototype">JS_SetPrototype</a></li> - <li><a href="/ja/docs/JS_SetUCProperty">JS_SetUCProperty</a></li> - <li><a href="/ja/docs/JS_SetVersion">JS_SetVersion</a></li> - <li><a href="/ja/docs/JS_strdup">JS_strdup</a></li> - <li><a href="/ja/docs/JS_SuspendRequest">JS_SuspendRequest</a></li> - <li><a href="/ja/docs/JS_TypeOfValue">JS_TypeOfValue</a></li> - <li><a href="/ja/docs/JS_Unlock">JS_Unlock</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_UnlockGCThing">JS_UnlockGCThing</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_ValueToBoolean">JS_ValueToBoolean</a></li> - <li><a href="/ja/docs/JS_ValueToECMAInt32">JS_ValueToECMAInt32</a></li> - <li><a href="/ja/docs/JS_ValueToECMAUint32">JS_ValueToECMAUint32</a></li> - <li><a href="/ja/docs/JS_ValueToFunction">JS_ValueToFunction</a></li> - <li><a href="/ja/docs/JS_ValueToId">JS_ValueToId</a></li> - <li><a href="/ja/docs/JS_ValueToInt32">JS_ValueToInt32</a></li> - <li><a href="/ja/docs/JS_ValueToNumber">JS_ValueToNumber</a></li> - <li><a href="/ja/docs/JS_ValueToObject">JS_ValueToObject</a></li> - <li><a href="/ja/docs/JS_ValueToString">JS_ValueToString</a></li> - <li><a href="/ja/docs/JS_ValueToUint16">JS_ValueToUint16</a></li> - <li><a href="/ja/docs/JSCLASS_HAS_PRIVATE">JSCLASS_HAS_PRIVATE</a></li> - <li><a href="/ja/docs/JSCLASS_NEW_ENUMERATE">JSCLASS_NEW_ENUMERATE</a></li> - <li><a href="/ja/docs/JSCLASS_NEW_RESOLVE">JSCLASS_NEW_RESOLVE</a></li> - <li><a href="/ja/docs/JSClass">JSClass</a></li> - <li><a href="/ja/docs/JSConstDoubleSpec">JSConstDoubleSpec</a></li> - <li><a href="/ja/docs/JSErrorReport">JSErrorReport</a></li> - <li><a href="/ja/docs/JSFUN_BOUND_METHOD">JSFUN_BOUND_METHOD</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JSFUN_GLOBAL_PARENT">JSFUN_GLOBAL_PARENT</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JSFunctionSpec">JSFunctionSpec</a></li> - <li><a href="/ja/docs/JSIdArray">JSIdArray</a></li> - <li><a href="/ja/docs/JSObjectOps">JSObjectOps</a></li> - <li><a href="/ja/docs/JSPRINCIPALS_DROP">JSPRINCIPALS_DROP</a></li> - <li><a href="/ja/docs/JSPRINCIPALS_HOLD">JSPRINCIPALS_HOLD</a></li> - <li><a href="/ja/docs/JSPrincipals">JSPrincipals</a></li> - <li><a href="/ja/docs/JSPROP_ENUMERATE">JSPROP_ENUMERATE</a></li> - <li><a href="/ja/docs/JSPROP_EXPORTED">JSPROP_EXPORTED</a></li> - <li><a href="/ja/docs/JSPROP_INDEX">JSPROP_INDEX</a></li> - <li><a href="/ja/docs/JSPROP_PERMANENT">JSPROP_PERMANENT</a></li> - <li><a href="/ja/docs/JSPROP_READONLY">JSPROP_READONLY</a></li> - <li><a href="/ja/docs/JSProperty">JSProperty</a></li> - <li><a href="/ja/docs/JSPropertySpec">JSPropertySpec</a></li> - <li><a href="/ja/docs/JSRESOLVE_ASSIGNING">JSRESOLVE_ASSIGNING</a></li> - <li><a href="/ja/docs/JSRESOLVE_QUALIFIED">JSRESOLVE_QUALIFIED</a></li> - <li><a href="/ja/docs/JSVAL_FALSE">JSVAL_FALSE</a></li> - <li><a href="/ja/docs/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a></li> - <li><a href="/ja/docs/JSVAL_IS_DOUBLE">JSVAL_IS_DOUBLE</a></li> - <li><a href="/ja/docs/JSVAL_IS_GCTHING">JSVAL_IS_GCTHING</a></li> - <li><a href="/ja/docs/JSVAL_IS_INT">JSVAL_IS_INT</a></li> - <li><a href="/ja/docs/JSVAL_IS_NULL">JSVAL_IS_NULL</a></li> - <li><a href="/ja/docs/JSVAL_IS_NUMBER">JSVAL_IS_NUMBER</a></li> - <li><a href="/ja/docs/JSVAL_IS_OBJECT">JSVAL_IS_OBJECT</a></li> - <li><a href="/ja/docs/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a></li> - <li><a href="/ja/docs/JSVAL_IS_STRING">JSVAL_IS_STRING</a></li> - <li><a href="/ja/docs/JSVAL_IS_VOID">JSVAL_IS_VOID</a></li> - <li><a href="/ja/docs/JSVAL_LOCK">JSVAL_LOCK</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JSVAL_NULL">JSVAL_NULL</a></li> - <li><a href="/ja/docs/JSVAL_ONE">JSVAL_ONE</a></li> - <li><a href="/ja/docs/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a></li> - <li><a href="/ja/docs/JSVAL_TO_DOUBLE">JSVAL_TO_DOUBLE</a></li> - <li><a href="/ja/docs/JSVAL_TO_GCTHING">JSVAL_TO_GCTHING</a></li> - <li><a href="/ja/docs/JSVAL_TO_INT">JSVAL_TO_INT</a></li> - <li><a href="/ja/docs/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a></li> - <li><a href="/ja/docs/JSVAL_TO_PRIVATE">JSVAL_TO_PRIVATE</a></li> - <li><a href="/ja/docs/JSVAL_TO_STRING">JSVAL_TO_STRING</a></li> - <li><a href="/ja/docs/JSVAL_TRUE">JSVAL_TRUE</a></li> - <li><a href="/ja/docs/JSVAL_UNLOCK">JSVAL_UNLOCK</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JSVAL_VOID">JSVAL_VOID</a></li> - <li><a href="/ja/docs/JSVAL_ZERO">JSVAL_ZERO</a></li> - <li><a href="/ja/docs/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a></li> - <li><a href="/ja/docs/PRIVATE_TO_JSVAL">PRIVATE_TO_JSVAL</a></li> - <li><a href="/ja/docs/STRING_TO_JSVAL">STRING_TO_JSVAL</a></li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html deleted file mode 100644 index 5bb96c5566..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html +++ /dev/null @@ -1,926 +0,0 @@ ---- -title: JSAPI リファレンス -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference -tags: - - JSAPI_Reference - - JavaScript - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference ---- -<section class="Quick_links" id="Quick_Links"> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey"><strong><em>SpiderMonkey</em></strong></a></li> - - <li><strong>References:</strong></li> - <li class="toggle"> - <details> - <summary>JSAPI reference</summary> - <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List" title="参照: グループ別一覧, カテゴリ表示 (自動)."><code>Alphabetical List</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile" title=""><code>JS CompileFile</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject" title="新たにJavaScriptオブジェクトを生成し、コンストラクタを呼び出します。 Create a new JavaScript object and invoke its constructor."><code>JS ConstructObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext" title=""><code>JS DestroyContext</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime" title=""><code>JS DestroyRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript" title=""><code>JS EvaluateScript</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime" title=""><code>JS GetRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate" title=""><code>JS GetRuntimePrivate</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext" title=""><code>JS NewContext</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime" title="JavaScript ランタイムの初期化を行います。 "><code>JS NewRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown" title=""><code>JS ShutDown</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime" title=""><code>JSRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType" title="列挙型 JSType の値は、 JavaScript の値の型を表します。"><code>JSType</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject" title=""><code>JS_DefineObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init" title="JS_Init は廃止されました。替わりに JS_NewRuntime を使用して下さい。"><code>JS_Init</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock" title="JS ランタイム環境をロックします。"><code>JS_Lock</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject" title=""><code>JS_NewObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint" title="C 言語 / C++ の整数型のエイリアスです。"><code>jsint</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li></ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Debugger-API</summary> - <ol><li><a href="/ja/docs/Tools/Debugger-API/Debugger">Debugger</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Environment">Debugger.Environment</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Frame">Debugger.Frame</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Memory">Debugger.Memory</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Object">Debugger.Object</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Script">Debugger.Script</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Source">Debugger.Source</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Debugger-Statement">Tools/Debugger-API/Tutorial-Debugger-Statement</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Breakpoint">チュートリアル: Debuggerを使用したブレークポイントの設定</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Allocation-Log-Tree">チュートリアル: コールパスごとの割り当てを表示する</a></li><li><a href="/ja/docs/Tools/Debugger-API/Conventions">一般的な規則</a></li></ol> - </details> - </li> - <li><strong>Guides:</strong></li> - <li class="toggle"> - <details> - <summary>General</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">Build documentation</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">Introduction to the JavaScript shell</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide">JSAPI user guide</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook">JSAPI cookbook</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine">How to embed the JavaScript engine</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/GC_Rooting_Guide">GC Rooting Guide</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>SpiderMonkey internals</summary> - <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection">Garbage collection</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Thread_Safety">Thread Safety</a></li></ol> - </details> - </li> - - <li><strong>Contributing to SpiderMonkey:</strong></li> - <li class="toggle"> - <details> - <summary>Getting started</summary> - <ol> - <li><a href="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey">New to SpiderMonkey</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Setting_up_CDT_to_work_on_SpiderMonkey">Setting up CDT to work on SpiderMonkey</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Hacking_Tips">Hacking tips</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Tests</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">Running Automated JavaScript Tests</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests">Creating JavaScript tests</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Parsemark">Running Parsemark</a></li> - </ol> - </details> - </li> - - <li><strong>Releases:</strong></li> - <li class="toggle"> - <details> - <summary>Release notes</summary> - <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/52">SpiderMonkey 52</a></li></ol> - </details> - </li> - <li><strong><a href="/ja/docs/MDN">Documentation:</a></strong></li> - <li class="toggle"> - <details> - <summary>Useful lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Index">All pages index</a></li> - <li><a href="/ja/docs/tag/SpiderMonkey">Pages tagged "SpiderMonkey"</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/SpiderMonkey">SpiderMonkey doc status</a></li> - <li><a href="/ja/docs/MDN">The MDN project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p><strong>JSAPI</strong> は、<a href="/ja/SpiderMonkey" title="ja/SpiderMonkey">SpiderMonkey</a> JavaScript エンジンのための C API です。JSAPI の使用方法を学ぶには、<a href="/ja/SpiderMonkey/Embedding_SpiderMonkey" title="ja/SpiderMonkey/Embedding_SpiderMonkey">JSAPI User Guide</a> および <a href="/ja/SpiderMonkey/JSAPI_Phrasebook" title="ja/SpiderMonkey/JSAPI_Phrasebook">JSAPI Phrasebook</a> をご覧ください。</p> - -<div class="note">補足: <a class="internal" href="/ja/SpiderMonkey/FOSS" title="ja/SpiderMonkey/FOSS">FOSS</a> のページに、Spidermonkey と JASPI の使用を助ける、他のライブラリやプログラムへのリンクがあります。</div> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/Alphabetical_List" title="ja/SpiderMonkey/JSAPI_Reference/Alphabetical_List">アルファベット順一覧</a></p> - -<p><span id="Runtimes_and_contexts"></span></p> - -<h3 id="Runtimes_and_contexts" name="Runtimes_and_contexts">ランタイムとコンテキスト</h3> - -<ul> - <li>typedef <a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></li> - <li><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JS_NewRuntime</a></li> - <li><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></li> - <li><a href="/ja/JS_ShutDown" title="ja/JS_ShutDown">JS_ShutDown</a></li> - <li><a href="/ja/JS_GetRuntimePrivate" title="ja/JS_GetRuntimePrivate">JS_GetRuntimePrivate</a></li> - <li><a href="/ja/JS_GetRuntimePrivate" title="ja/JS_GetRuntimePrivate">JS_SetRuntimePrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Init" title="ja/JS_Init">JS_Init</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Finish" title="ja/JS_Finish">JS_Finish</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ContextIterator" title="ja/JS_ContextIterator">JS_ContextIterator</a></li> -</ul> - -<ul> - <li>typedef <a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a></li> - <li><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JS_NewContext</a></li> - <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a></li> - <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContextMaybeGC</a></li> - <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContextNoGC</a></li> - <li><a href="/ja/JS_GetRuntime" title="ja/JS_GetRuntime">JS_GetRuntime</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextPrivate" title="ja/JS_GetContextPrivate">JS_GetContextPrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextPrivate" title="ja/JS_GetContextPrivate">JS_SetContextPrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetOptions" title="ja/JS_GetOptions">JS_GetOptions</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JS_SetOptions</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_ATLINE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_COMPILE_N_GO</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_DONT_REPORT_UNCAUGHT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_NATIVE_BRANCH_CALLBACK</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JSOPTION_RELIMIT">JSOPTION_RELIMIT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_STRICT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_VAROBJFIX</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_WERROR</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_XML</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_ANONFUNFIX</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_JIT</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_NO_SCRIPT_RVAL</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_UNROOTED_GLOBAL</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ToggleOptions" title="ja/JS_ToggleOptions">JS_ToggleOptions</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JS_SetBranchCallback</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_SetOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_ClearOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_GetOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_GetOperationLimit</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_SetOperationLimit</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_MAX_OPERATION_LIMIT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_OPERATION_WEIGHT_BASE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetThreadStackLimit" title="ja/JS_SetThreadStackLimit">JS_SetThreadStackLimit</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetScriptStackQuota" title="ja/JS_SetScriptStackQuota">JS_SetScriptStackQuota</a></li> -</ul> - -<ul> - <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVersion" title="ja/JSVersion">JSVersion</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVersion" title="ja/SpiderMonkey/JSAPI_Reference/JSVERSION_ECMA_3">JSVERSION_ECMA_3</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVERSION_DEFAULT" title="ja/JSVERSION_DEFAULT">JSVERSION_DEFAULT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVERSION_LATEST" title="ja/JSVERSION_LATEST">JSVERSION_LATEST</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetImplementationVersion" title="ja/JS_GetImplementationVersion">JS_GetImplementationVersion</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetVersion" title="ja/JS_GetVersion">JS_GetVersion</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetVersion" title="ja/JS_SetVersion">JS_SetVersion</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_StringToVersion" title="ja/JS_StringToVersion">JS_StringToVersion</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_VersionToString" title="ja/JS_VersionToString">JS_VersionToString</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">JS_GetGlobalObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGlobalObject" title="ja/JS_SetGlobalObject">JS_SetGlobalObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitClass" title="ja/JS_InitClass">JS_InitClass</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitStandardClasses" title="ja/JS_InitStandardClasses">JS_InitStandardClasses</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ResolveStandardClass" title="ja/JS_ResolveStandardClass">JS_ResolveStandardClass</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnumerateStandardClasses" title="ja/JS_EnumerateStandardClasses">JS_EnumerateStandardClasses</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnumerateResolvedStandardClasses" title="ja/JS_EnumerateResolvedStandardClasses">JS_EnumerateResolvedStandardClasses</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsAssigning" title="ja/JS_IsAssigning">JS_IsAssigning</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsConstructing" title="ja/JS_IsConstructing">JS_IsConstructing</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsRunning" title="ja/JS_IsRunning">JS_IsRunning</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetScopeChain" title="ja/JS_GetScopeChain">JS_GetScopeChain</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SaveFrameChain" title="ja/JS_SaveFrameChain">JS_SaveFrameChain</a>, <a href="/en/JS_RestoreFrameChain" title="en/JS_RestoreFrameChain">JS_RestoreFrameChain</a></li> -</ul> - -<p>ロケールコールバック:</p> - -<ul> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleCallbacks" title="ja/JSLocaleCallbacks">JSLocaleCallbacks</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetLocaleCallbacks" title="ja/JS_GetLocaleCallbacks">JS_GetLocaleCallbacks</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetLocaleCallbacks" title="ja/JS_SetLocaleCallbacks">JS_SetLocaleCallbacks</a></li> -</ul> - -<p>ロケールコールバック型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToUpperCase" title="ja/JSLocaleToUpperCase">JSLocaleToUpperCase</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToLowerCase" title="ja/JSLocaleToLowerCase">JSLocaleToLowerCase</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleCompare" title="ja/JSLocaleCompare">JSLocaleCompare</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToUnicode" title="ja/JSLocaleToUnicode">JSLocaleToUnicode</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JSErrorCallback</a></li> -</ul> - -<p><span id="Scripts"></span></p> - -<h3 id="Scripts" name="Scripts">スクリプト</h3> - -<p>一部の JavaScript コードは直接実行されます:</p> - -<ul> - <li><a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateScript</a></li> - <li><a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateUCScript</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateUCScriptForPrincipals</a></li> -</ul> - -<p>JavaScript コードを可能な <code>JSScript</code> へとコンパイルする代わりに、複数のアイテムを実行することができます。</p> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSScript" title="ja/JSScript">JSScript</a></li> - <li><a href="/ja/JS_CompileFile" title="ja/JS_CompileFile">JS_CompileFile</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFileHandle" title="ja/JS_CompileFileHandle">JS_CompileFileHandle</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFileHandle" title="ja/JS_CompileFileHandle">JS_CompileFileHandleForPrincipals</a></li> - <li><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a></li> - <li><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileUCScript</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="ja/JS_CompileScriptForPrincipals">JS_CompileScriptForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="ja/JS_CompileScriptForPrincipals">JS_CompileUCScriptForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BufferIsCompilableUnit" title="ja/JS_BufferIsCompilableUnit">JS_BufferIsCompilableUnit</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetScriptObject" title="ja/JS_GetScriptObject">JS_GetScriptObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewScriptObject" title="ja/JS_NewScriptObject">JS_NewScriptObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ExecuteScript" title="ja/JS_ExecuteScript">JS_ExecuteScript</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ExecuteScriptPart" title="ja/JS_ExecuteScriptPart">JS_ExecuteScriptPart</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileScript" title="ja/JS_DecompileScript">JS_DecompileScript</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DestroyScript" title="ja/JS_DestroyScript">JS_DestroyScript</a></li> -</ul> - -<p>JavaScript コードを関数へとコンパイルすることもできます:</p> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunction" title="ja/JSFunction">JSFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunction" title="ja/JS_CompileFunction">JS_CompileFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="ja/JS_CompileFunctionForPrincipals">JS_CompileFunctionForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunction" title="ja/JS_CompileFunction">JS_CompileUCFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="ja/JS_CompileFunctionForPrincipals">JS_CompileUCFunctionForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileFunction" title="ja/JS_DecompileFunction">JS_DecompileFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileFunctionBody" title="ja/JS_DecompileFunctionBody">JS_DecompileFunctionBody</a></li> -</ul> - -<p><span id="Error_handling"></span></p> - -<h3 id="Error_handling" name="Error_handling">エラーハンドリング</h3> - -<ul> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSErrorReport" title="ja/JSErrorReport">JSErrorReport</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="ja/JS_ReportError">JS_ReportError</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportWarning" title="ja/JS_ReportWarning">JS_ReportWarning</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumber</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumberUC</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorFlagsAndNumber</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorFlagsAndNumberUC</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportOutOfMemory" title="ja/JS_ReportOutOfMemory">JS_ReportOutOfMemory</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JS_SetErrorReporter</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_EXCEPTION" title="ja/JSREPORT_IS_EXCEPTION">JSREPORT_IS_EXCEPTION</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_STRICT" title="ja/JSREPORT_IS_STRICT">JSREPORT_IS_STRICT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_WARNING" title="ja/JSREPORT_IS_WARNING">JSREPORT_IS_WARNING</a></li> -</ul> - -<p>次の関数は、C/C++ 関数に JavaScript 例外のスローとキャッチを許可します。:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsExceptionPending" title="ja/JS_IsExceptionPending">JS_IsExceptionPending</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPendingException" title="ja/JS_GetPendingException">JS_GetPendingException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="ja/JS_SetPendingException">JS_SetPendingException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="ja/JS_ClearPendingException">JS_ClearPendingException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ThrowStopIteration" title="ja/JS_ThrowStopIteration">JS_ThrowStopIteration</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> -</ul> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSExceptionState" title="ja/JSExceptionState">JSExceptionState</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState" title="ja/JS_SaveExceptionState">JS_SaveExceptionState</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState" title="ja/JS_RestoreExceptionState">JS_RestoreExceptionState</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState" title="ja/JS_DropExceptionState">JS_DropExceptionState</a></li> -</ul> - -<p>これらの関数は、エラーを例外に、例外をエラーに翻訳します:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportPendingException" title="ja/JS_ReportPendingException">JS_ReportPendingException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ErrorFromException" title="ja/JS_ErrorFromException">JS_ErrorFromException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ThrowReportedError" title="ja/JS_ThrowReportedError">JS_ThrowReportedError</a></li> -</ul> - -<p><span id="Values_and_types"></span></p> - -<h3 id="Values_and_types" name="Values_and_types">値と型</h3> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/Jsval" title="ja/jsval">jsval</a></li> -</ul> - -<p><code>jsval</code> 定数:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_NULL" title="ja/JSVAL_NULL">JSVAL_NULL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_VOID" title="ja/JSVAL_VOID">JSVAL_VOID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TRUE" title="ja/JSVAL_TRUE">JSVAL_TRUE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TRUE" title="ja/JSVAL_TRUE">JSVAL_FALSE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_ZERO" title="ja/JSVAL_ZERO">JSVAL_ZERO</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_ONE" title="ja/JSVAL_ONE">JSVAL_ONE</a></li> -</ul> - -<p><code>jsval</code> の型をチェックする関数とマクロ:</p> - -<ul> - <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JSType" title="ja/JSType">JSType</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TypeOfValue" title="ja/JS_TypeOfValue">JS_TypeOfValue</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_NULL" title="ja/JSVAL_IS_NULL">JSVAL_IS_NULL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_VOID" title="ja/JSVAL_IS_VOID">JSVAL_IS_VOID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN" title="ja/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_NUMBER" title="ja/JSVAL_IS_NUMBER">JSVAL_IS_NUMBER</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_INT" title="ja/JSVAL_IS_INT">JSVAL_IS_INT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_DOUBLE" title="ja/JSVAL_IS_DOUBLE">JSVAL_IS_DOUBLE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_STRING" title="ja/JSVAL_IS_STRING">JSVAL_IS_STRING</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT" title="ja/JSVAL_IS_OBJECT">JSVAL_IS_OBJECT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="ja/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_GCTHING" title="ja/JSVAL_IS_GCTHING">JSVAL_IS_GCTHING</a></li> -</ul> - -<p>関数の引数を圧縮または展開する高レベル型変換ルーチン。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PushArguments" title="ja/JS_PushArguments">JS_PushArguments</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PushArguments" title="ja/JS_PushArguments">JS_PushArgumentsVA</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PopArguments" title="ja/JS_PopArguments">JS_PopArguments</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertArguments" title="ja/JS_ConvertArguments">JS_ConvertArguments</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertArgumentsVA" title="ja/JS_ConvertArgumentsVA">JS_ConvertArgumentsVA</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_AddArgumentFormatter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_RemoveArgumentFormatter</a></li> -</ul> - -<p>次の関数は JS 値を変数型に変換します。これらは任意の型の <code>jsval</code> に安全に適用することができます。これらは新しいオブジェクトを返します。例えば、<code>JS_ValueToObject(cx, s)</code> の <code>s</code> は新しい <code>String</code> ラッパーオブジェクトを作成する文字列です。これらの関数は JavaScript メソッドを呼び出します。例えば、<code>JS_ValueToString(cx, obj)</code> は <code>obj.toString()</code> を呼び出します。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToBoolean" title="ja/JS_ValueToBoolean">JS_ValueToBoolean</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToConstructor" title="ja/JS_ValueToConstructor">JS_ValueToConstructor</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToECMAInt32</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToECMAUint32</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToFunction" title="ja/JS_ValueToFunction">JS_ValueToFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToInt32" title="ja/JS_ValueToInt32">JS_ValueToInt32</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToNumber" title="ja/JS_ValueToNumber">JS_ValueToNumber</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToObject" title="ja/JS_ValueToObject">JS_ValueToObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToString" title="ja/JS_ValueToString">JS_ValueToString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToUint16</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertValue" title="ja/JS_ConvertValue">JS_ConvertValue</a></li> -</ul> - -<p>高速な未チェックの型キャストマクロ。これらのマクロは正しい型として知られていない値に適用してはいけません。C のキャストのように、正しくない値に適用するとクラッシュの原因となります。これらは新しいオブジェクトを作成したり JavaScript コード内に呼び出したりすることはありません。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN" title="ja/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/BOOLEAN_TO_JSVAL" title="ja/BOOLEAN_TO_JSVAL">BOOLEAN_TO_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_INT" title="ja/JSVAL_TO_INT">JSVAL_TO_INT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="ja/INT_TO_JSVAL">INT_TO_JSVAL</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/INT_FITS_IN_JSVAL" title="ja/INT_FITS_IN_JSVAL">INT_FITS_IN_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_DOUBLE" title="ja/JSVAL_TO_DOUBLE">JSVAL_TO_DOUBLE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/DOUBLE_TO_JSVAL" title="ja/DOUBLE_TO_JSVAL">DOUBLE_TO_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="ja/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL" title="ja/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_STRING" title="ja/JSVAL_TO_STRING">JSVAL_TO_STRING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL" title="ja/STRING_TO_JSVAL">STRING_TO_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_GCTHING" title="ja/JSVAL_TO_GCTHING">JSVAL_TO_GCTHING</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/PRIVATE_TO_JSVAL" title="ja/PRIVATE_TO_JSVAL">JSVAL_TO_PRIVATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/PRIVATE_TO_JSVAL" title="ja/PRIVATE_TO_JSVAL">PRIVATE_TO_JSVAL</a></li> -</ul> - -<p><code>typeof</code> のように振る舞う関数:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetTypeName" title="ja/JS_GetTypeName">JS_GetTypeName</a></li> -</ul> - -<p><code>===</code> のように振る舞う関数:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_StrictlyEqual" title="ja/SpiderMonkey/JSAPI_Reference/JS_StrictlyEqual">JS_StrictlyEqual</a></li> -</ul> - -<p><span id="Memory_management"></span></p> - -<h3 id="Memory_management" name="Memory_management">メモリ管理</h3> - -<p>これらの関数は、標準 C 関数の <code>malloc</code> 系のように動作します。ただし、エラーは <code>errno</code> ではなく、SpiderMonkey のエラー API を使用して報告されます:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_malloc">JS_malloc</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_free">JS_free</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_realloc">JS_realloc</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_strdup">JS_strdup</a></li> -</ul> - -<p>JavaScript オブジェクト、文字列、浮動小数点数はガーベッジコレクションの対象となります。これらの関数は、ガーベッジコレクタ(GC) へのアクセスを提供します:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GC" title="ja/JS_GC">JS_GC</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MaybeGC" title="ja/JS_MaybeGC">JS_MaybeGC</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JS_GetGCParameter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JS_SetGCParameter</a>, enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGCParamKey</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_MAX_BYTES</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_MAX_MALLOC_BYTES</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_STACKPOOL_LIFESPAN</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC TRIGGER FACTOR">JSGC_TRIGGER_FACTOR</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC BYTES">JSGC_BYTES</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC NUMBER">JSGC_NUMBER</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallbackRT</a>, enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGCStatus</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_BEGIN</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_MARK_END</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_FINALIZE_END</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_END</a></li> - <li><a href="/ja/JS_MarkGCThing" title="ja/JS_MarkGCThing">JS_MarkGCThing</a></li> - <li><a href="/ja/JS_IsAboutToBeFinalized" title="ja/JS_IsAboutToBeFinalized">JS_IsAboutToBeFinalized</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearNewbornRoots" title="ja/JS_ClearNewbornRoots">JS_ClearNewbornRoots</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCZeal" title="ja/JS_SetGCZeal">JS_SetGCZeal</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DumpHeap" title="ja/JS_DumpHeap">JS_DumpHeap</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> -</ul> - -<p>これら残りの API は、アプリケーションがガーベッジコレクションを行う前に、オブジェクトをガーベッジコレクタによる破壊から保護します。</p> - -<p>変数が <em>root</em> の場合、その変数へのポインタはガーベッジコレクタによって開放されません。ルートオブジェクトに対しての失敗は、よくある奇妙なクラッシュの原因です。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddRoot</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddNamedRoot</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddNamedRootRT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveRoot" title="ja/JS_RemoveRoot">JS_RemoveRoot</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveRootRT" title="ja/JS_RemoveRootRT">JS_RemoveRootRT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JS_MapGCRoots</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JSGCMapRootFun">JSGCMapRootFun</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_NEXT">JS_MAP_GCROOT_NEXT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_REMOVE">JS_MAP_GCROOT_REMOVE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_STOP">JS_MAP_GCROOT_STOP</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DumpNamedRoots" title="ja/JS_DumpNamedRoots">JS_DumpNamedRoots</a></li> -</ul> - -<p>ローカルのルートのスコープは、オブジェクトを別の方法でガーベッジコレクタから保護します。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnterLocalRootScope" title="ja/JS_EnterLocalRootScope">JS_EnterLocalRootScope</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LeaveLocalRootScope" title="ja/JS_LeaveLocalRootScope">JS_LeaveLocalRootScope</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LeaveLocalRootScopeWithResult" title="ja/JS_LeaveLocalRootScopeWithResult">JS_LeaveLocalRootScopeWithResult</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ForgetLocalRoot" title="ja/JS_ForgetLocalRoot">JS_ForgetLocalRoot</a></li> -</ul> - -<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span> オブジェクトが、SpiderMonkey のデータ構造 ("slots") に格納されていない、他のガーベッジコレクタの対象への参照を含む場合、このオブジェクトは、ガーベッジコレクタのこれらの参照へのトラバース (<span style="color: green;">traverse</span>)を有効にするため、<code><a href="/ja/JSClass.mark" title="ja/JSClass.mark">JSTraceOp</a></code> フックを実装しなければなりません。しかし、ガーベッジコレクタは手の届く範囲のオブジェクトのみを整理しますが、すべてのオブジェクトを見つけることはできないため、クラッシュを引き起こします。(SpiderMonkey 1.7 以前のバージョンでは <code>JSMarkOp</code> フックが代わりに使用されます。これは SpiderMonkey 1.8 のリリース後は非推奨です。)</p> - -<p>トレース API は、ガーベッジコレクタと <code>JSTraceOp</code> フックによって使用されます。JSAPI アプリケーションもまた、これらの API をオブジェクトグラフを検査するために使用します。(例えば、これらの API は JS ガーベッジコレクタと他のガーベッジコレクタの、とても円滑な統合をサポートします。)</p> - -<ul> - <li><a href="/ja/JSVAL_IS_TRACEABLE" title="ja/JSVAL_IS_TRACEABLE">JSVAL_IS_TRACEABLE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JSVAL_TO_TRACEABLE" title="ja/JSVAL_TO_TRACEABLE">JSVAL_TO_TRACEABLE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JSVAL_TRACE_KIND" title="ja/JSVAL_TRACE_KIND">JSVAL_TRACE_KIND</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li>struct <a href="/ja/JSTracer" title="ja/JSTracer">JSTracer</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JS_TRACER_INIT</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CallTracer" title="ja/JS_CallTracer">JS_CallTracer</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JS_SET_TRACING_DETAILS</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_SET_TRACING_INDEX" title="ja/JS_SET_TRACING_INDEX">JS_SET_TRACING_INDEX</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_SET_TRACING_NAME" title="ja/JS_SET_TRACING_NAME">JS_SET_TRACING_NAME</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_TRACER" title="ja/JS_CALL_TRACER">JS_CALL_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_VALUE_TRACER" title="ja/JS_CALL_VALUE_TRACER">JS_CALL_VALUE_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_OBJECT_TRACER" title="ja/JS_CALL_OBJECT_TRACER">JS_CALL_OBJECT_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_STRING_TRACER" title="ja/JS_CALL_STRING_TRACER">JS_CALL_STRING_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_DOUBLE_TRACER" title="ja/JS_CALL_DOUBLE_TRACER">JS_CALL_DOUBLE_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_TraceChildren" title="ja/JS_TraceChildren">JS_TraceChildren</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_TraceRuntime" title="ja/JS_TraceRuntime">JS_TraceRuntime</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_PrintTraceThingInfo" title="ja/JS_PrintTraceThingInfo">JS_PrintTraceThingInfo</a> (DEBUG-only) <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> -</ul> - -<p>その他の GC API:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_LOCK" title="ja/JSVAL_LOCK">JSVAL_LOCK</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_UNLOCK" title="ja/JSVAL_UNLOCK">JSVAL_UNLOCK</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockGCThing" title="ja/JS_LockGCThing">JS_LockGCThing</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/JS_LockGCThingRT" title="ja/JS_LockGCThingRT">JS_LockGCThingRT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockGCThing" title="ja/JS_LockGCThing">JS_UnlockGCThing</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/JS_UnlockGCThingRT" title="ja/JS_UnlockGCThingRT">JS_UnlockGCThingRT</a></li> -</ul> - -<p><span id="Numbers"></span></p> - -<h3 id="Numbers" name="Numbers">数値</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue" title="ja/JS_NewNumberValue">JS_NewNumberValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDoubleValue" title="ja/JS_NewDoubleValue">JS_NewDoubleValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDouble" title="ja/JS_NewDouble">JS_NewDouble</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSConstDoubleSpec" title="ja/JSConstDoubleSpec">JSConstDoubleSpec</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineConstDoubles" title="ja/JS_DefineConstDoubles">JS_DefineConstDoubles</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetNaNValue" title="ja/JS_GetNaNValue">JS_GetNaNValue</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPositiveInfinityValue" title="ja/JS_GetPositiveInfinityValue">JS_GetNegativeInfinityValue</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPositiveInfinityValue" title="ja/JS_GetPositiveInfinityValue">JS_GetPositiveInfinityValue</a></li> -</ul> - -<p><span id="Strings"></span></p> - -<h3 id="Strings" name="Strings">文字列</h3> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSString" title="ja/JSString">JSString</a></li> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/jschar" title="ja/jschar">jschar</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewString" title="ja/JS_NewString">JS_NewString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN">JS_NewStringCopyN</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewStringCopyZ</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewString" title="ja/JS_NewString">JS_NewUCString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN">JS_NewUCStringCopyN</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewUCStringCopyZ</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewGrowableString" title="ja/JS_NewGrowableString">JS_NewGrowableString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDependentString" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewDependentString">JS_NewDependentString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetEmptyStringValue" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetEmptyStringValue">JS_GetEmptyStringValue</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompareStrings" title="ja/SpiderMonkey/JSAPI_Reference/JS_CompareStrings">JS_CompareStrings</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConcatStrings" title="ja/JS_ConcatStrings">JS_ConcatStrings</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes">JS_GetStringBytes</a> <span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes">JS_GetStringBytesZ</a> <span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringChars" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringChars">JS_GetStringChars</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringLength" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringLength">JS_GetStringLength</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MakeStringImmutable" title="ja/SpiderMonkey/JSAPI_Reference/JS_MakeStringImmutable">JS_MakeStringImmutable</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_UndependString" title="ja/SpiderMonkey/JSAPI_Reference/JS_UndependString">JS_UndependString</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CStringsAreUTF8" title="ja/JS_CStringsAreUTF8">JS_CStringsAreUTF8</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CStringsAreUTF8" title="ja/JS_SetCStringsAreUTF8">JS_SetCStringsAreUTF8</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecodeBytes" title="ja/JS_DecodeBytes">JS_DecodeBytes</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EncodeCharacters" title="ja/JS_EncodeCharacters">JS_EncodeCharacters</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_EncodeString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_EncodeStringToBuffer</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_GetStringEncodingLength</a></li> -</ul> - -<p><em>Interning</em> 文字列は SpiderMonkey エンジンに、可能ならば既存の文字列オブジェクトを再使用するように伝えます。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternUCString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternUCStringN</a></li> -</ul> - -<p><em>external strings</em> のための文字データはアプリケーションによって提供されるメモリに格納されます。アプリケーションはこれを、SpiderMonkey のヒープとアプリケーションのメモリの間で、<span style="border-bottom: 1px dashed green;" title="copying data back and forth">データを先や後へコピーする</span>ことを防止するために使用します。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JS_AddExternalStringFinalizer</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveExternalStringFinalizer" title="ja/JS_RemoveExternalStringFinalizer">JS_RemoveExternalStringFinalizer</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetExternalStringGCType" title="ja/JS_GetExternalStringGCType">JS_GetExternalStringGCType</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewExternalString" title="ja/JS_NewExternalString">JS_NewExternalString</a></li> -</ul> - -<p><span id="Objects"></span></p> - -<h3 id="Objects" name="Objects">オブジェクト</h3> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSObject" title="ja/JSObject">JSObject</a></li> - <li><a href="/ja/JS_ConstructObject" title="ja/JS_ConstructObject">JS_ConstructObject</a></li> - <li><a href="/ja/JS_ConstructObject" title="ja/JS_ConstructObjectWithArguments">JS_ConstructObjectWithArguments</a></li> - <li><a href="/ja/JS_DefineObject" title="ja/JS_DefineObject">JS_DefineObject</a></li> - <li><a href="/ja/JS_NewObject" title="ja/JS_NewObject">JS_NewObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewGlobalObject" title="ja/SpiderMonkey/JSAPI Reference/JS NewGlobalObject">JS_NewGlobalObject</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="ja/JS_NewObject">JS_NewObjectWithGivenProto</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_New" title="ja/SpiderMonkey/JSAPI Reference/JS New">JS_New</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GET_CLASS" title="ja/JS_GET_CLASS">JS_GET_CLASS</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GET_CLASS" title="ja/JS_GET_CLASS">JS_GetClass</a></li> - <li><a href="/ja/JS_GetClassObject" title="ja/JS_GetClassObject">JS_GetClassObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetConstructor" title="ja/JS_GetConstructor">JS_GetConstructor</a></li> - <li><a href="/ja/JS_GetGlobalForObject" title="ja/JS_GetGlobalForObject">JS_GetGlobalForObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetInstancePrivate" title="ja/JS_GetInstancePrivate">JS_GetInstancePrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetParent" title="ja/JS_GetParent">JS_GetParent</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetParent" title="ja/JS_SetParent">JS_SetParent</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPrivate" title="ja/JS_GetPrivate">JS_GetPrivate</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="ja/JS_SetPrivate">JS_SetPrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPrototype" title="ja/JS_GetPrototype">JS_GetPrototype</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrototype" title="ja/JS_SetPrototype">JS_SetPrototype</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetReservedSlot" title="ja/JS_GetReservedSlot">JS_GetReservedSlot</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetReservedSlot" title="ja/JS_GetReservedSlot">JS_SetReservedSlot</a></li> - <li><a href="/ja/JS_HasInstance" title="ja/JS_HasInstance">JS_HasInstance</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InstanceOf" title="ja/JS_InstanceOf">JS_InstanceOf</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SealObject" title="ja/JS_SealObject">JS_SealObject</a></li> -</ul> - -<p><span id="Properties"></span></p> - -<h3 id="Properties" name="Properties">プロパティ</h3> - -<p>これらの関数は、直接スクリプトがオブジェクトのプロパティにアクセスする方法に相当します:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetPropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetPropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasPropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty" title="ja/JS_DeleteProperty">JS_DeleteProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty" title="ja/JS_DeleteProperty">JS_DeletePropertyById</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeleteProperty2</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeleteUCProperty2</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeletePropertyById2</a></li> -</ul> - -<p>次の低レベルの関数は、JSAPI アプリケーションが、プロパティの実装方法の詳細へのアクセスを許可します。"Define" は "set" の低レベル版であり、追加の設定へのアクセスを提供し、setter を呼び出しません。同様に、"lookup" は "get" の低レベル版であり、追加のオプションを与え、getter を呼び出しません。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnElement">JS_AlreadyHasOwnElement</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnPropertyById</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearScope" title="ja/JS_ClearScope">JS_ClearScope</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperties" title="ja/JS_DefineProperties">JS_DefineProperties</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefineProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefineUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefinePropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefinePropertyWithTinyId" title="ja/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefinePropertyWithTinyId" title="ja/JS_DefinePropertyWithTinyId">JS_DefineUCPropertyWithTinyId</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Enumerate" title="ja/JS_Enumerate">JS_Enumerate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JS_GetPropertyAttributes</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JS_GetUCPropertyAttributes</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_ENUMERATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_EXPORTED</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_GETTER</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_INDEX</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_PERMANENT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_READONLY</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_SETTER</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_SHARED</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetPropertyAttrsGetterAndSetter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetUCPropertyAttrsGetterAndSetter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetPropertyAttrsGetterAndSetterById</a></li> - <li><a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyDescriptorById" title="ja/SpiderMonkey/JSAPI Reference/JS GetPropertyDescriptorById">JS_GetPropertyDescriptorById</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyWithFlags</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyWithFlagsById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewPropertyIterator" title="ja/JS_NewPropertyIterator">JS_NewPropertyIterator</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NextProperty" title="ja/JS_NextProperty">JS_NextProperty</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPropertyAttributes" title="ja/JS_SetPropertyAttributes">JS_SetPropertyAttributes</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPropertyAttributes" title="ja/JS_SetPropertyAttributes">JS_SetUCPropertyAttributes</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AliasProperty" title="ja/JS_AliasProperty">JS_AliasProperty</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> -</ul> - -<p>次の関数は、<code>JS_GetProperty</code> および <code>JS_GetPropertyById</code> のように振る舞います。ただし、E4X XML オブジェクト上の操作は除きます。</p> - -<ul> - <li><a href="/ja/JS_GetMethod" title="ja/JS_GetMethod">JS_GetMethod</a>, <a href="/ja/JS_GetMethodById" title="ja/JS_GetMethodById">JS_GetMethodById</a></li> -</ul> - -<p>SpiderMonkey 拡張は lvalue(オブジェクトのプロパティへの参照) を返すネイティブ関数を許可します:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetCallReturnValue2" title="ja/JS_SetCallReturnValue2">JS_SetCallReturnValue2</a></li> -</ul> - -<p><code><a href="/ja/SpiderMonkey/JSAPI_Reference/jsid" title="ja/jsid">jsid</a></code> は <code>jsval</code> の一種です。ごく少数の API が、<code>jsval</code> の代わりに <code>jsid</code> をプロパティ名に使用します: <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JS_CheckAccess</a></code> および <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Enumerate" title="ja/JS_Enumerate">JS_Enumerate</a></code>, <code><a href="/ja/JS_GetMethodById" title="ja/JS_GetMethodById">JS_GetMethodById</a></code>, <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NextProperty" title="ja/JS_NextProperty">JS_NextProperty</a></code>。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IdToValue" title="ja/JS_IdToValue">JS_IdToValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToId" title="ja/JS_ValueToId">JS_ValueToId</a></li> - <li><a href="/ja/JS_GetObjectId" title="ja/JS_GetObjectId">JS_GetObjectId</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSIdArray" title="ja/JSIdArray">JSIdArray</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DestroyIdArray" title="ja/JS_DestroyIdArray">JS_DestroyIdArray</a></li> -</ul> - -<p><code>jsid</code> 定数:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_VOID" title="ja/JSID_VOID">JSID_VOID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_EMPTY" title="ja/JSID_EMPTY">JSID_EMPTY</a></li> -</ul> - -<p><code>jsid</code> の型を調べる関数とマクロ:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_VOID" title="ja/JSID_IS_VOID">JSID_IS_VOID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_INT" title="ja/JSID_IS_INT">JSID_IS_INT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_STRING" title="ja/JSID_IS_STRING">JSID_IS_STRING</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_OBJECT" title="ja/JSID_IS_OBJECT">JSID_IS_OBJECT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_GCTHING" title="ja/JSID_IS_GCTHING">JSID_IS_GCTHING</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_ZERO" title="ja/JSID_IS_ZERO">JSID_IS_ZERO</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_EMPTY" title="ja/JSID_IS_EMPTY">JSID_IS_EMPTY</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_DEFAULT_XML_NAMESPACE" title="ja/JSID_IS_DEFAULT_XML_NAMESPACE">JSID_IS_DEFAULT_XML_NAMESPACE</a></li> -</ul> - -<p><span id="Classes"></span></p> - -<h3 id="Classes" name="Classes">クラス</h3> - -<p>これらの API 機能は、C/C++ に実装された JavaScript からアクセス可能なカスタムクラス—オブジェクト型の定義に使用されます。</p> - -<ul> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass" title="ja/SpiderMonkey/JSAPI_Reference/JSClass">JSClass</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass" title="ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass">JSExtendedClass</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps">JSObjectOps</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps">JSXMLObjectOps</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSProperty">JSProperty</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec">JSPropertySpec</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitClass" title="ja/SpiderMonkey/JSAPI_Reference/JS_InitClass">JS_InitClass</a></li> -</ul> - -<p>ネイティブプロパティとメソッドをクラスに追加:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNative" title="ja/SpiderMonkey/JSAPI_Reference/JSNative">JSNative</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JSFastNative</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FS">JS_FS</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FN">JS_FN</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FS_END">JS_FS_END</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec">JSPropertySpec</a></li> -</ul> - -<p><code>JSFastNative</code> メソッドはこれらのマクロを使用します: <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_CALLEE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_THIS</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_THIS_OBJECT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_ARGV</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_RVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_SET_RVAL</a></li> -</ul> - -<p><code>JSClass</code> の振る舞いとそのインスタンスは、コールバック関数を使用して多くの方法でカスタマイズすることができます。</p> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass" title="ja/SpiderMonkey/JSAPI_Reference/JSClass">JSClass</a> メソッド型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertyOp" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertyOp">JSPropertyOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSEnumerateOp" title="ja/SpiderMonkey/JSAPI_Reference/JSEnumerateOp">JSEnumerateOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate">JSNewEnumerateOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.resolve" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.resolve">JSResolveOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSNewResolveOp</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_ASSIGNING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_CLASSNAME</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_DECLARING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_DETECTING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_QUALIFIED</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue">JSConvertOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize">JSFinalizeOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.getObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.getObjectOps">JSGetObjectOps</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess">JSCheckAccessOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject">JSXDRObjectOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance">JSHasInstanceOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.mark" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.mark">JSMarkOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSTraceOp" title="ja/SpiderMonkey/JSAPI_Reference/JSTraceOp">JSTraceOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.reserveSlots" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.reserveSlots">JSReserveSlotsOp</a></li> -</ul> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass" title="ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass">JSExtendedClass</a> メソッド型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSIteratorOp" title="ja/SpiderMonkey/JSAPI_Reference/JSIteratorOp">JSIteratorOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSEqualityOp" title="ja/SpiderMonkey/JSAPI_Reference/JSEqualityOp">JSEqualityOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOp" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOp">JSObjectOp</a></li> -</ul> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps">JSObjectOps</a> メソッド型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.newObjectMap" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.newObjectMap">JSNewObjectMapOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.destroyObjectMap" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.destroyObjectMap">JSObjectMapOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.lookupProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.lookupProperty">JSLookupPropOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defineProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defineProperty">JSDefinePropOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getProperty">JSPropertyIdOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getAttributes" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getAttributes">JSAttributesOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue">JSConvertOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate">JSNewEnumerateOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess">JSCheckAccessIdOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOp" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOp">JSObjectOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.dropProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.dropProperty">JSPropertyRefOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject">JSXDRObjectOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance">JSHasInstanceOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.setProto" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.setProto">JSSetObjectSlotOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSTraceOp" title="ja/SpiderMonkey/JSAPI_Reference/JSTraceOp">JSTraceOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize">JSFinalizeOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot">JSGetRequiredSlotOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot">JSSetRequiredSlotOp</a></li> -</ul> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps">JSXMLObjectOps</a> メソッド型:</p> - -<ul> - <li><a href="/ja/JSGetMethodOp" title="ja/JSGetMethodOp">JSGetMethodOp</a></li> - <li><a href="/ja/JSSetMethodOp" title="ja/JSSetMethodOp">JSSetMethodOp</a></li> - <li><a href="/ja/JSEnumerateValuesOp" title="ja/JSEnumerateValuesOp">JSEnumerateValuesOp</a></li> - <li><a href="/ja/JSEqualityOp" title="ja/JSEqualityOp">JSEqualityOp</a></li> - <li><a href="/ja/JSConcatenateOp" title="ja/JSConcatenateOp">JSConcatenateOp</a></li> -</ul> - -<p>これらの stub 関数はカスタム <code>JSClass</code> の作成時に使用されます:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_ConvertStub</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_EnumerateStub</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_FinalizeStub</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_PropertyStub</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_ResolveStub</a></li> -</ul> - -<p><code>JSClass</code> の振る舞いは、これらのフラグを使用してカスタマイズできます:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSClass.flags</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_CONSTUCT_PROTOTYPE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_GLOBAL_FLAGS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_HAS_PRIVATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_HAS_RESERVED_SLOTS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_IS_EXTENDED</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_MARK_IS_TRACE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_ENUMERATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_RESOLVE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_RESOLVE_GETS_START</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_PRIVATE_IS_NSISUPPORTS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_SHARE_ALL_PROPERTIES</a></li> -</ul> - -<p><span id="Arrays"></span></p> - -<h3 id="Arrays" name="Arrays">配列</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject" title="ja/JS_NewArrayObject">JS_NewArrayObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsArrayObject" title="ja/JS_IsArrayObject">JS_IsArrayObject</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasArrayLength" title="ja/JS_HasArrayLength">JS_HasArrayLength</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetArrayLength" title="ja/JS_GetArrayLength">JS_GetArrayLength</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetArrayLength" title="ja/JS_SetArrayLength">JS_SetArrayLength</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AliasElement" title="ja/JS_AliasElement">JS_AliasElement</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineElement" title="ja/JS_DefineElement">JS_DefineElement</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteElement" title="ja/JS_DeleteElement">JS_DeleteElement</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteElement2" title="ja/JS_DeleteElement2">JS_DeleteElement2</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetElement" title="ja/JS_GetElement">JS_GetElement</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupElement" title="ja/JS_LookupElement">JS_LookupElement</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetElement" title="ja/JS_SetElement">JS_SetElement</a></li> -</ul> - -<p><span id="Functions"></span></p> - -<h3 id="Functions" name="Functions">関数</h3> - -<p>関数またはオブジェクトのメソッドの呼び出し:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunction" title="ja/JS_CallFunction">JS_CallFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="ja/JS_CallFunctionName">JS_CallFunctionName</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue" title="ja/JS_CallFunctionValue">JS_CallFunctionValue</a></li> -</ul> - -<p>関数アクセサリ:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ObjectIsFunction" title="ja/JS_ObjectIsFunction">JS_ObjectIsFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionArity" title="ja/JS_GetFunctionArity">JS_GetFunctionArity</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionFlags" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionFlags">JS_GetFunctionFlags</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionId" title="ja/JS_GetFunctionId">JS_GetFunctionId</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionName" title="ja/JS_GetFunctionName">JS_GetFunctionName</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionObject" title="ja/JS_GetFunctionObject">JS_GetFunctionObject</a></li> -</ul> - -<p>関数の生成:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CloneFunctionObject" title="ja/JS_CloneFunctionObject">JS_CloneFunctionObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="ja/JS_DefineFunction">JS_DefineFunction</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="ja/JS_DefineFunction">JS_DefineUCFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="ja/JS_DefineFunctions">JS_DefineFunctions</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewFunction" title="ja/JS_NewFunction">JS_NewFunction</a></li> -</ul> - -<p><span id="RegExps"></span></p> - -<h3 id="RegExps" name="RegExps">正規表現</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject">JS_NewRegExpObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject">JS_NewUCRegExpObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetRegExpInput" title="ja/SpiderMonkey/JSAPI_Reference/JS_SetRegExpInput">JS_SetRegExpInput</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpRoots" title="ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpRoots">JS_ClearRegExpRoots</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpStatics" title="ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpStatics">JS_ClearRegExpStatics</a></li> -</ul> - -<p><span id="Security"></span></p> - -<h3 id="Security" name="Security">セキュリティ</h3> - -<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1">SpiderMonkey 1.8.1</a> の新機能</span> セキュリティのコールバックは、ランタイムごと、またはコンテキストごとに設定できます。</p> - -<ul> - <li> - <ul> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPrincipals" title="ja/JSPrincipals">JSPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSPRINCIPALS_HOLD" title="ja/JSPRINCIPALS_HOLD">JSPRINCIPALS_HOLD</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPRINCIPALS_HOLD" title="ja/JSPRINCIPALS_HOLD">JSPRINCIPALS_DROP</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JS_SetObjectPrincipalsFinder</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JS_SetPrincipalsTranscoder</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li> - </ul> - - <ul> - <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSAccessMode</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_PROTO</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_PARENT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_IMPORT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_WATCH</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_READ</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_WRITE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JS_CheckAccess</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess" title="ja/JSObjectOps.checkAccess">JSObjectOps.checkAccess</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess" title="ja/JSClass.checkAccess">JSClass.checkAccess</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetCheckObjectAccessCallback" title="ja/JS_SetCheckObjectAccessCallback">JS_SetCheckObjectAccessCallback</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li> - </ul> - - <ul> - <li><a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_GetSecurityCallbacks</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_SetContextSecurityCallbacks</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_GetRuntimeSecurityCallbacks</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks">JS_SetRuntimeSecurityCallbacks</a></li> - </ul> - </li> -</ul> - -<p><span id="Threading"></span></p> - -<h3 id="Threading" name="Threading">スレッド</h3> - -<p>次の関数は SpiderMonkey のスレッドモデルをサポートしています。</p> - -<p><span class="inlineIndicator standardNote">JSAPI 1.7 まで</span> これらは <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE">JS_THREADSAFE</a></code> ビルドでのみ利用可能です。</p> - -<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span> これらの関数はいつでも利用可能です。ただし、<code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code> 無しのビルドでは何もしません</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="ja/JS_BeginRequest">JS_EndRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_YieldRequest" title="ja/JS_YieldRequest">JS_YieldRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="ja/JS_SuspendRequest">JS_SuspendRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="ja/JS_SuspendRequest">JS_ResumeRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextThread" title="ja/JS_GetContextThread">JS_GetContextThread</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_SetContextThread</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a></li> -</ul> - -<p>次の関数はすべてのビルドに存在します。ただし、<code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE">JS_THREADSAFE</a></code> 無しのビルドでは何もしません:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockRuntime" title="ja/SpiderMonkey/JSAPI_Reference/JS_LockRuntime">JS_LockRuntime</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_UnlockRuntime" title="ja/SpiderMonkey/JSAPI_Reference/JS_UnlockRuntime">JS_UnlockRuntime</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Lock" title="ja/JS_Lock">JS_Lock</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Unlock" title="ja/JS_Unlock">JS_Unlock</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> -</ul> - -<p><span id="Time"></span></p> - -<h3 id="Time" name="Time">時間</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Now" title="ja/SpiderMonkey/JSAPI_Reference/JS_Now">JS_Now</a></li> -</ul> - -<p><span id="Callback_Types"></span></p> - -<h3 id="Callback_Types" name="Callback_Types">コールバック型</h3> - -<p>ネイティブ関数型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNative" title="ja/JSNative">JSNative</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/JSFastNative">JSFastNative</a></li> -</ul> - -<p>その他のコールバック型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JSStringFinalizeOp</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JS_AddExternalStringFinalizer</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JSTraceCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JS_TRACER_INIT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JSTraceNamePrinter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JS_SET_TRACING_DETAILS</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetContextCallback" title="ja/JS_SetContextCallback">JSContextCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGCCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallback</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetExtraGCRoots" title="ja/JS_SetExtraGCRoots">JSTraceDataOp</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetExtraGCRoots" title="ja/JS_SetExtraGCRoots">JS_SetExtraGCRoots</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JSBranchCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JS_SetBranchCallback</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JSErrorReporter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JS_SetErrorReporter</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JSErrorCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumber</a> and friends</li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JSArgumentFormatter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_AddArgumentFormatter</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JSPrincipalsTranscoder</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JS_SetPrincipalsTranscoder</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JSObjectPrincipalsFinder</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JS_SetObjectPrincipalsFinder</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JSGCRootMapFun</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JS_MapGCRoots</a></li> -</ul> - -<p>上記の<a href="#Classes">クラス</a>も参照してください。</p> - -<p><span id="Macros"></span></p> - -<h3 id="Macros" name="Macros">マクロ</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DEFAULT_XML_NAMESPACE_ID" title="ja/JS_DEFAULT_XML_NAMESPACE_ID">JS_DEFAULT_XML_NAMESPACE_ID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_BOUND_METHOD" title="ja/JSFUN_BOUND_METHOD">JSFUN_BOUND_METHOD</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_GETTER" title="ja/JSFUN_GETTER">JSFUN_GETTER</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_GLOBAL_PARENT" title="ja/JSFUN_GLOBAL_PARENT">JSFUN_GLOBAL_PARENT</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_HEAVYWEIGHT" title="ja/JSFUN_HEAVYWEIGHT">JSFUN_HEAVYWEIGHT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_LAMBDA" title="ja/JSFUN_LAMBDA">JSFUN_LAMBDA</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_SETTER" title="ja/JSFUN_SETTER">JSFUN_SETTER</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_GLOB">JSREG_GLOB</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_FOLD">JSREG_FOLD</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_MULTILINE">JSREG_MULTILINE</a></li> -</ul> - -<p><span id="C++_features"></span></p> - -<h3 id="C.2B.2B_features" name="C.2B.2B_features">C++ の機能</h3> - -<ul> - <li>class <a href="/ja/JSAutoRequest" title="ja/JSAutoRequest">JSAutoRequest</a></li> - <li>class <a href="/ja/JSAutoLocalRootScope" title="ja/JSAutoLocalRootScope">JSAutoLocalRootScope</a></li> - <li>class <a href="/ja/JS::PerfMeasurement" title="ja/JS::PerfMeasurement">JS::PerfMeasurement</a> (in <code>jsperf.h</code>)</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html deleted file mode 100644 index a6d409dc85..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: JS CompileFile -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileUTF8File ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_CompileFile</code></div> - -<p></p> - -<p>外部ファイルに含まれるスクリプトをコンパイルします。 <span class="comment">Compile a script stored in an external file.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="/ja/JSScript" title="ja/JSScript">JSScript</a> * <strong>JS_CompileFile</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx, <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *obj, - const char *filename); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td> - <td>スクリプトをコンパイルするときのコンテキスト {{ Jsapi-requires-request() }}</td> - </tr> - <tr> - <td><code>obj</code></td> - <td><code>JSObject *</code></td> - <td>スクリプトと関連付けるオブジェクト<span class="comment">Object with which the script is associated.</span></td> - </tr> - <tr> - <td><code>filename</code></td> - <td><code>const char *</code></td> - <td>スクリプトを含むファイルの名前<span class="comment">Name of file containing the script to compile.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2> - -<p><code>JS_CompileFile</code>は、JavaScriptエンジンで実行するために外部ファイルのスクリプトをコンパイルする関数です。 <span class="comment"><code>JS_CompileFile</code> compiles the text of script in an external file location for execution by the JS engine.</span></p> - -<p><code>filename</code>は、コンパイル対象のスクリプトを含んでいるファイルの名前を引数に取ります。 <span class="comment"><code>filename</code> is the name of the file containing the script to compile.</span></p> - -<p>コンパイルが成功したとき、<code>JS_CompileFile</code>はコンパイル済みのスクリプトへのポインタを返値とします。失敗時には<code>NULL</code>を返します。 <span class="comment">On success, <code>JS_CompileFile</code> returns a pointer to the compiled script. Otherwise it returns <code>NULL</code>.</span></p> - -<p>ファイル名でスクリプトを指定するのではなく、文字列の引数として関数に渡す場合には、<code><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a></code>を使ってください。 <span class="comment">To pass a script as an argument to a function rather than having to specify a file location, use <code><a href="/ja/JS_CompileScript">JS_CompileScript</a></code> instead.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p>{{ LXRSearch("ident", "i", "JS_CompileFile") }}</p> - -<p><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a>, <a href="/ja/JS_DecompileScript" title="ja/JS_DecompileScript">JS_DecompileScript</a>, <a href="/ja/JS_DestroyScript" title="ja/JS_DestroyScript">JS_DestroyScript</a>, <a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateScript</a>, <a href="/ja/JS_ExecuteScript" title="ja/JS_ExecuteScript">JS_ExecuteScript</a></p> - -<p>{{ languages( { "en": "en/JS_CompileFile" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html deleted file mode 100644 index ae7b116ff2..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: JS ConstructObject -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject ---- -<p></p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_ConstructObject</code></div> -<p></p> - -<p>新たにJavaScriptオブジェクトを生成し、コンストラクタを呼び出します。 <span class="comment">Create a new JavaScript object and invoke its constructor.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> * <strong>JS_ConstructObject</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx, <a href="/ja/JSClass" title="ja/JSClass">JSClass</a> *clasp, - <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *proto, <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *parent); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td> - <td>新たなオブジェクトを配置するコンテキスト<span class="comment">The context in which to create the new object. {{ jsapi-requires-request }}</td> </tr> <tr> <td><code>clasp</code></td> <td><code><a href="/ja/JSClass">JSClass</a> *</code></td> <td>オブジェクト生成時に利用するクラスへのポインタ。<code>NULL</code>を指定したときは、一般的なJavaScript <code>Object</code>が生成されます。<!--Pointer to the class to use for the new object. If this is <code>NULL</code>, an ordinary JavaScript <code>Object</code> is created.</span></td> - </tr> - <tr> - <td><code>proto</code></td> - <td><code><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *</code></td> - <td>クラスとなるプロトタイプオブジェクトへのポインタ<span class="comment">Pointer to the prototype object to use for the new class.</span></td> - </tr> - <tr> - <td><code>parent</code></td> - <td><code><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *</code></td> - <td>新たなオブジェクトの __parent__ プロパティに指定するオブジェクトへのポインタ<span class="comment">Pointer to which to set the new object's __parent__ property.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2> - -<p><code>JS_ConstructObject</code>は、与えられたクラス、プロトタイプ、親オブジェクト、コンストラクタ関数をもとに新たなオブジェクトのインスタンスを生成する関数です。<code>cx</code>には、新たなオブジェクトを配置するランタイムと結び付けられたコンテキストへのポインタを指定します。<code>clasp</code>には、ファイナライズ処理などの内部関数が定義された既存クラスへのポインタを指定します。<code>proto</code>は、新たなオブジェクトのプロトタイプとなるオブジェクトへのポインタを指定する引数です。 <span class="comment"><code>JS_ConstructObject</code> instantiates a new object based on a specified class, prototype, and parent object, and then invokes its constructor function. <code>cx</code> is a pointer to a context associated with the runtime in which to establish the new object. <code>clasp</code> is a pointer to an existing class to use for internal methods, such as finalize. <code>proto</code> is an optional pointer to the prototype object with which to associate the new object.</span></p> - -<p>自分自身をプロトタイプオブジェクトにするには、<code>proto</code>に<code>NULL</code>を指定してください。このとき、<code>clasp</code>がプロトタイプを定義している場合には、<code>JS_ConstructObject</code>は新たなオブジェクトのプロトタイプにそれを用います。定義していない場合は、空オブジェクトスタブをプロトタイプとします。 <span class="comment">Set <code>proto</code> to <code>NULL</code> to force JS to assign a prototype object for you. In this case, <code>JS_ConstructObject</code> attempts to assign the new object the prototype object belonging to <code>clasp</code>, if one is defined there. Otherwise, it creates an empty object stub for the prototype.</span></p> - -<p><code>parent</code>には、新規オブジェクトの親プロパティとなるオブジェクトへのポインタを指定します。この引数はオプションであり、<code>parent</code>に<code>NULL</code>を指定することで親プロパティを持たないオブジェクトになります。 <span class="comment"><code>parent</code> is an optional pointer to an existing object to which to set the new object's parent object property. You can set <code>parent</code> to <code>NULL</code> if you do not want to set the parent property.</span></p> - -<p><code>JS_ConstructObject</code>が成功したとき、新たに生成されたオブジェクトへのポインタをその返値とします。失敗したときは<code>NULL</code>を返します。 <span class="comment">On success, <code>JS_ConstructObject</code> returns a pointer to the newly instantiated object. Otherwise it returns <code>NULL</code>.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p>{{ LXRSearch("ident", "i", "JS_ConstructObject") }}</p> - -<p><a href="/ja/JS_DefineObject" title="ja/JS_DefineObject">JS_DefineObject</a>, <a href="/ja/JS_GetFunctionObject" title="ja/JS_GetFunctionObject">JS_GetFunctionObject</a>, <a href="/ja/JS_NewArrayObject" title="ja/JS_NewArrayObject">JS_NewArrayObject</a>, <a href="/ja/JS_NewObject" title="ja/JS_NewObject">JS_NewObject</a>, <a href="/ja/JS_ValueToObject" title="ja/JS_ValueToObject">JS_ValueToObject</a></p> - -<p>{{ languages( { "en": "en/JS_ConstructObject" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html deleted file mode 100644 index 782201ccc5..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: JS_DefineObject -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject ---- -<p> -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_NewRuntime</code></div> -<p></p> - -<p>あるオブジェクトのプロパティとなるオブジェクトを生成する関数です。 <span class="comment">Create an object that is a property of another object.</span> {{ 英語版章題("Syntax") }}</p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">JSObject * JS_DefineObject(JSContext *cx, JSObject *obj, - const char *name, JSClass *clasp, JSObject *proto, - uintN flags); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code>JSContext *</code></td> - <td>エラー報告に用いるランタイム環境から派生したコンテキストへのポインタ<span class="comment">Pointer to a JS context from which to derive runtime information for error reporting.</span> {{ Jsapi-requires-request() }}</td> - </tr> - <tr> - <td><code>obj</code></td> - <td><code>JSObject *</code></td> - <td>生成したオブジェクトをプロパティとして持つオブジェクトへのポインタ<span class="comment">Object to which this new object belongs as a property.</span></td> - </tr> - <tr> - <td><code>name</code></td> - <td><code>const char *</code></td> - <td><code>obj</code>でのプロパティ名<span class="comment">Name of the property that encapsulates the new object in <code>obj</code>.</span></td> - </tr> - <tr> - <td><code>clasp</code></td> - <td><code>JSClass *</code></td> - <td>オブジェクト生成に用いるクラス<span class="comment">Class to use for the new object.</span></td> - </tr> - <tr> - <td><code>proto</code></td> - <td><code>JSObject *</code></td> - <td>オブジェクト生成に用いるプロトタイプ<span class="comment">Prototype object to use for the new object.</span></td> - </tr> - <tr> - <td><code>flags</code></td> - <td><code>uintN</code></td> - <td>生成したオブジェクトの属性を指定するフラグ<span class="comment">Property flags for the new object.</span></td> - </tr> - </tbody> -</table> - -<p>{{ 英語版章題("Description") }}</p> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_DefineObject</code>は、オブジェクトのインスタンスを生成し、それを引数<code>obj</code>で指定した既存オブジェクトのプロパティとして設定する関数です。引数<code>name</code>で、<code>obj</code>でのプロパティ名を指定し、<code>flags</code>でそのプロパティの属性を指定します。以下の表で設定可能な<code>flags</code>の値を示します。これらの値は単一、あるいは複数の値の論理和として引数に与えることができます。 <span class="comment"><code>JS_DefineObject</code> instantiates and names a new object for an existing object, <code>obj</code>. <code>name</code> is the property name to assign to <code>obj</code> to hold the new object, and <code>flags</code> contains the property flags to set for the newly created property. The following table lists possible values you can pass in <code>flags</code>, either singly, or <code>OR</code>'d together:</span></p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Flag</th> - <th>Purpose</th> - </tr> - <tr> - <td><code>JSPROP_ENUMERATE</code></td> - <td><code>for</code>と<code>in</code>ループを使ったアクセス(<a href="ja/Core_JavaScript_1.5_Guide/Object_Manipulation_Statements">Core JavaScript 1.5 Guide:Object Manipulation Statements</a>)を可能にします。<span class="comment">Property is visible to <code>for</code> and <code>in</code> loops.</span></td> - </tr> - <tr> - <td><code>JSPROP_READONLY</code></td> - <td>プロパティの値を読み取り専用にします。<span class="comment">Property is read only.</span></td> - </tr> - <tr> - <td><code>JSPROP_PERMANENT</code></td> - <td>プロパティの削除を不可能にします。<span class="comment">Property cannot be deleted.</span></td> - </tr> - <tr> - <td><code>JSPROP_EXPORTED</code></td> - <td>Property can be imported by other objects.</td> - </tr> - <tr> - <td><code>JSPROP_INDEX</code></td> - <td>Property is actually an index into an array of properties, and is cast to a const <code>char *</code>.</td> - </tr> - </tbody> -</table> - -<p>引数<code>clasp</code>はオブジェクトの生成時に用いる基底クラスへのポインタ、引数<code>proto</code>はプロトタイプへのポインタをそれぞれとります。<code>proto</code>に<code>NULL</code>を指定した場合、JavaScriptは自分自身をプロトタイプとします。引数<code>obj</code>はオブジェクトの親オブジェクトになります。 <span class="comment"><code>clasp</code> is a pointer to the base class to use when creating the new object, and <code>proto</code> is an pointer to the prototype upon which to base the new object. If you set <code>proto</code> to <code>NULL</code>, JS sets the prototype object for you. The parent object for the new object is set to <code>obj</code>.</span></p> - -<p><code>JS_DefineObject</code>が成功したとき、返値は新たに生成したプロパティオブジェクトへのポインタになります。もしすでにプロパティが設定されていた場合、オブジェクトは生成されず、返り値は<code>NULL</code>になります。 <span class="comment"><code>JS_DefineObject</code> returns a pointer to the newly created property object if successful. If the property already exists, or cannot be created, <code>JS_DefineObject</code> returns <code>NULL</code>.</span> {{ 英語版章題("See Also") }}</p> - -<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td>Groups</td> - <td><a href="ja/JSAPI_Reference#Functions">Functions</a></td> - </tr> - <tr> - <td>Documents</td> - <td>{{ LXRSearch("ident", "i", "JS_DefineObject", "LXR ID Search") }}</td> - </tr> - <tr> - <td>Entries</td> - <td> - <p><a href="ja/JSClass">JSClass</a>, <a href="ja/JS_DefineConstDoubles">JS_DefineConstDoubles</a>, <a href="ja/JS_DefineElement">JS_DefineElement</a>, <a href="ja/JS_DefineFunction">JS_DefineFunction</a>, <a href="ja/JS_DefineFunctions">JS_DefineFunctions</a>, <a href="ja/JS_DefineProperties">JS_DefineProperties</a>, <a href="ja/JS_DefineProperty">JS_DefineProperty</a>, <a href="ja/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a>, <a href="ja/JS_NewObject">JS_NewObject</a>, <a href="ja/JS_ValueToObject">JS_ValueToObject</a></p> - </td> - </tr> - </tbody> -</table> - -<div class="noinclude"> </div> - -<p>{{ languages( { "en": "en/JS_DefineObject" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html deleted file mode 100644 index be77b35a40..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: JS DestroyContext -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext ---- -<p> - - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_DestroyContext</code></div> - - -<p></p> - -<p><code>JSContext</code>を解放します。</p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">void <strong>JS_DestroyContext</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx); - -void <strong>JS_DestroyContextNoGC</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx); - -void <strong>JS_DestroyContextMaybeGC</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td> - <td>解放するコンテキスト</td> - </tr> - </tbody> -</table> - -<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2> - -<p>これらの関数はコンテキスト<code>cx</code>を解放します。それに加え、<code>JS_DestroyContext</code>は実行し、<code>cx</code>の<a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">グローバルオブジェクト</a>が利用したメモリを回収するためにガベージコレクションを実行します。<code>JS_DestroyContextNoGC</code>はガベージコレクションを実行しません。<code>JS_DestroyContextMaybeGC</code>では、JavaScriptエンジンが十分なメモリ領域を解放できる可能性を判断し、ガベージコレクションを実行するか否かを判断します。 <span class="comment">These functions destroy a context, <code>cx</code>. <code>JS_DestroyContext</code> additionally performs garbage collection to reclaim any memory that was being used by <code>cx</code>'s <a href="/ja/JS_GetGlobalObject">global object</a>. <code>JS_DestroyContextNoGC</code> does not perform garbage collection. <code>JS_DestroyContextMaybeGC</code> may or may not perform garbage collection; the engine makes an educated guess as to whether enough memory would be reclaimed to justify the work.</span></p> - -<p><code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、<code>cx</code>のrequest内でこの関数を呼ばないでください。</p> - -<p><code><a href="/ja/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></code>が以前に実行された場合は、そこで設定したコールバック関数が実行されます。 <span class="comment">In a <code><a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> build, the caller must '''not''' be in a request on <code>cx</code>. If <code><a href="/ja/JS_SetContextCallback">JS_SetContextCallback</a></code> has been called, this calls the callback.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_DestroyContext") }}</p> - -<p>{{ languages( { "en": "en/JS_DestroyContext" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html deleted file mode 100644 index d65b41c6d6..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: JS DestroyRuntime -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_DestroyRuntime</code></div> - -<p></p> - -<p>JavaScriptランタイム環境を解放します。 <span class="comment">Frees a JavaScript runtime.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">void <strong>JS_DestroyRuntime</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *rt); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>rt</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *</code></td> - <td>解放するランタイム<span class="comment">The runtime to destroy.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_DestroyRuntime</code>は、JavaScriptランタイム環境<code>rt</code>を解放する関数です。JSAPIの利用を終えた後は必ず<code>JS_DestroyRuntime</code>を呼び出してください。<code>JS_DestroyRuntime</code>を呼ぶことで、ガベージコレクションおよび<code><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JS_NewRuntime</a></code>によって確保されたメモリ領域の解放が行われます。 <span class="comment"><code>JS_DestroyRuntime</code> frees the specified the JavaScript runtime environment, <code>rt</code>. Call <code>JS_DestroyRuntime</code> after completing all other JS API calls. <code>JS_DestroyRuntime</code> garbage collects and frees the memory previously allocated by <code><a href="/ja/JS_NewRuntime">JS_NewRuntime</a></code>.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_DestroyRuntime") }}</p> - -<p>{{ languages( { "en": "en/JS_DestroyRuntime" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html deleted file mode 100644 index 4a9b9b3dba..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: JS_DumpHeap -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap ---- -<div>{{SpiderMonkeySidebar("JSAPI")}}</div> - -<p>{{ obsolete_header("jsapi38") }}</p> - -<p>{{ Jsapi_minversion_header("1.8") }}</p> - -<div class="summary"><code>DEBUG</code> のみ。ヒープに割り当てられたもののオブジェクトグラフをダンプします。</div> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="brush: cpp">bool -JS_DumpHeap(JSRuntime *rt, FILE *fp, void* startThing, JSGCTraceKind kind, - void *thingToFind, size_t maxDepth, void *thingToIgnore); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td>{{jsapixref("JSRuntime", "JSContext *")}}</td> - <td>Pointer to a JS context. Every <code>JSContext</code> is permanently associated with a <code>JSRuntime</code>; each <code>JSRuntime</code> contains a GC heap.</td> - </tr> - <tr> - <td><code>fp</code></td> - <td><code>FILE *</code></td> - <td>File for the dump output.</td> - </tr> - <tr> - <td><code>startThing</code></td> - <td><code>void *</code></td> - <td><code>NULL</code> or a pointer to a GC thing (use {{jsapixref("JS::Value", "JS::Value::toGCThing()")}} to obtain a pointer to pass here). When null, dump all things reachable from the runtime roots. When non-null, dump only things reachable from the object indicated.</td> - </tr> - <tr> - <td><code>startKind</code></td> - <td><code>JSGCTraceKind</code></td> - <td>Trace kind of <code>startThing</code>, if <code>startThing</code> is not null. Must be <code>JSTRACE_OBJECT</code> when <code>startThing</code> is null.</td> - </tr> - <tr> - <td><code>thingToFind</code></td> - <td><code>void *</code></td> - <td><code>NULL</code> or a pointer to a GC thing. If this is non-null, JS_DumpHeap only dumps paths in the object graph leading to the specified thing.</td> - </tr> - <tr> - <td><code>maxDepth</code></td> - <td><code>size_t</code></td> - <td>The upper bound on the number of edges to descend from the graph roots.</td> - </tr> - <tr> - <td><code>thingToIgnore</code></td> - <td><code>void *</code></td> - <td><code>NULL</code> or a pointer to a GC thing that will be ignored during graph traversal.</td> - </tr> - </tbody> -</table> - -<pre class="brush: cpp">enum JSGCTraceKind -{ - // These trace kinds have a publicly exposed, although opaque, C++ type. - // Note: The order here is determined by our Value packing. Other users - // should sort alphabetically, for consistency. - JSTRACE_OBJECT = 0x00, - JSTRACE_STRING = 0x01, - JSTRACE_SYMBOL = 0x02, - JSTRACE_SCRIPT = 0x03, - - // Shape details are exposed through JS_TraceShapeCycleCollectorChildren. - JSTRACE_SHAPE = 0x04, - - // The kind associated with a nullptr. - JSTRACE_NULL = 0x06, - - // A kind that indicates the real kind should be looked up in the arena. - JSTRACE_OUTOFLINE = 0x07, - - // The following kinds do not have an exposed C++ idiom. - JSTRACE_BASE_SHAPE = 0x0F, - JSTRACE_JITCODE = 0x1F, - JSTRACE_LAZY_SCRIPT = 0x2F, - JSTRACE_TYPE_OBJECT = 0x3F, - - JSTRACE_LAST = JSTRACE_TYPE_OBJECT -}; -</pre> - -<h2 id="Description" name="Description">Description</h2> - -<p>See {{ Bug(378261) }} for detail.</p> - -<p>When tracing a thing, the GC needs to know about the layout of the object it is looking at. There are a fixed number of different layouts that the GC knows about. The "trace kind" is a static map which tells which layout a GC thing has.</p> - -<p>Although this map is public, the details are completely hidden. Not all of the matching C++ types are exposed, and those that are, are opaque.</p> - -<p>See {{jsapixref("JS::Value", "JS::Value::gcKind()")}} and {{jsapixref("JSTraceCallback")}} in <codde>Tracer.h</codde> for more details.</p> - -<h2 id="See_Also" name="See_Also">See Also</h2> - -<ul> - <li>{{bug(378261)}}</li> - <li>{{bug(1122842)}}</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html deleted file mode 100644 index a58d781ab4..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: JS EvaluateScript -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_EvaluateScript</code></div> - - -<p></p> - -<p>スクリプトのコンパイルおよび実行を行います。 <span class="comment">Compile and execute a script.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="ja/JSBool">JSBool</a> <strong>JS_EvaluateScript</strong>(<a href="ja/JSContext">JSContext</a> *cx, <a href="ja/JSObject">JSObject</a> *obj, - const char *src, <a href="ja/UintN">uintN</a> length, const char *filename, - <a href="ja/UintN">uintN</a> lineno, <a href="ja/Jsval">jsval</a> *rval); - -<a href="ja/JSBool">JSBool</a> <strong>JS_EvaluateUCScript</strong>(<a href="ja/JSContext">JSContext</a> *cx, <a href="ja/JSObject">JSObject</a> *obj, - const <a href="ja/Jschar">jschar</a> *src, <a href="ja/UintN">uintN</a> length, const char *filename, - <a href="ja/UintN">uintN</a> lineno, <a href="ja/Jsval">jsval</a> *rval); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="ja/JSContext">JSContext</a> *</code></td> - <td>スクリプトを実行するコンテキスト<span class="comment">The context in which to run the script.</span> {{ Jsapi-requires-request() }}</td> - </tr> - <tr> - <td><code>obj</code></td> - <td><code><a href="ja/JSObject">JSObject</a> *</code></td> - <td>スクリプトと関連付けるオブジェクト<span class="comment">Object with which the script is associated.</span></td> - </tr> - <tr> - <td><code>src</code></td> - <td><code>const char *</code><em>or</em> <code>const <a href="ja/Jschar">jschar</a> *</code></td> - <td>コンパイル・実行対象となるスクリプト文字列<span class="comment">String containing the script to compile and execute.</span></td> - </tr> - <tr> - <td><code>length</code></td> - <td><code>size_t</code></td> - <td><code>src</code>の文字列長<span class="comment">The length of <code>src</code>, in characters.</span></td> - </tr> - <tr> - <td><code>filename</code></td> - <td><code>const char *</code></td> - <td>エラーメッセージ出力に利用されるスクリプトのファイル名またはそのURLを示す文字列。<span class="comment">Name of file or URL containing the script. Used to report filename or URL in error messages.</span></td> - </tr> - <tr> - <td><code>lineno</code></td> - <td><code><a href="ja/UintN">uintN</a></code></td> - <td>エラー発生時に出力される行数<span class="comment">Line number. Used to report the offending line in the file or URL if an error occurs.</span></td> - </tr> - <tr> - <td><code>rval</code></td> - <td><code><a href="ja/Jsval">jsval</a> *</code></td> - <td>実行結果の出力先。実行に成功したとき、<code>*rval</code>にはスクリプトの最終行の実行結果の値が格納されます。<span class="comment">Out parameter. On success, <code>*rval</code> receives the value of the last-executed expression statement processed in the script.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_EvaluateScript</code>は、オブジェクト<code>obj</code>に結合する形でスクリプトをコンパイル・実行する関数です。実行が成功したとき、<code>rval</code>にスクリプトの最終行の実行結果の値へのポインタが格納されています。この関数のUnicode版として、<code>JS_EvaluateUCScript</code>が用意されています。 <span class="comment"><code>JS_EvaluateScript</code> compiles and executes a script associated with a JS object, <code>obj</code>. On successful completion, <code>rval</code> is a pointer to a variable that holds the value from the last executed expression statement processed in the script. <code>JS_EvaluateUCScript</code> is the Unicode version of the function.</span></p> - -<p><code>src</code>はスクリプト文字列、<code>length</code>はその文字列の長さをそれぞれ引数として取ります。 <span class="comment"><code>src</code> is the string containing the text of the script. <code>length</code> indicates the size of the text version of the script in characters.</span></p> - -<p><code>filename</code>はスクリプトの位置を示すファイル名またはURLを引数として取ります。ここで指定した情報は、コンパイルエラーが発生したときのエラーメッセージに利用されます。<code>lineno</code>も同様にエラーメッセージとして出力される行番号として利用されます。 <span class="comment"><code>filename</code> is the name of the file (or URL) containing the script. This information is used in messages if an error occurs during compilation. Similarly, <code>lineno</code> is used to report the line number of the script or file where an error occurred during compilation.</span></p> - -<p>スクリプトのコンパイルと実行が成功したとき、<code>JS_EvaluateScript</code>および<code>JS_EvaluateUCScript</code>は<code>JS_TRUE</code>を、失敗したときは<code>JS_FALSE</code>をそれぞれ返します。コンパイル・実行に失敗したとき、<code>*rval</code>の値は未定義とみなす必要があります。 <span class="comment">If a script compiles and executes successfully, <code>JS_EvaluateScript</code> or <code>JS_EvaluateUCScript</code> returns <code>JS_TRUE</code>. Otherwise it returns <code>JS_FALSE</code>. On failure, your application should assume that <code>*rval</code> is undefined.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p>{{ LXRSearch("ident", "i", "JS_EvaluateScript") }}<br> - {{ LXRSearch("ident", "i", "JS_EvaluateUCScript") }}</p> - -<p><a href="ja/JS_CompileFile">JS_CompileFile</a>, <a href="ja/JS_CompileScript">JS_CompileScript</a>, <a href="ja/JS_DecompileScript">JS_DecompileScript</a>, <a href="ja/JS_DestroyScript">JS_DestroyScript</a>, <a href="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a>, <a href="ja/JS_ExecuteScript">JS_ExecuteScript</a></p> - -<p>{{ languages( { "en": "en/JS_EvaluateScript" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html deleted file mode 100644 index 1bfa969e7c..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html +++ /dev/null @@ -1,323 +0,0 @@ ---- -title: JS_GetGCParameter -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter ---- -<div>{{SpiderMonkeySidebar("JSAPI")}}</div> - -<div class="summary"> -<p>ガベージコレクションに関連するパフォーマンスパラメータを調整します。</p> -</div> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="brush: cpp">uint32_t -JS_GetGCParameter(JSRuntime *rt, JSGCParamKey key); - -void -JS_SetGCParameter(JSRuntime *rt, JSGCParamKey key, uint32_t value); - -uint32_t -JS_GetGCParameterForThread(JSContext *cx, JSGCParamKey key); // Added in SpiderMonkeySidebar 17 - -void -JS_SetGCParameterForThread(JSContext *cx, JSGCParamKey key, uint32_t value); // Added in SpiderMonkeySidebar 17 -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>rt</code></td> - <td>{{jsapixref("JSRuntime", "JSRuntime *")}}</td> - <td>The runtime to configure.</td> - </tr> - <tr> - <td><code>cx</code></td> - <td>{{jsapixref("JSRuntime", "JSContext *")}}</td> - <td>The context to configure. {{ Jsapi-requires-request() }}</td> - </tr> - <tr> - <td><code>key</code></td> - <td><code>JSGCParamKey</code></td> - <td>Specifies which garbage collection parameter to get or set.</td> - </tr> - <tr> - <td><code>value</code></td> - <td><code>uint32_t</code></td> - <td><em>(<code>JS_SetGCParameter</code> only)</em> The value to assign to the parameter.</td> - </tr> - </tbody> -</table> - -<pre class="brush: cpp">typedef enum JSGCParamKey { - JSGC_MAX_BYTES, - JSGC_MAX_MALLOC_BYTES, - JSGC_MAX_NURSERY_BYTES, - JSGC_BYTES, - JSGC_NUMBER, - JSGC_MODE, - JSGC_UNUSED_CHUNKS, - JSGC_TOTAL_CHUNKS, - JSGC_SLICE_TIME_BUDGET, - JSGC_MARK_STACK_LIMIT, - JSGC_HIGH_FREQUENCY_TIME_LIMIT, - JSGC_HIGH_FREQUENCY_LOW_LIMIT, - JSGC_HIGH_FREQUENCY_HIGH_LIMIT, - JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX, - JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN, - JSGC_LOW_FREQUENCY_HEAP_GROWTH, - JSGC_DYNAMIC_HEAP_GROWTH, - JSGC_DYNAMIC_MARK_SLICE, - JSGC_ALLOCATION_THRESHOLD, - JSGC_MIN_EMPTY_CHUNK_COUNT, - JSGC_MAX_EMPTY_CHUNK_COUNT, - JSGC_COMPACTION_ENABLED, - JSGC_ALLOCATION_THRESHOLD_FACTOR, - JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT, - JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION, - JSGC_PRETENURE_THRESHOLD, - JSGC_PRETENURE_GROUP_THRESHOLD, - JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION_PERCENT, - JSGC_MIN_NURSERY_BYTES, - JSGC_MIN_LAST_DITCH_GC_PERIOD, -} JSGCParamKey; -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Value (C++/JS Shell)</th> - <th>Description</th> - </tr> - <tr> - <td><code>JSGC_MAX_BYTES</code> / <code>"maxBytes"</code></td> - <td>Maximum nominal heap before last ditch GC.</td> - </tr> - <tr> - <td><code>JSGC_MAX_MALLOC_BYTES</code> / <code>"maxMallocBytes"</code></td> - <td>Number of JS_malloc bytes before last ditch GC.</td> - </tr> - <tr> - <td><code>JSGC_MAX_NURSERY_BYTES</code> / <code>"maxNurseryBytes"</code></td> - <td>Maximum size the nursery may grow to, or 0 to disable generational GC.</td> - </tr> - <tr> - <td><code>JSGC_MIN_NURSERY_BYTES</code> / <code>"minNurseryBytes"</code></td> - <td>Minimum size the nursery may shrink to.</td> - </tr> - <tr> - <td><code>JSGC_BYTES</code> / <code>"gcBytes"</code></td> - <td>Amount of bytes allocated by the GC.</td> - </tr> - <tr> - <td><code>JSGC_NUMBER</code> / <code>"gcNumber"</code></td> - <td>Number of times GC has been invoked. Includes both major and minor GC.</td> - </tr> - <tr> - <td><code>JSGC_MODE</code> / <code>"mode"</code></td> - <td> - <p>Select GC mode:</p> - - <dl> - <dt><code>JSGC_MODE_GLOBAL</code> (0)</dt> - <dd>The GC runs all objects are visited in a single<em>slice</em>.</dd> - <dt><code>JSGC_MODE_ZONE</code> (1)</dt> - <dd>The GC runs only the objects that belong to some<em>zones</em> are visited in a single<em>slice</em>.</dd> - <dt><code>JSGC_MODE_INCREMENTAL</code> (2)</dt> - <dd>The GC runs all objects are visited in multiple<em>slices</em>.</dd> - <dt><code>JSGC_MODE_ZONE_INCREMENTAL</code> (3)</dt> - <dd>The GC runs only the objects that belong to some<em>zones</em> are visited in multiple<em>slices</em>.</dd> - </dl> - - <p>This does not affect generational GC, see <code>JSGC_MAX_NURSERY_BYTES</code></p> - </td> - </tr> - <tr> - <td><code>JSGC_UNUSED_CHUNKS</code> / <code>"unusedChunks"</code></td> - <td>Number of cached empty GC chunks.</td> - </tr> - <tr> - <td><code>JSGC_TOTAL_CHUNKS</code> / <code>"totalChunks"</code></td> - <td>Total number of allocated GC chunks.</td> - </tr> - <tr> - <td><code>JSGC_SLICE_TIME_BUDGET</code> / <code>"sliceTimeBudget"</code></td> - <td>Max milliseconds to spend in an incremental GC slice. 0 for infinite.</td> - </tr> - <tr> - <td><code>JSGC_MARK_STACK_LIMIT</code> / <code>"markStackLimit"</code></td> - <td>Maximum size the GC mark stack can grow to (units: entries).</td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_TIME_LIMIT</code> / <code>"highFrequencyTimeLimit"</code></td> - <td>GCs less than this far apart in time will be considered 'high-frequency GCs'.</td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_LOW_LIMIT</code> / <code>"highFrequencyLowLimit"</code></td> - <td rowspan="4"> - <p>Controls for dynamic heap growth. When the GC is in "high frequency" mode (see above) then, the heap will be allowed to grow between collections according to these four parameters. See ZoneHeapThreshold::computeZoneHeapGrowthFactorForHeapSize in GC.cpp for the details.</p> - - <p>The first two parameters are in MB and the remaining two are in percentage of heap size.</p> - </td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_HIGH_LIMIT</code> / <code>"highFrequencyHighLimit"</code></td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX</code> / <code>"highFrequencyHeapGrowthMax"</code></td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN</code> / <code>"highFrequencyHeapGrowthMin"</code></td> - </tr> - <tr> - <td><code>JSGC_LOW_FREQUENCY_HEAP_GROWTH</code> / <code>"lowFrequencyHeapGrowth"</code></td> - <td>Heap growth percentage for low frequency GCs.</td> - </tr> - <tr> - <td><code>JSGC_DYNAMIC_HEAP_GROWTH</code> / <code>"dynamicHeapGrowth"</code></td> - <td>If false, the heap growth percentage is fixed at 300%. If true, it is determined based on whether GCs are high- or low- frequency.</td> - </tr> - <tr> - <td><code>JSGC_DYNAMIC_MARK_SLICE</code> / <code>"dynamicMarkSlice"</code></td> - <td>If true, high-frequency GCs will use a longer mark slice.</td> - </tr> - <tr> - <td><code>JSGC_ALLOCATION_THRESHOLD</code> / <code>"allocationThreshold"</code></td> - <td>Lower limit after which we limit the heap growth. The heap will be collected if it is greater than: <code>MAX(allocThreshold, lastSize) * thresholdFactor</code>, This establishes allocThreshold as a baseline or default heap size.</td> - </tr> - <tr> - <td><code>JSGC_ALLOCATION_THRESHOLD_FACTOR</code> / <code>"allocationThresholdFactor"</code></td> - <td rowspan="2"> - <p>These thresholds (as percentages) are compared with the zone threshold (above) to decide when to begin an incremental collection. <code>JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT</code> is used when a GC is already in progress for other zones and we may wish to avoid interrupting it.</p> - - <p>Additionally if a zone expands beyond the threshold without this factor, then it will be collected non-incrementally</p> - </td> - </tr> - <tr> - <td><code>JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT</code> / <code>"allocationThresholdfactorAvoidInterrupt"</code></td> - </tr> - <tr> - <td><code>JSGC_MIN_EMPTY_CHUNK_COUNT</code> / <code>"minEmptyChunkCount"</code></td> - <td>We try to keep at least this many unused chunks in the free chunk pool at all times, even after a shrinking GC.</td> - </tr> - <tr> - <td><code>JSGC_MAX_EMPTY_CHUNK_COUNT</code> / <code>"maxEmptyChunkCount"</code></td> - <td>We never keep more than this many unused chunks in the free chunk pool.</td> - </tr> - <tr> - <td><code>JSGC_COMPACTION_ENABLED</code> / <code>"compactingEnabled"</code></td> - <td>non-zero to enable compacting, zero to disable.</td> - </tr> - <tr> - <td><code>JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION</code> / <code>"nurseryFreeThresholdForIdleCollection"</code></td> - <td>Collect the nursery in idle time if it has less than this many bytes of free space.</td> - </tr> - <tr> - <td><code>JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION_PERCENT</code> / <code>"nurseryFreeThresholdForIdleCollectionPercent"</code></td> - <td>Collect the nursery in idle time if it has less than this percentage of capacity free (value from 0 - 99).</td> - </tr> - <tr> - <td><code>JSGC_PRETENURE_THRESHOLD</code> / <code>"pretenureThreshold"</code></td> - <td>If this percentage of the nursery is tenured and the nursery is at least 4MB, then process object groups to look for pretenuring candidates.</td> - </tr> - <tr> - <td><code>JSGC_PRETENURE_GROUP_THRESHOLD</code> / <code>"pretenureGroupThreshold"</code></td> - <td>If more than this number of objects in a given object group are tenured, then pretenruing will be enabled for new objects in this group.</td> - </tr> - <tr> - <td><code>JSGC_MIN_LAST_DITCH_GC_PERIOD</code> / <code>"minLastDitchGCPeriod"</code></td> - <td>The minimum time to allow between triggering last ditch GCs in seconds.</td> - </tr> - </tbody> -</table> - -<h2 id="Description" name="Description">説明</h2> - -<p><code>JS_GetGCParameter</code> returns the current parameter of the garbage collection.</p> - -<p>If successful, <code>JS_GetGCParameter</code> returns the current parameter.</p> - -<p><code>JS_SetGCParameter</code> ajusts the parameter of the garbage collection.</p> - -<h2 id="See_Also" name="See_Also">あわせて参照</h2> - -<ul> - <li>{{ LXRSearch("ident", "i", "JS_GetGCParameter") }}</li> - <li>{{ LXRSearch("ident", "i", "JS_SetGCParameter") }}</li> - <li>{{bug(474801)}} - <ul> - <li><code>JSGC_BYTES</code></li> - <li><code>JSGC_NUMBER</code></li> - </ul> - </li> - <li>{{bug(474497)}} - <ul> - <li><code>JSGC_MAX_CODE_CACHE_BYTES</code></li> - <li>This option no-longer exists</li> - <li><code>JS_GetGCParameterForThread</code></li> - <li><code>JS_SetGCParameterForThread</code></li> - </ul> - </li> - <li>{{bug(624229)}} - <ul> - <li><code>JSGC_MODE</code></li> - </ul> - </li> - <li>{{bug(631733)}} - <ul> - <li><code>JSGC_UNUSED_CHUNKS</code></li> - </ul> - </li> - <li>{{bug(674480)}} - <ul> - <li><code>JSGC_TOTAL_CHUNKS</code></li> - </ul> - </li> - <li>{{bug(641025)}} - <ul> - <li><code>JSGC_SLICE_TIME_BUDGET</code></li> - </ul> - </li> - <li>{{bug(673551)}} - <ul> - <li><code>JSGC_MARK_STACK_LIMIT</code></li> - </ul> - </li> - <li>{{bug(765435)}} - <ul> - <li><code>JSGC_HIGH_FREQUENCY_TIME_LIMIT</code></li> - <li><code>JSGC_HIGH_FREQUENCY_LOW_LIMIT</code></li> - <li><code>JSGC_HIGH_FREQUENCY_HIGH_LIMIT</code></li> - <li><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX</code></li> - <li><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN</code></li> - <li><code>JSGC_LOW_FREQUENCY_HEAP_GROWTH</code></li> - <li><code>JSGC_DYNAMIC_HEAP_GROWTH</code></li> - <li><code>JSGC_DYNAMIC_MARK_SLICE</code></li> - </ul> - </li> - <li>{{bug(800063)}} - <ul> - <li><code>JSGC_ALLOCATION_THRESHOLD</code></li> - </ul> - </li> - <li>{{bug(871005)}} - <ul> - <li><code>JSGC_DECOMMIT_THRESHOLD</code></li> - <li>This option is no-longer exists</li> - </ul> - </li> - <li>{{bug(1017141)}} - <ul> - <li><code>JSGC_MIN_EMPTY_CHUNK_COUNT</code></li> - <li><code>JSGC_MAX_EMPTY_CHUNK_COUNT</code></li> - </ul> - </li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html deleted file mode 100644 index 36a7593d57..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: JS GetRuntime -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_GetRuntime</code></div> - - - -<p></p> - -<p><code>JSRuntime</code>へのポインタを取得します。 <span class="comment">Retrieves a pointer to the <code>JSRuntime</code>.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> * <strong>JS_GetRuntime</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td> - <td>コンテキスト</td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_GetRuntime</code>は、<code>JSContext</code> <code>cx</code>と関連付けられた<code>JSRuntime</code>へのポインタを取得する関数です。各コンテキストは、その生成時に指定した (<code><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JS_NewContext</a></code>を参照) <code>JSRuntime</code>と関連付けられており、<code>JS_GetRuntime</code>を使うことでその関連付けを取得することができます。 <span class="comment"><code>JS_GetRuntime</code> retrieves a pointer to the <code>JSRuntime</code> with which a specified <code>JSContext</code>, <code>cx</code>, is associated. Each context is associated with a particular <code>JSRuntime</code> when it is created (see <code><a href="/ja/JS_NewContext">JS_NewContext</a></code>); <code>JS_GetRuntime</code> provides a convenient, programmatic way to look up the association.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_GetRuntime") }}</p> - -<p>{{ languages( { "en": "en/JS_GetRuntime" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html deleted file mode 100644 index c4f3f7937b..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: JS GetRuntimePrivate -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_GetRuntimePrivate</code></div> - - -<p></p> - -<p><code>JSRuntime</code>オブジェクトと関連付けられたアプリケーション固有のフィールドにアクセスします。 <span class="comment">Access a <code>JSRuntime</code> field for application-specific data.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">void * <strong>JS_GetRuntimePrivate</strong>(<a href="ja/JSRuntime">JSRuntime</a> *rt); - -void <strong>JS_SetRuntimePrivate</strong>(<a href="ja/JSRuntime">JSRuntime</a> *rt, void *data); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>rt</code></td> - <td><code><a href="ja/JSRuntime">JSRuntime</a> *</code></td> - <td>JavaScriptランタイム環境<span class="comment">Any JS runtime.</span></td> - </tr> - <tr> - <td><code>data</code></td> - <td><code>void *</code></td> - <td><em>(<code>JS_SetRuntimePrivate</code>のみ)</em>ランタイム<code>rt</code>と関連付けるアプリケーション固有のデータへのポインタ <span class="comment">''(in <code>JS_SetRuntimePrivate</code>)'' Pointer to application-defined data to be associated with the runtime <code>rt</code>.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p>各<code>JSRuntime</code>内には、アプリケーション内で用いる任意のデータを指し示す<code>void *</code>型のフィールドが存在します。このフィールドは、コールバック関数が容易にアクセスできる領域であるため、その中でのデータ格納に有用に使えます。<code>JS_GetRuntimePrivate</code>でフィールドの値を取得し、<code>JS_SetRuntimePrivate</code>で値を設定します。フィールドの初期値は<code>NULL</code>に設定されています。 <span class="comment">Each <code>JSRuntime</code> has a field of type <code>void *</code> which the application may use for any purpose. It is especially useful for storing data which callbacks may then easily access. <code>JS_GetRuntimePrivate</code> gets the value of this field and <code>JS_SetRuntimePrivate</code> sets it. The field is initially <code>NULL</code>.</span></p> - -<p>このプライベートなデータのメモリ管理はアプリケーション側の責任になります。JavaScriptエンジン自体がこの領域を利用することはありません。 <span class="comment">Memory management for this private data is the application's responsibility. The JavaScript engine itself never uses it.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p>{{ LXRSearch("ident", "i", "JS_GetRuntimePrivate") }}</p> - -<p><a href="ja/JS_GetContextPrivate">JS_GetContextPrivate</a>, <a href="ja/JS_SetContextPrivate">JS_SetContextPrivate</a>, <a href="ja/JS_GetPrivate">JS_GetPrivate</a>, <a href="ja/JS_SetPrivate">JS_SetPrivate</a>, <a href="ja/JS_GetInstancePrivate">JS_GetInstancePrivate</a></p> - -<p>{{ languages( { "en": "en/JS_GetRuntimePrivate" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html deleted file mode 100644 index 1d52ec7034..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: JS_Init -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init ---- -<div>{{obsolete_header}}</div> - - -<h2 id="Syntax" name="Syntax">構文</h2> - - -<pre class="syntaxbox"><a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> * <strong>JS_Init</strong>(<a href="/ja/docs/jsint" title="jsint">uint32</a> maxbytes); -</pre> - - -<table class="standard-table"> - <thead> - <tr> - <th>名称</th> - <th>型</th> - <th>説明</th> - </tr> -</thead> -<tbody> - <tr> - <td><code>maxbytes</code></td> - <td><code><a href="/ja/docs/jsint" title="jsint">uint32</a></code></td> - <td>ガベージコレクション実行後に割り当てられたバイト数</td> - </tr> - </tbody> -</table> - - -<h2 id="Description" name="Description">説明</h2> -<p><code>JS_Init</code> は廃止されました。替わりに <code><a href="/ja/docs/JS_NewRuntime" title="JS_NewRuntime">JS_NewRuntime</a></code> を使用して下さい。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html deleted file mode 100644 index 1ffb9dee10..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: JS_Lock -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock -tags: - - JSAPI_Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock ---- -<div> - {{obsolete_header("jsapi12")}}</div> -<p>JS ランタイム環境をロックします。</p> -<h2 id="Syntax" name="Syntax">構文</h2> -<pre class="syntaxbox">void <strong>JS_Lock</strong>(<a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> *rt); -</pre> -<table class="standard-table"> - <thead> - <tr> - <th>名称</th> - <th>型</th> - <th>説明</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>rt</code></td> - <td><code><a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> *</code></td> - <td>ロックするランタイムへのポインタ</td> - </tr> - </tbody> -</table> -<h2 id="Description" name="Description">説明</h2> -<p><code>JS_Lock</code> は非推奨 API です。使用しないで下さい。</p> -<h2 id="See_also" name="See_also">関連情報</h2> -<ul> - <li>{{LXRSearch("ident", "i", "JS_Lock")}}</li> - <li><a href="/ja/docs/JS_GetRuntime" title="JS_GetRuntime"><code>JS_GetRuntime</code></a> 、 <a href="/ja/docs/SpiderMonkey/JSAPI_Reference/JS_Unlock"><code>JS_Unlock</code></a></li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html deleted file mode 100644 index ab77638f70..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: JS NewContext -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_NewContext</code></div> - -<p></p> - -<p>新たなJavaScriptコンテキストを生成します。 <span class="comment">Creates a new JavaScript context.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<p><span class="comment">= Syntax =</span></p> - -<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> * <strong>JS_NewContext</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *rt, size_t stackchunksize); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>rt</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *</code></td> - <td>コンテキストの親となるランタイムを指定します。JavaScriptのオブジェクト、関数、文字列、数値は<code>JSRuntime</code>内のコンテキスト内で共有されますが、<code>JSRuntime</code>をまたぐことはありません。 - <p><span class="comment">Parent runtime for the new context. JavaScript objects, functions, strings, and numbers may be shared among the contexts in a <code>JSRuntime</code>, but they cannot be shared across <code>JSRuntime</code>s.</span></p> - </td> - </tr> - <tr> - <td><code>stackchunksize</code></td> - <td><code>size_t</code></td> - <td> - <p>各スタック領域のサイズをバイトで指定します。標準的には<code>8192</code>が適切な値であり、大抵の場合において調節すべきでないパラメータです。 <span class="comment">The size, in bytes, of each "stack chunk". This is a memory management tuning parameter which most users should not adjust. <code>8192</code> is a good default value.</span></p> - </td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><span class="comment">= Description =</span> スクリプトの実行および値の保持に利用するコンテキストを新規に生成する関数です。各スクリプトは独自のコンテキスト上で実行され、各コンテキストは特定の<code>JSRuntime</code>オブジェクト<code>rt</code>と関連づけられています。 <span class="comment">Creates a new JavaScript context for executing scripts and examining JavaScript values. Each script runs in its own context, and each context must be associated with a specified <code>JSRuntime</code>, <code>rt</code>.</span></p> - -<p><code>JS_NewContext</code>は、成功したとき新たなコンテキストへのポインタを返します。失敗したときは<code>NULL</code>を返します。 <span class="comment">On success, <code>JS_NewContext</code> returns a pointer to the new context. Otherwise it returns <code>NULL</code>.</span></p> - -<p>この関数の呼び元は、コンテキストを使い終わったら<code><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a></code>を実行しなければなりません。<code>JSRuntime</code>を解放する前に、その<code>JSContext</code>をすべて解放する必要があります。 <span class="comment">The caller must call <code><a href="/ja/JS_DestroyContext">JS_DestroyContext</a></code> when it is done using the context. Before a <code>JSRuntime</code> may be destroyed, all the <code>JSContext</code>s associated with it must be destroyed.</span></p> - -<p><code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、ある<code>JSContext</code>を同時にアクセスできるスレッドは一つだけです。新規の<code>JSContext</code>は、初期状態で呼び元のスレッドと関連付けられます。コンテキストがあるスレッドと関連付けられている間は、他のスレッドからそれを利用したり解放することはできません。<code>JSContext</code>を別のスレッドに移動する場合は、<code><a href="/ja/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a></code>と<code><a href="/ja/JS_SetContextThread" title="ja/JS_SetContextThread">JS_SetContextThread</a></code>を利用してください。 <span class="comment">In a <code><a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> build, only one thread may use a <code>JSContext</code> at a time. The new <code>JSContext</code> is initially associated with the calling thread. As long as it stays associated with that thread, no other thread may use it or destroy it. A <code>JSContext</code> may be transferred from one thread to another by calling <code><a href="/ja/JS_ClearContextThread">JS_ClearContextThread</a></code> and <code><a href="/ja/JS_SetContextThread">JS_SetContextThread</a></code>.</span></p> - -<p>新たに生成した<code>JSContext</code>は、初期状態においてグローバルオブジェクトを持ちません。 <span class="comment">The new <code>JSContext</code> initially has no global object.</span></p> - -<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3> - -<p><span class="comment">== Notes ==</span> 一度生成されたコンテキストは異なるスクリプトやJSAPI呼び出しのために複数回利用される可能性があります。具体的には、Webブラウザが各HTMLに対応する独立したコンテキストを生成したときに、ページ内のすべてのスクリプトは同じコンテキストを用いて実行されるといったシナリオが考えられます。 <span class="comment">Once created, a context can be used any number of times for different scripts or JSAPI queries. For example, a browser would create a separate context for each HTML page; every script in the page would use the same context.</span></p> - -<p>新規コンテキストは、<code>Object</code>、<code>Date</code>、<code>Array</code>といった標準的なグローバルオブジェクトを一切保持していません。それらを利用するには、<code><a href="/ja/JS_InitStandardClasses" title="ja/JS_InitStandardClasses">JS_InitStandardClasses</a></code>を呼び出す必要があります。JSAPIを利用するアプリケーションで独自の関数やクラスを提供したい場合には、<code><a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">JS_GetGlobalObject</a></code>を使ってそのコンテキストのグローバルオブジェクトを取得し、<code><a href="/ja/JS_DefineFunctions" title="ja/JS_DefineFunctions">JS_DefineFunctions</a></code>および<code><a href="/ja/JS_InitClass" title="ja/JS_InitClass">JS_InitClass</a></code>をそれに適用することで独自のグローバル関数やクラスをコンテキストに追加できます。 <span class="comment">The new context initially does not contain any globals, even standard globals such as <code>Object</code>, <code>Date</code>, and <code>Array</code>. To create them, call <code><a href="/ja/JS_InitStandardClasses">JS_InitStandardClasses</a></code>. A JSAPI application typically also provides some custom functions and classes. Use <code><a href="/ja/JS_GetGlobalObject">JS_GetGlobalObject</a></code> to get a context's global object. Use <code></code> and <code><a href="/ja/JS_InitClass">JS_InitClass</a></code> to add custom global functions and classes to the context.</span></p> - -<p><code>stackchunksize</code>は、JavaScriptのスタックサイズを調節するものではありません(JSAPIでは、スタック長を調節するインタフェースを提供していません)。<code>stackchunksize</code>に大きい値を設定するのは誤った方法です。<code>DEBUG</code>ビルドにおいて、<code>stackchunksize</code>を大きくすると性能が著しく劣化します。一般的には<code>8192</code>が推奨されます。 <span class="comment">The <code>stackchunksize</code> parameter does not control the JavaScript stack size. (The JSAPI does not provide a way to adjust the stack depth limit.) Passing a large number for <code>stackchunksize</code> is a mistake. In a <code>DEBUG</code> build, large chunk sizes can degrade performance dramatically. The usual value of <code>8192</code> is recommended.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p><span class="comment">= See Also =</span></p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td>Groups</td> - <td><a href="/ja/JSAPI_Reference#Functions" title="ja/JSAPI_Reference#Functions">Functions</a></td> - </tr> - <tr> - <td>Documents</td> - <td>{{ LXRSearch("ident", "i", "JS_NewContext", "LXR ID Search") }}</td> - </tr> - <tr> - <td>Entries</td> - <td><a href="/ja/JS_ContextIterator" title="ja/JS_ContextIterator">JS_ContextIterator</a>, - <p><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a>, <a href="/ja/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></p> - </td> - </tr> - </tbody> -</table> - -<p>{{ languages( { "en": "en/JS_NewContext" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html deleted file mode 100644 index 8efb4676c7..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: JS_NewObject -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_NewObject</code></div> - -<p></p> - -<p>{{ 英語版章題("Summary") }}</p> - -<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2> - -<p>オブジェクトのインスタンスを生成する関数です。<span class="comment">Instantiates a new object.</span></p> - -<p>{{ 英語版章題("Syntax") }}</p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre>JSObject * JS_NewObject(JSContext *cx, JSClass *clasp, JSObject *proto, - JSObject *parent); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code>JSContext *</code></td> - <td>ランタイム環境へのアクセスに用いる JSContext ポインタ<span class="comment">Pointer to a JS context from which to derive runtime information.</span></td> - </tr> - <tr> - <td><code>clasp</code></td> - <td><code>JSClass *</code></td> - <td>オブジェクト生成に用いるクラスへのポインタ<span class="comment">Pointer to the class to use for the new object.</span></td> - </tr> - <tr> - <td><code>proto</code></td> - <td><code>JSObject *</code></td> - <td>クラスとして用いる prototype オブジェクトへのポインタ<span class="comment">Pointer to the prototype object to use for the new class.</span></td> - </tr> - <tr> - <td><code>parent</code></td> - <td><code>JSObject *</code></td> - <td>新規オブジェクトの<code>__parent__</code>プロパティになる親オブジェクトへのポインタ。<span class="comment">Pointer to which to set the new object's <code>__parent__</code> property.</span></td> - </tr> - </tbody> -</table> - -<p>{{ 英語版章題("Description") }}</p> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_NewObject</code>は、引数に指定したクラス、プロトタイプ、親オブジェクトを元にしてオブジェクトのインスタンスを生成する関数です。<code>cx</code>は、新規オブジェクトを生成するランタイム環境の子となるコンテキストへのポインタです。<code>clasp</code>は、<code>finalize</code>のような内部で定義されたメソッドを使う既存クラスへのポインタです。<code>proto</code>は、新規に生成するオブジェクトのプロトタイプとなるオブジェクトへのポインタです。 <span class="comment"><code>JS_NewObject</code> instantiates a new object based on a specified class, prototype, and parent object. <code>cx</code> is a pointer to a context associated with the runtime in which to establish the new object. <code>clasp</code> is a pointer to an existing class to use for internal methods, such as <code>finalize</code>. <code>proto</code> is an optional pointer to the prototype object with which to associate the new object.</span></p> - -<p>Set <code>proto</code> to <code>NULL</code> to force JS to assign a prototype object for you. In this case, <code>JS_NewObject</code> attempts to assign the new object the prototype object belonging to <code>clasp</code>, if one is defined there. Otherwise, it creates an empty object stub for the prototype.</p> - -<p>引数<code>parent</code>は、新たに生成したオブジェクトをプロパティとして持つ親オブジェクトを指定するものです。<code>__parent__</code>プロパティを設定したくない時は、<code>parent</code>に<code>NULL</code>を指定してください。 <span class="comment"><code>parent</code> is an optional pointer to an existing object to which to set the new object's parent object property. You can set parent to <code>NULL</code> if you do not want to set the <code>__parent__</code> property.</span></p> - -<p><code>JS_NewObject</code>が成功したとき、その返値は生成したオブジェクトのインスタンスへのポインタになり、失敗した時はNULLを返します。 <span class="comment">On success, <code>JS_NewObject</code> returns a pointer to the newly instantiated object. Otherwise it returns <code>NULL</code>.</span></p> - -<p>{{ 英語版章題("Notes") }}</p> - -<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3> - -<p>既存オブジェクトのプロパティとなるオブジェクトを生成するには、<code><a href="ja/JS_DefineObject">JS_DefineObject</a></code>を用いてください。 <span class="comment">To create a new object that is a property of an existing object, use <code>JS_DefineObject</code>.</span></p> - -<p>{{ 英語版章題("See Also") }}</p> - -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td>Groups</td> - <td><a href="ja/JSAPI_Reference#Functions">Functions</a></td> - </tr> - <tr> - <td>Documents</td> - <td>{{ LXRSearch("ident", "i", "JS_NewObject", "LXR ID Search") }}</td> - </tr> - <tr> - <td>Entries</td> - <td> - <p><a href="ja/JSClass">JSClass</a>, <a href="ja/JS_ConstructObject">JS_ConstructObject</a>, <a href="ja/JS_DefineObject">JS_DefineObject</a>, <a href="ja/JS_GetFunctionObject">JS_GetFunctionObject</a>, <a href="ja/JS_NewArrayObject">JS_NewArrayObject</a>, <a href="ja/JS_ValueToObject">JS_ValueToObject</a></p> - </td> - </tr> - </tbody> -</table> - -<div class="noinclude"> </div> - -<p>{{ languages( { "en": "en/JS_NewObject" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html deleted file mode 100644 index 5db8397cb9..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: JS NewRuntime -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime ---- -<p></p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_NewRuntime</code></div> -<p></p> - -<p>JavaScript ランタイムの初期化を行います。 {{ 英語版章題("Syntax") }}</p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> * <strong>JS_NewRuntime</strong>(uint32 maxbytes); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>maxbytes</code></td> - <td><code>uint32</code></td> - <td>ガベージコレクション動作後の最大メモリ使用量<span class="comment">Maximum number of allocated bytes after which garbage collection is run.</span></td> - </tr> - </tbody> -</table> - -<p>{{ 英語版章題("Description") }}</p> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_NewRuntime</code>は、JavaScriptランタイム環境の初期化を行う関数です。他のJSAPI関数を使うには前もって必ず<code>JS_NewRuntime</code>を呼ぶことになります。<code>JS_NewRuntime</code>は、<code>JSRuntime</code>に用いるメモリ領域を確保し、ランタイム内の初期化を行います。引数<code>maxbytes</code>で、ガベージコレクションが動作した後の最大メモリ使用量を指定します。 <span class="comment"><code>JS_NewRuntime</code> initializes the JavaScript runtime environment. Call <code>JS_NewRuntime</code> before making any other API calls. <code>JS_NewRuntime</code> allocates memory for the <code>JSRuntime</code> and initializes certain internal runtime structures. <code>maxbytes</code> specifies the number of allocated bytes after which garbage collection is run.</span></p> - -<p>一般的に、ほとんどのアプリケーションで必要とされる<code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></code>は一つのみです。<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、<code>JSRuntime</code>を共有する<code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a></code>を各スレッドごとに一つ用意することで、複数スレッドからランタイムにアクセスすることが可能です。複数のランタイムが必要になるのは、JavaScriptの値やオブジェクト、関数をスレッド間で完全に分離させたいときだけです。 <span class="comment">Generally speaking, most applications need only one <code><a href="/ja/JSRuntime">JSRuntime</a></code>. In a <code><a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> build, each runtime is capable of handling multiple execution threads, using one <code><a href="/ja/JSContext">JSContext</a></code> per thread, sharing the same <code>JSRuntime</code>. You only need multiple runtimes if your application requires completely separate JS engines that cannot share values, objects, and functions.</span></p> - -<p><code>JS_NewRuntime</code>が成功したときは、新たに生成されたランタイムへのポインタがその返り値となり、失敗した時は<code>NULL</code>を返します。<code>JS_NewRuntime</code>の呼び出し元は、後で必ずそのランタイムを<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>を用いて破棄しなければなりません。 <span class="comment">On success, <code>JS_NewRuntime</code> returns a pointer to the newly created runtime, which the caller must later destroy using <code><a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>. Otherwise it returns <code>NULL</code>.</span> {{ 英語版章題("Notes") }}</p> - -<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3> - -<p>一般的には、<code>JS_NewRuntime</code>はアプリケーション内でまず最初に実行し、<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>や<code><a href="/ja/JS_ShutDown" title="ja/JS_ShutDown">JS_ShutDown</a></code>を終了時に呼ぶことになります。 <span class="comment">Ordinarily, <code>JS_NewRuntime</code> should be the first JSAPI call in an application, and <code><a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code> and <code><a href="/ja/JS_ShutDown">JS_ShutDown</a></code> should be the last ones.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_NewRuntime") }}</p> - -<p>{{ languages( { "en": "en/JS_NewRuntime" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html deleted file mode 100644 index 0be58ee8dc..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: JS_SetGCZeal -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal ---- -<div>{{SpiderMonkeySidebar("JSAPI")}}</div> - -<div>{{jsapi_minversion_header("1.8")}}</div> - -<div class="summary"> -<p>GC の活動量、JSAPI アプリケーションの GC 関連のバグを見つけるのに役立つテストおよびデバッグ機能を有効にします。</p> -</div> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="brush: cpp">void -JS_SetGCZeal(JSContext *cx, uint8_t zeal, uint32_t frequency); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td>{{jsapixref("JSRuntime", "JSContext *")}}</td> - <td>A context. The GC zeal level of the associated {{jsapixref("JSRuntime")}} is set.</td> - </tr> - <tr> - <td><code>zeal</code></td> - <td><code>uint8_t</code></td> - <td>The desired level of garbage collection.</td> - </tr> - <tr> - <td><code>frequency</code></td> - <td><code>uint32_t</code></td> - <td>With some zeal levels, a GC is triggered every <code>frequency</code> allocations.</td> - </tr> - </tbody> -</table> - -<h2 id="Description" name="Description">説明</h2> - -<p><strong><code>JS_SetGCZeal</code></strong> sets the level of additional garbage collection to perform for a runtime, for the purpose of finding or reproducing bugs.</p> - -<p>There are several different levels which have different functions:</p> - -<table class="fullwidth-table"> - <thead> - <tr> - <th scope="col">Zeal level</th> - <th scope="col">Description</th> - </tr> - </thead> - <tbody> - <tr> - <td>0</td> - <td>Normal amount of collection. The default: no additional collections are performed.</td> - </tr> - <tr> - <td>1</td> - <td>Collect when roots are added or removed.</td> - </tr> - <tr> - <td>2</td> - <td>Collect when every <code>frequency</code> allocations.</td> - </tr> - <tr> - <td>3</td> - <td>Collect on window paints.</td> - </tr> - <tr> - <td>4</td> - <td>Verify pre write barriers between instructions.</td> - </tr> - <tr> - <td>5</td> - <td>Verify pre write barriers between window paints.</td> - </tr> - <tr> - <td>6</td> - <td>Verify stack rooting.</td> - </tr> - <tr> - <td>7</td> - <td>Collect the nursery every <code>frequency</code> nursery allocations.</td> - </tr> - <tr> - <td>8</td> - <td>Incremental GC in two slices: 1) mark roots 2) finish collection.</td> - </tr> - <tr> - <td>9</td> - <td>Incremental GC in two slices: 1) mark all 2) new marking and finish.</td> - </tr> - <tr> - <td>10</td> - <td>Incremental GC in multiple slices.</td> - </tr> - <tr> - <td>11</td> - <td>Verify post write barriers between instructions.</td> - </tr> - <tr> - <td>12</td> - <td>Verify post write barriers between paints.</td> - </tr> - <tr> - <td>13</td> - <td>Check internal hashtables on minor GC.</td> - </tr> - <tr> - <td>14</td> - <td>Perform a shrinking collection every <code>frequency</code> allocations.</td> - </tr> - </tbody> -</table> - -<p>With GC zeal enabled, GC-related crashes are much easier to reproduce (they happen more reliably) and debug (they happen sooner, closer to the source of the bug). The drawback is that GC zeal can cause JavaScript code to run extremely slowly.</p> - -<p>Regularly running your test suite with GC zeal enabled at level 2 is a good practice.</p> - -<p>This function is available only in <code>DEBUG</code> builds. To enable this function in an optimized build, define the macro <code>JS_GC_ZEAL</code> building SpiderMonkey.</p> - -<p>(In a debug build of Gecko, you can also set the current GC zeal level using the <code>javascript.options.gczeal</code> preference.)</p> - -<h2 id="See_Also" name="See_Also">あわせて参照</h2> - -<ul> - <li>{{LXRSearch("ident", "i", "JS_SetGCZeal")}}</li> - <li>{{LXRSearch("ident", "i", "JS_GC_ZEAL")}}</li> - <li>{{jsapixref("JS_ScheduleGC")}}</li> - <li>{{bug(308429)}}</li> - <li>{{bug(650978)}}</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html deleted file mode 100644 index 5d4e2faacd..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: JS ShutDown -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_ShutDown</code></div> - -<p></p> - -<p>ランタイム間で共有している資源を解放します。</p> - -<p><span class="comment">Free all resources shared among runtimes.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">void <strong>JS_ShutDown</strong>(void); -</pre> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p>ランタイム間で共有している資源を解放する関数です。この関数を呼ぶのは<code>JSRuntime</code>オブジェクトが存在しないとき(具体的には、<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>を読んだ後のプログラムの最後など)だけにしてください。 <span class="comment">Frees all resources shared among runtimes. Call this only when no <code>JSRuntime</code>s exist (for example, at the end of the program, after calling <code><a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>).</span></p> - -<p>利用時の注意点: この関数は<code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jsdtoa.c">jsdtoa.c</a></code>が確保するメモリ領域と、<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>オプションを有効にしたビルドにおける<code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jslock.c">jslock.c</a></code>が確保するmutex領域を解放します。 <span class="comment">Implementation note: This cleans up memory allocated by <code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jsdtoa.c">jsdtoa.c</a></code> and, in <code><a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> builds, mutexes allocated by <code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jslock.c">jslock.c</a></code>.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_ShutDown") }}</p> - -<p>{{ languages( { "en": "en/JS_ShutDown" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html deleted file mode 100644 index b827d4c832..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: JS_THREADSAFE -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE ---- -<p class="note">{{ note("JS_THREADSAFE は現在恒久的に有効です。") }}</p> - -<p><strong><code>JS_THREADSAFE</code></strong> は、オブジェクトや文字列が共有されていない限り、JavaScript コードの複数のスレッドを同時に実行するためのサポートを可能にするコンパイル時オプションです。</p> - -<p>最近この機能に大きな変更を加えました。最近まで、スレッド間でオブジェクトを共有することでうまくいくことが多かったのですが、スクリプトを使うとクラッシュすることがありました。この機能は完全に削除されました。JavaScript エンジンを使用する各スレッドは、本質的にまったく別のメモリ領域で動作する必要があります。</p> - -<h2 id="Requests" name="Requests">Requests</h2> - -<p>In a <code>JS_THREADSAFE</code> build, the application must separate code that uses the JSAPI from code that performs blocking I/O or time-consuming calculations.</p> - -<p>A <em>request</em> is a region of code that uses the JSAPI. Requests must be bracketed with calls to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_BeginRequest</a>()</code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_EndRequest</a>()</code>.</p> - -<pre class="eval"><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_BeginRequest</a>(cx); -/* ... do JSAPI stuff ... */ -<a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_EndRequest</a>(cx); -</pre> - -<p>A request is always associated with a specific <code>JSContext</code> and runs from start to finish on a single thread.</p> - -<p>Most JSAPI functions require the caller to be in a request. In this reference, these JSAPI functions are marked with the words "Requires request", like this:</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code>JSContext *</code></td> - <td>The context to use. {{ Jsapi-requires-request() }}</td> - </tr> - </tbody> -</table> - -<p>Most JSAPI callback functions are always called from within a request. These callbacks are (unreliably!) documented with the words "Provides request", like this:</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code>JSContext *</code></td> - <td>The context in which the event ocurred. Provides request. <em>In <code><a href="/en-US/docs/JS_THREADSAFE#Requests">JS_THREADSAFE</a></code> builds, the JavaScript engine calls this callback only from within an active request on <code>cx</code>. The callback does not need to call <code>JS_BeginRequest()</code>).</em></td> - </tr> - </tbody> -</table> - -<p>In particular, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/JSNative">JSNative</a></code> callbacks provide a request. This means that any potentially long-running operation in a native must be bracketed with calls to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_SuspendRequest</a>()</code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_ResumeRequest</a>()</code>.</p> - -<pre class="eval"><a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="en/JSBool">JSBool</a> socket_recv(<a href="/en/SpiderMonkey/JSAPI_Reference/JSRuntime" title="en/JSRuntime">JSContext</a> *cx, <a href="/en/SpiderMonkey/JSAPI_Reference/jsint" title="en/jsint">unsigned int</a> argc, <a href="/En/SpiderMonkey/JSAPI_Reference/Jsval" title="en/jsval">jsval</a> *vp) -{ - ... - rc = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_SuspendRequest</a>(cx); - read_size = recv(socket, buf, size, flags); - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_ResumeRequest</a>(cx, rc); - ... -} -</pre> - -<h2 id="Garbage_collection" name="Garbage_collection">Garbage collection</h2> - -<p>Requests help make garbage collection safe when multiple threads are using the JSAPI. For each thread that is in a request:</p> - -<ul> - <li>Almost any call into the JSAPI may trigger garbage collection; but</li> - <li>Garbage collection does not happen at any other time (such as, for example, at the moment before the return value of <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="en/JS_NewObject">JS_NewObject</a></code> is assigned to a rooted variable).</li> -</ul> - -<p>These are actually the same rules that apply to single-threaded JSAPI programs. But in multithreaded programs, if you break the rules, your program is more likely to crash. This is because in single-threaded programs, a random call into the JSAPI is actually pretty unlikely to trigger GC, especially if the calling thread has not been using up a lot of memory. In a multithreaded program, even if the calling thread has been idle, other threads may be active or may call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GC" title="en/JS_GC">JS_GC</a>()</code>.</p> - -<p>The above rules mean that at any given moment, there can be either <strong>(a)</strong> multiple threads in active requests, or <strong>(b)</strong> one thread doing GC and all requests suspended. When one thread calls JS_GC or otherwise finds that garbage collection is necessary, it must wait for all other threads that are in requests to pause before garbage collection can occur. To keep this wait time to a minimum, <strong>applications must avoid long-running requests.</strong> The recommended technique in SpiderMonkey 1.8 and later is to periodically call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_YieldRequest" title="en/JS_YieldRequest">JS_YieldRequest</a></code> from an <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="en/JS_SetOperationCallback">operation callback</a>.</p> - -<h2 id="Sharing_strings_among_threads" name="Sharing_strings_among_threads">Sharing data among threads</h2> - -<p>"Data can be marshaled across the process boundary through a process known as <em>smuggling</em>." --<em>Mr. Bunny's Guide to ActiveX</em></p> - -<p>Even in JS_THREADSAFE builds, threads cannot safely share objects or strings.</p> - -<p>Instead, data must be copied when it is sent from one thread to another. Use <code>JS_WriteStructuredClone</code> to transform data into a flat array of bytes that can be safely written to disk, sent to another process or even another machine, or just passed to another thread. Then use <code>JS_ReadStructuredClone</code> on the other side to turn the serialized data back into JavaScript objects, strings, and so on.</p> - -<h2 id="Sharing_native_functions_and_private_data_among_threads" name="Sharing_native_functions_and_private_data_among_threads">Sharing native functions and private data among threads</h2> - -<p>In a <code>JS_THREADSAFE</code> build, SpiderMonkey's internal data structures that represent JavaScript values are single-thread-only. In a <code>DEBUG</code> build, this is enforced with assertions.</p> - -<p>However, SpiderMonkey does not protect the application's data structures. <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/JSNative">JSNative</a></code>s and other callback functions can be called concurrently by multiple threads. Multiple threads can end up accessing <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="en/JS_SetPrivate">private data</a> or C/C++ global variables at the same time. It is up to the application to practice safe threading.</p> - -<h2 id="Sharing_contexts_among_threads" name="Sharing_contexts_among_threads">Sharing contexts among threads</h2> - -<p>Ordinarily, a <code>JSContext</code> is created, used, and destroyed by a single thread. This makes sense, as a context can only be used by one thread at a time. However, there are a few cases where an application might need to share contexts across threads. For example:</p> - -<ul> - <li>Many worker threads need to share a "pool" of reusable contexts, to avoid the performance cost of constantly creating and destroying contexts. (This is analogous to a database connection pool.)</li> -</ul> - -<ul> - <li>The application has a <code>JSContext</code> that it needs to use each time some event happens. But the event could happen on any thread.</li> -</ul> - -<p>For such cases, use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="en/JS_ClearContextThread">JS_ClearContextThread</a></code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="en/JS_ClearContextThread">JS_SetContextThread</a></code> to transfer the context safely from one thread to another.</p> - -<h2 id="Further_info" name="Further_info">Further info</h2> - -<p>Note: <a href="/En/SpiderMonkey/Internals/Thread_Safety" title="en/SpiderMonkey_Internals/Thread_Safety">SpiderMonkey Internals: Thread Safety</a> is mostly obsolete.</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html deleted file mode 100644 index c5028558cc..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: jsint -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint -tags: - - JSAPI_Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint ---- -<p>C 言語 / C++ の整数型のエイリアスです。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="syntaxbox">typedef ... jsint; -typedef ... jsuint; - -typedef ... jsword; -typedef ... jsuword; - -typedef ... intN; -typedef ... uintN; - -typedef ... int8; -typedef ... uint8; -typedef ... int16; -typedef ... uint16; -typedef ... int32; -typedef ... uint32; -typedef ... int64; -typedef ... uint64; -</pre> - - -<h2 id="Description" name="Description">説明</h2> - - -<p><strong><code>jsint</code></strong> および <strong><code>jsuint</code></strong> は 32 ビットの整数型です。</p> - - -<p><strong><code>jsword</code></strong> および <strong><code>jsuword</code></strong> はポインタサイズの整数型です。</p> - - -<p><strong><code>intN</code></strong> および <strong><code>uintN</code></strong> はプラットフォームのネイティブの <code>int</code> 型と同じサイズの整数型です。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html deleted file mode 100644 index b221ea62ef..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: JSRuntime -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JSRuntime</code></div> - -<p></p> - -<p>JSAPIにおいて、<strong><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></code></strong>はメモリ管理や<strong>グローバル</strong>なデータ構造などを扱う最高位のオブジェクトです。複数のスレッドが動作するプログラムにおいても、プログラム内の<code>JSRuntime</code>は一般的に一つだけです。<code>JSRuntime</code>はJavaScriptのオブジェクトを保持する空間であり、オブジェクトは複数の<code>JSRuntime</code>を跨いで移動することはできません。 <span class="comment">JSAPI, <strong><code><a href="/ja/JSRuntime">JSRuntime</a></code></strong> is the top-level object that handles, among other things, memory management and "global" data structures. A program typically has only one <code>JSRuntime</code>, even if it has many threads. The <code>JSRuntime</code> is the universe in which JavaScript objects live; they can't travel to other <code>JSRuntime</code>s.</span></p> - -<p><strong><code>JSContext</code></strong>は<code>JSRuntime</code>の子に位置し、すべてのJavaScriptコードとJSAPIの関数は<code>JSContext</code>を介して実行されます。<code>JSContext</code>内には、<a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">global object</a>や実行時スタックなどが含まれます。 <a href="/ja/JS_SetPendingException" title="ja/JS_SetPendingException">例外処理</a>、<a href="/ja/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">エラー報告</a>、一部の<a href="/ja/JS_SetOptions" title="ja/JS_SetOptions">JavaScriptのオプション</a> などは各<code>JSContext</code>ごとに管理されます。<code>JS_THREADSAFE</code>オプションを有効にしたビルドでは、複数のスレッドからJavaScriptのコードを呼び出し並行して実行できますが、呼び出し元のスレッドはそれぞれ独立した<code>JSContext</code>を持つ形になります。詳細は<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を参照してください。 <span class="comment">All JavaScript code and most JSAPI calls run within a <strong><code>JSContext</code></strong>. The <code>JSContext</code> is a child of the <code>JSRuntime</code>. Among other things, it contains the <a href="/ja/JS_GetGlobalObject">global object</a> and the execution stack. <a href="/ja/JS_SetPendingException">Exception handling</a>, <a href="/ja/JS_SetErrorReporter">error reporting</a>, and some <a href="/ja/JS_SetOptions">language options</a> are per-<code>JSContext</code>. In a <code>JS_THREADSAFE</code> build, multiple threads may run JavaScript code concurrently, but each such thread must have its own <code>JSContext</code>. See <code> <a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> for details.</span></p> - -<p>JavaScriptオブジェクトとそのコンテキストとの関係は固定されたものでなく、オブジェクトは<code>JSRuntime</code>を介してその子となる<code>JSContext</code>間で共有することができます。 <span class="comment">Objects may be shared among <code>JSContext</code>s within a <code>JSRuntime</code>. There's no fixed association between an object and a context.</span></p> - -<p>{{ languages( { "en": "en/JSRuntime" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html deleted file mode 100644 index 69037c39ee..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: JSType -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType -tags: - - JSAPI_Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType ---- -<p>列挙型 <code>JSType</code> の値は、 JavaScript の値の型を表します。</p> -<table class="standard-table"> - <thead> - <tr> - <th>値</th> - <th>説明</th> - </tr> -</thead> -<tbody> - <tr> - <td><code>JSTYPE_VOID</code></td> - <td><code>undefined</code> 値</td> - </tr> - <tr> - <td><code>JSTYPE_OBJECT</code></td> - <td>JavaScript オブジェクト</td> - </tr> - <tr> - <td><code>JSTYPE_FUNCTION</code></td> - <td>関数</td> - </tr> - <tr> - <td><code>JSTYPE_STRING</code></td> - <td>文字列</td> - </tr> - <tr> - <td><code>JSTYPE_NUMBER</code></td> - <td>数値</td> - </tr> - <tr> - <td><code>JSTYPE_BOOLEAN</code></td> - <td>真偽値 (<code>true</code> / <code>false</code>)</td> - </tr> - <tr> - <td><code>JSTYPE_NULL</code></td> - <td><code>null</code> 値</td> - </tr> - <tr> - <td><code>JSTYPE_XML</code></td> - <td>XML オブジェクト</td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html deleted file mode 100644 index 815bdfd6cf..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: JSAPI ユーザガイド -slug: Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide ---- -<p>{{SpiderMonkeySidebar}}{{Draft}}{{Page("/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide")}}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html b/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html deleted file mode 100644 index c132f23a19..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: JSDBGAPI Reference -slug: Mozilla/Projects/SpiderMonkey/JSDBGAPI_Reference -tags: - - JSDBGAPI_Reference - - JavaScript - - SpiderMonkey ---- -<p> -</p><p>見てのとおり、ほとんどすべての項目がドキュメント化されていません。 -</p><p><tt>trap, untrap, watch, unwatch, line2pc</tt> および <tt>pc2line</tt> 関数の実装は {{ Source("js/src/js.c") }} をご覧ください。{{ Source("js/src/jsdbgapi.h") }} にも (わずかに) コメントがあります。 -</p><p>{{ 英語版章題("Breakpoints") }} -</p> -<h3 id=".E3.83.96.E3.83.AC.E3.83.BC.E3.82.AF.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88" name=".E3.83.96.E3.83.AC.E3.83.BC.E3.82.AF.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88"> ブレークポイント </h3> -<ul><li> <code><a href="ja/JS_SetTrap">JS_SetTrap</a></code> -</li><li> <code><a href="ja/JS_GetTrapOpcode">JS_GetTrapOpcode</a></code> -</li><li> <code><a href="ja/JS_ClearTrap">JS_ClearTrap</a></code> -</li><li> <code><a href="ja/JS_ClearScriptTraps">JS_ClearScriptTraps</a></code> -</li><li> <code><a href="ja/JS_ClearAllTraps">JS_ClearAllTraps</a></code> -</li><li> <code><a href="ja/JS_HandleTrap">JS_HandleTrap</a></code> -</li><li> <code><a href="ja/JS_SetInterrupt">JS_SetInterrupt</a></code> -</li><li> <code><a href="ja/JS_ClearInterrupt">JS_ClearInterrupt</a></code> -</li></ul> -<p>{{ 英語版章題("Watchpoints") }} -</p> -<h3 id=".E3.82.A6.E3.82.A9.E3.83.83.E3.83.81.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88" name=".E3.82.A6.E3.82.A9.E3.83.83.E3.83.81.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88"> ウォッチポイント </h3> -<ul><li> <code><a href="ja/JS_SetWatchPoint">JS_SetWatchPoint</a></code> -</li><li> <code><a href="ja/JS_ClearWatchPoint">JS_ClearWatchPoint</a></code> -</li><li> <code><a href="ja/JS_ClearWatchPointsForObject">JS_ClearWatchPointsForObject</a></code> -</li><li> <code><a href="ja/JS_ClearAllWatchPoints">JS_ClearAllWatchPoints</a></code> -</li></ul> -<p>{{ 英語版章題("Inspecting the stack") }} -</p> -<h3 id=".E3.82.B9.E3.82.BF.E3.83.83.E3.82.AF.E3.81.AE.E8.AA.BF.E6.9F.BB" name=".E3.82.B9.E3.82.BF.E3.83.83.E3.82.AF.E3.81.AE.E8.AA.BF.E6.9F.BB"> スタックの調査 </h3> -<ul><li> <code><a href="ja/JS_PCToLineNumber">JS_PCToLineNumber</a></code> -</li><li> <code><a href="ja/JS_LineNumberToPC">JS_LineNumberToPC</a></code> -</li><li> <code><a href="ja/JS_GetFunctionScript">JS_GetFunctionScript</a></code> -</li><li> <code><a href="ja/JS_GetFunctionNative">JS_GetFunctionNative</a></code> -</li><li> <code><a href="ja/JS_GetFunctionFastNative">JS_GetFunctionFastNative</a></code> -</li><li> <code><a href="ja/JS_GetScriptPrincipals">JS_GetScriptPrincipals</a></code> -</li></ul> -<ul><li> typedef <code><a href="ja/JSStackFrame">JSStackFrame</a></code> -</li><li> <code><a href="ja/JS_FrameIterator">JS_FrameIterator</a></code> -</li><li> <code><a href="ja/JS_GetFrameScript">JS_GetFrameScript</a></code> -</li><li> <code><a href="ja/JS_GetFramePC">JS_GetFramePC</a></code> -</li><li> <code><a href="ja/JS_GetScriptedCaller">JS_GetScriptedCaller</a></code> -</li><li> <code><a href="ja/JS_StackFramePrincipals">JS_StackFramePrincipals</a></code> -</li><li> <code><a href="ja/JS_EvalFramePrincipals">JS_EvalFramePrincipals</a></code> -</li><li> <code><a href="ja/JS_GetFrameAnnotation">JS_GetFrameAnnotation</a></code> -</li><li> <code><a href="ja/JS_SetFrameAnnotation">JS_SetFrameAnnotation</a></code> -</li><li> <code><a href="ja/JS_GetFramePrincipalArray">JS_GetFramePrincipalArray</a></code> -</li><li> <code><a href="ja/JS_IsNativeFrame">JS_IsNativeFrame</a></code> -</li><li> <code><a href="ja/JS_GetFrameObject">JS_GetFrameObject</a></code> {{ Deprecated_inline() }} -</li><li> <code><a href="ja/JS_GetFrameScopeChain">JS_GetFrameScopeChain</a></code> -</li><li> <code><a href="ja/JS_GetFrameCallObject">JS_GetFrameCallObject</a></code> -</li><li> <code><a href="ja/JS_GetFrameThis">JS_GetFrameThis</a></code> -</li><li> <code><a href="ja/JS_GetFrameFunction">JS_GetFrameFunction</a></code> -</li><li> <code><a href="ja/JS_GetFrameFunctionObject">JS_GetFrameFunctionObject</a></code> -</li><li> <code><a href="ja/JS_IsConstructorFrame">JS_IsConstructorFrame</a></code> -</li><li> <code><a href="ja/JS_IsDebuggerFrame">JS_IsDebuggerFrame</a></code> -</li><li> <code><a href="ja/JS_GetFrameReturnValue">JS_GetFrameReturnValue</a></code> -</li><li> <code><a href="ja/JS_SetFrameReturnValue">JS_SetFrameReturnValue</a></code> -</li><li> <code><a href="ja/JS_GetFrameCalleeObject">JS_GetFrameCalleeObject</a></code> -</li></ul> -<ul><li> <code><a href="ja/JS_GetScriptFilename">JS_GetScriptFilename</a></code> -</li><li> <code><a href="ja/JS_GetScriptBaseLineNumber">JS_GetScriptBaseLineNumber</a></code> -</li><li> <code><a href="ja/JS_GetScriptLineExtent">JS_GetScriptLineExtent</a></code> -</li><li> <code><a href="ja/JS_GetScriptVersion">JS_GetScriptVersion</a></code> -</li></ul> -<ul><li> <code><a href="ja/JS_GetTopScriptFilenameFlags">JS_GetTopScriptFilenameFlags</a></code> -</li><li> <code><a href="ja/JS_GetScriptFilenameFlags">JS_GetScriptFilenameFlags</a></code> -</li><li> <code><a href="ja/JS_FlagScriptFilenamePrefix">JS_FlagScriptFilenamePrefix</a></code> -</li></ul> -<ul><li> <code><a href="ja/JSFILENAME_NULL">JSFILENAME_NULL</a></code> -</li><li> <code><a href="ja/JSFILENAME_SYSTEM">JSFILENAME_SYSTEM</a></code> -</li><li> <code><a href="ja/JSFILENAME_PROTECTED">JSFILENAME_PROTECTED</a></code> -</li></ul> -<p>{{ 英語版章題("Evaluating debug code") }} -</p> -<h3 id=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E8.A9.95.E4.BE.A1" name=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E8.A9.95.E4.BE.A1"> デバッグコードの評価 </h3> -<ul><li> <code><a href="ja/JS_EvaluateInStackFrame">JS_EvaluateInStackFrame</a></code> -</li></ul> -<p>{{ 英語版章題("Examining object properties") }} -</p> -<h3 id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3.E3.81.AE.E6.A4.9C.E6.9F.BB" name=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3.E3.81.AE.E6.A4.9C.E6.9F.BB"> オブジェクトプロパティの検査 </h3> -<ul><li> typedef <code><a href="ja/JSPropertyDesc">JSPropertyDesc</a></code> -</li></ul> -<ul><li> <code><a href="ja/JSPD_ENUMERATE">JSPD_ENUMERATE</a></code> -</li><li> <code><a href="ja/JSPD_READONLY">JSPD_READONLY</a></code> -</li><li> <code><a href="ja/JSPD_PERMANENT">JSPD_PERMANENT</a></code> -</li><li> <code><a href="ja/JSPD_ALIAS">JSPD_ALIAS</a></code> -</li><li> <code><a href="ja/JSPD_ARGUMENT">JSPD_ARGUMENT</a></code> -</li><li> <code><a href="ja/JSPD_VARIABLE">JSPD_VARIABLE</a></code> -</li><li> <code><a href="ja/JSPD_EXCEPTION">JSPD_EXCEPTION</a></code> -</li><li> <code><a href="ja/JSPD_ERROR">JSPD_ERROR</a></code> -</li></ul> -<ul><li> typedef <code><a href="ja/JSPropertyDescArray">JSPropertyDescArray</a></code> -</li></ul> -<ul><li> <code><a href="ja/JS_PropertyIterator">JS_PropertyIterator</a></code> -</li><li> <code><a href="ja/JS_GetPropertyDesc">JS_GetPropertyDesc</a></code> -</li><li> <code><a href="ja/JS_GetPropertyDescArray">JS_GetPropertyDescArray</a></code> -</li><li> <code><a href="ja/JS_PutPropertyDescArray">JS_PutPropertyDescArray</a></code> -</li></ul> -<p>{{ 英語版章題("Hooks") }} -</p> -<h3 id=".E3.83.95.E3.83.83.E3.82.AF" name=".E3.83.95.E3.83.83.E3.82.AF"> フック </h3> -<ul><li> <code><a href="ja/JS_SetDebuggerHandler">JS_SetDebuggerHandler</a></code> -</li><li> <code><a href="ja/JS_SetSourceHandler">JS_SetSourceHandler</a></code> -</li><li> <code><a href="ja/JS_SetExecuteHook">JS_SetExecuteHook</a></code> -</li><li> <code><a href="ja/JS_SetCallHook">JS_SetCallHook</a></code> -</li><li> <code><a href="ja/JS_SetObjectHook">JS_SetObjectHook</a></code> -</li><li> <code><a href="ja/JS_SetThrowHook">JS_SetThrowHook</a></code> -</li><li> <code><a href="ja/JS_SetDebugErrorHook">JS_SetDebugErrorHook</a></code> -</li><li> <code><a href="ja/JS_SetNewScriptHook">JS_SetNewScriptHook</a></code> -</li><li> <code><a href="ja/JS_SetDestroyScriptHook">JS_SetDestroyScriptHook</a></code> -</li></ul> -<ul><li> <code><a href="ja/JS_GetGlobalDebugHooks">JS_GetGlobalDebugHooks</a></code> -</li><li> <code><a href="ja/JS_SetContextDebugHooks">JS_SetContextDebugHooks</a></code> -</li></ul> -<p>{{ 英語版章題("Memory usage") }} -</p> -<h3 id=".E3.83.A1.E3.83.A2.E3.83.AA.E4.BD.BF.E7.94.A8.E9.87.8F" name=".E3.83.A1.E3.83.A2.E3.83.AA.E4.BD.BF.E7.94.A8.E9.87.8F"> メモリ使用量 </h3> -<ul><li> <code><a href="ja/JS_GetObjectTotalSize">JS_GetObjectTotalSize</a></code> -</li><li> <code><a href="ja/JS_GetFunctionTotalSize">JS_GetFunctionTotalSize</a></code> -</li><li> <code><a href="ja/JS_GetScriptTotalSize">JS_GetScriptTotalSize</a></code> -</li></ul> -<p>{{ 英語版章題("System objects") }} -</p> -<h3 id=".E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88" name=".E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88"> システムオブジェクト </h3> -<ul><li> <code><a href="ja/JS_IsSystemObject">JS_IsSystemObject</a></code> -</li><li> <code><a href="ja/JS_NewSystemObject">JS_NewSystemObject</a></code> -</li></ul> -<p>{{ 英語版章題("Profiling") }} -</p> -<h3 id=".E5.88.86.E6.9E.90" name=".E5.88.86.E6.9E.90"> 分析 </h3> -<p>これらの関数は、Mac プロファイラである Shark を使用して SpiderMonkey アプリケーションを分析するために使用されます。<a href="ja/Profiling_JavaScript_with_Shark">Profiling JavaScript with Shark</a> をご覧ください。 -</p> -<ul><li> <code><a href="ja/JS_ConnectShark">JS_ConnectShark</a></code> -</li><li> <code><a href="ja/JS_DisconnectShark">JS_DisconnectShark</a></code> -</li><li> <code><a href="ja/JS_StartChudRemote">JS_StartChudRemote</a></code> -</li><li> <code><a href="ja/JS_StopChudRemote">JS_StopChudRemote</a></code> -</li></ul> -<p>以下の <code><a href="ja/JSNative">JSNative</a></code> 関数は、上記 4 つの API をスクリプトに晒すために使用されます。 -</p> -<ul><li> <code><a href="ja/Js_ConnectShark">js_ConnectShark</a></code> -</li><li> <code><a href="ja/Js_DisconnectShark">js_DisconnectShark</a></code> -</li><li> <code><a href="ja/Js_StartShark">js_StartShark</a></code> -</li><li> <code><a href="ja/Js_StopShark">js_StopShark</a></code> -</li></ul> -{{ languages( { "en": "en/JSDBGAPI_Reference" } ) }} diff --git a/files/ja/mozilla/projects/spidermonkey/parser_api/index.html b/files/ja/mozilla/projects/spidermonkey/parser_api/index.html deleted file mode 100644 index 81b308c6f6..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/parser_api/index.html +++ /dev/null @@ -1,1698 +0,0 @@ ---- -title: Parser API -slug: Mozilla/Projects/SpiderMonkey/Parser_API -tags: - - API - - Guide - - JavaScript - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Parser_API ---- -<div>{{SpiderMonkeySidebar}}</div> - -<div class="summary"> -<p>最近の<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">スタンドアロンの SpiderMonkey シェル</a>のビルドには、SpiderMonkey パーサーを反映したものが含まれています。これは JavaScript API として提供されています。これにより、シンタックスハイライト、静的解析、トランスレータ、コンパイラ、難読化ツールなど、JavaScript ソースプログラムを操作するツールを JavaScript で記述することが簡単になります。</p> -</div> - -<div class="note"> -<p><strong>メモ:</strong> このページは SpiderMonkey 特有の振る舞いについて説明しており、不完全かもしれません。最新の ECMAScript 機能を含み、SpiderMonkey フォーマットとの下位互換性があるコミュニティ AST 規格については、<a href="https://github.com/estree/estree">ESTree の仕様</a>をご覧ください。</p> -</div> - -<p>例:</p> - -<pre class="notranslate">> var expr = Reflect.parse("obj.foo + 42").body[0].expression -> expr.left.property -({loc:null, type:"Identifier", name:"foo"}) -> expr.right -({loc:{source:null, start:{line:1, column:10}, end:{line:1, column:12}}, type:"Literal", value:42}) -</pre> - -<p>Firefox 7 以降も利用可能です。次のようにしてグローバルオブジェクトにインポートすることができます。</p> - -<pre class="notranslate">Components.utils.import("resource://gre/modules/reflect.jsm") -</pre> - -<p>または指定されたオブジェクトへ:</p> - -<pre class="notranslate">Components.utils.import("resource://gre/modules/reflect.jsm", obj) -</pre> - -<h2 id="組み込みオブジェクト">組み込みオブジェクト</h2> - -<p>SpiderMonkey シェルであっても Firefox (インポート後) であっても、グローバルシングルトンオブジェクト <code>Reflect</code> は現在 <code>parse</code> メソッドだけを含んでいます。</p> - -<h2 id="Reflect_オブジェクトのプロパティ"><code>Reflect</code> オブジェクトのプロパティ</h2> - -<p><code>Reflect</code> オブジェクトは現在単一のメソッドで構成されています。</p> - -<h4 id="Reflect.parsesrc_options"><code>Reflect.parse(src[, options])</code></h4> - -<p><strong><span style="font-family: Courier New;">src</span></strong> を文字列に強制し、結果を JavaScript プログラムとして解析します。デフォルトでは、解析にされた抽象構文ツリー (AST) を表す Program オブジェクト(以下を参照)が返されます。</p> - -<p>追加のオプションは、以下のプロパティのいずれかを含めることができる <strong><span style="font-family: Courier New;">options</span></strong> オブジェクトを介して提供可能です:</p> - -<table style="border-color: #edf2f7; border-style: solid; border-width: 1px; width: 67%;"> - <tbody> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">loc</span></strong></td> - <td>Boolean</td> - <td>Default: <span style="font-family: Courier New;">true</span></td> - </tr> - <tr> - <td colspan="3">When <strong><span style="font-family: Courier New;">loc</span></strong> is <span style="font-family: Courier New;">true</span>, the parser includes source location information in the returned AST nodes.</td> - </tr> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">source</span></strong></td> - <td>String</td> - <td>Default: <span style="font-family: Courier New;">null</span></td> - </tr> - <tr> - <td colspan="3">A description of the input source; typically a filename, path, or URL. This string is not meaningful to the parsing process, but is produced as part of the source location information in the returned AST nodes.</td> - </tr> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">line</span></strong></td> - <td>Number</td> - <td>Default: <span style="font-family: Courier New;">1</span></td> - </tr> - <tr> - <td colspan="3">The initial line number to use for source location information.</td> - </tr> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">builder</span></strong></td> - <td>Builder</td> - <td>Default: <span style="font-family: Courier New;">null</span></td> - </tr> - <tr> - <td colspan="3"> - <p>A builder object, which can be used to produce AST nodes in custom data formats. The expected callback methods are described under <a href="/en/SpiderMonkey/Parser_API#Builder_objects" title="en/SpiderMonkey/Parser API#Builder objects">Builder Objects</a>.</p> - </td> - </tr> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">target</span></strong></td> - <td>String</td> - <td>Default: <span style="font-family: Courier New;">script</span></td> - </tr> - <tr> - <td colspan="3"> - <p>A type of the parsing target, can be either <span style="font-family: Courier New;">script</span> or <span style="font-family: Courier New;">module</span>.</p> - </td> - </tr> - </tbody> -</table> - -<p>If parsing fails due to a syntax error, an instance of <code>SyntaxError</code> is thrown. The syntax error object thrown by <code>Reflect.parse()</code> has the same <code>message</code> property as the syntax error that would be thrown by <code>eval(src)</code>. The <code>lineNumber</code> and <code>fileName</code> properties of the syntax error object indicate the source location of the syntax error.</p> - -<h2 id="Node_オブジェクト">Node オブジェクト</h2> - -<p>By default, <code>Reflect.parse()</code> produces Node objects, which are plain JavaScript objects (i.e., their prototype derives from the standard <code>Object</code> prototype). All node types implement the following interface:</p> - -<pre class="notranslate">interface Node { - type: string; - loc: SourceLocation | null; -} -</pre> - -<p>The <code>type</code> field is a string representing the AST variant type. Each subtype of Node is documented below with the specific string of its <code>type</code> field. You can use this field to determine which interface a node implements.</p> - -<p>The <code>loc</code> field represents the source location information of the node. If the parser produced no information about the node's source location, the field is <code>null</code>; otherwise it is an object consisting of a start position (the position of the first character of the parsed source region) and an end position (the position of the first character <em>after</em> the parsed source region):</p> - -<pre class="notranslate">interface SourceLocation { - source: string | null; - start: Position; - end: Position; -} -</pre> - -<p>Each <code>Position</code> object consists of a <code>line</code> number (1-indexed) and a <code>column</code> number (0-indexed):</p> - -<pre class="notranslate">interface Position { - line: uint32 >= 1; - column: uint32 >= 0; -}</pre> - -<h3 id="Programs">Programs</h3> - -<pre class="notranslate">interface Program <: Node { - type: "Program"; - body: [ Statement ]; -} -</pre> - -<p>A complete program source tree.</p> - -<h3 id="Functions">Functions</h3> - -<pre class="notranslate">interface Function <: Node { - id: Identifier | null; - params: [ Pattern ]; - defaults: [ Expression ]; - rest: Identifier | null; - body: BlockStatement | Expression; - generator: boolean; - expression: boolean; -} -</pre> - -<p>A function declaration or expression. The <code>body</code> of the function may be a block statement, or in the case of an <a href="/en/JavaScript/New_in_JavaScript/1.8#Expression_closures_%28Merge_into_own_page.2fsection%29" title="https://developer.mozilla.org/en/new_in_javascript_1.8#Expression_closures_(Merge_into_own_page.2fsection)">expression closure</a>, an expression.</p> - -<div class="note"><strong>メモ:</strong> Expression closures are SpiderMonkey-specific.</div> - -<p>If the <code>generator</code> flag is <code>true</code>, the function is a <a href="/en/JavaScript/Guide/Iterators_and_Generators" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Iterators_and_Generators">generator function</a>, i.e., contains a <code>yield</code> expression in its body (other than in a nested function).</p> - -<div class="note"><strong>メモ:</strong> Generators are SpiderMonkey-specific.</div> - -<p>If the <code>expression</code> flag is <code>true</code>, the function is an expression closure and the <code>body</code> field is an expression.</p> - -<h3 id="Statements">Statements</h3> - -<pre class="notranslate">interface Statement <: Node { } -</pre> - -<p>Any statement.</p> - -<pre class="notranslate">interface EmptyStatement <: Statement { - type: "EmptyStatement"; -} -</pre> - -<p>An empty statement, i.e., a solitary semicolon.</p> - -<pre class="notranslate">interface BlockStatement <: Statement { - type: "BlockStatement"; - body: [ Statement ]; -} -</pre> - -<p>A block statement, i.e., a sequence of statements surrounded by braces.</p> - -<pre class="notranslate">interface ExpressionStatement <: Statement { - type: "ExpressionStatement"; - expression: Expression; -} -</pre> - -<p>An expression statement, i.e., a statement consisting of a single expression.</p> - -<pre class="notranslate">interface IfStatement <: Statement { - type: "IfStatement"; - test: Expression; - consequent: Statement; - alternate: Statement | null; -} -</pre> - -<p>An <code>if</code> statement.</p> - -<pre class="notranslate">interface LabeledStatement <: Statement { - type: "LabeledStatement"; - label: Identifier; - body: Statement; -} -</pre> - -<p>A labeled statement, i.e., a statement prefixed by a <code>break</code>/<code>continue</code> label.</p> - -<pre class="notranslate">interface BreakStatement <: Statement { - type: "BreakStatement"; - label: Identifier | null; -} -</pre> - -<p>A <code>break</code> statement.</p> - -<pre class="notranslate">interface ContinueStatement <: Statement { - type: "ContinueStatement"; - label: Identifier | null; -} -</pre> - -<p>A <code>continue</code> statement.</p> - -<pre class="notranslate">interface WithStatement <: Statement { - type: "WithStatement"; - object: Expression; - body: Statement; -} -</pre> - -<p>A <code>with</code> statement.</p> - -<pre class="notranslate">interface SwitchStatement <: Statement { - type: "SwitchStatement"; - discriminant: Expression; - cases: [ SwitchCase ]; - lexical: boolean; -} -</pre> - -<p>A <code>switch</code> statement. The lexical flag is metadata indicating whether the <code>switch</code> statement contains any unnested <code>let</code> 宣言 (and therefore introduces a new lexical scope).</p> - -<pre class="notranslate">interface ReturnStatement <: Statement { - type: "ReturnStatement"; - argument: Expression | null; -} -</pre> - -<p>A <code>return</code> statement.</p> - -<pre class="notranslate">interface ThrowStatement <: Statement { - type: "ThrowStatement"; - argument: Expression; -} -</pre> - -<p>A <code>throw</code> statement.</p> - -<pre class="notranslate">interface TryStatement <: Statement { - type: "TryStatement"; - block: BlockStatement; - handler: CatchClause | null; - guardedHandlers: [ CatchClause ]; - finalizer: BlockStatement | null; -} -</pre> - -<p>A <code>try</code> statement.</p> - -<div class="note"><strong>メモ:</strong> Multiple <code>catch</code> clauses are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface WhileStatement <: Statement { - type: "WhileStatement"; - test: Expression; - body: Statement; -} -</pre> - -<p>A <code>while</code> statement.</p> - -<pre class="notranslate">interface DoWhileStatement <: Statement { - type: "DoWhileStatement"; - body: Statement; - test: Expression; -} -</pre> - -<p>A <code>do</code>/<code>while</code> statement.</p> - -<pre class="notranslate">interface ForStatement <: Statement { - type: "ForStatement"; - init: VariableDeclaration | Expression | null; - test: Expression | null; - update: Expression | null; - body: Statement; -} -</pre> - -<p>A <code>for</code> statement.</p> - -<pre class="notranslate">interface ForInStatement <: Statement { - type: "ForInStatement"; - left: VariableDeclaration | Expression; - right: Expression; - body: Statement; - each: boolean; -} -</pre> - -<p>A <code>for</code>/<code>in</code> statement, or, if <code>each</code> is <code>true</code>, a <code>for each</code>/<code>in</code> statement.</p> - -<div class="note"><strong>メモ:</strong> The <code>for each</code> form is SpiderMonkey-specific.</div> - -<pre class="notranslate">interface ForOfStatement <: Statement { - type: "ForOfStatement"; - left: VariableDeclaration | Expression; - right: Expression; - body: Statement; -}</pre> - -<p>A <code>for</code>/<code>of</code> statement.</p> - -<pre class="notranslate">interface LetStatement <: Statement { - type: "LetStatement"; - head: [ VariableDeclarator ]; - body: Statement; -} -</pre> - -<p>A <code>let</code> statement.</p> - -<div class="note"><strong>メモ:</strong> The <code>let</code> statement form is SpiderMonkey-specific.</div> - -<pre class="notranslate">interface DebuggerStatement <: Statement { - type: "DebuggerStatement"; -} -</pre> - -<p>A <code>debugger</code> statement.</p> - -<div class="note"><strong>メモ:</strong> The <code>debugger</code> statement is new in ECMAScript 5th edition, although SpiderMonkey has supported it for years.</div> - -<h3 id="宣言">宣言</h3> - -<pre class="notranslate">interface Declaration <: Statement { } -</pre> - -<p>Any declaration node. Note that 宣言 are considered statements; this is because 宣言 can appear in any statement context in the language recognized by the SpiderMonkey parser.</p> - -<div class="note"><strong>メモ:</strong> 宣言 in arbitrary nested scopes are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface FunctionDeclaration <: Function, Declaration { - type: "FunctionDeclaration"; - id: Identifier; - params: [ Pattern ]; - defaults: [ Expression ]; - rest: Identifier | null; - body: BlockStatement | Expression; - generator: boolean; - expression: boolean; -} -</pre> - -<p>A function declaration.</p> - -<div class="note"><strong>メモ:</strong> The <code>id</code> field cannot be <code>null</code>.</div> - -<pre class="notranslate">interface VariableDeclaration <: Declaration { - type: "VariableDeclaration"; - 宣言: [ VariableDeclarator ]; - kind: "var" | "let" | "const"; -} -</pre> - -<p>A variable declaration, via one of <code>var</code>, <code>let</code>, or <code>const</code>.</p> - -<pre class="notranslate">interface VariableDeclarator <: Node { - type: "VariableDeclarator"; - id: Pattern; - init: Expression | null; -} -</pre> - -<p>A variable declarator.</p> - -<div class="note"><strong>メモ:</strong> The <code>id</code> field cannot be <code>null</code>.</div> - -<div class="note"><strong>メモ:</strong> <code>let</code> and <code>const</code> are SpiderMonkey-specific.</div> - -<h3 id="Expressions">Expressions</h3> - -<pre class="notranslate">interface Expression <: Node, Pattern { }</pre> - -<p>Any expression node. Since the left-hand side of an assignment may be any expression in general, an expression can also be a pattern.</p> - -<pre class="notranslate">interface ThisExpression <: Expression { - type: "ThisExpression"; -} -</pre> - -<p>A <code>this</code> expression.</p> - -<pre class="notranslate">interface ArrayExpression <: Expression { - type: "ArrayExpression"; - elements: [ Expression | null ]; -}</pre> - -<p>An array expression.</p> - -<pre class="notranslate">interface ObjectExpression <: Expression { - type: "ObjectExpression"; - properties: [ Property ]; -}</pre> - -<p>An object expression.</p> - -<pre class="notranslate">interface Property <: Node { - type: "Property"; - key: Literal | Identifier; - value: Expression; - kind: "init" | "get" | "set"; -}</pre> - -<p>A literal property in an object expression can have either a string or number as its <code>value</code>. Ordinary property initializers have a <code>kind</code> value <code>"init"</code>; getters and setters have the <code>kind</code> values <code>"get"</code> and <code>"set"</code>, respectively.</p> - -<pre class="notranslate">interface FunctionExpression <: Function, Expression { - type: "FunctionExpression"; - id: Identifier | null; - params: [ Pattern ]; - defaults: [ Expression ]; - rest: Identifier | null; - body: BlockStatement | Expression; - generator: boolean; - expression: boolean; -} -</pre> - -<p>A function expression.</p> - -<pre class="notranslate">interface ArrowExpression <: Function, Expression { - type: "ArrowExpression"; - params: [ Pattern ]; - defaults: [ Expression ]; - rest: Identifier | null; - body: BlockStatement | Expression; - generator: boolean; - expression: boolean; -} -</pre> - -<p>A fat arrow function expression, i.e., `let foo = (bar) => { /* body */ }`.</p> - -<pre class="notranslate">interface SequenceExpression <: Expression { - type: "SequenceExpression"; - expressions: [ Expression ]; -}</pre> - -<p>A sequence expression, i.e., a comma-separated sequence of expressions.</p> - -<pre class="notranslate">interface UnaryExpression <: Expression { - type: "UnaryExpression"; - operator: UnaryOperator; - prefix: boolean; - argument: Expression; -}</pre> - -<p>A unary operator expression.</p> - -<pre class="notranslate">interface BinaryExpression <: Expression { - type: "BinaryExpression"; - operator: BinaryOperator; - left: Expression; - right: Expression; -}</pre> - -<p>A binary operator expression.</p> - -<pre class="notranslate">interface AssignmentExpression <: Expression { - type: "AssignmentExpression"; - operator: AssignmentOperator; - left: Pattern; - right: Expression; -}</pre> - -<p>An assignment operator expression.</p> - -<pre class="notranslate">interface UpdateExpression <: Expression { - type: "UpdateExpression"; - operator: UpdateOperator; - argument: Expression; - prefix: boolean; -}</pre> - -<p>An update (increment or decrement) operator expression.</p> - -<pre class="notranslate">interface LogicalExpression <: Expression { - type: "LogicalExpression"; - operator: LogicalOperator; - left: Expression; - right: Expression; -}</pre> - -<p>A logical operator expression.</p> - -<pre class="notranslate">interface ConditionalExpression <: Expression { - type: "ConditionalExpression"; - test: Expression; - alternate: Expression; - consequent: Expression; -}</pre> - -<p>A conditional expression, i.e., a ternary <code>?</code>/<code>:</code> expression.</p> - -<pre class="notranslate">interface NewExpression <: Expression { - type: "NewExpression"; - callee: Expression; - arguments: [ Expression ]; -}</pre> - -<p>A <code>new</code> expression.</p> - -<pre class="notranslate">interface CallExpression <: Expression { - type: "CallExpression"; - callee: Expression; - arguments: [ Expression ]; -}</pre> - -<p>A function or method call expression.</p> - -<pre class="notranslate">interface MemberExpression <: Expression { - type: "MemberExpression"; - object: Expression; - property: Identifier | Expression; - computed: boolean; -}</pre> - -<p>A member expression. If <code>computed === true</code>, the node corresponds to a computed <code>e1[e2]</code> expression and property is an <code>Expression</code>. If <code>computed === false</code>, the node corresponds to a static <code>e1.x</code> expression and property is an <code>Identifier</code>.</p> - -<pre class="notranslate">interface YieldExpression <: Expression { - type: "YieldExpression"; - argument: Expression | null; -} -</pre> - -<p>A <code>yield</code> expression.</p> - -<div class="note"><strong>メモ:</strong> <code>yield</code> expressions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface ComprehensionExpression <: Expression { - type: "ComprehensionExpression"; - body: Expression; - blocks: [ ComprehensionBlock | ComprehensionIf ]; - filter: Expression | null; -} -</pre> - -<p>An <a href="/en/JavaScript/Guide/Obsolete_Pages/Working_with_Arrays#Array_comprehensions" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Arrays#Array_comprehensions">array comprehension</a>. The <code>blocks</code> array corresponds to the sequence of <code>for</code> and <code>for each</code> blocks. The optional <code>filter</code> expression corresponds to the final <code>if</code> clause, if present.</p> - -<div class="note"><strong>メモ:</strong> Array comprehensions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface GeneratorExpression <: Expression { - type: "GeneratorExpression"; - body: Expression; - blocks: [ ComprehensionBlock | ComprehensionIf ]; - filter: Expression | null; -} -</pre> - -<p>A <a href="/en/JavaScript/Guide/Iterators_and_Generators#Generator_expressions" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Iterators_and_Generators#Generator_expressions">generator expression</a>. As with array comprehensions, the <code>blocks</code> array corresponds to the sequence of <code>for</code> and <code>for each</code> blocks, and the optional <code>filter</code> expression corresponds to the final <code>if</code> clause, if present.</p> - -<div class="note"><strong>メモ:</strong> Generator expressions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface GraphExpression <: Expression { - type: "GraphExpression"; - index: uint32; - expression: Literal; -} -</pre> - -<p>A <a href="/en/JavaScript/Sharp_variables_in_JavaScript" title="https://developer.mozilla.org/en/Sharp_variables_in_JavaScript">graph expression</a>, aka "sharp literal," such as <code>#1={ self: #1# }</code>.</p> - -<div class="note"><strong>メモ:</strong> Graph expressions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface GraphIndexExpression <: Expression { - type: "GraphIndexExpression"; - index: uint32; -} -</pre> - -<p>A <a href="/en/JavaScript/Sharp_variables_in_JavaScript" title="https://developer.mozilla.org/en/Sharp_variables_in_JavaScript">graph index expression</a>, aka "sharp variable," such as <code>#1#</code>.</p> - -<div class="note"><strong>メモ:</strong> Graph index expressions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface LetExpression <: Expression { - type: "LetExpression"; - head: [ VariableDeclarator ]; - body: Expression; -} -</pre> - -<p>A <code>let</code> expression.</p> - -<div class="note"><strong>メモ:</strong> The <code>let</code> expression form is SpiderMonkey-specific.</div> - -<h3 id="Patterns">Patterns</h3> - -<pre class="notranslate">interface Pattern <: Node { } -</pre> - -<p>JavaScript 1.7 introduced <a href="/en/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_%28Merge_into_own_page.2fsection%29" title="https://developer.mozilla.org/en/new_in_javascript_1.7#Destructuring_assignment_(Merge_into_own_page.2fsection)">destructuring assignment and binding</a> forms. All binding forms (such as function parameters, variable 宣言, and <code>catch</code> block headers) accept array and object destructuring patterns in addition to plain identifiers. The left-hand sides of assignment expressions can be arbitrary expressions, but in the case where the expression is an object or array literal, it is interpreted by SpiderMonkey as a destructuring pattern.</p> - -<p>Since the left-hand side of an assignment can in general be any expression, in an assignment context, a pattern can be any expression. In binding positions (such as function parameters, variable 宣言, and <code>catch</code> headers), patterns can only be identifiers in the base case, not arbitrary expressions.</p> - -<pre class="notranslate">interface ObjectPattern <: Pattern { - type: "ObjectPattern"; - properties: [ { key: Literal | Identifier, value: Pattern } ]; -} -</pre> - -<p>An object-destructuring pattern. A literal property in an object pattern can have either a string or number as its <code>value</code>.</p> - -<pre class="notranslate">interface ArrayPattern <: Pattern { - type: "ArrayPattern"; - elements: [ Pattern | null ]; -} -</pre> - -<p>An array-destructuring pattern.</p> - -<h3 id="Clauses">Clauses</h3> - -<pre class="notranslate">interface SwitchCase <: Node { - type: "SwitchCase"; - test: Expression | null; - consequent: [ Statement ]; -} -</pre> - -<p>A <code>case</code> (if <code>test</code> is an <code>Expression</code>) or <code>default</code> (if <code>test === null</code>) clause in the body of a <code>switch</code> statement.</p> - -<pre class="notranslate">interface CatchClause <: Node { - type: "CatchClause"; - param: Pattern; - guard: Expression | null; - body: BlockStatement; -} -</pre> - -<p>A <code>catch</code> clause following a <code>try</code> block. The optional <code>guard</code> property corresponds to the optional expression guard on the bound variable.</p> - -<div class="note"><strong>メモ:</strong> The guard expression is SpiderMonkey-specific.</div> - -<pre class="notranslate">interface ComprehensionBlock <: Node { - type: "ComprehensionBlock"; - left: Pattern; - right: Expression; - each: boolean; -} -</pre> - -<p>A <code>for</code> or <code>for each</code> block in an array comprehension or generator expression.</p> - -<pre class="notranslate">interface ComprehensionIf <: Node { - type: "ComprehensionIf"; - test: Expression; -}</pre> - -<p>An <code>if</code> filter in an array comprehension or generator filter.</p> - -<div class="note"><strong>メモ:</strong> Array comprehensions and generator expressions are SpiderMonkey-specific.</div> - -<h3 id="Miscellaneous">Miscellaneous</h3> - -<pre class="notranslate">interface Identifier <: Node, Expression, Pattern { - type: "Identifier"; - name: string; -} -</pre> - -<p>An identifier. Note that an identifier may be an expression or a destructuring pattern.</p> - -<pre class="notranslate">interface Literal <: Node, Expression { - type: "Literal"; - value: string | boolean | null | number | RegExp; -} -</pre> - -<p>A literal token. Note that a literal can be an expression.</p> - -<pre class="notranslate">enum UnaryOperator { - "-" | "+" | "!" | "~" | "typeof" | "void" | "delete" -} -</pre> - -<p>A unary operator token.</p> - -<pre class="notranslate">enum BinaryOperator { - "==" | "!=" | "===" | "!==" - | "<" | "<=" | ">" | ">=" - | "<<" | ">>" | ">>>" - | "+" | "-" | "*" | "/" | "%" - | "|" | "^" | "&" | "in" - | "instanceof" | ".." -} -</pre> - -<p>A binary operator token.</p> - -<div class="note"><strong>メモ:</strong> The <code>..</code> operator is E4X-specific.</div> - -<pre class="notranslate">enum LogicalOperator { - "||" | "&&" -} -</pre> - -<p>A logical operator token.</p> - -<pre class="notranslate">enum AssignmentOperator { - "=" | "+=" | "-=" | "*=" | "/=" | "%=" - | "<<=" | ">>=" | ">>>=" - | "|=" | "^=" | "&=" -} -</pre> - -<p>An assignment operator token.</p> - -<pre class="notranslate">enum UpdateOperator { - "++" | "--" -} -</pre> - -<p>An update (increment or decrement) operator token.</p> - -<h3 id="E4X">E4X</h3> - -<p>This section describes node types that are provided for E4X support. E4X has since been removed as of Gecko 21.</p> - -<p>{{ Obsolete_header() }}</p> - -<div class="note"><strong>メモ:</strong> E4X is not part of the ECMAScript standard (<a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" title="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMA-262</a>), but is a separate standard of its own (<a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-357.htm" title="http://www.ecma-international.org/publications/standards/Ecma-357.htm">ECMA-357</a>).</div> - -<h4 id="宣言_2">宣言</h4> - -<pre class="notranslate">interface XMLDefaultDeclaration <: Declaration { - type: "XMLDefaultDeclaration"; - namespace: Expression; -} -</pre> - -<p>A <code>default xml namespace</code> declaration.</p> - -<h4 id="Expressions_2">Expressions</h4> - -<pre class="notranslate">interface XMLAnyName <: Expression { - type: "XMLAnyName"; -} -</pre> - -<p>The special E4X wildcard pseudo-identifier <code>*</code>.</p> - -<pre class="notranslate">interface XMLQualifiedIdentifier <: Expression { - type: "XMLQualifiedIdentifier"; - left: Identifier | XMLAnyName; - right: Identifier | Expression; - computed: boolean; -} -</pre> - -<p>An E4X qualified identifier, i.e., a pseudo-identifier using the namespace separator <code>::</code>. If the qualified identifier has a computed name (i.e., the <code>id::[expr]</code> form), then <code>computed</code> is <code>true</code> and the <code>right</code> property is an expression.</p> - -<pre class="notranslate">interface XMLFunctionQualifiedIdentifier <: Expression { - type: "XMLFunctionQualifiedIdentifier"; - right: Identifier | Expression; - computed: boolean; -} -</pre> - -<p>An E4X identifier qualified by the <code>function</code> keyword, e.g., <code>function::id</code>.</p> - -<div class="note"><strong>メモ:</strong> <code>function</code>-qualified identifiers are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface XMLAttributeSelector <: Expression { - type: "XMLAttributeSelector"; - attribute: Expression; -} -</pre> - -<p>An E4X attribute selector expression, i.e., an <code>@</code> expression.</p> - -<pre class="notranslate">interface XMLFilterExpression <: Expression { - type: "XMLFilterExpression"; - left: Expression; - right: Expression; -} -</pre> - -<p>An E4X list filter expression, i.e., an expression of the form <code>expr.(expr)</code>.</p> - -<pre class="notranslate">interface XMLElement <: XML, Expression { - type: "XMLElement"; - contents: [ XML ]; -} -</pre> - -<p>An E4X literal representing a single XML element.</p> - -<pre class="notranslate">interface XMLList <: XML, Expression { - type: "XMLList"; - contents: [ XML ]; -} -</pre> - -<p>An E4X literal representing a list of XML elements.</p> - -<h4 id="XML">XML</h4> - -<pre class="notranslate">interface XML <: Node { } -</pre> - -<p>XML data.</p> - -<pre class="notranslate">interface XMLEscape <: XML { - type: "XMLEscape"; - expression: Expression; -} -</pre> - -<p>XML data with an escaped JavaScript expression.</p> - -<pre class="notranslate">interface XMLText <: XML { - type: "XMLText"; - text: string; -} -</pre> - -<p>Literal XML text.</p> - -<pre class="notranslate">interface XMLStartTag <: XML { - type: "XMLStartTag"; - contents: [ XML ]; -} -</pre> - -<p>An XML start tag.</p> - -<pre class="notranslate">interface XMLEndTag <: XML { - type: "XMLEndTag"; - contents: [ XML ]; -} -</pre> - -<p>An XML end tag.</p> - -<pre class="notranslate">interface XMLPointTag <: XML { - type: "XMLPointTag"; - contents: [ XML ]; -} -</pre> - -<p>An XML point tag.</p> - -<pre class="notranslate">interface XMLName <: XML { - type: "XMLName"; - contents: string | [ XML ]; -} -</pre> - -<p>An XML name.</p> - -<pre class="notranslate">interface XMLAttribute <: XML { - type: "XMLAttribute"; - value: string; -} -</pre> - -<p>An XML attribute value.</p> - -<pre class="notranslate">interface XMLCdata <: XML { - type: "XMLCdata"; - contents: string; -} -</pre> - -<p>An XML CDATA node.</p> - -<pre class="notranslate">interface XMLComment <: XML { - type: "XMLComment"; - contents: string; -} -</pre> - -<p>An XML comment.</p> - -<pre class="notranslate">interface XMLProcessingInstruction <: XML { - type: "XMLProcessingInstruction"; - target: string; - contents: string | null; -} -</pre> - -<p>An XML processing instruction.</p> - -<h2 id="ビルダーオブジェクト">ビルダーオブジェクト</h2> - -<p>The optional <strong><code>builder</code></strong> parameter to <code>Reflect.parse()</code> makes it possible to construct user-specified data from the parser, rather than the default <code>Node</code> objects. Builder objects may contain any of the callback methods described in this section.</p> - -<p>Each callback can produce any custom, user-defined datatype; these are referred to below as <code>CustomExpression</code>, <code>CustomStatement</code>, etc.</p> - -<div class="note"><strong>メモ:</strong> Because this library uses <code>null</code> for optional nodes, it is recommended that user-defined datatypes <strong>not</strong> use <code>null</code> as a representation of an AST node.</div> - -<p>If the <strong><code>loc</code></strong> option is enabled (see the <a href="/en/SpiderMonkey/Parser_API#Reflect.parse(src.5b.2c_options.5d)" title="en/SpiderMonkey/Parser API#Reflect.parse(src.5b.2c options.5d)">Reflect.parse() options</a> above), then each callback is provided with the source location information of the parsed node as an extra parameter.</p> - -<p>All builder callbacks are optional. When a callback is missing, the default format is used, but the provided builder methods are still used recursively for sub-nodes.</p> - -<h3 id="Programs_2">Programs</h3> - -<h5 id="programbody_loc"><code>program(body[, loc])</code></h5> - -<pre class="notranslate">body: [ CustomStatement ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomProgram</p> - -<p>Callback to produce a custom program node.</p> - -<h3 id="Statements_2">Statements</h3> - -<h5 id="emptyStatementloc"><code>emptyStatement([loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom empty statement node.</p> - -<h5 id="blockStatementbody_loc"><code>blockStatement(body[, loc])</code></h5> - -<pre class="notranslate">body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom block statement node.</p> - -<h5 id="expressionStatementexpr_loc"><code>expressionStatement(expr[, loc])</code></h5> - -<pre class="notranslate">expr: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom expression statement node.</p> - -<h5 id="labeledStatementlabel_body_loc"><code>labeledStatement(label, body[, loc])</code></h5> - -<pre class="notranslate">label: CustomIdentifier -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom labeled statement node.</p> - -<h5 id="ifStatementtest_cons_alt_loc"><code>ifStatement(test, cons, alt[, loc])</code></h5> - -<pre class="notranslate">test: CustomExpression -cons: CustomStatement -alt: CustomStatement | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>if</code> statement node.</p> - -<h5 id="switchStatementdisc_cases_isLexical_loc"><code>switchStatement(disc, cases, isLexical[, loc])</code></h5> - -<pre class="notranslate">disc: CustomExpression -cases: [ CustomSwitchCase ] -isLexical: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>switch</code> statement node. The <strong><code>isLexical</code></strong> flag is metadata indicating whether the <code>switch</code> statement contains any unnested <code>let</code> 宣言 (and therefore introduces a new lexical scope).</p> - -<h5 id="whileStatementtest_body_loc"><code>whileStatement(test, body[, loc])</code></h5> - -<pre class="notranslate">test: CustomExpression -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>while</code> statement node.</p> - -<h5 id="doWhileStatementbody_test_loc"><code>doWhileStatement(body, test[, loc])</code></h5> - -<pre class="notranslate">body: CustomStatement -test: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>do</code>-<code>while</code> statement node.</p> - -<h5 id="forStatementinit_test_update_body_loc"><code>forStatement(init, test, update, body[, loc])</code></h5> - -<pre class="notranslate">init: CustomVariableDeclaration | CustomExpression | null -test: CustomExpression | null -update: CustomExpression | null -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>for</code> statement node.</p> - -<h5 id="forInStatementleft_right_body_isForEach_loc"><code>forInStatement(left, right, body, isForEach[, loc])</code></h5> - -<pre class="notranslate">left: CustomVariableDeclaration | CustomExpression -right: CustomExpression -body: CustomStatement -isForEach: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>for</code>-<code>in</code> statement node. The <strong><code>isForEach</code></strong> flag indicates whether the node is a <code>for each</code> statement.</p> - -<h5 id="breakStatementlabel_loc"><code>breakStatement(label[, loc])</code></h5> - -<pre class="notranslate">label: CustomIdentifier | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>break</code> statement node.</p> - -<h5 id="continueStatementlabel_loc"><code>continueStatement(label[, loc])</code></h5> - -<pre class="notranslate">label: CustomIdentifier | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>continue</code> statement node.</p> - -<h5 id="withStatementobj_body_loc"><code>withStatement(obj, body[, loc])</code></h5> - -<pre class="notranslate">obj: CustomExpression -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>with</code> statement node.</p> - -<h5 id="returnStatementarg_loc"><code>returnStatement(arg[, loc])</code></h5> - -<pre class="notranslate">arg: CustomExpression | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>return</code> statement node.</p> - -<h5 id="tryStatementbody_handlers_fin_loc"><code>tryStatement(body, handlers, fin[, loc])</code></h5> - -<pre class="notranslate">body: CustomStatement -handlers: [ CustomCatchClause ] -fin: CustomStatement | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>try</code> statement node.</p> - -<h5 id="throwStatementarg_loc"><code>throwStatement(arg[, loc])</code></h5> - -<pre class="notranslate">arg: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>throw</code> statement node.</p> - -<h5 id="debuggerStatementloc"><code>debuggerStatement([loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>debugger</code> statement node.</p> - -<h5 id="letStatementhead_body_loc"><code>letStatement(head, body[, loc])</code></h5> - -<pre class="notranslate">head: [ CustomDeclarator ] -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>let</code> statement node.</p> - -<h3 id="宣言_3">宣言</h3> - -<h5 id="functionDeclarationname_args_body_isGenerator_isExpression_loc"><code>functionDeclaration(name, args, body, isGenerator, isExpression[, loc])</code></h5> - -<pre class="notranslate">name: string -args: [ CustomPattern ] -body: CustomStatement | CustomExpression -isGenerator: boolean -isExpression: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomDeclaration</p> - -<p>Callback to produce a custom function declaration node.</p> - -<h5 id="variableDeclarationkind_dtors_loc"><code>variableDeclaration(kind, dtors[, loc])</code></h5> - -<pre class="notranslate">kind: "const" | "let" | "var" -dtors: [ CustomDeclarator ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomDeclaration</p> - -<p>Callback to produce a custom variable declaration node.</p> - -<h5 id="variableDeclaratorpatt_init_loc"><code>variableDeclarator(patt, init[, loc])</code></h5> - -<pre class="notranslate">patt: CustomPattern -init: CustomExpression | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomDeclarator</p> - -<p>Callback to produce a custom variable declarator node.</p> - -<h3 id="Expressions_3">Expressions</h3> - -<h5 id="sequenceExpressionexprs_loc"><code>sequenceExpression(exprs[, loc])</code></h5> - -<pre class="notranslate">exprs: [ CustomExpression ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom sequence expression node.</p> - -<h5 id="conditionalExpressiontest_cons_alt_loc"><code>conditionalExpression(test, cons, alt[, loc])</code></h5> - -<pre class="notranslate">test: CustomExpression -cons: CustomExpression -alt: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom conditional expression node.</p> - -<h5 id="unaryExpressionop_arg_isPrefix_loc"><code>unaryExpression(op, arg, isPrefix[, loc])</code></h5> - -<pre class="notranslate">op: UnaryOperator -arg: CustomExpression -isPrefix: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom unary expression node.</p> - -<h5 id="binaryExpressionop_left_right_loc"><code>binaryExpression(op, left, right[, loc])</code></h5> - -<pre class="notranslate">op: BinaryOperator -left: CustomExpression -right: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom binary expression node.</p> - -<h5 id="assignmentExpressionop_left_right_loc"><code>assignmentExpression(op, left, right[, loc])</code></h5> - -<pre class="notranslate">op: AssignmentOperator -left: CustomExpression -right: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom assignment expression node.</p> - -<h5 id="logicalExpressionop_left_right_loc"><code>logicalExpression(op, left, right[, loc])</code></h5> - -<pre class="notranslate">op: LogicalOperator -left: CustomExpression -right: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom logical expression node.</p> - -<h5 id="updateExpressionop_arg_isPrefix_loc"><code>updateExpression(op, arg, isPrefix[, loc])</code></h5> - -<pre class="notranslate">op: UpdateOperator -arg: CustomExpression -isPrefix: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom update expression node.</p> - -<h5 id="newExpressioncallee_args_loc"><code>newExpression(callee, args[, loc])</code></h5> - -<pre class="notranslate">callee: CustomExpression -args: [ CustomExpression ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>new</code>-expression node.</p> - -<h5 id="callExpressioncallee_args_loc"><code>callExpression(callee, args[, loc])</code></h5> - -<pre class="notranslate">callee: CustomExpression -args: [ CustomExpression ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom function call node.</p> - -<h5 id="memberExpressionobj_prop_isComputed_loc"><code>memberExpression(obj, prop, isComputed[, loc])</code></h5> - -<pre class="notranslate">obj: CustomExpression -prop: CustomIdentifier | CustomExpression -isComputed: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom member expression node.</p> - -<h5 id="functionExpressionname_args_body_isGenerator_isExpression_loc"><code>functionExpression(name, args, body, isGenerator, isExpression[, loc])</code></h5> - -<pre class="notranslate">name: CustomIdentifier | null -args: [ CustomPattern ] -body: CustomStatement | CustomExpression -isGenerator: boolean -isExpression: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom function expression node.</p> - -<h5 id="arrayExpressionelts_loc"><code>arrayExpression(elts[, loc])</code></h5> - -<pre class="notranslate">elts: [ CustomExpression | null ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom array expression node.</p> - -<h5 id="objectExpressionprops_loc"><code>objectExpression(props[, loc])</code></h5> - -<pre class="notranslate">props: [ CustomObjectProperty ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom object expression node.</p> - -<h5 id="thisExpressionloc"><code>thisExpression([loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>this</code> expression node.</p> - -<h5 id="graphExpressionindex_expr_loc"><code>graphExpression(index, expr[, loc])</code></h5> - -<pre class="notranslate">index: uint32 >= 1 -expr: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>graph</code> expression node.</p> - -<h5 id="graphIndexExpressionindex_loc"><code>graphIndexExpression(index[, loc])</code></h5> - -<pre class="notranslate">index: uint32 >= 1 -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>graph index</code> expression node.</p> - -<h5 id="comprehensionExpressionbody_blocks_filter_loc"><code>comprehensionExpression(body, blocks, filter[, loc])</code></h5> - -<pre class="notranslate">body: CustomExpression -blocks: [ CustomComprehensionBlock | CustomComprehensionIf ] -filter: CustomExpression | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>comprehension</code> expression node.</p> - -<h5 id="generatorExpressionbody_blocks_filter_loc"><code>generatorExpression(body, blocks, filter[, loc])</code></h5> - -<pre class="notranslate">body: CustomExpression -blocks: [ CustomComprehensionBlock | CustomComprehensionIf ] -filter: CustomExpression | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>generator</code> expression node.</p> - -<h5 id="yieldExpressionarg_loc"><code>yieldExpression(arg[, loc])</code></h5> - -<pre class="notranslate">arg: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>yield</code> expression node.</p> - -<h5 id="letExpressionhead_body_loc"><code>letExpression(head, body[, loc])</code></h5> - -<pre class="notranslate">head: [ CustomDeclarator ] -body: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>let</code> expression node.</p> - -<h3 id="Patterns_2">Patterns</h3> - -<h5 id="arrayPatternelts_loc"><code>arrayPattern(elts[, loc])</code></h5> - -<pre class="notranslate">elts: [ CustomPattern | null ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomPattern</p> - -<p>Callback to produce a custom array destructuring pattern node.</p> - -<h5 id="objectPatternprops_loc"><code>objectPattern(props[, loc])</code></h5> - -<pre class="notranslate">props: [ CustomPropertyPattern ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomPattern</p> - -<p>Callback to produce a custom object destructuring pattern node.</p> - -<h5 id="propertyPatternkey_patt_loc"><code>propertyPattern(key, patt[, loc])</code></h5> - -<pre class="notranslate">key: CustomLiteral | CustomIdentifier -patt: CustomPattern -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomPropertyPattern</p> - -<p>Callback to produce a custom object property destructuring pattern node.</p> - -<h3 id="Clauses_2">Clauses</h3> - -<h5 id="switchCasetest_cons_loc"><code>switchCase(test, cons[, loc])</code></h5> - -<pre class="notranslate">test: CustomExpression | null -cons: [ CustomStatement ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomSwitchCase</p> - -<p>Callback to produce a custom <code>case</code> or <code>default</code> clause node. The <strong><code>test</code></strong> argument is <code>null</code> if and only if the node is a <code>default</code> clause.</p> - -<h5 id="catchClausearg_guard_body_loc"><code>catchClause(arg, guard, body[, loc])</code></h5> - -<pre class="notranslate">arg: CustomPattern -guard: CustomExpression -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomCatchClause</p> - -<p>Callback to produce a custom <code>catch</code> clause node.</p> - -<h5 id="comprehensionBlockleft_right_isForEach_loc"><code>comprehensionBlock(left, right, isForEach[, loc])</code></h5> - -<pre class="notranslate">left: CustomPattern -right: CustomExpression -isForEach: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomComprehensionBlock</p> - -<p>Callback to produce a custom comprehension block node. The <strong><code>isForEach</code></strong> flag indicates whether the node is a <code>for each</code> block.</p> - -<p><strong><code>comprehensionIf(test[, loc])</code></strong></p> - -<pre class="notranslate">test: CustomExpression -loc: SourceLocation</pre> - -<p>戻り値: CustomComprehensionIf</p> - -<p>Callback to produce a custom comprehension if node.</p> - -<h3 id="Miscellaneous_2">Miscellaneous</h3> - -<h5 id="identifiername_loc"><code>identifier(name[, loc])</code></h5> - -<pre class="notranslate">name: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomIdentifier/CustomPattern/CustomExpression</p> - -<p>Callback to produce a custom identifier node.</p> - -<h5 id="literalval_loc"><code>literal(val[, loc])</code></h5> - -<pre class="notranslate">val: string | boolean | null | number | RegExp -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomLiteral / CustomExpression</p> - -<p>Callback to produce a custom literal node.</p> - -<h5 id="propertykind_key_val_loc"><code>property(kind, key, val[, loc])</code></h5> - -<pre class="notranslate">kind: "init" | "get" | "set" -key: CustomLiteral | CustomIdentifier -val: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomObjectProperty</p> - -<p>Callback to produce a custom object property initializer node.</p> - -<h3 id="E4X_2">E4X</h3> - -<h4 id="宣言_4">宣言</h4> - -<h5 id="xmlDefaultDeclarationns_loc"><code>xmlDefaultDeclaration(ns[, loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomDeclaration</p> - -<p>Callback to produce a custom XML default namespace declaration node.</p> - -<h4 id="Expressions_4">Expressions</h4> - -<h5 id="xmlAnyNameloc"><code>xmlAnyName([loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXMLAnyName/CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML node for the wildcard pseudo-identifier <code>*</code>.</p> - -<h5 id="xmlAttributeSelectorexpr_loc"><code>xmlAttributeSelector(expr[, loc])</code></h5> - -<pre class="notranslate">expr: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML attribute selector node.</p> - -<h5 id="xmlFilterExpressionleft_right_loc"><code>xmlFilterExpression(left, right[, loc])</code></h5> - -<pre class="notranslate">left: CustomExpression -right: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML filter expression node.</p> - -<h5 id="xmlQualifiedIdentifierleft_right_isComputed_loc"><code>xmlQualifiedIdentifier(left, right, isComputed[, loc])</code></h5> - -<pre class="notranslate">left: CustomIdentifier | CustomXMLAnyName -right: CustomIdentifier | CustomExpression -isComputed: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom qualified identifier node.</p> - -<h5 id="xmlFunctionQualifiedIdentifierright_isComputed_loc"><code>xmlFunctionQualifiedIdentifier(right, isComputed[, loc])</code></h5> - -<pre class="notranslate">right: CustomIdentifier | CustomExpression -isComputed: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML <code>function</code>-qualified identifier node.</p> - -<h5 id="xmlElementcontents_loc"><code>xmlElement(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML element node.</p> - -<h5 id="xmlListcontents_loc"><code>xmlList(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML list node.</p> - -<h4 id="XML_2">XML</h4> - -<h5 id="xmlEscapeexpr_loc"><code>xmlEscape(expr[, loc])</code></h5> - -<pre class="notranslate">expr: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML escape node.</p> - -<h5 id="xmlTexttext_loc"><code>xmlText(text[, loc])</code></h5> - -<pre class="notranslate">text: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML text node.</p> - -<h5 id="xmlStartTagcontents_loc"><code>xmlStartTag(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML start-tag node.</p> - -<h5 id="xmlEndTagcontents_loc"><code>xmlEndTag(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML end-tag node.</p> - -<h5 id="xmlPointTagcontents_loc"><code>xmlPointTag(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML point tag node.</p> - -<h5 id="xmlNamecontents_loc"><code>xmlName(contents[, loc])</code></h5> - -<pre class="notranslate">contents: string | [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML name node.</p> - -<h5 id="xmlAttributevalue_loc"><code>xmlAttribute(value[, loc])</code></h5> - -<pre class="notranslate">value: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML attribute node.</p> - -<h5 id="xmlCdatacontents_loc"><code>xmlCdata(contents[, loc])</code></h5> - -<pre class="notranslate">contents: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML <code>CDATA</code> node.</p> - -<h5 id="xmlCommentcontents_loc"><code>xmlComment(contents[, loc])</code></h5> - -<pre class="notranslate">contents: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML comment node.</p> - -<h5 id="xmlProcessingInstructiontarget_contents_loc"><code>xmlProcessingInstruction(target, contents[, loc])</code></h5> - -<pre class="notranslate">target: string -contents: string | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML processing instruction node.</p> diff --git a/files/ja/mozilla/projects/spidermonkey/releases/52/index.html b/files/ja/mozilla/projects/spidermonkey/releases/52/index.html deleted file mode 100644 index d3ddc2bdb5..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/releases/52/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: SpiderMonkey 52 -slug: Mozilla/Projects/SpiderMonkey/Releases/52 -translation_of: Mozilla/Projects/SpiderMonkey/Releases/52 ---- -<p>{{SpiderMonkeySidebar("Releases")}}</p> - -<div class="note" style="color: black;"> -<p><strong>これらのリリースノートは不完全です。</strong></p> - -<p>Mozilla JavaScript チームは <strong>SpiderMonkey 52</strong> のリリースを発表しました。treeherder から完全なソースコードをダウンロードするには、<a href="https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr52&filter-searchStr=spidermonkey-sm-package">mozilla-esr52 リポジトリ</a>にアクセスし、表示される最初の SM(pkg) リンクをクリックします。それは、左下の小さなウィンドウに "artifact uploaded:mozjs-52.x.y.tar.bz2" のような行が表示されます。</p> - -<p>SpiderMonkey 52は、Firefox 52 に搭載された JavaScript エンジンです。以前の SpiderMonkey リリースよりもパフォーマンスが向上しています。また、以下で詳しく説明する新しい言語と API の機能も含まれています。</p> - -<p><a href="news://news.mozilla.org/mozilla.dev.tech.js-engine">mozilla.dev.tech.js-engineニュースグループ</a> に投稿することで、このリリースに関するご意見をお聞かせください。また、<a class="link-https" href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> の Product: Core、Component: JavaScript engine のバグを報告してください。 バグを bug 837921 ("sm.embedding"のエイリアス) にすることをお勧めします。</p> -</div> - -<h2 id="プラットフォームサポート"> プラットフォームサポート</h2> - -<h2 id="SpiderMonkey_52_への移行">SpiderMonkey 52 への移行</h2> - -<h2 id="新しい_JavaScript_言語機能">新しい JavaScript 言語機能</h2> - -<h2 id="新しい_C_API">新しい C++ API</h2> - -<h2 id="削除された_API">削除された API</h2> - -<h2 id="API_の変更">API の変更</h2> - -<h2 id="既知の問題">既知の問題</h2> diff --git a/files/ja/mozilla/projects/spidermonkey/releases/index.html b/files/ja/mozilla/projects/spidermonkey/releases/index.html deleted file mode 100644 index f074c9aeb9..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/releases/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: SpiderMonkey リリースノート -slug: Mozilla/Projects/SpiderMonkey/Releases -translation_of: Mozilla/Projects/SpiderMonkey/Releases ---- -<div>{{SpiderMonkeySidebar("Releases")}}</div> - -<div class="summary"> -<p>ここでは <a href="/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> のリリースノートを一覧で表示しています。</p> -</div> - -<h2 id="現在のリリース">現在のリリース</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/38">SpiderMonkey 38</a></li> -</ul> - -<h2 id="次のリリース">次のリリース</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/45">SpiderMonkey 45</a></li> -</ul> - -<h2 id="過去のリリース">過去のリリース</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/31">SpiderMonkey 31</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/24">SpiderMonkey 24</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/17">SpiderMonkey 17</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.8">SpiderMonkey 1.8.8</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.7">SpiderMonkey 1.8.7</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.5">SpiderMonkey 1.8.5</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8">SpiderMonkey 1.8</a></li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html b/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html deleted file mode 100644 index b560b3e934..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html +++ /dev/null @@ -1,662 +0,0 @@ ---- -title: Shell のグローバルオブジェクト -slug: Mozilla/Projects/SpiderMonkey/Shell_global_objects -tags: - - JavaScript - - NeedsContent - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Shell_global_objects ---- -<p>これらは、プログラムを起動したときに SpiderMonkey <code>js</code> コマンドラインインタプリタによって自動的に設定される<strong>グローバルオブジェクト</strong>です。</p> - -<p><strong>メモ</strong>: このリストは、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">JavaScript シェルの紹介</a>の「<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell#Built-in_functions">組み込み関数</a>」と重複しているため、おそらく完全ではありません。詳しくは <code>js/src/shell/js.cpp</code> (<code>shell_functions</code> 周辺) をご覧ください。</p> - -<p>このページには SpiderMonkey 53 で利用可能な変数と関数がリストされています。各バージョン間には多少の違いがあるかもしれません。js シェルの <code>help()</code> 関数で関数の一覧を見ることができます。</p> - -<h2 id="変数">変数</h2> - -<dl> - <dt><code>scriptArgs</code></dt> - <dd>js シェルに渡された引数を含む配列。</dd> - <dt><code>scriptPath</code></dt> - <dd>スクリプトのパスである文字列。</dd> - <dt><code>console</code></dt> - <dd>以下のプロパティを持つオブジェクト: - <dl> - <dt><code>log</code></dt> - <dd>式を評価して <code>stdout</code> に出力します。この関数は <code>print()</code> 関数のエイリアスです。</dd> - </dl> - </dd> - <dt><code>timesAccessed</code></dt> - <dd>この変数が何回アクセスされたかを示す数を返します</dd> - <dt>PerfMeasurement</dt> - <dd><a href="/ja/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm">PerfMeasurement.jsm</a> を参照してください。</dd> -</dl> - -<h2 id="シェルのみの関数">シェルのみの関数</h2> - -<h3 id="Functions_always_available">Functions always available</h3> - -<dl> - <dt><code>version([number])</code></dt> - <dd>Get or force a script compilation version number.</dd> - <dt><code>options([option ...])</code></dt> - <dd>Get or toggle JavaScript options.</dd> - <dt><code>load(['foo.js' ...])</code></dt> - <dd>Load files named by string arguments. Filename is relative to the current working directory.</dd> - <dt><code>loadRelativeToScript(['foo.js' ...])</code></dt> - <dd>Load files named by string arguments. Filename is relative to the calling script.</dd> - <dt><code>evaluate(code[, options])</code></dt> - <dd>Evaluate code as though it were the contents of a file. <code>options</code> is an optional object that may have these properties: - <dl> - <dt><code>isRunOnce</code></dt> - <dd>use the <code>isRunOnce</code> compiler option (default: <code>false</code>)</dd> - <dt><code>noScriptRval</code></dt> - <dd>use the no-script-rval compiler option (default: <code>false</code>)</dd> - <dt><code>fileName</code></dt> - <dd>filename for error messages and debug info</dd> - <dt><code>lineNumber</code></dt> - <dd>starting line number for error messages and debug info</dd> - <dt><code>columnNumber</code></dt> - <dd>starting column number for error messages and debug info</dd> - <dt><code>global</code></dt> - <dd>global in which to execute the code</dd> - <dt><code>newContext</code></dt> - <dd>if <code>true</code>, create and use a new <code>cx</code> (default: <code>false</code>)</dd> - <dt><code>catchTermination</code></dt> - <dd>if <code>true</code>, catch termination (failure without an exception value, as for slow scripts or out-of-memory) and return <code>'terminated'</code></dd> - <dt><code>element</code></dt> - <dd>if present with value <code>v</code>, convert <code>v</code> to an object <code>o</code> and mark the source as being attached to the DOM element <code>o</code>. If the property is omitted or <code>v</code> is <code>null</code>, don't attribute the source to any DOM element.</dd> - <dt><code>elementAttributeName</code></dt> - <dd>if present and not <code>undefined</code>, the name of property of <code>element</code> that holds this code. This is what <code>Debugger.Source.prototype.elementAttributeName</code> returns.</dd> - <dt><code>sourceMapURL</code></dt> - <dd>if present with value <code>v</code>, convert <code>v</code> to a string, and provide that as the code's source map URL. If omitted, attach no source map URL to the code (although the code may provide one itself, via a <code>//#sourceMappingURL</code> comment).</dd> - <dt><code>sourceIsLazy</code></dt> - <dd>if present and <code>true</code>, indicates that, after compilation, script source should not be cached by the JS engine and should be lazily loaded from the embedding as-needed.</dd> - <dt><code>loadBytecode</code></dt> - <dd>if <code>true</code>, and if the source is a <code>CacheEntryObject</code>, the bytecode would be loaded and decoded from the cache entry instead of being parsed, then it would be executed as usual.</dd> - <dt><code>saveBytecode</code></dt> - <dd>if <code>true</code>, and if the source is a <code>CacheEntryObject</code>, the bytecode would be encoded and saved into the cache entry after the script execution.</dd> - <dt><code>assertEqBytecode</code></dt> - <dd>if <code>true</code>, and if both <code>loadBytecode</code> and <code>saveBytecode</code> are <code>true</code>, then the loaded bytecode and the encoded bytecode are compared. and an assertion is raised if they differ.</dd> - </dl> - </dd> - <dt><code>run('foo.js')</code></dt> - <dd>Run the file named by the first argument, returning the number of of milliseconds spent compiling and executing it.</dd> -</dl> - -<dl> - <dt><code>read('bar.js')</code></dt> - <dd>Reads the file named by the first argument, returning the content of the file as string.</dd> -</dl> - -<dl> - <dt><code>readline()</code></dt> - <dd>Read a single line from <code>stdin</code>.</dd> - <dt><code>readlineBuf([ buf ])</code></dt> - <dd>Emulate <code>readline()</code> on the specified string. The first call with a string argument sets the source buffer. Subsequent calls without an argument then read from this buffer line by line.</dd> - <dt><code>print([exp ...])</code></dt> - <dd>Evaluate and print expressions to <code>stdout</code>.</dd> - <dt><code>printErr([exp ...])</code></dt> - <dd>Evaluate and print expressions to <code>stderr</code>.</dd> - <dt><code>putstr([exp])</code></dt> - <dd>Evaluate and print expression without newline.</dd> - <dt><code>dateNow()</code></dt> - <dd>Return the current time with sub-ms precision.</dd> - <dt><code>help([name ...])</code></dt> - <dd>Display usage and help messages.</dd> - <dt><code>quit()</code></dt> - <dd>Quit the shell.</dd> - <dt><code>assertEq(actual, expected[, msg])</code></dt> - <dd>Throw if the first two arguments are not the same (both <code>+0</code> or both <code>-0</code>, both <code>NaN</code>, or non-zero and <code>===</code>).</dd> - <dt><code>startTimingMutator()</code></dt> - <dd>Start accounting time to mutator vs GC.</dd> - <dt><code>stopTimingMutator()</code></dt> - <dd>Stop accounting time to mutator vs GC and dump the results.</dd> - <dt><code>throwError()</code></dt> - <dd>Throw an error from <code>JS_ReportError</code>.</dd> - <dt><code>intern(str)</code></dt> - <dd>Internalize <code>str</code> in the atom table.</dd> - <dt><code>getslx(obj)</code></dt> - <dd>Get script line extent.</dd> - <dt><code>evalcx(s[, o])</code></dt> - <dd>Evaluate <code>s</code> in optional sandbox object <code>o</code>. if <code>(s == '' && !o)</code> return new <code>o</code> with eager standard classes, if <code>(s == 'lazy' && !o)</code> return new <code>o</code> with lazy standard classes</dd> - <dt><code>evalInWorker(str)</code></dt> - <dd>Evaluate <code>str</code> in a separate thread with its own runtime.</dd> - <dt><code>getSharedArrayBuffer()</code></dt> - <dd>Retrieve the <code>SharedArrayBuffer</code> object from the cross-worker mailbox. The object retrieved may not be identical to the object that was installed, but it references the same shared memory. <code>getSharedArrayBuffer</code> performs an ordering memory barrier.</dd> - <dt><code>setSharedArrayBuffer()</code></dt> - <dd>Install the <code>SharedArrayBuffer</code> object in the cross-worker mailbox. <code>setSharedArrayBuffer</code> performs an ordering memory barrier.</dd> - <dt><code>shapeOf(obj)</code></dt> - <dd>Get the shape of <code>obj</code> (an implementation detail).</dd> - <dt><code>groupOf(obj)</code></dt> - <dd>Get the group of <code>obj</code> (an implementation detail).</dd> - <dt><code>unwrappedObjectsHaveSameShape(obj1, obj2)</code></dt> - <dd>Returns <code>true</code> iff <code>obj1</code> and <code>obj2</code> have the same shape, <code>false</code> otherwise. Both objects are unwrapped first, so this can be used on objects from different globals.</dd> - <dt><code>sleep(dt)</code></dt> - <dd>Sleep for <code>dt</code> seconds.</dd> - <dt><code>compile(code)</code></dt> - <dd>Compiles a string to bytecode, potentially throwing.</dd> - <dt><code>parseModule(code)</code></dt> - <dd>Parses source text as a module and returns a <code>Module</code> object.</dd> - <dt><code>setModuleResolveHook(function(module, specifier) {})</code></dt> - <dd>Set the <code>HostResolveImportedModule</code> hook to <code>function</code>. This hook is used to look up a previously loaded module object. It should be implemented by the module loader.</dd> - <dt><code>getModuleLoadPath()</code></dt> - <dd>Return any <code>--module-load-path</code> argument passed to the shell. Used by the module loader.</dd> - <dt><code>parse(code)</code></dt> - <dd>Parses a string, potentially throwing.</dd> - <dt><code>syntaxParse(code)</code></dt> - <dd>Check the syntax of a string, returning success value</dd> - <dt><code>offThreadCompileScript(code[, options])</code></dt> - <dd>Compile <code>code</code> on a helper thread. To wait for the compilation to finish and run the code, call <code>runOffThreadScript</code>. If present, <code>options</code> may have properties saying how the code should be compiled: - <dl> - <dt><code>noScriptRval</code></dt> - <dd>use the no-script-rval compiler option (default: <code>false</code>)</dd> - <dt><code>fileName</code></dt> - <dd>filename for error messages and debug info</dd> - <dt><code>lineNumber</code></dt> - <dd>starting line number for error messages and debug info</dd> - <dt><code>columnNumber</code></dt> - <dd>starting column number for error messages and debug info</dd> - <dt><code>element</code></dt> - <dd>if present with value <code>v</code>, convert <code>v</code> to an object <code>o</code> and mark the source as being attached to the DOM element <code>o</code>. If the property is omitted or <code>v</code> is <code>null</code>, don't attribute the source to any DOM element.</dd> - <dt><code>elementAttributeName</code></dt> - <dd>if present and not <code>undefined</code>, the name of property of <code>element</code> that holds this code. This is what <code>Debugger.Source.prototype.elementAttributeName</code> returns.</dd> - </dl> - </dd> - <dt><code>runOffThreadScript()</code></dt> - <dd>Wait for off-thread compilation to complete. If an error occurred, throw the appropriate exception; otherwise, run the script and return its value.</dd> - <dt><code>offThreadCompileModule(code)</code></dt> - <dd>Compile <code>code</code> on a helper thread. To wait for the compilation to finish and get the module object, call <code>finishOffThreadModule</code>.</dd> - <dt><code>finishOffThreadModule()</code></dt> - <dd>Wait for off-thread compilation to complete. If an error occurred, throw the appropriate exception; otherwise, return the module object</dd> - <dt><code>timeout([seconds], [func])</code></dt> - <dd>Get/Set the limit in seconds for the execution time for the current context. A negative value (default) means that the execution time is unlimited. If a second argument is provided, it will be invoked when the timer elapses. Calling this function will replace any callback set by <code>setInterruptCallback</code>.</dd> - <dt><code>interruptIf(cond)</code></dt> - <dd>Requests interrupt callback if cond is <code>true</code>. If a callback function is set via <code>timeout</code> or <code>setInterruptCallback</code>, it will be called. No-op otherwise.</dd> - <dt><code>invokeInterruptCallback(fun)</code></dt> - <dd>Forcefully set the interrupt flag and invoke the interrupt handler. If a callback function is set via <code>timeout</code> or <code>setInterruptCallback</code>, it will be called. Before returning, fun is called with the return value of the interrupt handler.</dd> - <dt><code>setInterruptCallback(func)</code></dt> - <dd>Sets <code>func</code> as the interrupt callback function. Calling this function will replace any callback set by <code>timeout</code>.</dd> - <dt><code>enableLastWarning()</code></dt> - <dd>Enable storing the last warning.</dd> - <dt><code>disableLastWarning()</code></dt> - <dd>Disable storing the last warning.</dd> - <dt><code>getLastWarning()</code></dt> - <dd>Returns an object that represents the last warning.</dd> - <dt><code>clearLastWarning()</code></dt> - <dd>Clear the last warning.</dd> - <dt><code>elapsed()</code></dt> - <dd>Execution time elapsed for the current thread.</dd> - <dt><code>decompileFunction(func)</code></dt> - <dd>Decompile a function.</dd> - <dt><code>decompileThis()</code></dt> - <dd>Decompile the currently executing script.</dd> - <dt><code>thisFilename()</code></dt> - <dd>Return the filename of the current script</dd> - <dt><code>newGlobal([options])</code></dt> - <dd>Return a new global object in a new compartment. If options is given, it may have any of the following properties: - <dl> - <dt><code>sameZoneAs</code></dt> - <dd>the compartment will be in the same zone as the given object (defaults to a new zone)</dd> - <dt><code>invisibleToDebugger</code></dt> - <dd>the global will be invisible to the debugger (default <code>false</code>)</dd> - <dt><code>principal</code></dt> - <dd>if present, its value converted to a number must be an integer that fits in 32 bits; use that as the new compartment's principal. Shell principals are toys, meant only for testing; one shell principal subsumes another if its set bits are a superset of the other's. Thus, a principal of <code>0</code> subsumes nothing, while a principals of <code>~0</code> subsumes all other principals. The absence of a principal is treated as if its bits were <code>0xffff</code>, for subsumption purposes. If this property is omitted, supply no principal.</dd> - </dl> - </dd> - <dt><code>createMappedArrayBuffer(filename, [offset, [size]])</code></dt> - <dd>Create an array buffer that mmaps the given file.</dd> - <dt><code>addPromiseReactions(promise, onResolve, onReject)</code></dt> - <dd>Calls the <code>JS::AddPromiseReactions</code> JSAPI function with the given arguments.</dd> - <dt><code>getMaxArgs()</code></dt> - <dd>Return the maximum number of supported args for a call.</dd> - <dt><code>objectEmulatingUndefined()</code></dt> - <dd>Return a new object <code>obj</code> for which <code>typeof obj === "undefined"</code>, <code>obj == null</code> and <code>obj == undefined</code> (and vice versa for <code>!=</code>), and <code>ToBoolean(obj) === false</code>.</dd> - <dt><code>isCachingEnabled()</code></dt> - <dd>Return whether JS caching is enabled.</dd> - <dt><code>setCachingEnabled(b)</code></dt> - <dd>Enable or disable JS caching.</dd> - <dt><code>cacheEntry(code)</code></dt> - <dd>Return a new opaque object which emulates a cache entry of a script. This object encapsulates the code and its cached content. The cache entry is filled and read by the <code>evaluate</code> function by using it in place of the source, and by setting <code>saveBytecode</code> and <code>loadBytecode</code> options.</dd> - <dt><code>printProfilerEvents()</code></dt> - <dd>Register a callback with the profiler that prints javascript profiler events to <code>stderr</code>. Callback is only registered if profiling is enabled.</dd> - <dt><code>enableSingleStepProfiling()</code></dt> - <dd>This function will fail on platforms that don't support single-step profiling (currently everything but ARM-simulator). When enabled, at every instruction a backtrace will be recorded and stored in an array. Adjacent duplicate backtraces are discarded.</dd> - <dt><code>disableSingleStepProfiling()</code></dt> - <dd>Return the array of backtraces recorded by <code>enableSingleStepProfiling</code>.</dd> - <dt><code>enableSPSProfiling()</code></dt> - <dd>Enables SPS instrumentation and corresponding assertions, with slow assertions disabled.</dd> - <dt><code>enableSPSProfilingWithSlowAssertions()</code></dt> - <dd>Enables SPS instrumentation and corresponding assertions, with slow assertions enabled.</dd> - <dt><code>disableSPSProfiling()</code></dt> - <dd>Disables SPS instrumentation</dd> - <dt><code>isLatin1(s)</code></dt> - <dd>Return true iff the string's characters are stored as Latin1.</dd> - <dt><code>stackPointerInfo()</code></dt> - <dd>Return an <code>int32</code> value which corresponds to the offset of the latest stack pointer, such that one can take the differences of 2 to estimate a frame-size.</dd> - <dt><code>entryPoints(params)</code></dt> - <dd>Carry out some JSAPI operation as directed by <code>params</code>, and return an array of objects describing which JavaScript entry points were invoked as a result. <code>params</code> is an object whose properties indicate what operation to perform. Here are the recognized groups of properties: - <dl> - <dt><code>{ function }</code></dt> - <dd>Call the object <code>params.function</code> with no arguments.</dd> - <dt><code>{ object, property }</code></dt> - <dd>Fetch the property named <code>params.property</code> of <code>params.object</code>.</dd> - <dt><code>{ ToString }</code></dt> - <dd>Apply <code>JS::ToString</code> to <code>params.toString</code>.</dd> - <dt><code>{ ToNumber }</code></dt> - <dd>Apply <code>JS::ToNumber</code> to <code>params.toNumber</code>.</dd> - <dt><code>{ eval }</code></dt> - <dd>Apply <code>JS::Evaluate</code> to <code>params.eval</code>.</dd> - </dl> - The return value is an array of strings, with one element for each JavaScript invocation that occurred as a result of the given operation. Each element is the name of the function invoked, or the string <code>'eval:FILENAME'</code> if the code was invoked by <code>eval</code> or something similar.</dd> - <dt><code>drainJobQueue()</code></dt> - <dd>Take jobs from the shell's job queue in FIFO order and run them until the queue is empty.</dd> - <dt><code>setPromiseRejectionTrackerCallback()</code></dt> - <dd>Sets the callback to be invoked whenever a Promise rejection is unhandled or a previously-unhandled rejection becomes handled.</dd> -</dl> - -<h3 id="Functions_available_only_in_DEBUG_build">Functions available only in DEBUG build</h3> - -<dl> - <dt><code>disassemble([fun/code])</code></dt> - <dd>Return the disassembly for the given function or code. All disassembly functions take these options as leading string arguments: - <dl> - <dt><code>-r</code></dt> - <dd>disassemble recursively</dd> - <dt><code>-l</code></dt> - <dd>show line numbers</dd> - <dt><code>-S</code></dt> - <dd>omit source notes</dd> - </dl> - </dd> - <dt><code>dis([fun/code])</code></dt> - <dd>Disassemble functions into bytecodes.</dd> - <dt><code>disfile('foo.js')</code></dt> - <dd>Disassemble script file into bytecodes.</dd> - <dt><code>dissrc([fun/code])</code></dt> - <dd>Disassemble functions with source lines.</dd> - <dt><code>notes([fun])</code></dt> - <dd>Show source notes for functions.</dd> - <dt><code>stackDump(showArgs, showLocals, showThisProps)</code></dt> - <dd>Tries to print a lot of information about the current stack. Similar to the <code>DumpJSStack()</code> function in the browser.</dd> - <dt><code>arrayInfo(a1, a2, ...)</code></dt> - <dd>Report statistics about arrays.</dd> -</dl> - -<h3 id="Functions_available_only_if_ENABLE_INTL_API_is_defined">Functions available only if ENABLE_INTL_API is defined</h3> - -<dl> - <dt><code>addIntlExtras(obj)</code></dt> - <dd>Adds various not-yet-standardized Intl functions as properties on the provided object (this should generally be <code>Intl</code> itself). The added functions and their behavior are experimental: don't depend upon them unless you're willing to update your code if these experimental APIs change underneath you.</dd> -</dl> - -<h3 id="Functions_available_if_--fuzzing-safe_is_not_specified">Functions available if <code>--fuzzing-safe</code> is not specified</h3> - -<dl> - <dt><code>clone(fun[, scope])</code></dt> - <dd>Clone function object.</dd> - <dt><code>getSelfHostedValue()</code></dt> - <dd>Get a self-hosted value by its name. Note that these values don't get cached, so repeatedly getting the same value creates multiple distinct clones.</dd> - <dt><code>line2pc([fun,] line)</code></dt> - <dd>Map line number to PC.</dd> - <dt><code>pc2line(fun[, pc])</code></dt> - <dd>Map PC to line number.</dd> - <dt><code>nestedShell(shellArgs...)</code></dt> - <dd>Execute the given code in a new JS shell process, passing this nested shell the arguments passed to <code>nestedShell</code>. <code>argv[0]</code> of the nested shell will be <code>argv[0]</code> of the current shell (which is assumed to be the actual path to the shell. <code>arguments[0]</code> (of the call to <code>nestedShell</code>) will be <code>argv[1]</code>, <code>arguments[1]</code> will be <code>argv[2]</code>, etc.</dd> - <dt><code>assertFloat32(value, isFloat32)</code></dt> - <dd>In IonMonkey only, asserts that <code>value</code> has (resp. hasn't) the <code>MIRType::Float32</code> if <code>isFloat32</code> is <code>true</code> (resp. <code>false</code>).</dd> - <dt><code>assertRecoveredOnBailout(var)</code></dt> - <dd>In IonMonkey only, asserts that variable has <code>RecoveredOnBailout</code> flag.</dd> - <dt><code>withSourceHook(hook, fun)</code></dt> - <dd>Set this JS runtime's lazy source retrieval hook (that is, the hook used to find sources compiled with <code>CompileOptions::LAZY_SOURCE</code>) to <code>hook</code>; call <code>fun</code> with no arguments; and then restore the runtime's original hook. Return or throw whatever <code>fun</code> did. <code>hook</code> gets passed the requested code's URL, and should return a string. - <p>Notes:</p> - - <ol> - <li>SpiderMonkey may assert if the returned code isn't close enough to the script's real code, so this function is not fuzzer-safe.</li> - <li>The runtime can have only one source retrieval hook active at a time. If <code>fun</code> is not careful, <code>hook</code> could be asked to retrieve the source code for compilations that occurred long before it was set, and that it knows nothing about. The reverse applies as well: the original hook, that we reinstate after the call to <code>fun</code> completes, might be asked for the source code of compilations that <code>fun</code> performed, and which, presumably, only <code>hook</code> knows how to find.</li> - </ol> - </dd> - <dt><code>wrapWithProto(obj)</code></dt> - <dd>Wrap an object into a noop wrapper with prototype semantics. Note: This is not fuzzing safe because it can be used to construct deeply nested wrapper chains that cannot exist in the wild.</dd> - <dt><code>trackedOpts(fun)</code></dt> - <dd>Returns an object describing the tracked optimizations of <code>fun</code>, if any. If <code>fun</code> is not a scripted function or has not been compiled by Ion, <code>null</code> is returned.</dd> - <dt><code>dumpScopeChain(obj)</code></dt> - <dd>Prints the scope chain of an interpreted function or a module.</dd> - <dt><code>crash([message])</code></dt> - <dd>Crashes the process with a <code>MOZ_CRASH</code>.</dd> - <dt><code>setARMHwCapFlags("flag1,flag2 flag3")</code></dt> - <dd>On non-ARM, no-op. On ARM, set the hardware capabilities. The list of flags is available by calling this function with <code>help</code> as the flag's name</dd> - <dt><code>wasmLoop(filename, imports)</code></dt> - <dd>Performs an AFL-style persistent loop reading data from the given file and passing it to the<code>wasmEval</code> function together with the specified imports object.</dd> -</dl> - -<h2 id="テスト用関数">テスト用関数</h2> - -<p>Testing functions are available also on Firefox via <code>Components.utils.getJSTestingFunctions()</code></p> - -<h3 id="Functions_always_available_2">Functions always available</h3> - -<dl> - <dt><code>gc([obj] | 'zone' [, 'shrinking'])</code></dt> - <dd>Run the garbage collector. When obj is given, GC only its zone. If <code>zone</code> is given, GC any zones that were scheduled for GC via schedulegc. If <code>shrinking</code> is passed as the optional second argument, perform a shrinking GC rather than a normal GC.</dd> - <dt><code>minorgc([aboutToOverflow])</code></dt> - <dd>Run a minor collector on the Nursery. When <code>aboutToOverflow</code> is true, marks the store buffer as about-to-overflow before collecting.</dd> - <dt><code>gcparam(name [, value])</code></dt> - <dd>Wrapper for <code>JS_[GS]etGCParameter</code>. The name is one of: - <ul> - <li>maxBytes</li> - <li>maxMallocBytes</li> - <li>gcBytes</li> - <li>gcNumber</li> - <li>mode</li> - <li>unusedChunks</li> - <li>totalChunks</li> - <li>sliceTimeBudget</li> - <li>markStackLimit</li> - <li>highFrequencyTimeLimit</li> - <li>highFrequencyLowLimit</li> - <li>highFrequencyHighLimit</li> - <li>highFrequencyHeapGrowthMax</li> - <li>highFrequencyHeapGrowthMin</li> - <li>lowFrequencyHeapGrowth</li> - <li>dynamicHeapGrowth</li> - <li>dynamicMarkSlice</li> - <li>allocationThreshold</li> - <li>minEmptyChunkCount</li> - <li>maxEmptyChunkCount</li> - <li>compactingEnabled</li> - <li>refreshFrameSlicesEnabled</li> - </ul> - </dd> - <dt><code>relazifyFunctions(...)</code></dt> - <dd>Perform a GC and allow relazification of functions. Accepts the same arguments as <code>gc()</code>.</dd> - <dt><code>getBuildConfiguration()</code></dt> - <dd>Return an object describing some of the configuration options SpiderMonkey was built with.</dd> - <dt><code>hasChild(parent, child)</code></dt> - <dd>Return <code>true</code> if <code>child</code> is a child of <code>parent</code>, as determined by a call to <code>TraceChildren</code></dd> - <dt><code>setSavedStacksRNGState(seed)</code></dt> - <dd>Set this compartment's <code>SavedStacks</code>' RNG state.</dd> - <dt><code>getSavedFrameCount()</code></dt> - <dd>Return the number of <code>SavedFrame</code> instances stored in this compartment's <code>SavedStacks</code> cache.</dd> - <dt><code>saveStack([maxDepth [, compartment]])</code></dt> - <dd>Capture a stack. If <code>maxDepth</code> is given, capture at most <code>maxDepth</code> number of frames. If <code>compartment</code> is given, allocate the <code>js::SavedFrame</code> instances with the given object's compartment.</dd> - <dt><code>saveStack(object [, shouldIgnoreSelfHosted = true]])</code></dt> - <dd>Capture a stack back to the first frame whose principals are subsumed by the object's compartment's principals. If <code>shouldIgnoreSelfHosted</code> is given, control whether self-hosted frames are considered when checking principals.</dd> - <dt><code>callFunctionFromNativeFrame(function)</code></dt> - <dd>Call <code>function</code> with a (C++-)native frame on stack. Required for testing that <code>SaveStack</code> properly handles native frames.</dd> - <dt><code>callFunctionWithAsyncStack(function, stack, asyncCause)</code></dt> - <dd>Call <code>function</code>, using the provided stack as the async stack responsible for the call, and propagate its return value or the exception it throws. The function is called with no arguments, and <code>this</code> is <code>undefined</code>. The specified <code>asyncCause</code> is attached to the provided stack frame.</dd> - <dt><code>enableTrackAllocations()</code></dt> - <dd>Start capturing the JS stack at every allocation. Note that this sets an object metadata callback that will override any other object metadata callback that may be set.</dd> - <dt><code>disableTrackAllocations()</code></dt> - <dd>Stop capturing the JS stack at every allocation.</dd> - <dt><code>makeFinalizeObserver()</code></dt> - <dd>Get a special object whose finalization increases the counter returned by the <code>finalizeCount</code> function.</dd> - <dt><code>finalizeCount()</code></dt> - <dd>Return the current value of the finalization counter that is incremented each time an object returned by the <code>makeFinalizeObserver</code> is finalized.</dd> - <dt><code>resetFinalizeCount()</code></dt> - <dd>Reset the value returned by <code>finalizeCount()</code>.</dd> - <dt><code>gcPreserveCode()</code></dt> - <dd>Preserve JIT code during garbage collections.</dd> - <dt><code>startgc([n [, 'shrinking']])</code></dt> - <dd>Start an incremental GC and run a slice that processes about <code>n</code> objects. If <code>shrinking</code> is passesd as the optional second argument, perform a shrinking GC rather than a normal GC.</dd> - <dt><code>gcslice([n])</code></dt> - <dd>Start or continue an an incremental GC, running a slice that processes about <code>n</code> objects.</dd> - <dt><code>abortgc()</code></dt> - <dd>Abort the current incremental GC.</dd> - <dt><code>fullcompartmentchecks(true|false)</code></dt> - <dd>If <code>true</code>, check for compartment mismatches before every GC.</dd> - <dt><code>nondeterministicGetWeakMapKeys(weakmap)</code></dt> - <dd>Return an array of the keys in the given WeakMap.</dd> - <dt><code>internalConst(name)</code></dt> - <dd>Query an internal constant for the engine. See <code>InternalConst</code> source for the list of constant names.</dd> - <dt><code>isProxy(obj)</code></dt> - <dd>If <code>true</code>, <code>obj</code> is a proxy of some sort</dd> - <dt><code>dumpHeap(['collectNurseryBeforeDump'], [filename])</code></dt> - <dd>Dump reachable and unreachable objects to the named file, or to <code>stdout</code>. If <code>collectNurseryBeforeDump</code> is specified, a minor GC is performed first, otherwise objects in the nursery are ignored.</dd> - <dt><code>terminate()</code></dt> - <dd>Terminate JavaScript execution, as if we had run out of memory or been terminated by the slow script dialog.</dd> - <dt><code>readSPSProfilingStack()</code></dt> - <dd>Reads the jit stack using <code>ProfilingFrameIterator</code>.</dd> - <dt><code>enableOsiPointRegisterChecks()</code></dt> - <dd>Emit extra code to verify live regs at the start of a VM call are not modified before its <code>OsiPoint</code>.</dd> - <dt><code>displayName(fn)</code></dt> - <dd>Gets the display name for a function, which can possibly be a guessed or inferred name based on where the function was defined. This can be different from the <code>name</code> property on the function.</dd> - <dt><code>isAsmJSCompilationAvailable</code></dt> - <dd>Returns whether asm.js compilation is currently available or whether it is disabled (e.g., by the debugger).</dd> - <dt><code>isSimdAvailable</code></dt> - <dd>Returns <code>true</code> if SIMD extensions are supported on this platform.</dd> - <dt><code>getCompilerOptions()</code></dt> - <dd>Return an object describing some of the JIT compiler options.</dd> - <dt><code>isAsmJSModule(fn)</code></dt> - <dd>Returns whether the given value is a function containing <code>"use asm"</code> that has been validated according to the asm.js spec.</dd> - <dt><code>isAsmJSModuleLoadedFromCache(fn)</code></dt> - <dd>Return whether the given asm.js module function has been loaded directly from the cache. This function throws an error if fn is not a validated asm.js module.</dd> - <dt><code>isAsmJSFunction(fn)</code></dt> - <dd>Returns whether the given value is a nested function in an asm.js module that has been both compile- and link-time validated.</dd> - <dt><code>wasmIsSupported()</code></dt> - <dd>Returns a boolean indicating whether WebAssembly is supported on the current device.</dd> - <dt><code>wasmTextToBinary(str)</code></dt> - <dd>Translates the given text wasm module into its binary encoding.</dd> - <dt><code>wasmBinaryToText(bin)</code></dt> - <dd>Translates binary encoding to text format</dd> - <dt><code>wasmExtractCode(module)</code></dt> - <dd>Extracts generated machine code from WebAssembly.Module.</dd> - <dt><code>isLazyFunction(fun)</code></dt> - <dd><code>True</code> if fun is a lazy <code>JSFunction</code>.</dd> - <dt><code>isRelazifiableFunction(fun)</code></dt> - <dd><code>Ture</code> if fun is a <code>JSFunction</code> with a relazifiable <code>JSScript</code>.</dd> - <dt><code>enableShellAllocationMetadataBuilder()</code></dt> - <dd>Use <code>ShellAllocationMetadataBuilder</code> to supply metadata for all newly created objects.</dd> - <dt><code>getAllocationMetadata(obj)</code></dt> - <dd>Get the metadata for an object.</dd> - <dt><code>bailout()</code></dt> - <dd>Force a bailout out of ionmonkey (if running in ionmonkey).</dd> - <dt><code>bailAfter(number)</code></dt> - <dd>Start a counter to bail once after passing the given amount of possible bailout positions in ionmonkey.</dd> - <dt><code>inJit()</code></dt> - <dd>Returns <code>true</code> when called within (jit-)compiled code. When jit compilation is disabled this function returns an error string. This function returns <code>false</code> in all other cases. Depending on truthiness, you should continue to wait for compilation to happen or stop execution.</dd> - <dt><code>inIon()</code></dt> - <dd>Returns <code>true</code> when called within ion. When ion is disabled or when compilation is abnormally slow to start, this function returns an error string. Otherwise, this function returns <code>false</code>. This behaviour ensures that a falsy value means that we are not in ion, but expect a compilation to occur in the future. Conversely, a truthy value means that we are either in ion or that there is litle or no chance of ion ever compiling the current script.</dd> - <dt><code>assertJitStackInvariants()</code></dt> - <dd>Iterates the Jit stack and check that stack invariants hold.</dd> - <dt><code>setCompilerOption(option, number)</code></dt> - <dd>Set a compiler option indexed in JSCompileOption enum to a number.</dd> - <dt><code>setIonCheckGraphCoherency(bool)</code></dt> - <dd>Set whether Ion should perform graph consistency (DEBUG-only) assertions. These assertions are valuable and should be generally enabled, however they can be very expensive for large (wasm) programs.</dd> - <dt><code>serialize(data, [transferables, [policy]])</code></dt> - <dd>Serialize <code>data</code> using <code>JS_WriteStructuredClone</code>. Returns a structured clone buffer object. <code>policy</code> must be an object. The following keys' string values will be used to determine whether the corresponding types may be serialized (value <code>allow</code>, the default) or not (value <code>deny</code>). If denied types are encountered a TypeError will be thrown during cloning. Valid keys: <code>SharedArrayBuffer</code>.</dd> - <dt><code>deserialize(clonebuffer)</code></dt> - <dd>Deserialize data generated by serialize.</dd> - <dt><code>detachArrayBuffer(buffer)</code></dt> - <dd>Detach the given <code>ArrayBuffer</code> object from its memory, i.e. as if it had been transferred to a WebWorker.</dd> - <dt><code>helperThreadCount()</code></dt> - <dd>Returns the number of helper threads available for off-main-thread tasks.</dd> - <dt><code>reportOutOfMemory()</code></dt> - <dd>Report OOM, then clear the exception and return undefined. For crash testing.</dd> - <dt><code>throwOutOfMemory()</code></dt> - <dd>Throw out of memory exception, for OOM handling testing.</dd> - <dt><code>reportLargeAllocationFailure()</code></dt> - <dd>Call the large allocation failure callback, as though a large malloc call failed, then return undefined. In Gecko, this sends a memory pressure notification, which can free up some memory.</dd> - <dt><code>findPath(start, target)</code></dt> - <dd>Return an array describing one of the shortest paths of GC heap edges from <code>start</code> to <code>target</code>, or <code>undefined</code> if <code>target</code> is unreachable from <code>start</code>. Each element of the array is either of the form: <code>{ node: {object or string}, edge: {string describing edge from node} }</code> , if the node is a JavaScript object or value; or of the form: <code>{ type: {string describing node}, edge: {string describing edge} }</code> , if the node is some internal thing that is not a proper JavaScript value (like a shape or a scope chain element). The destination of the i'th array element's edge is the node of the i+1'th array element; the destination of the last array element is implicitly <code>target</code>.</dd> - <dt><code>shortestPaths(start, targets, maxNumPaths)</code></dt> - <dd>Return an array of arrays of shortest retaining paths. There is an array of shortest retaining paths for each object in <code>targets</code>. The maximum number of paths in each of those arrays is bounded by <code>maxNumPaths</code>. Each element in a path is of the form <code>{ predecessor, edge }</code>.</dd> - <dt><code>sharedMemoryEnabled()</code></dt> - <dd>Return true if <code>SharedArrayBuffer</code> and Atomics are enabled</dd> - <dt><code>evalReturningScope(scriptStr, [global])</code></dt> - <dd>Evaluate the script in a new scope and return the scope. If <code>global</code> is present, clone the script to <code>global</code> before executing.</dd> - <dt><code>cloneAndExecuteScript(source, global)</code></dt> - <dd>Compile <code>source</code> in the current compartment, clone it into <code>global</code>'s compartment, and run it there.</dd> - <dt><code>backtrace()</code></dt> - <dd>Dump out a brief backtrace.</dd> - <dt><code>getBacktrace([options])</code></dt> - <dd>Return the current stack as a string. Takes an optional options object, which may contain any or all of the boolean properties <code>options.args</code> - show arguments to each function <code>options.locals</code> - show local variables in each frame <code>options.thisprops</code> - show the properties of the <code>this</code> object of each frame</dd> - <dt><code>byteSize(value)</code></dt> - <dd>Return the size in bytes occupied by <code>value</code>, or <code>undefined</code> if value is not allocated in memory.</dd> - <dt><code>byteSizeOfScript(f)</code></dt> - <dd>Return the size in bytes occupied by the function <code>f</code>'s JSScript.</dd> - <dt><code>setImmutablePrototype(obj)</code></dt> - <dd>Try to make obj's <code>[[Prototype]]</code> immutable, such that subsequent attempts to change it will fail. Return <code>true</code> if obj's <code>[[Prototype]]</code> was successfully made immutable (or if it already was immutable), <code>false</code> otherwise. Throws in case of internal error, or if the operation doesn't even make sense (for example, because the object is a revoked proxy).</dd> - <dt><code>setLazyParsingDisabled(bool)</code></dt> - <dd>Explicitly disable lazy parsing in the current compartment. The default is that lazy parsing is not explicitly disabled.</dd> - <dt><code>setDiscardSource(bool)</code></dt> - <dd>Explicitly enable source discarding in the current compartment. The default is that source discarding is not explicitly enabled.</dd> - <dt><code>getConstructorName(object)</code></dt> - <dd>If the given object was created with <code>new Ctor</code>, return the constructor's display name. Otherwise, return <code>null</code>.</dd> - <dt><code>allocationMarker([options])</code></dt> - <dd>Return a freshly allocated object whose <code>[[Class]]</code> name is <code>AllocationMarker</code>. Such objects are allocated only by calls to this function, never implicitly by the system, making them suitable for use in allocation tooling tests. Takes an optional options object which may contain the following properties: * nursery: bool, whether to allocate the object in the nursery</dd> - <dt><code>setGCCallback({action:"...", options...})</code></dt> - <dd>Set the GC callback. action may be: - <dl> - <dt><code>minorGC</code></dt> - <dd>run a nursery collection</dd> - <dt><code>majorGC</code></dt> - <dd>run a major collection, nesting up to a given <code>depth</code></dd> - </dl> - </dd> - <dt><code>getLcovInfo(global)</code></dt> - <dd>Generate LCOV tracefile for the given compartment. If no global are provided then the current global is used as the default one.</dd> - <dt><code>getModuleEnvironmentNames(module)</code></dt> - <dd>Get the list of a module environment's bound names for a specified module.</dd> - <dt><code>getModuleEnvironmentValue(module, name)</code></dt> - <dd>Get the value of a bound name in a module environment.</dd> - <dt><code>enableForEach()</code></dt> - <dd>Enables the deprecated, non-standard for-each.</dd> - <dt><code>disableForEach()</code></dt> - <dd>Disables the deprecated, non-standard for-each.</dd> -</dl> - -<h3 id="Functions_available_only_if_SPIDERMONKEY_PROMISE_is_defined">Functions available only if SPIDERMONKEY_PROMISE is defined</h3> - -<dl> - <dt><code>settlePromiseNow(promise)</code></dt> - <dd>'Settle' a <code>promise</code> immediately. This just marks the promise as resolved with a value of <code>undefined</code> and causes the firing of any <code>onPromiseSettled</code> hooks set on <code>Debugger</code> instances that are observing the given promise's global as a debuggee.</dd> - <dt><code>getWaitForAllPromise(densePromisesArray)</code></dt> - <dd>Calls the <code>GetWaitForAllPromise</code> JSAPI function and returns the result Promise.</dd> - <dt><code>resolvePromise(promise, resolution)</code></dt> - <dd>Resolve a <code>Promise</code> by calling the JSAPI function <code>JS::ResolvePromise</code>.</dd> - <dt><code>rejectPromise(promise, reason)</code></dt> - <dd>Reject a <code>Promise</code> by calling the JSAPI function <code>JS::RejectPromise</code>.</dd> -</dl> - -<h3 id="Functions_available_only_if_SPIDERMONKEY_PROMISE_is_not_defined">Functions available only if SPIDERMONKEY_PROMISE is not defined</h3> - -<dl> - <dt><code>makeFakePromise()</code></dt> - <dd>Create an object whose <code>[[Class]]</code> name is <code>'Promise'</code> and call <code>JS::dbg::onNewPromise</code> on it before returning it. It doesn't actually have any of the other behavior associated with promises.</dd> - <dt><code>settleFakePromise(promise)</code></dt> - <dd>'Settle' a <code>promise</code> created by <code>makeFakePromise()</code>. This doesn't have any observable effects outside of firing any <code>onPromiseSettled</code> hooks set on <code>Debugger</code> instances that are observing the given promise's global as a debuggee.</dd> -</dl> - -<h3 id="Functions_available_only_if_JS_GC_ZEAL_is_defined">Functions available only if JS_GC_ZEAL is defined</h3> - -<dl> - <dt><code>gczeal(level, [N])</code></dt> - <dd>Specifies how zealous the garbage collector should be. Some of these modes can be set simultaneously, by passing multiple level options, e.g. <code>"2;4"</code> will activate both modes 2 and 4. Modes can be specified by name or number. - <p>Values:</p> - - <dl> - <dt><code>0: (None)</code></dt> - <dd>Normal amount of collection (resets all modes)</dd> - <dt><code>1: (Poke)</code></dt> - <dd>Collect when roots are added or removed</dd> - <dt><code>2: (Alloc)</code></dt> - <dd>Collect when every <code>N</code> allocations (default: 100)</dd> - <dt><code>3: (FrameGC)</code></dt> - <dd>Collect when the window paints (browser only)</dd> - <dt><code>4: (VerifierPre)</code></dt> - <dd>Verify pre write barriers between instructions</dd> - <dt><code>5: (FrameVerifierPre)</code></dt> - <dd>Verify pre write barriers between paints</dd> - <dt><code>6: (StackRooting)</code></dt> - <dd>Verify stack rooting</dd> - <dt><code>7: (GenerationalGC)</code></dt> - <dd>Collect the nursery every <code>N</code> nursery allocations</dd> - <dt><code>8: (IncrementalRootsThenFinish)</code></dt> - <dd>Incremental GC in two slices: 1) mark roots 2) finish collection</dd> - <dt><code>9: (IncrementalMarkAllThenFinish)</code></dt> - <dd>Incremental GC in two slices: 1) mark all 2) new marking and finish</dd> - <dt><code>10: (IncrementalMultipleSlices)</code></dt> - <dd>Incremental GC in multiple slices</dd> - <dt><code>11: (IncrementalMarkingValidator)</code></dt> - <dd>Verify incremental marking</dd> - <dt><code>12: (ElementsBarrier)</code></dt> - <dd>Always use the individual element post-write barrier, regardless of elements size</dd> - <dt><code>13: (CheckHashTablesOnMinorGC)</code></dt> - <dd>Check internal hashtables on minor GC</dd> - <dt><code>14: (Compact)</code></dt> - <dd>Perform a shrinking collection every N allocations</dd> - <dt><code>15: (CheckHeapAfterGC)</code></dt> - <dd>Walk the heap to check its integrity after every GC</dd> - <dt><code>16: (CheckNursery)</code></dt> - <dd>Check nursery integrity on minor GC</dd> - </dl> - </dd> - <dt><code>schedulegc([num | obj])</code></dt> - <dd>If num is given, schedule a GC after num allocations. If obj is given, schedule a GC of obj's zone. Returns the number of allocations before the next trigger.</dd> - <dt><code>selectforgc(obj1, obj2, ...)</code></dt> - <dd>Schedule the given objects to be marked in the next GC slice.</dd> - <dt><code>verifyprebarriers()</code></dt> - <dd>Start or end a run of the pre-write barrier verifier.</dd> - <dt><code>verifypostbarriers()</code></dt> - <dd>Does nothing (the post-write barrier verifier has been remove).</dd> - <dt><code>gcstate()</code></dt> - <dd>Report the global GC state.</dd> - <dt><code>deterministicgc(true|false)</code></dt> - <dd>If <code>true</code>, only allow determinstic GCs to run.</dd> -</dl> - -<h3 id="Functions_available_only_if_JS_TRACE_LOGGING_is_defined">Functions available only if JS_TRACE_LOGGING is defined</h3> - -<dl> - <dt><code>startTraceLogger()</code></dt> - <dd>Start logging the mainThread. Note: tracelogging starts automatically. Disable it by setting environment variable <code>TLOPTIONS=disableMainThread</code></dd> - <dt><code>stopTraceLogger()</code></dt> - <dd>Stop logging the mainThread.</dd> -</dl> - -<h3 id="Functions_available_only_in_nightly_build">Functions available only in nightly build</h3> - -<dl> - <dt><code>objectAddress(obj)</code></dt> - <dd>Return the current address of the object. For debugging only--this address may change during a moving GC.</dd> - <dt><code>sharedAddress(obj)</code></dt> - <dd>Return the address of the shared storage of a <code>SharedArrayBuffer</code>.</dd> -</dl> - -<h3 id="Functions_available_only_in_DEBUG_build_2">Functions available only in DEBUG build</h3> - -<dl> - <dt><code>dumpObject()</code></dt> - <dd>Dump an internal representation of an object.</dd> - <dt><code>dumpStringRepresentation(str)</code></dt> - <dd>Print a human-readable description of how the string <code>str</code> is represented.</dd> - <dt><code>setRNGState(seed0, seed1)</code></dt> - <dd>Set this compartment's RNG state.</dd> -</dl> - -<h3 id="Functions_available_only_in_DEBUG_build_or_JS_OOM_BREAKPOINT_is_defined">Functions available only in DEBUG build or JS_OOM_BREAKPOINT is defined</h3> - -<dl> - <dt><code>oomThreadTypes()</code></dt> - <dd>Get the number of thread types that can be used as an argument for <code>oomAfterAllocations()</code> and <code>oomAtAllocation()</code>.</dd> - <dt><code>oomAfterAllocations(count [,threadType])</code></dt> - <dd>After <code>count</code> <code>js_malloc</code> memory allocations, fail every following allocation (return <code>nullptr</code>). The optional thread type limits the effect to the specified type of helper thread.</dd> - <dt><code>oomAtAllocation(count [,threadType])</code></dt> - <dd>After <code>count</code> <code>js_malloc</code> memory allocations, fail the next allocation (return <code>nullptr</code>). The optional thread type limits the effect to the specified type of helper thread.</dd> - <dt><code>resetOOMFailure()</code></dt> - <dd>Remove the allocation failure scheduled by either <code>oomAfterAllocations()</code> or <code>oomAtAllocation()</code> and return whether any allocation had been caused to fail.</dd> - <dt><code>oomTest(function, [expectExceptionOnFailure = true])</code></dt> - <dd>Test that the passed function behaves correctly under OOM conditions by repeatedly executing it and simulating allocation failure at successive allocations until the function completes without seeing a failure. By default this tests that an exception is raised if execution fails, but this can be disabled by passing false as the optional second parameter. This is also disabled when <code>--fuzzing-safe</code> is specified.</dd> -</dl> - -<h3 id="Functions_available_only_in_DEBUG_build_if_--fuzzing-safe_is_not_specified_and">Functions available only in DEBUG build if <code>--fuzzing-safe</code> is not specified and</h3> - -<dl> - <dt><code>parseRegExp(pattern[, flags[, match_only])</code></dt> - <dd>Parses a <code>RegExp</code> pattern and returns a tree, potentially throwing.</dd> - <dt><code>disRegExp(regexp[, match_only[, input]])</code></dt> - <dd>Dumps <code>RegExp</code> bytecode.</dd> -</dl> diff --git a/files/ja/mozilla/qa/chrome_tests/index.html b/files/ja/mozilla/qa/chrome_tests/index.html deleted file mode 100644 index b1d128ba75..0000000000 --- a/files/ja/mozilla/qa/chrome_tests/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Chromeテスト -slug: Mozilla/QA/Chrome_tests -translation_of: Mozilla/QA/Chrome_tests ---- -<h3 id="Introduction" name="Introduction">導入</h3> -<p>Chromeテストは基本的には、Chrome特権付きで動作する<a href="/ja/Mochitest" title="ja/Mochitest">Mochitest</a>です。</p> -<p>Chromeテストスイートは、JavaScriptを用いてアプリケーションのChromeウィンドウをテストできるように設計された、自動テストフレームワークです。現在の所、JavaScriptのコードをFirefoxのメインのブラウザウィンドウと同じスコープで実行し、結果を<a href="/ja/Mochitest" title="ja/Mochitest">Mochitestテストフレームワーク</a>と同じ関数を使って報告することができます。ChromeテストスイートはMochitest frameworkからのruntests.pyに依存しています。</p> -<h3 id="Running_the_chrome_tests" name="Running_the_chrome_tests">Chromeテストを実行する</h3> -<p>Mochitestを実行するには、あなたが行った変更を含めて<a href="/ja/Build_Documentation" title="ja/Build_Documentation">Mozillaをビルドする</a>必要があります。カレントディレクトリを <code>$(OBJDIR)/_tests/testing/mochitest</code> に移動して、以下のコマンドを実行してください:</p> -<pre class="eval">python runtests.py --chrome -</pre> -<p>このコマンドは、あなたがビルドしたMozillaを起動した上で、「chrome tests」というウィンドウを開きます。「run all tests」リンクをクリックするとテストの実行が開始され、実行結果はそのウィンドウ内で報告されます。結果をファイルに出力するためのオプ ションも利用可能です。その場合は上記のコマンドに加えて、Mochitestで使用されるのと同じパラメータ(--log-file=/path/to /file)を指定してください。 <em>(ログ出力はまだ動作しません。{{ Bug(423497) }}を参照してください。)</em></p> -<p>テストハーネス{{ 訳注("テスト実行用プログラム") }}に対して、ユーザの手動操作無しで起動時にテストを自動実行するよう指示するには、パラメータとして --autorun オプションを指定します。テストを完全に自動化するために、このオプションと同時に --close-when-done オプションを指定する事もできます。</p> -<p>パスを --test-path パラメータで渡すことで、テストを一つだけ実行することもできます。例:</p> -<pre class="eval">python runtests.py --chrome --test-path=toolkit/content/tests/chrome/test_largemenu.xul -</pre> -<p>この例はtest_largemenu.xulだけを実行します。</p> -<h3 id="Writing_chrome_tests" name="Writing_chrome_tests">Chromeテストを書く</h3> -<p>Chromeテストは基本的には、Chrome特権付きで動作する、すなわち、コードとUIが <code><a class=" external" rel="freelink">chrome://</a></code> URIで参照される<a href="/ja/Mochitest" title="ja/Mochitest">Mochitest</a>です。基本的なXULのテストファイルはこのようなものです:</p> -<pre class="eval"><?xml version="1.0"?> -<?xml-stylesheet href="<a class=" external" rel="freelink">chrome://global/skin</a>" type="text/css"?> -<?xml-stylesheet href="<a class=" external" rel="freelink">chrome://mochikit/content/tests/SimpleTest/test.css</a>" type="text/css"?> - -<window title="テストのデモ" - xmlns="<a class=" external" href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" rel="freelink">http://www.mozilla.org/keymaster/gat...re.is.only.xul</a>" - onload="RunTest();"> - <title>テストのデモ</title> - - <script type="application/javascript" - src="<a class=" external" rel="freelink">chrome://mochikit/content/MochiKit/packed.js</a>"/> - <script type="application/javascript" - src="<a class=" external" rel="freelink">chrome://mochikit/content/tests/Simp.../SimpleTest.js</a>"/> - - <script type="application/javascript"> - <![CDATA[ - SimpleTest.waitForExplicitFinish(); - - function RunTest() - { - ok (true == 1, "this passes"); - todo(true === 1, "this fails"); - SimpleTest.finish(); - } - ]]> - </script> - - <body xmlns="<a class=" external" href="http://www.w3.org/1999/xhtml" rel="freelink">http://www.w3.org/1999/xhtml</a>"> - <p id="display"></p> - <div id="content" style="display: none"></div> - <pre id="test"></pre> - </body> -</window> -</pre> -<p>「RunTest」関数はテストハーネスではなく、テストの<code>onload</code>イベントハンドラにより実行されます。</p> -<p>比較関数はMochitestsでサポートされているものと全く同じ物を使えます。詳細を知りたい場合は、Mochitestのドキュメントの<a href="/ja/Mochitest#How_do_the_comparison_functions_work.3F" title="ja/Mochitest#How_do_the_comparison_functions_work.3F">比較関数がどのように動作するか</a>を参照してください。 グローバルのスコープに定義された「EventUtils」オブジェクトから、<a class="external" href="http://lxr.mozilla.org/mozilla/source/testing/mochitest/tests/SimpleTest/EventUtils.js">EventUtilsヘルパ関数</a> を利用する事もできます。</p> -<p>テストスイートでは、Mochitestで用意されている関数と同じ名前の関数を使う事で、非同期のテストも実行することができます。RunTest()の実行が終わるまで待ってから実行結果の報告を受け取りたい場合、SimpleTest.waitForExplicitFinish()を呼んでください。テストが完了した後にはSimpleTest.finish()を呼びます。テストが完了するまであまりに長い時間がかかった場合、テストハーネスはそのテストをFAILED(失敗) と見なす事に留意してください(現在の所、タイムアウトまでの時間は15秒です)。</p> -<p>テスト内で投げられたあらゆる例外は、捕捉され、テストにおいて失敗として報告されます。テストの実行コンテキストの外で投げられた例外(タイムアウトした場合、イベントハンドラ内での例外など)は捕捉されませんが、タイムアウトしたテストについては、それらがfinish()の実行を妨げた場合は実行結果に おいて報告されます。</p> -<p>テストファイルの名前は「test_」で始まり、拡張子は「.xul」でなければなりません。このパターンに一致しないファイルはテスト実行環境によって無視されますが、それ以外の名前のXULファイルを置くこともできます。例えば、test_demo.xulからopenDialogによって開かれるXULウィンドウのファイルはwindow_demo.xulと名付けるとよいでしょう。「test_bug123456.xul」のように、バグの番号をファイル名に書く事が推奨されます。</p> -<h3 id="Adding_a_new_chrome_test_to_the_tree" name="Adding_a_new_chrome_test_to_the_tree">新しいChromeテストをツリーに追加する</h3> -<p>新しいChromeテストをツリーに追加するには、Browser chromeテストが _tests/testing/mochitest/mochitest ではなく _tests/testing /mochitest/chrome にコピーされるようにするということに留意しながら、<a href="/ja/Mochitest#Adding_new_Mochitest_tests_to_the_tree" title="ja/Mochitest#Adding_new_Mochitest_tests_to_the_tree">Mochitestの説明</a>に従ってください。</p> -<p> </p> -<p>{{ languages( { "en": "en/Chrome_tests" } ) }}</p> diff --git a/files/ja/mozilla/qa/index.html b/files/ja/mozilla/qa/index.html deleted file mode 100644 index cffd85dd80..0000000000 --- a/files/ja/mozilla/qa/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: 'QA: Mozilla 製品の品質管理' -slug: Mozilla/QA -tags: - - QA - - Testing -translation_of: Mozilla/QA ---- -<p>あなたが Mozilla プロジェクトを手伝うために品質保証 (QA) 部門でできることはたくさんあります。QA に参加するにあたって、必ずしもコードが書ける必要はありません。HTML や他の Web テクノロジーに関する知識が必要ないこともいくつかあります。テストや他の QA 活動で私たちを助けてもらえるなら、最初に、<a href="http://www.mozilla-japan.org/quality/">Mozilla 品質保証</a> と <a href="http://www.mozilla-japan.org/quality/help/">品質保証の支援</a> のページを読んでください。</p> - -<p>ここでは、QAチームに参加してFirefoxをテストするのに役立つ記事やツールを見つけ出し、各リリースができるだけ良いものであることを確認します。</p> - -<h2 id="Get_started">Get started</h2> - -<ul class="card-grid"> - <li><span>How can I help test?</span> - - <p>There are lots of ways for you to become a <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/How_can_I_help_test_">community contributor</a> to the Mozilla quality team.</p> - </li> - <li><span>Bugs</span> - <p>All Mozilla projects use <a href="https://bugzilla.mozilla.org/">Bugzilla</a> to track bugs. Learn how to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">report a bug</a> and get familiar with <a href="https://developer.mozilla.org/en-US/docs/What_to_do_and_what_not_to_do_in_Bugzilla">what to do in Bugzilla</a>.</p> - </li> - <li><span>Events</span> - <p>Get involved in our weekly <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_Verification_Day">Bug Verification Day</a> or <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_Triage_Day">Bug Triage Day</a>. You may even <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Organizing_a_Testday">organize a testday</a> for your local community!</p> - </li> - <li><span>IRC</span> - <p><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Getting_Started_with_IRC">Get started with IRC</a>, the primary form of communication for members of the Mozilla community.</p> - </li> -</ul> - -<h2 id="バグ">バグ</h2> - -<div class="row topicpage-table"> -<div class="section"> -<h3 id="バグの報告">バグの報告</h3> - -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Bugzilla">Bugzilla</a></dt> - <dd>All Mozilla projects use <a href="https://bugzilla.mozilla.org/">Bugzilla</a> to track bugs. You will need to <a href="https://bugzilla.mozilla.org/createaccount.cgi">create an account with Bugzilla</a> in order to report bugs and triage them.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">Bug writing guidelines</a></dt> - <dd>The more effectively a bug is reported, the more likely that an engineer will actually fix it. By following these guidelines, you can help ensure that your bugs stay at the top of the Mozilla engineers' heap, and get fixed.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/A_Bugs_Life" title="/en-US/docs/Mozilla/QA/A_Bugs_Life">A Bug's Life</a></dt> - <dd>This tutorial will give an overview of what happens in the states that a bug will go through as well as how it will go from one to the next within its total life. It also explains the meaning of flags/keywords used in QA.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Filing_Crash_Bugs">Filing Crash Bugs</a></dt> - <dd>This document lists guidelines and tips on how to file bug reports for crashes in a way that helps in debugging and fixing the reported issue.</dd> -</dl> -</div> - -<div class="section"> -<h3 id="バグのトリアージ">バグのトリアージ</h3> - -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Confirming_unconfirmed_bugs" title="en-US/docs/Confirming unconfirmed bugs">Confirming unconfirmed bugs</a></dt> - <dd>Identify useful bug reports and close the rest.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox" title="/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox">Triaging Bugs for Firefox</a></dt> - <dd>Information about the entire bug triaging process – from processing incoming bugs to narrowing down the steps to reproducing bugs.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Screening_duplicate_bugs">Screening duplicate bugs</a></dt> - <dd>Help get bugs fixed faster by screening incoming reports for duplicates.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/What_to_do_and_what_not_to_do_in_Bugzilla">General Guidelines</a></dt> - <dd>What to do and what not to do in Bugzilla.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="手動テスト">手動テスト</h2> - -<div class="row topicpage-table"> -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Test_Case_Writing_Primer">Manual Test Case Writing Primer</a></dt> - <dd>How to write proper manual test cases</dd> -</dl> -</div> - -<div class="section"> -<dl> - <dt><a href="https://testrail.stage.mozaws.net/">TestRail</a></dt> - <dd>Mozilla QA's manual test cases reside in TestRail. You will need an LDAP account in order to login and execute test cases. Learn more on the <a href="https://wiki.mozilla.org/TestEngineering/Testrail">TestRail wiki page</a>.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="自動テスト">自動テスト</h2> - -<div class="row topicpage-table"> -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Automated_testing" title="/en-US/docs/Mozilla/QA/Automated_testing">Automated testing at Mozilla</a></dt> - <dd>Documentation about creating and using automated tests for Mozilla code.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Running_automated_tests">Running automated tests</a></dt> - <dd> - <p>This page lists the steps required to run Mozilla's automated test suites.</p> - </dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Developing_tests" title="en-US/docs/Developing_Tests">Developing tests</a></dt> - <dd>Ensure that future changes to Mozilla don't break things that currently work correctly.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Avoiding_intermittent_oranges" title="en-US/docs/QA/Avoiding intermittent oranges">Avoiding intermittent test failures</a></dt> - <dd>Suggestions for ways to make your tests more reliable, thereby helping to avoid random, intermittent test failures.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Test_Verification">Test Verification</a></dt> - <dd>When a changeset adds a new test, or modifies an existing test, the test verification (TV) test suite performs additional testing to help find intermittent failures in the modified test as quickly as possible.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Mozharness_FAQ">Mozharness FAQ</a></dt> - <dd>Answers to common questions about Mozharness.</dd> -</dl> -</div> - -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Robocop" title="/en-US/docs/Mozilla/QA/Robocop">Robocop</a></dt> - <dd>Robocop is the automated testing system used for Firefox for Android. Learn its <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Robocop/Code_style_guidelines">code style guidelines</a></dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette">Marionette</a></dt> - <dd>Get started with Marionette UI testing.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/web-platform-tests">web-platform-tests</a></dt> - <dd>Learn how to use the industry standard, cross-browser, cross-platform <a href="http://testthewebforward.org/docs/">Web runtime testing system</a> from the <a href="https://www.w3.org/">W3C</a> used by Mozilla and others to ensure browser interoperability.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/external-media-tests">External Media Tests</a></dt> - <dd>Get started testing HTML5-based video elements using VideoPuppeteer, a <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette">Marionette</a>- -based test suite used to test sites like YouTube and Netflix.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Chrome_tests">Chrome tests</a></dt> - <dd>A chrome test is basically a <a href="https://developer.mozilla.org/en-US/docs/Mochitest" title="en/Mochitest">Mochitest</a> running with chrome privileges.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Firefox_QE">Firefox QE</h2> - -<div class="row topicpage-table"> -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox" title="/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox">Triaging Bugs for Firefox</a></dt> - <dd>Information about the entire bug triaging process – from processing incoming bugs to narrowing down the steps to reproduce a bug.</dd> -</dl> - -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Tips_and_Tricks">Tips and Tricks</a></dt> - <dd>These tips and tricks will make your life easier when you are testing.</dd> -</dl> -<a href="https://developer.mozilla.org/en-US/docs/Downloading_Nightly_or_Trunk_Builds">Downloading Nightly or Trunk Builds</a> - -<dl> - <dd>Every 24 hours, a "nightly" build is created that testers all over the world download and test, reporting as they go along on any bugs that hit them. </dd> -</dl> -</div> - -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options">Command Line Options</a></dt> - <dd>Command line options are used to specify various startup options for Firefox.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem">Reporting a Performance Problem</a></dt> - <dd>This article will guide you in reporting a performance problem using the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler extension</a>.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Crash_reporting">Crash reporting</a></dt> - <dd>Firefox ships with an open-source crash reporting system.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Firefox_for_Android">Firefox for Android</h2> - -<div class="row topicpage-table"> -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Mobile_Firefox">Mobile Firefox</a></dt> - <dd>Firefox for Android is the mobile version of Firefox with a native Android look and feel.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_for_Android/Compatibility_Testing">Compatibility Testing</a></dt> - <dd>Help us identify websites that do not work well in Firefox by reporting the specific issues that you find in your investigation.</dd> -</dl> -</div> - -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Fennec_Android:_Logging_with_the_Android_Debug_and_Logcat">Logging with the Android Debug Bridge and Logcat</a></dt> - <dd>This article will provide a walkthrough in downloading and setting up an environment to which one can gain access to and view Android system logs.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Firefox_Mobile:_Enabling_the_Error_Console">Enabling the Error Console</a></dt> - <dd>See the Mozilla Hacks article on <a class="external external-icon" href="https://hacks.mozilla.org/2012/08/remote-debugging-on-firefox-for-android/">Remote Debugging on Firefox for Android</a> for web content. If you need to debug the Firefox browser itself use Android's <a class="external external-icon" href="http://developer.android.com/tools/help/logcat.html">adb logcat</a>.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Firefox_OS">Firefox OS</h2> - -<div class="row topicpage-table"> -<div class="section"> -<h3 id="手動テスト_2">手動テスト</h3> - -<dl> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Simulator_vs_Emulator_vs_Device">Simulator vs Emulator vs Device</a></dt> - <dd>These are three basic options when it comes to getting a Firefox OS environment in order to work on, or developing for, Firefox OS.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging">Debugging</a></dt> - <dd>Discover the different tools at your disposal to debug your Firefox OS code.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Reporting Bugs</a></dt> - <dd>This article provides a guide to filing bugs against the Firefox OS project, including Gaia and B2G.</dd> -</dl> -</div> - -<div class="section"> -<h3 id="プラットフォーム_(Gecko)">プラットフォーム (Gecko)</h3> - -<dl> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing">Automated Testing</a></dt> - <dd>Learn various aspects of testing Firefox OS, including running different tests, automation, and result reporting and tracking.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests">Gaia Performance Tests</a></dt> - <dd>This article provides information about running performance tests on Gaia, as well as how to create new tests.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Feature_support_chart">Feature Support Chart</a></dt> - <dd>There are several different builds of Firefox OS you can download or build for yourself, and there are some differences between the types of features available on each device.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Web_QA">Web QA</h2> - -<div class="row topicpage-table"> -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Reducing_testcases" title="en-US/docs/Reducing testcases">Reducing testcases</a></dt> - <dd>Improve bug reports by turning broken web pages into simple testcases, which can help developers understand the bug and can also be used for creating automated tests.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Managing_Web_QA_XFails">Managing XFails</a></dt> - <dd>One of the ongoing tasks of the Web QA department is managing xfails. This document will explain what xfails are, and describe the steps one can take to investigate and update them.</dd> -</dl> -</div> - -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Running_Web_QA_automated_tests">Running Automated Tests</a></dt> - <dd>So you’re interested in contributing to Mozilla Web QA automation projects but don’t know where to start? This doc will help you get up and running a set of tests locally.</dd> -</dl> -</div> -</div> - -<hr> -<h2 id="Glossary">Glossary</h2> - -<div class="section"> -<dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Glossary/Smoke_Test">Smoke Test</a></dt> -</dl> -</div> - -<p><span class="alllinks"><a href="https://developer.mozilla.org/en-US/docs/tag/QA" title="en-US/docs/tag/QA">View all documents tagged QA</a></span></p> - -<p><span class="alllinks"><a href="https://developer.mozilla.org/en-US/docs/tag/QA:Tools" title="en-US/docs/tag/QA:Tools">View all documents tagged QA:Tools</a></span></p> diff --git a/files/ja/mozilla/rust/index.html b/files/ja/mozilla/rust/index.html deleted file mode 100644 index 8d82a99e66..0000000000 --- a/files/ja/mozilla/rust/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Rustとは -slug: Mozilla/Rust -tags: - - '#rust' - - '#言語' - - #Mozilla - - #Web開発 - - #システム - - #並列処理 -translation_of: Mozilla/Rust ---- -<p><img alt="Rust logo" src="https://www.rust-lang.org/logos/rust-logo-blk.svg" style="float: left; height: 150px; width: 150;">RustはMozillaとボランティアによって作成された、オープンソースのプログラミング言語です。開発者が最新のマルチコアプロセッサの強力な機能を最大限に活用して、高速で安全なアプリケーションを作成できるように設計されており、誤ったセグメンテーションを防ぎ、スレッドの安全性を保証します。一貫して習得しやすい構文です。</p> - -<p>加えて、Rustは最小のランタイムサイズで、ゼロコスト抽象化、データの受け渡し、メモリの安全性確保、データ競合のないスレッド、特性ベースの総称、パターンマッチング、型推論、および効率的なCバインディングを提供します。</p> - -<p>Rustを学ぶために以下のことができます。</p> - -<ul> - <li>Rustが提供する能力と利点の詳細については、以下のビデオをご覧ください。</li> - <li>オンラインで<a href="https://doc.rust-lang.org/book/">Rust Programming Language</a>を読んでください。</li> - <li><a href="https://www.rust-lang.org/">Rustの公式Webサイト</a>でRustコンパイラーをダウンロードし、例を調べて何ができるかを学んでください。</li> -</ul> - -<h2 id="Rustとシステム開発の未来">Rustとシステム開発の未来</h2> - -<p>{{EmbedYouTube("8EPsnf_ZYU0")}}</p> - -<h2 id="Rustの並列処理の能力">Rustの並列処理の能力</h2> - -<p>{{EmbedYouTube("cNeIOt8ZdAY")}}</p> - -<h2 id="RustによるWeb開発">RustによるWeb開発</h2> - -<p>{{EmbedYouTube("FfoXFnzZbBM")}}</p> - -<h2 id="Rustによる安全なシステム開発">Rustによる安全なシステム開発</h2> - -<p>{{EmbedYouTube("P3sfNGtpuxc")}}</p> - -<h2 id="Rustコミュニティー">Rustコミュニティー</h2> - -<p>{{EmbedYouTube("duv0tuPAnO0")}}</p> - -<h2 id="RustとMozillaでプロダクト開発">RustとMozillaでプロダクト開発</h2> - -<p>{{EmbedYouTube("2RhbYpgVpg0")}}</p> diff --git a/files/ja/mozilla/setting_up_an_update_server/index.html b/files/ja/mozilla/setting_up_an_update_server/index.html deleted file mode 100644 index f9cc361743..0000000000 --- a/files/ja/mozilla/setting_up_an_update_server/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: 更新サーバの設定 -slug: Mozilla/Setting_up_an_update_server -tags: - - enterprise -translation_of: Mozilla/Setting_up_an_update_server ---- -<p>このドキュメントの目標は、企業内で独自の更新サーバを構築するための基本的な手順を説明することです。本文では Firefox について説明していますが、Thunderbird にも同様の仕組みが備わっています。</p> -<h2 id="はじめに">はじめに</h2> -<p>Firefox は RESTful な Web サービスを利用して更新サービスを提供しています。Firefox は、XML 形式の更新情報ファイルが置かれている URL を定期的に参照し、そのファイルに記載されている情報に従って更新を行います。</p> -<p>まず、URL の形式について説明しましょう。この URL は、<code>app.update.url</code> という設定項目で以下のように指定されています。</p> -<pre>https://aus2.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml -</pre> -<p>ユーザの環境によって変数に値が代入され、実際に参照する URL が決まります。以下は、Firefox 9 から Firefox 9.0.1 へ更新する際に利用される URL です。</p> -<dl> - <dt> - Windows Vista / 日本語版</dt> - <dd> - <code><a class="link-https" href="https://aus3.mozilla.org/update/3/Firefox/9.0/20111216140209/WINNT_x86-msvc/ja/release/Windows_NT%206.0/default/default/update.xml" rel="freelink">https://aus3.mozilla.org/update/3/Fi...ult/update.xml</a></code></dd> - <dt> - Mac OS X / 日本語版</dt> - <dd> - <code><a class="link-https" href="https://aus2.mozilla.org/update/3/Firefox/9.0/20111216140209/Darwin_Universal-gcc3/ja/release/Darwin%208.11.1/default/default/update.xml" rel="freelink">https://aus2.mozilla.org/update/3/Fi...ult/update.xml</a></code></dd> -</dl> -<p>このドキュメントでは、Firefox 9 の Windows 向け日本語版を例に取って説明します。</p> -<h2 id="クライアントサイドの設定">クライアントサイドの設定</h2> -<p><code>app.update.url</code> の値を自社の URL に変更します。これを変更するには、Firefox 設定エディタ (Firefox のロケーションバーで <code>about:config</code> と入力) を開き、<code>app.update.url.override</code> という名前で新しい文字列形式の設定を作成し、新たな値を指定する必要があります。既定の更新 URL は、上記のように様々な変数が含まれていますが、通常は、製品、バージョン、ロケール、プラットフォームを判別するだけでも十分でしょう。以下、<code>myserver</code> はあなたのサーバに読み替えてください。</p> -<pre>http://myserver/update/%PRODUCT%/%VERSION%/%LOCALE%/%BUILD_TARGET%/update.xml -</pre> -<p><a href="/ja/MCD/Getting_Started" title="ja/MCD/Getting_Started">集中管理機能 (MCD)</a> を使って設定する場合は、サーバサイドの設定ファイル (<code>autoconfig.jsc</code>) に以下の行を追加します。</p> -<pre>lockPref("app.update.url.override", "http://myserver/update/%PRODUCT%/%VERSION%/%LOCALE%/%BUILD_TARGET%/update.xml"); -</pre> -<h2 id="サーバサイドの設定">サーバサイドの設定</h2> -<p>まず、aus2.mozilla.org から、オリジナルの更新情報ファイル (<code>update.xml</code>) を取得してきます。取得元は上記の通りですが、変数のうちバージョンごとに変わるビルド ID は、<a href="/ja/Using_the_Web_Console" title="ja/Using_the_Web_Console">Web コンソール</a> を開いて <code>navigator.buildID</code> と入力することで確認できます。不明な場合は、初期設定の Firefox で <a href="/ja/HTTP_Logging" title="ja/HTTP_Logging">HTTP ログ</a> を有効にし、更新チェックを行って (更新はキャンセルして構いません) Firefox を終了させ、ログから URL を特定します。</p> -<p>取得した <code>update.xml</code> ファイルを、<code>app.update.url.override</code> の設定に合わせてサーバ上に置き、実際の URL にアクセスして XML が表示されることを確認します。また、Firefox 9 の [ヘルプ] メニューから [ソフトウェアの更新を確認] を選択し、更新が見つかることを確認します。</p> -<pre>http://myserver/update/Firefox/9.0/ja/WINNT_x86-msvc/update.xml -</pre> -<pre><?xml version="1.0"?> -<updates> - <update type="minor" displayVersion="9.0.1" appVersion="9.0.1" platformVersion="9.0.1" buildID="20111220165912" detailsURL="https://www.mozilla.com/ja/firefox/9.0.1/releasenotes/"> - <patch type="complete" URL="http://download.mozilla.org/?product=firefox-9.0.1-complete&os=win&lang=ja" hashFunction="SHA512" hashValue="82fb329eb72e417e2d924842998f7afc1b4a8831a5a9ca56b761f7f1c997aa4c04f86b53df08f9228548d4562d303b61410d4f2e9fa62ce1f0cc675331adaa91" size="19644083"/> - <patch type="partial" URL="http://download.mozilla.org/?product=firefox-9.0.1-partial-9.0&os=win&lang=ja" hashFunction="SHA512" hashValue="0478ec3a615f918142f83e8fbc30e6885c281c5c57479b9673f292d22fbbd1b11a04e50fb949937de7d5c41e13ab8d382d6c4e015ff9f737afac06a866cdcb50" size="2005104"/> - </update> -</updates> -</pre> -<h2 id="ダウンロードサーバの変更">ダウンロードサーバの変更</h2> -<p>更新バイナリ (パッチ) を download.mozilla.org ではなくあなたのサーバからダウンロードさせたい場合は、<code>update.xml</code> に書かれている URL からバイナリを取得し、あなたのサーバへコピーしてから、<code>update.xml</code> ファイル内の URL をあなたのサーバに変更します。更新バイナリには、通常の更新に使用される差分版 (partial) と、差分更新が失敗した場合にダウンロードされる完全版 (complete) の 2 種類があることに留意してください。</p> -<pre><?xml version="1.0"?> -<updates> - <update type="minor" displayVersion="9.0.1" appVersion="9.0.1" platformVersion="9.0.1" buildID="20111220165912" detailsURL="https://www.mozilla.com/ja/firefox/9.0.1/releasenotes/"> - <patch type="complete" URL="http://myserver/update/Firefox/9.0.1/ja/WINNT_x86-msvc/complete.mar" hashFunction="SHA512" hashValue="82fb329eb72e417e2d924842998f7afc1b4a8831a5a9ca56b761f7f1c997aa4c04f86b53df08f9228548d4562d303b61410d4f2e9fa62ce1f0cc675331adaa91" size="19644083"/> - <patch type="partial" URL="http://myserver/update/Firefox/9.0.1/ja/WINNT_x86-msvc/partial.mar" hashFunction="SHA512" hashValue="0478ec3a615f918142f83e8fbc30e6885c281c5c57479b9673f292d22fbbd1b11a04e50fb949937de7d5c41e13ab8d382d6c4e015ff9f737afac06a866cdcb50" size="2005104"/> - </update> -</updates> -</pre> -<p>例えば IT 部門で検証が終わるまで更新を提供しないときは、以下のように XML ファイルの内容を空にしておきます。</p> -<pre><?xml version="1.0"?> -<updates></updates> -</pre> -<h2 id="Security_Considerations" name="Security_Considerations">セキュリティに関する配慮</h2> -<p>Firefox の既定の更新 URL は HTTPS で、SSL を通じて提供されていることに気付いたかもしれません。SSL はサーバに若干の読み込み負荷を与えるので、通常の HTTP を使用したい気にさせられるでしょう。しかしそれはいけません。</p> -<p>すべてのユーザは、更新の有無にかかわらず、更新サーバに定期的に問い合わせを行います (初期設定では 1 日 1 回となっています)。保護されているネットワークの外部、特に公共の無線 LAN スポットから接続しているユーザにとっては、接続をハイジャックされて悪質な更新バイナリをダウンロードさせられる潜在的な可能性があります。SSL はこの手の攻撃から守ってくれます。<code>update.xml</code> ファイルは小さなものなので、SSL の経費をケチったりしないでください。</p> -<p>大きな更新バイナリそのものは、安全でないサーバから安全にダウンロードすることができます。これは、更新情報ファイル (<code>update.xml</code>) にクライアント検証用のハッシュ値が含まれているためです。このハッシュ値は <code>update.xml</code> が安全に提供されている場合のみ信頼されます。</p> -<h2 id="See_Also" name="See_Also">関連記事</h2> -<ul> - <li><a href="/ja/XULRunner/Application_Update" title="ja/XULRunner/Application_Update">XULRunner:Application Update</a></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html deleted file mode 100644 index 709114d7ea..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Gecko -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko ---- -This page was auto-generated because a user created a sub-page to this page. diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/index.html deleted file mode 100644 index 582be09b29..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/index.html +++ /dev/null @@ -1,496 +0,0 @@ ---- -title: Gecko Roles -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles ---- -<p><a href="/ja/docs/Accessibility:AT-APIs#Supported_Roles">« AT APIs Support ページ</a></p> -<p><span class="seoSummary">以下のリストは Gecko で使用されるアクセシブル role です。Role 定数 は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRole" title="">nsIAccessibleRole</a></code> インタフェースで定義されています。</span></p> -<dl> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_NOTHING">ROLE_NOTHING</a></code></dt> - <dd> - accessible アイテムが、明確に定義された role を持っていない場合に使用されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TITLEBAR">ROLE_TITLEBAR</a></code></dt> - <dd> - ウィンドウのタイトルバーまたはキャプションバーを表します。これは MSAA のみで使用されるため、MS Windows によって自動的にサポートされます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUBAR">ROLE_MENUBAR</a></code></dt> - <dd> - ユーザによって選択された (ウィンドウのタイトルバーのすぐ下に位置するか、Mac OS X では画面最上部) メニューバーを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLLBAR">ROLE_SCROLLBAR</a></code></dt> - <dd> - 垂直または水平スクロールバーを表します。クライアント領域の一部か、コントロール内で使用されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRIP">ROLE_GRIP</a></code></dt> - <dd> - 特別なマウスポインタを表します。ウィンドウなどのユーザインタフェース要素をユーザに操作させます。例えば、ユーザがウィンドウ右下隅のサイズ変更グリップをクリックし、そのサイズを変更するためにドラッグします。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SOUND">ROLE_SOUND</a></code></dt> - <dd> - システムサウンドを表します。様々なシステムイベントに関連付けられます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CURSOR">ROLE_CURSOR</a></code></dt> - <dd> - システムのマウスポインタを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CARET">ROLE_CARET</a></code></dt> - <dd> - システムのキャレットを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT">ROLE_ALERT</a></code></dt> - <dd> - ユーザに注意を促す alert または condition を表します。<span style="border-bottom: 1px dashed green;" title="Assistive Technologies">支援技術</span>は一般的に、この role を広告するコンテナの全スクリーン上のコンテンツを読むことによって、role に反応します。警告ダイアログなどで使用してください。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_WINDOW">ROLE_WINDOW</a></code></dt> - <dd> - ウィンドウ枠を表します。タイトルバーやクライアント、ウィンドウに含まれる他のオブジェクトなどの子オブジェクトを含みます。この role は MS Windows によって自動的にサポートされます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME">ROLE_INTERNAL_FRAME</a></code></dt> - <dd> - サブドキュメントです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUPOPUP">ROLE_MENUPOPUP</a></code></dt> - <dd> - メニューを表します。実行する操作をユーザに選択させるための、オプションの一覧を提供します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM">ROLE_MENUITEM</a></code></dt> - <dd> - メニュー項目を表します。実行するコマンドやオプションをユーザに選択させるための、メニュー内のエントリです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLTIP">ROLE_TOOLTIP</a></code></dt> - <dd> - 役立つヒントを提供するツールチップを表します。一般的にマウスカーソルの位置に表示されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_APPLICATION">ROLE_APPLICATION</a></code></dt> - <dd> - アプリケーションのメインウィンドウを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT">ROLE_DOCUMENT</a></code></dt> - <dd> - ドキュメントウィンドウを表します。ドキュメントウィンドウは常にアプリケーションウィンドウ内に含まれます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PANE">ROLE_PANE</a></code></dt> - <dd> - フレームウィンドウやドキュメントウィンドウ内のペインを表します。ユーザは他のペインと現在のペインのコンテンツ内の間を移動できますが、異なるペイン内の項目間は移動できません。このように、ペインはフレームウィンドウやドキュメントより下位、個々のコントロールよりも上位のグループレベルを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHART">ROLE_CHART</a></code></dt> - <dd> - データの提供に使用されるグラフィカルな画像を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIALOG">ROLE_DIALOG</a></code></dt> - <dd> - ダイアログボックスまたはメッセージボックスを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BORDER">ROLE_BORDER</a></code></dt> - <dd> - ウィンドウの境界線を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GROUPING">ROLE_GROUPING</a></code></dt> - <dd> - その他のオブジェクトを論理的にグループ化します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SEPARATOR">ROLE_SEPARATOR</a></code></dt> - <dd> - separator メニュー項目やウィンドウ内のペインを分割するバーなど、空間を二つの領域に視覚的に分割するために使用されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLBAR">ROLE_TOOLBAR</a></code></dt> - <dd> - ツールバーを表します。よく使用される機能への簡単なアクセスを提供するコントロール (プッシュボタンやトグルボタン) のグループです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATUSBAR">ROLE_STATUSBAR</a></code></dt> - <dd> - ステータスバーを表します。現在の操作やアプリケーションの状態、選択したオブジェクトについての情報を表示する、ウィンドウ下部の領域です。ステータスバーには異なる種類の情報を表示する複数のフィールドがあります。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code></dt> - <dd> - セルの行と列を含むテーブルを表します。また、任意で行ヘッダと列ヘッダが含まれます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER">ROLE_COLUMNHEADER</a></code></dt> - <dd> - 列ヘッダを表します。テーブルの列のための視覚的なラベルを提供します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROWHEADER">ROLE_ROWHEADER</a></code></dt> - <dd> - 行ヘッダを表します。テーブルの行のための視覚的なラベルを提供します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMN">ROLE_COLUMN</a></code></dt> - <dd> - テーブル内のセルの列を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW">ROLE_ROW</a></code></dt> - <dd> - テーブル内のセルの行を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL">ROLE_CELL</a></code></dt> - <dd> - テーブル内のセルを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LINK">ROLE_LINK</a></code></dt> - <dd> - 何かへのリンクを表します。このオブジェクトはテキストやグラフィックで表現されますが、ボタンのように動作します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HELPBALLOON">ROLE_HELPBALLOON</a></code></dt> - <dd> - ツールチップやヘルプバルーンのフォーム内のヘルプトピックを表示します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHARACTER">ROLE_CHARACTER</a></code></dt> - <dd> - Microsoft Office アシスタントなどのアニメのようなグラフィックオブジェクトを表します。アプリケーションのヘルプをユーザに提供するために表示されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST">ROLE_LIST</a></code></dt> - <dd> - リストボックスを表します。ユーザは一個以上の項目を選択できます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM">ROLE_LISTITEM</a></code></dt> - <dd> - リスト内の項目を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE">ROLE_OUTLINE</a></code></dt> - <dd> - ツリービューコントロールなどのアウトライン構造またはツリー構造を表します。階層的なリストを表示し、ユーザは下層の展開と折り畳みができます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINEITEM">ROLE_OUTLINEITEM</a></code></dt> - <dd> - アウトライン構造やツリー構造内の項目を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB">ROLE_PAGETAB</a></code></dt> - <dd> - ページタブを表します。これはページタブリストの子要素です。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROPERTYPAGE">ROLE_PROPERTYPAGE</a></code></dt> - <dd> - プロパティシートを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_INDICATOR">ROLE_INDICATOR</a></code></dt> - <dd> - 現在の項目を指し示すポインタ画像などのインジケータを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRAPHIC">ROLE_GRAPHIC</a></code></dt> - <dd> - 画像を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATICTEXT">ROLE_STATICTEXT</a></code></dt> - <dd> - 他のコントロールのためのラベルやダイアログボックス内の説明など、読み取り専用テキストを表します。<span style="border-bottom: 1px dashed green;" title="Static text">静的テキスト</span>は変更や選択ができません。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_LEAF">ROLE_TEXT_LEAF</a></code></dt> - <dd> - 選択可能なテキストを表します。編集したり読み取り専用にできます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON">ROLE_PUSHBUTTON</a></code></dt> - <dd> - プッシュボタンコントロールを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECKBUTTON">ROLE_CHECKBUTTON</a></code></dt> - <dd> - チェックボックスコントロールを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIOBUTTON">ROLE_RADIOBUTTON</a></code></dt> - <dd> - オプションボタンを表します。ラジオボタンとも呼ばれています。これは排他的なグループの一つです。すべてのオブジェクトは、この属性を持つ一つの親要素を共有しており、一つの排他的なグループの一部と仮定されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX">ROLE_COMBOBOX</a></code></dt> - <dd> - コンボボックスを表します。予め選択されたセットを提供するリストボックスに関連付けられた編集コントロールです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DROPLIST">ROLE_DROPLIST</a></code></dt> - <dd> - カレンダーコントロールを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROGRESSBAR">ROLE_PROGRESSBAR</a></code></dt> - <dd> - 進捗バーを表します。ユーザに作業中の操作の現在の達成度を表示します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAL">ROLE_DIAL</a></code></dt> - <dd> - ユーザに値を設定させるダイアルまたはノブを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HOTKEYFIELD">ROLE_HOTKEYFIELD</a></code></dt> - <dd> - ホットキーフィールドを表します。ユーザに連続したキーストロークや、その組み合わせを入力させます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SLIDER">ROLE_SLIDER</a></code></dt> - <dd> - スライダを表します。ユーザに最小値と最大値の間に与えられた値を設定させます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPINBUTTON">ROLE_SPINBUTTON</a></code></dt> - <dd> - スピンボックスを表します。ユーザに表示された値を増減させるコントロールです。これはスピンボックスに関連付けられた別の "仲間" コントロール内に表示されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAGRAM">ROLE_DIAGRAM</a></code></dt> - <dd> - ダイアグラムデータに使用される、グラフィカルな画像を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ANIMATION">ROLE_ANIMATION</a></code></dt> - <dd> - アニメーションコントロールを表します。連続したビットマップフレームを表示するコントロールなど、時間毎に変わるコンテンツを含みます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_EQUATION">ROLE_EQUATION</a></code></dt> - <dd> - 数式を表します。これは MATHML によって使用されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWN">ROLE_BUTTONDROPDOWN</a></code></dt> - <dd> - 項目のリストをドロップダウン表示するボタンを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONMENU">ROLE_BUTTONMENU</a></code></dt> - <dd> - メニューをドロップダウン表示するボタンを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWNGRID">ROLE_BUTTONDROPDOWNGRID</a></code></dt> - <dd> - グリッドをドロップダウン表示するボタンを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_WHITESPACE">ROLE_WHITESPACE</a></code></dt> - <dd> - オブジェクト間の空白を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST">ROLE_PAGETABLIST</a></code></dt> - <dd> - ページタブコントロールのコンテナを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CLOCK">ROLE_CLOCK</a></code></dt> - <dd> - 時刻を表示するコントロールを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLITBUTTON">ROLE_SPLITBUTTON</a></code></dt> - <dd> - ツールバー上のボタンを表します。ドロップダウンリストアイコンがボタンのすぐ隣にあります。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IPADDRESS">ROLE_IPADDRESS</a></code></dt> - <dd> - IP (Internet Protocol) アドレスを入力するための編集コントロールを表します。編集コントロールは入力部分が IP アドレスの数値ごとに区切られています。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ACCEL_LABEL">ROLE_ACCEL_LABEL</a></code></dt> - <dd> - アクセラレータを持つラベルコントロールを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ARROW">ROLE_ARROW</a></code></dt> - <dd> - 主要な 4 方向の矢印のうちの一つを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CANVAS">ROLE_CANVAS</a></code></dt> - <dd> - イベントの発生とトラップに使用されるコントロールを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECK_MENU_ITEM">ROLE_CHECK_MENU_ITEM</a></code></dt> - <dd> - チェックボックス付きのメニュー項目を表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLOR_CHOOSER">ROLE_COLOR_CHOOSER</a></code></dt> - <dd> - ユーザに色を選択させる特別なダイアログを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DATE_EDITOR">ROLE_DATE_EDITOR</a></code></dt> - <dd> - ユーザに日付を編集させるためのコントロールを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_ICON">ROLE_DESKTOP_ICON</a></code></dt> - <dd> - ROLE_DESKTOP_PANE 内のアイコン化された内部フレーム。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_FRAME">ROLE_DESKTOP_FRAME</a></code></dt> - <dd> - デスクトップペイン。内部フレームと、そのアイコン化されたバージョンをサポートするペイン。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE">ROLE_DIRECTORY_PANE</a></code></dt> - <dd> - ディレクトリペイン。ユーザがディレクトリの内容を選択したり操作するためのペイン。ファイルの選択に使用されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER">ROLE_FILE_CHOOSER</a></code></dt> - <dd> - ファイル選択ダイアログ。ディレクトリ内のファイルを表示してユーザにファイルを選択させたり、異なるディレクトリや特定のファイル名を閲覧させるための特別なダイアログ。ディレクトリの内容を表示するためにディレクトリペインを使用します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FONT_CHOOSER">ROLE_FONT_CHOOSER</a></code></dt> - <dd> - フォント選択ダイアログ。フォント選択ダイアログは、ユーザに様々な属性のフォントを選択させるコンポーネントです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHROME_WINDOW">ROLE_CHROME_WINDOW</a></code></dt> - <dd> - フレーム role です。タイトルバー、境界線、メニューバーなどを持つトップレベルのウィンドウ。アプリケーションの最初のウィンドウとしてよく使用されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE">ROLE_GLASS_PANE</a></code></dt> - <dd> - ガラスペイン。すべてのペインより前面に描かれることが保証されたペイン。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HTML_CONTAINER">ROLE_HTML_CONTAINER</a></code></dt> - <dd> - HTML のためのドキュメントコンテナ。このコンテナの子要素は document の内容を提供します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ICON">ROLE_ICON</a></code></dt> - <dd> - 小さな固定サイズの画像。一般的にはコンポーネントの飾りに使用されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LABEL">ROLE_LABEL</a></code></dt> - <dd> - インターフェースのアイコンまたは短い文字列を提供します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE">ROLE_LAYERED_PANE</a></code></dt> - <dd> - <span style="border-bottom: 1px dashed green;" title="layered">階層化</span>ペイン。子要素をスタック順の外観を提供しているレイヤー内に描画する特別なペイン。通常は、ウィンドウ内のほとんどの視覚的なコンポ―テントとメニューバーを保持するペインです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION_PANE">ROLE_OPTION_PANE</a></code></dt> - <dd> - ダイアログの内側で最初に使用される特別なペイン。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PASSWORD_TEXT">ROLE_PASSWORD_TEXT</a></code></dt> - <dd> - パスワードなど、テキストの内容がユーザに分からないように表示されるテキストオブジェクトです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_POPUP_MENU">ROLE_POPUP_MENU</a></code></dt> - <dd> - ユーザに選択肢の一覧を提供する一時的なウィンドウ。ユーザが一覧から一つを選択すると隠されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIO_MENU_ITEM">ROLE_RADIO_MENU_ITEM</a></code></dt> - <dd> - メニュー項目のラジオボタンです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE">ROLE_ROOT_PANE</a></code></dt> - <dd> - ルートペインです。ガラスペインや階層化ペインを子要素に持つ特別なペイン。この子要素にはスクロールバーやビューポートを含むことができます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE">ROLE_SCROLL_PANE</a></code></dt> - <dd> - スクロールペインです。大量の情報をユーザが順次表示できるオブジェクト。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLIT_PANE">ROLE_SPLIT_PANE</a></code></dt> - <dd> - <span style="border-bottom: 1px dashed green;" title="split">分割</span>ペインです。同時に 2 つのパネルを提供する特別なパネル。2 つのパネルの間は、ユーザがその大きさを変更することができる仕切りになっています。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_COLUMN_HEADER">ROLE_TABLE_COLUMN_HEADER</a></code></dt> - <dd> - テーブルの列のためのヘッダです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_ROW_HEADER">ROLE_TABLE_ROW_HEADER</a></code></dt> - <dd> - テーブルの行のためのヘッダです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEAR_OFF_MENU_ITEM">ROLE_TEAR_OFF_MENU_ITEM</a></code></dt> - <dd> - 着脱可能なメニュー項目です。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TERMINAL">ROLE_TERMINAL</a></code></dt> - <dd> - アクセシブルターミナルを表します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_CONTAINER">ROLE_TEXT_CONTAINER</a></code></dt> - <dd> - 論理的なテキスト実体を構成するオブジェクトのコレクションです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOGGLE_BUTTON">ROLE_TOGGLE_BUTTON</a></code></dt> - <dd> - 切り替えボタンです。チェックを入れたり外したりできる特別な押しボタン。現在の状態を示すインジケータは提供しません。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TREE_TABLE">ROLE_TREE_TABLE</a></code></dt> - <dd> - 複数行のデータ表示を展開したり折り畳んだりできるコントロールを表します。複数列のデータも表示できます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEWPORT">ROLE_VIEWPORT</a></code></dt> - <dd> - ビューポートです。通常はスクロールペイン内で使用されるオブジェクト。ユーザが見ることができるデータ全体の一部分を提供します。ユーザがスクロールバーを操作してビューポートに表示する部分を変更できます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER">ROLE_HEADER</a></code></dt> - <dd> - ドキュメントページのヘッダです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER">ROLE_FOOTER</a></code></dt> - <dd> - ドキュメントページのフッタです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARAGRAPH">ROLE_PARAGRAPH</a></code></dt> - <dd> - テキストの段落です。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RULER">ROLE_RULER</a></code></dt> - <dd> - ワープロなどで使用される定規です。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_AUTOCOMPLETE">ROLE_AUTOCOMPLETE</a></code></dt> - <dd> - エントリウィジェットに挿入する項目を含むダイアログあるいはリストを持つテキストエントリ。つまり、テキストエントリを補完する語のリストです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_EDITBAR">ROLE_EDITBAR</a></code></dt> - <dd> - ツールバー内の編集可能なテキストオブジェクト。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ENTRY">ROLE_ENTRY</a></code></dt> - <dd> - ユーザによって入力または変更されるテキスト内容のコントロール。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CAPTION">ROLE_CAPTION</a></code></dt> - <dd> - 他のオブジェクトを説明するキャプションです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT_FRAME">ROLE_DOCUMENT_FRAME</a></code></dt> - <dd> - ドキュメント内容の表示領域を含む視覚的なフレームまたはコンテナです。ドキュメントフレームは他のドキュメント実体内に発生します。この場合、2 番目のドキュメントは包含する実体内に埋め込まれます。大抵の HTML フレームは ROLE_DOCUMENT_FRAME です。このオブジェクトや単体の子孫は Document インタフェースを実装します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADING">ROLE_HEADING</a></code></dt> - <dd> - 見出しです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGE">ROLE_PAGE</a></code></dt> - <dd> - ドキュメント内容のページを表すオブジェクト。ユーザがページを基準にしてアクセスするドキュメント内で使用されます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SECTION">ROLE_SECTION</a></code></dt> - <dd> - ドキュメント内容のコンテナです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_REDUNDANT_OBJECT">ROLE_REDUNDANT_OBJECT</a></code></dt> - <dd> - アクセシブルな階層内の他のオブジェクトと重複するオブジェクト。支援技術 (<span style="color: green;">AT</span>)は、この role を持つオブジェクトを無視します。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FORM">ROLE_FORM</a></code></dt> - <dd> - フォームコントロールのコンテナです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IME">ROLE_IME</a></code></dt> - <dd> - キーボード上に無い文字を入力するために使用されるオブジェクト。例えば、英語キーボードで中国語を入力する場合など。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT">ROLE_APP_ROOT</a></code></dt> - <dd> - ???</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARENT_MENUITEM">ROLE_PARENT_MENUITEM</a></code></dt> - <dd> - メニュー項目を表します。これはユーザが選択して別のメニューを表示できるメニュー内のエントリです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CALENDAR">ROLE_CALENDAR</a></code></dt> - <dd> - ユーザに日付を選択させるカレンダーです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_LIST">ROLE_COMBOBOX_LIST</a></code></dt> - <dd> - コンボボックスによって表示される項目のリストです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_OPTION">ROLE_COMBOBOX_OPTION</a></code></dt> - <dd> - コンボボックスによって表示されるリストの項目です。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IMAGE_MAP">ROLE_IMAGE_MAP</a></code></dt> - <dd> - イメージマップです。子リンクを表す領域を持ちます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION">ROLE_OPTION</a></code></dt> - <dd> - リストボックス内のオプションです。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RICH_OPTION">ROLE_RICH_OPTION</a></code></dt> - <dd> - リストボックス内のリッチオプションです。他のウィジェットを子要素として持つことができます。</dd> - <dt> - <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTBOX">ROLE_LISTBOX</a></code></dt> - <dd> - オプションのリストです。</dd> -</dl> -<div class="note"> - <p><strong>編注:</strong> <span class="nowiki"><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_">ROLE_</a></code></span> のテンプレートを使用してアクセシブル role への参照を取得してください。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM">ROLE_MENUITEM</a></code> のように表示されます。</p> -</div> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_accel_label/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_accel_label/index.html deleted file mode 100644 index de5747c491..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_accel_label/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_ACCEL_LABEL -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ACCEL_LABEL -tags: - - AT_APIs - - Accessibility - - Reference - - Référence(2) -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ACCEL_LABEL ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>アクセラレータを持つラベルコントロールを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_ACCELERATOR_LABEL</code></li> - <li>ATK: <code>ATK_ROLE_ACCEL_LABEL</code></li> - <li>UA: <code>NSAccessibilityStaticTextRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_STATICTEXT</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_alert/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_alert/index.html deleted file mode 100644 index d03c56080c..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_alert/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: ROLE_ALERT -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ユーザに通知されるべき警告または条件を表します。支援技術は、一般的に、このロールの内容を告げるコンテナの画面上のコンテンツ全体を読み上げることにより、ロールに応答します。警告ダイアログ等で使用してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">別名</h2> - -<ul> - <li>AT-SPI: <code>ROLE_ALERT</code></li> - <li>ATK: <code>ATK_ROLE_ALERT</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_ALERT</code></li> - <li>UA: <code>NSAccessibilityWindowRole</code></li> -</ul> - -<h2 id="Events" name="Events">イベント</h2> - -<ul> - <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_ALERT">EVENT_ALERT</a></code> - ウィジェットが表示された時に発生します。</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用する要素</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#alert">alert</a></code>, <code><a class="external" href="https://w3c.github.io/aria/#alertdialog">alertdialog</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/notification" title="notification">notification</a></code>/>, <<code><a href="/ja/docs/Mozilla/Tech/XUL/panel" title="panel">panel</a></code> noautofocus = "true"/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_animation/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_animation/index.html deleted file mode 100644 index 81d333e72b..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_animation/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_ANIMATION -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ANIMATION -tags: - - AT_APIs - - Accessibility - - Reference - - Référence(2) -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ANIMATION ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>例えばビットマップの一連のフレームを表示するコントロールといった、時間の経過とともに変化するコンテンツを含むアニメーションコントロールを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_ANIMATION</code></li> - <li>ATK: <code>ATK_ROLE_ANIMATION</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_ANIMATION</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_app_root/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_app_root/index.html deleted file mode 100644 index cbe8078631..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_app_root/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ROLE_APP_ROOT -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT -tags: - - AT_APIs - - Accessibility - - Reference - - Référence(2) -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>欧米のキーボード上での漢字の入力のような、キーボードにない文字の入力を可能にするために使用されるオブジェクト。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_APPLICATION</code></li> - <li>ATK: <code>ATK_ROLE_APPLICATION</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_APPLICATION</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_application/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_application/index.html deleted file mode 100644 index 4d430e70c9..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_application/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: ROLE_APPLICATION -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_APPLICATION -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_APPLICATION ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>アプリケーションのメインウィンドウを表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT">ROLE_APP_ROOT</a></code> も参照してください。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleEditableText" title="">nsIAccessibleEditableText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleDocument" title="">nsIAccessibleDocument</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>ATK: <code>ATK_ROLE_EMBEDDED</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_APPLICATION</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#application">application</a></code></li> - <li>XUL: content document</li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_arrow/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_arrow/index.html deleted file mode 100644 index 6ec87b9cf3..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_arrow/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_ARROW -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ARROW -tags: - - AT_APIs - - Accessibility - - Reference - - Référence(2) -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ARROW ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>東西南北方向のいずれかの矢印を表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_ARROW</code></li> - <li>ATK: <code>ATK_ROLE_ARROW</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_INDICATOR</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_autocomplete/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_autocomplete/index.html deleted file mode 100644 index 149af27745..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_autocomplete/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE AUTOCOMPLETE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_AUTOCOMPLETE -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_AUTOCOMPLETE ---- -<p> </p> - -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>例えば、テキスト入力の完了に対する単語のリストといった、入力ウィジェットに挿入するためのダイアログまたはアイテムを含むリストを持つテキスト入力。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_AUTOCOMPLETE</li> - <li>ATK: NSAccessibilityComboBoxRole</li> - <li>UA: @"AXRuler"</li> - <li>MSAA/IA2: ROLE_SYSTEM_COMBOBOX</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/textbox" title="textbox">textbox</a></code> type="autocomplete"/></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_border/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_border/index.html deleted file mode 100644 index 78104f570c..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_border/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: ROLE_BORDER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BORDER -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BORDER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ウィンドウの境界線を表します。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_UNKNOWN</code></li> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_BORDER</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>サポートされていません。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdown/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdown/index.html deleted file mode 100644 index 13b259f499..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdown/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_BUTTONDROPDOWN -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWN -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWN ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>アイテムのリストをドロップダウンするボタンを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_PUSH_BUTTON</code></li> - <li>ATK: <code>ATK_ROLE_PUSH_BUTTON</code></li> - <li>UA: <code>NSAccessibilityPopUpButtonRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_BUTTONDROPDOWN</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdowngrid/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdowngrid/index.html deleted file mode 100644 index 2439c01b9c..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdowngrid/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_BUTTONDROPDOWNGRID -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWNGRID -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWNGRID ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>グリッドをドロップダウンするボタンを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_BUTTONDROPDOWNGRID</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/colorpicker" title="colorpicker">colorpicker</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttonmenu/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttonmenu/index.html deleted file mode 100644 index 675612d4bd..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttonmenu/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE_BUTTONMENU -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONMENU -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONMENU ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>メニューをドロップダウンするボタンを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_PUSH_BUTTON</code></li> - <li>ATK: <code>ATK_ROLE_PUSH_BUTTON</code></li> - <li>UA: <code>NSAccessibilityMenuButtonRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_BUTTONMENU</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_calendar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_calendar/index.html deleted file mode 100644 index 771b5bdf20..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_calendar/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: ROLE_CALENDAR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CALENDAR -tags: - - AT_APIs - - Accessibility - - NeedsContent - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CALENDAR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ユーザーが日付を選択できるカレンダー。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_CALENDAR</code></li> - <li>ATK: <code>ATK_ROLE_CALENDAR</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_CLIENT</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_canvas/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_canvas/index.html deleted file mode 100644 index cde08e0b55..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_canvas/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_CANVAS -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CANVAS -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CANVAS ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>イベントに引き込むことができ、イベントをトラップするために使用されるコントロールを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_CANVAS</code></li> - <li>ATK: <code>ATK_ROLE_CANVAS</code></li> - <li>UA: <code>NSAccessibilityImageRole</code></li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_CANVAS</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/canvas" title="HTML の <canvas> 要素 と Canvas スクリプティング API や WebGL API を使用して、グラフィックやアニメーションを描画することができます。"><code><canvas></code></a></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caption/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caption/index.html deleted file mode 100644 index 627d1d8a0c..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caption/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE CAPTION -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CAPTION -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CAPTION ---- -<p> </p> - -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>別のオブジェクトを説明するキャプション。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_CAPTION</li> - <li>ATK: ATK_ROLE_CAPTION</li> - <li>UA: NSAccessibilityStaticTextRole</li> - <li>MSAA:USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_CAPTION</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caret/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caret/index.html deleted file mode 100644 index abda30d55e..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caret/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: ROLE_CARET -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CARET -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CARET ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>システムのキャレットを表します。このロールは、キャレットのためにサポートされています。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_UNKNOWN</code></li> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_CARET</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>サポートされていません。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cell/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cell/index.html deleted file mode 100644 index 14305ce7cc..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cell/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: ROLE_CELL -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>テーブル内のセルを表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code> も参照してください。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleEditableText" title="">nsIAccessibleEditableText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleValue" title="">nsIAccessibleValue</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ATK_ROLE_TABLE_CELL</code></li> - <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_CELL</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#gridcell">gridcell</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/listcell" title="listcell">listcell</a></code>/></li> - <li>HTML: <span class="nowiki"> <a href="/ja/docs/Web/HTML/Element/td" title="HTML の <td> 要素は、表でデータを包含するセルを定義します。これは表モデルに関与します。"><code><td></code></a></span></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_character/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_character/index.html deleted file mode 100644 index 8b3b43cbff..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_character/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: ROLE_CHARACTER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHARACTER -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHARACTER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>Microsoft Office Assistant などの、マンガのようなグラフィックオブジェクトを表します。これは、アプリケーションの使い方をユーザに提供するために表示されます。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI:</li> - <li>ATK: <code>ATK_ROLE_IMAGE</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code> (unusued on Mac OS X)</li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_CHARACTER</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>使用されていません。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chart/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chart/index.html deleted file mode 100644 index 76a2356d83..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chart/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE_CHART -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHART -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHART ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>データを示すためのグラフィカルな画像を表します。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_CHART</code></li> - <li>ATK: <code>ATK_ROLE_CHART</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_CHART</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>使用されていません。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_check_menu_item/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_check_menu_item/index.html deleted file mode 100644 index 2485251344..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_check_menu_item/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: ROLE_CHECK_MENU_ITEM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECK_MENU_ITEM -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECK_MENU_ITEM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>チェックボックスでメニュー項目を表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_CHECK_MENU_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_CHECK_MENU_ITEM</code></li> - <li>UA: <code>NSAccessibilityMenuItemRole</code></li> - <li>MSAA: <code>ROLE_SYSTEM_MENUITEM</code></li> - <li>IA2: <code>IA2_ROLE_CHECK_MENU_ITEM</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#menuitemcheckbox">menuitemcheckbox</a></code></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_checkbutton/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_checkbutton/index.html deleted file mode 100644 index 7d553a0444..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_checkbutton/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: ROLE_CHECKBUTTON -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECKBUTTON -tags: - - AT_APIs - - Accessibility - - Reference - - Référence(2) -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECKBUTTON ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>チェックボックスコントロールを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_CHECK_BOX</code></li> - <li>ATK: <code>ATK_ROLE_CHECK_BOX</code></li> - <li>UA: <code>NSAccessibilityCheckBoxRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_CHECKBUTTON</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#checkbox">checkbox</a></code></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/input" title="HTML の <input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code><input></code></a> of type <code>checkbox</code>.</li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/checkbox" title="checkbox">checkbox</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chrome_window/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chrome_window/index.html deleted file mode 100644 index 05d299d5ae..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chrome_window/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_CHROME_WINDOW -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHROME_WINDOW -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHROME_WINDOW ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>フレームの役割。タイトルバー、ボーダー、メニューバーなどを持つトップレベルウィンドウ。 これは、多くの場合、アプリケーションのための主要なウィンドウとして使用されます。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_FRAME</code></li> - <li>ATK: <code>ATK_ROLE_FRAME</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code> (unused on Mac OS X)</li> - <li>MSAA : <code>ROLE_SYSTEM_APPLICATION</code></li> - <li>IA2: <code>IA2_ROLE_FRAME</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_clock/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_clock/index.html deleted file mode 100644 index 09eb1efa8e..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_clock/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_CLOCK -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CLOCK -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CLOCK ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>時刻を表示するコントロールを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code> (unused on OS X )</li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_CLOCK</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_color_chooser/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_color_chooser/index.html deleted file mode 100644 index 3b464f2e24..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_color_chooser/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_COLOR_CHOOSER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLOR_CHOOSER -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLOR_CHOOSER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ユーザが色を選択できるようにする特殊なダイアログを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_COLOR_CHOOSER</code></li> - <li>ATK: <code>ATK_ROLE_COLOR_CHOOSER</code></li> - <li>UA: <code>NSAccessibilityColorWellRole</code></li> - <li>MSAA: <code>ROLE_SYSTEM_DIALOG</code></li> - <li>IA2: <code>IA2_ROLE_COLOR_CHOOSER</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_columnheader/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_columnheader/index.html deleted file mode 100644 index e6ccce5729..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_columnheader/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: ROLE_COLUMNHEADER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>列ヘッダを表します。テーブルの列のための視覚的なラベルを提供します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code> も参照してください。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_TABLE</code></li> - <li>ATK: <code>ATK_ROLE_COLUMN_HEADER</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_COLUMNHEADER</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#colheader">colheader</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/listheader" title="listheader">listheader</a></code>/></li> - <li>HTML: <span class="nowiki"><a href="/ja/docs/Web/HTML/Element/th" title="HTML の <th> 要素は、表のセルのグループ用のヘッダーであるセルを定義します。このグループの性質は、scope 属性と headers 属性で定義します。"><code><th></code></a></span></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox/index.html deleted file mode 100644 index 2a7da343b0..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: ROLE_COMBOBOX -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX -tags: - - AT_APIs - - Accessibility - - Reference - - Référence(2) -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>コンボボックスを表します。事前に定義された選択肢のセットを提供し、関連リストボックスとエディットコントロール。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_RADIO_BUTTON</code></li> - <li>ATK: <code>ATK_ROLE_RADIO_BUTTON</code></li> - <li>UA: <code>NSAccessibilityRadioButtonRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_RADIOBUTTON</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#combobox">combobox</a></code></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/select" title="HTML の <select> 要素は、選択式のメニューを提供するコントロールを表します。"><code><select></code></a></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/menulist" title="menulist">menulist</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_list/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_list/index.html deleted file mode 100644 index 7072b0a8f7..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_list/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE_COMBOBOX_LIST -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_LIST -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_LIST ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>コンボボックスを使用して提示された項目のリスト。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_MENU</code></li> - <li>ATK: <code>ATK_ROLE_MENU</code></li> - <li>UA: <code>NSAccessibilityMenuRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_LIST</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/option" title="HTML の <option> 要素は、 <select> 要素、<optgroup> 要素、<datalist> 要素内で項目を定義するために使われます。したがって、<option> は HTML 文書でポップアップメニューのメニュー項目や、その他の項目の一覧を表すことができます。"><code><option></code></a></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_option/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_option/index.html deleted file mode 100644 index ce0a67942a..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_option/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_COMBOBOX_OPTION -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_OPTION -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_OPTION ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>コンボボックスで示されているリストの項目。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_MENU_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_MENU_ITEM</code></li> - <li>UA: <code>NSAccessibilityMenuItemRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_LISTITEM</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/option" title="HTML の <option> 要素は、 <select> 要素、<optgroup> 要素、<datalist> 要素内で項目を定義するために使われます。したがって、<option> は HTML 文書でポップアップメニューのメニュー項目や、その他の項目の一覧を表すことができます。"><code><option></code></a></li> - <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/listitem" title="listitem">listitem</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cursor/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cursor/index.html deleted file mode 100644 index 1fbeb203e4..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cursor/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: ROLE_CURSOR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CURSOR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CURSOR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>システムのマウスポインタを表します。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_UNKNOWN</code></li> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_CURSOR</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>サポートされていません。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_date_editor/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_date_editor/index.html deleted file mode 100644 index 075b5f4066..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_date_editor/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_DATE_EDITOR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DATE_EDITOR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DATE_EDITOR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>その目的は、ユーザーが日付を編集することを可能にすることであるコントロールを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_DATE_EDITOR</code></li> - <li>ATK: <code>ATK_ROLE_DATE_EDITOR</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_DATE_EDITOR</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_frame/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_frame/index.html deleted file mode 100644 index 9c057e1a24..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_frame/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_DESKTOP_FRAME -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_FRAME -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_FRAME ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>デスクトップ区画。内部フレームとそれらの内部フレームのアイコン化をサポートする区画。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_DESKTOP_FRAME</code></li> - <li>ATK: <code>ATK_ROLE_DESKTOP_FRAME</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA : <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_DESKTOP_PANE</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_icon/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_icon/index.html deleted file mode 100644 index af46f177e6..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_icon/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_DESKTOP_ICON -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_ICON -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_ICON ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_PANE">ROLE_DESKTOP_PANE</a></code>におけるアイコン化された内部フレーム。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME">ROLE_INTERNAL_FRAME</a></code>を参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_DESKTOP_ICON</code></li> - <li>ATK: <code>ATK_ROLE_DESKTOP_ICON</code></li> - <li>UA: <code>NSAccessibilityImageRole</code></li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_DESKTOP_ICON</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_diagram/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_diagram/index.html deleted file mode 100644 index a0fbf37deb..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_diagram/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_DIAGRAM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAGRAM -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAGRAM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>データを図式化するために使用されるグラフィックイメージを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_IMAGE</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_DIAGRAM</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dial/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dial/index.html deleted file mode 100644 index 862da2fb26..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dial/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE_DIAL -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAL -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAL ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>その目的は、ユーザーが値を設定できるようにすることであるダイヤルまたはノブを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_DIAL</code></li> - <li>ATK: <code>ATK_ROLE_DIAL</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_DIAL</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dialog/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dialog/index.html deleted file mode 100644 index f1d9ad5dfb..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dialog/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: ROLE_DIALOG -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIALOG -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIALOG ---- -<p><a href="/ja/docs/Accessibility/AT-APIs/Gecko/Roles">« Gecko Roles ページ</a></p> -<p>ダイアログボックスまたはメッセージボックスを表します。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleEditableText" title="">nsIAccessibleEditableText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleDocument" title="">nsIAccessibleDocument</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_DIALOG</code></li> - <li>ATK: <code>ATK_ROLE_DIALOG</code></li> - <li>UA: <code>NSAccessibilityWindowRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_DIALOG</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#dialog">dialog</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/dialog" title="dialog">dialog</a></code>/>, <<code><a href="/ja/docs/Mozilla/Tech/XUL/wizard" title="wizard">wizard</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_directory_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_directory_pane/index.html deleted file mode 100644 index 6c5b3c4e34..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_directory_pane/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_DIRECTORY_PANE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ディレクトリペイン。ユーザーがディレクトリの内容をナビゲートしたり、選択できる区画。ファイルチューザによって使用されてもよいです。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER">ROLE_FILE_CHOOSER</a></code>を参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_DIRECTORY_PANE</code></li> - <li>ATK: <code>ATK_ROLE_DIRECTORY_PANE</code></li> - <li>UA: <code>NSAccessibilityBrowserRole</code></li> - <li>MSAA : <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_DESKTOP_PANE</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document/index.html deleted file mode 100644 index d2824c63ec..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: ROLE_DOCUMENT -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ドキュメントウィンドウを表します。ドキュメントウィンドウは、常にアプリケーションウィンドウ内に含まれます。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleEditableText" title="">nsIAccessibleEditableText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleDocument" title="">nsIAccessibleDocument</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_DOCUMENT_FRAME</code></li> - <li>ATK: <code>ATK_ROLE_DOCUMENT_FRAME</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_DOCUMENT</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#document">document</a></code></li> - <li>HTML: content document</li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document_frame/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document_frame/index.html deleted file mode 100644 index a5220cf4d5..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document_frame/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE DOCUMENT FRAME -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT_FRAME -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT_FRAME ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>文書内容のビューが含まれている視覚フレームまたはコンテナ。ドキュメントのフレームが別の文書インスタンス内で発生するかもしれません。その場合、2番目の文書が、含んでいるインスタンスに埋め込まれていると言えます。HTML フレームは、多くの場合、ROLE_DOCUMENT_FRAME です。このオブジェクト、またはシングルトン子孫のいずれかは、Document インターフェイスを実装する必要があります。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: RROLE_DOCUMENT_FRAME</li> - <li>ATK: ATK_ROLE_DOCUMENT_FRAME</li> - <li>UA: @"AXWebArea"</li> - <li>MSAA:USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_UNKNOWN</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_droplist/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_droplist/index.html deleted file mode 100644 index a240f3e9f0..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_droplist/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_DROPLIST -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DROPLIST -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DROPLIST ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>カレンダーコントロールを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_COMBO_BOX</code></li> - <li>ATK: <code>ATK_ROLE_COMBO_BOX</code></li> - <li>UA: <code>NSAccessibilityPopUpButtonRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_DROPLIST</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_editbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_editbar/index.html deleted file mode 100644 index 2a48b7574d..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_editbar/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE EDITBAR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_EDITBAR -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_EDITBAR ---- -<p> </p> - -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>ツールバーの編集可能なテキストオブジェクト。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_EDITBAR</li> - <li>ATK: ATK_ROLE_EDITBAR</li> - <li>UA: NSAccessibilityTextFieldRole</li> - <li>MSAA: ROLE_SYSTEM_TEXT</li> - <li>IA2: IA2_ROLE_EDITBAR</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_entry/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_entry/index.html deleted file mode 100644 index 2314b07eda..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_entry/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE ENTRY -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ENTRY -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ENTRY ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>テキストコンテンツが、ユーザーによって入力されるか、修正されるコントロール。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_ENTRY</li> - <li>ATK: ATK_ROLE_ENTRY</li> - <li>UA: NSAccessibilityTextFieldRole</li> - <li>MSAA/IA2: ROLE_SYSTEM_TEXT</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#textbox">textbox</a></code></li> - <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/textbox" title="textbox">textbox</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_equation/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_equation/index.html deleted file mode 100644 index d070df3529..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_equation/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_EQUATION -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_EQUATION -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_EQUATION ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>数式を表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_EQUATION</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_file_chooser/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_file_chooser/index.html deleted file mode 100644 index d2be2acdb3..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_file_chooser/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_FILE_CHOOSER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ファイル選択。ディレクトリ内のファイルを表示し、ユーザーがファイルを選択できるようにする特殊なダイアログが、別のディレクトリをブラウズしたり、ファイル名を指定します。ディレクトリの内容を表示するには、ディレクトリ·ペインを使用してもよいです。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE">ROLE_DIRECTORY_PANE</a></code>を参照してください</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_FILE_CHOOSER</code></li> - <li>ATK: <code>ATK_ROLE_FILE_CHOOSER</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code> (unused on Mac OS X)</li> - <li>MSAA : <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_FILE_CHOOSER</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_font_chooser/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_font_chooser/index.html deleted file mode 100644 index 8fd3d7e13e..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_font_chooser/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_FONT_CHOOSER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FONT_CHOOSER -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FONT_CHOOSER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>フォント選択ダイアログ。フォント選択ダイアログは、ユーザーがフォントのための各種属性を選択できるようにするコンポーネントです。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_FONT_CHOOSER</code></li> - <li>ATK: <code>ATK_ROLE_FONT_CHOOSER</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA : <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_FONT_CHOOSER</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_footer/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_footer/index.html deleted file mode 100644 index bbbf07c9bf..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_footer/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE FOOTER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>文書ページのフッター。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER">ROLE_HEADER</a></code>を参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_FOOTER</li> - <li>ATK: ATK_ROLE_FOOTER</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA: USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_FOOTER</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_form/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_form/index.html deleted file mode 100644 index 90dd8ef6a1..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_form/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE FORM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FORM -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FORM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Descroption" name="Descroption">説明</h2> - -<p>フォームコントロールのコンテナ。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: ATK_ROLE_FORM</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA: USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_FORM</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>HTML: <form/></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_glass_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_glass_pane/index.html deleted file mode 100644 index 197450c892..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_glass_pane/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE GLASS PANE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>窓ガラス。その下のすべてのペインの一番上に描画することが保証されたペイン。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE">ROLE_ROOT_PANE</a></code>を参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_GLASS_PANE</li> - <li>ATK: ATK_ROLE_GLASS_PANE</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA : ROLE_SYSTEM_APPLICATION</li> - <li>IA2: IA2_ROLE_GLASS_PANE</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_graphic/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_graphic/index.html deleted file mode 100644 index 827e84c62f..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_graphic/index.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: ROLE_GRAPHIC -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRAPHIC -tags: - - AT_APIs - - Accessibility - - Gecko - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRAPHIC ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>画像を表します。</p> - -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> - -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleImage" title="">nsIAccessibleImage</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li> -</ul> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI:</li> - <li>ATK: <code>ATK_ROLE_IMAGE</code></li> - <li>UA: <code>NSAccessibilityImageRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_GRAPHIC</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#img">img</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/image" title="image">image</a></code>/></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/img" title="HTML の <img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code><img></code></a></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grip/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grip/index.html deleted file mode 100644 index d13b094295..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grip/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: ROLE_GRIP -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRIP -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRIP ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>特別なマウスポインタを表します。ユーザにウィンドウなどのユーザインターフェイス要素を操作させます。例えば、ユーザがウィンドウ右下隅のサイズ変更グリップをクリックし、ドラッグしてそのサイズを変更します。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_UNKNOWN</code></li> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilitySplitterRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_GRIP</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>サポートされていません。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grouping/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grouping/index.html deleted file mode 100644 index 2a6c263623..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grouping/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: ROLE_GROUPING -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GROUPING -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GROUPING ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>他のオブジェクトを論理的にグループ化します。グループ化オブジェクトとそれに含まれるオブジェクトの間に必ずしも親子関係があるとは限りません。</p> - -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> - -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> - -<h2 id="Mapped_to" name="Mapped_to">別名</h2> - -<ul> - <li>AT-SPI: <code>ROLE_PANEL</code></li> - <li>ATK: <code>ATK_ROLE_PANEL</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_GROUPING</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用する要素</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#group">group</a></code>, <code><a class="external" href="https://w3c.github.io/aria/#radiogroup">radiogroup</a></code></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/fieldset" title="HTML の <fieldset> 要素は、ウェブフォーム内のラベル (<label>) などのようにいくつかのコントロールをグループ化するために使用します。"><code><fieldset></code></a></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/groupbox" title="groupbox">groupbox</a></code>/>, <<code><a href="/ja/docs/Mozilla/Tech/XUL/radiogroup" title="radiogroup">radiogroup</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_header/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_header/index.html deleted file mode 100644 index 52272ac9de..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_header/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE HEADER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER ---- -<p> </p> - -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>ドキュメントページのヘッダ。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER">ROLE_FOOTER</a></code>も参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_HEADER</li> - <li>ATK: ATK_ROLE_HEADER</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA: USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_HEADER</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_heading/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_heading/index.html deleted file mode 100644 index bd2477520e..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_heading/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: ROLE HEADING -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADING -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADING ---- -<p> </p> - -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>見出し</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_HEADING</li> - <li>ATK: ATK_ROLE_HEADING</li> - <li>UA: NSAccessibilityStaticTextRole</li> - <li>MSAA:USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_HEADING</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#heading">heading</a></code></li> - <li>HTML: <span class="nowiki"> <h1>, <h2>, ... , <h6> </span></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_helpballoon/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_helpballoon/index.html deleted file mode 100644 index f5d70d03c3..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_helpballoon/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: ROLE_HELPBALLOON -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HELPBALLOON -tags: - - AT_APIs - - Accessibility - - NeedsContent - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HELPBALLOON ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ツールチップやヘルプバルーンの形のヘルプトピックを表示します。</p> - -<h2 id="Children" name="Children">子要素</h2> - -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> - -<h2 id="Mapped_to" name="Mapped_to">別名</h2> - -<ul> - <li>AT-SPI:</li> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: @"AXHelpTag"</li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_HELPBALLOON</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用する要素</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_hotkeyfield/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_hotkeyfield/index.html deleted file mode 100644 index 434cdb6e3e..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_hotkeyfield/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_HOTKEYFIELD -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HOTKEYFIELD -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HOTKEYFIELD ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ユーザーがキーストロークの組み合わせまたはシーケンスを入力することを可能にするホットキーフィールドを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_HOTKEYFIELD</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_html_container/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_html_container/index.html deleted file mode 100644 index eccf6ca840..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_html_container/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE HTML CONTAINER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HTML_CONTAINER -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HTML_CONTAINER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>子供が文書内容を表す、HTML のための AA ドキュメントコンテナ。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_HTML_CONTAINER</li> - <li>ATK: ATK_ROLE_HTML_CONTAINER</li> - <li>UA: NSAccessibilityUnknownRole</li> - <li>MSAA : ROLE_SYSTEM_APPLICATION</li> - <li>IA2: IA2_ROLE_UNKNOWN</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使われない。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_icon/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_icon/index.html deleted file mode 100644 index 4dc8a12668..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_icon/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE ICON -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ICON -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ICON ---- -<p> </p> - -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>固定サイズの小型イメージ、通常はコンポーネントを装飾するために使用されます。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_ICON</li> - <li>ATK: ATK_ROLE_ICON</li> - <li>UA: NSAccessibilityImageRole</li> - <li>MSAA : ROLE_SYSTEM_PUSHBUTTON</li> - <li>IA2: IA2_ROLE_ICON</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_image_map/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_image_map/index.html deleted file mode 100644 index 620eb25232..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_image_map/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ROLE_IMAGE_MAP -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IMAGE_MAP -tags: - - AT_APIs - - Accessibility - - NeedsContent - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IMAGE_MAP ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>イメージマップ。その領域を表す子リンクを持っています。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_IMAGE</code></li> - <li>ATK: <code>ATK_ROLE_IMAGE</code></li> - <li>UA: <code>NSAccessibilityImageRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_GRAPHIC</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>?</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ime/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ime/index.html deleted file mode 100644 index 1e95f51a4e..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ime/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ROLE_IME -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IME -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IME ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>欧米のキーボード上の漢字の入力等、キーボードにない文字の入力を可能にするために使用されるオブジェクト。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_INPUT_METHOD_WINDOW</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_INPUT_METHOD_WINDOW</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_indicator/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_indicator/index.html deleted file mode 100644 index 1cb2b70d67..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_indicator/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE_INDICATOR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_INDICATOR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_INDICATOR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>このような現在のアイテムを指し示すポインタのグラフィックなどの指標を表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI:</li> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_INDICATOR</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_internal_frame/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_internal_frame/index.html deleted file mode 100644 index e6141d9ad4..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_internal_frame/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: ROLE_INTERNAL_FRAME -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>フレーム内のサブドキュメントです。</p> - -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> - -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> - -<h2 id="Mapped_to" name="Mapped_to">別名</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_INTERNAL_FRAME</code></li> - <li>UA: @"AXWebArea"</li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_INTERNAL_FRAME</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用する要素</h2> - -<ul> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/frame" title="<frame> は、別の HTML 文書を表示できる個々の領域を定義する HTML 要素です。 frame 要素は <frameset> の内部で使用します。"><code><frame></code></a> または <a href="/ja/docs/Web/HTML/Element/iframe" title="HTML のインラインフレーム要素 (<iframe>) は、入れ子になった閲覧コンテキストを表現し、現在の HTML ページに他のページを埋め込むことができます。"><code><iframe></code></a></li> - <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/iframe" title="iframe">iframe</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XUL/editor" title="editor">editor</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ipaddress/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ipaddress/index.html deleted file mode 100644 index 63257fde23..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ipaddress/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_IPADDRESS -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IPADDRESS -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IPADDRESS ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>インターネットプロトコル(IP)アドレスのために設計された編集コントロールを表します。編集コントロールは、IPアドレスの各オクテットのための一つのセクションに分割されています。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_IPADDRESS</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_label/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_label/index.html deleted file mode 100644 index 8b31fb3737..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_label/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: ROLE LABEL -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LABEL -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LABEL ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>インターフェイスの中のアイコンまたは短い文字列を提示します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_LABEL</li> - <li>ATK: ATK_ROLE_LABEL</li> - <li>UA: NSAccessibilityStaticTextRole</li> - <li>MSAA: ROLE_SYSTEM_STATICTEXT</li> - <li>IA2: IA2_ROLE_LABEL</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#label">label</a></code></li> - <li>HTML: <label/></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/label" title="label">label</a></code>/></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_layered_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_layered_pane/index.html deleted file mode 100644 index 72e9d3ecc3..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_layered_pane/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE LAYERED PANE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>階層化ペイン。その子を層(レイヤー)に描画できる特殊なペインで、重なり順を提供します。これは、通常、ウィンドウ内のビジュアルコンポーネントのほとんどが含まれているペインだけでなく、メニューバーを保持するペインです。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE">ROLE_GLASS_PANE</a></code> と <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE">ROLE_ROOT_PANE</a></code> も参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_LAYERED_PANE</li> - <li>ATK: ATK_ROLE_LAYERED_PANE</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA: USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_LAYERED_PANE</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_link/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_link/index.html deleted file mode 100644 index 4432a25159..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_link/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: ROLE_LINK -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LINK -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LINK ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>何かへのリンクを表します。このオブジェクトはテキストやグラフィックで表現されますが、ボタンのように動作します。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_LINK</code></li> - <li>ATK: <code>ATK_ROLE_LINK</code></li> - <li>UA: @"AXLink"</li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_LINK</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#link">link</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/label" title="label">label</a></code> class="text-link"/></li> - <li>HTML: <span class="nowiki"> <a href="/ja/docs/Web/HTML/Element/a" title="HTML の <a> 要素 (アンカー要素) は、別のウェブページ、ファイル、同一ページ内の場所、電子メールアドレス、または他の URL へのハイパーリンクを作成します。"><code><a></code></a>, <a href="/ja/docs/Web/HTML/Element/area" title="HTML の <area> 要素は画像のホットスポット領域を定義し、また任意で領域とハイパーテキストリンクの関連づけを行います。この要素は <map> 要素内だけで使用します。"><code><area></code></a></span></li> - <li>XForms: <trigger appearance="minimal"/>.</li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_list/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_list/index.html deleted file mode 100644 index 261cda9e1e..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_list/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: ROLE_LIST -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST ---- -<p><a href="/ja/docs/Accessibility/AT-APIs/Gecko/Roles">« Gecko Roles ページ</a></p> -<p>次のいずれかを表します:</p> -<ol> - <li>ユーザが 1 個以上の項目を選択できるリストボックス。</li> - <li>文書内の構造化されたリスト。これらは常に <code>STATE_READONLY</code> のマークが付いています。</li> -</ol> -<p><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM">ROLE_LISTITEM</a></code> もご覧ください。</p> -<h2 id="Children" name="Children">子要素</h2> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_LIST</code></li> - <li>ATK: <code>ATK_ROLE_LIST</code></li> - <li>UA: <code>NSAccessibilityListRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_LIST</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#list">list</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/listbox" title="listbox">listbox</a></code>/></li> - <li>HTML: <span class="nowiki"><a href="/ja/docs/Web/HTML/Element/ul" title="HTML の <ul> 要素は、項目の順序なしリストを表します。一般的に、行頭記号を伴うリストとして描画されます。"><code><ul></code></a>, <a href="/ja/docs/Web/HTML/Element/ol" title="HTML の <ol> 要素は、項目の順序付きリストを表し、ふつうは番号付きのリストとして表示されます。"><code><ol></code></a> </span></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listbox/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listbox/index.html deleted file mode 100644 index 4aef332022..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listbox/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE LISTBOX -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTBOX -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTBOX ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>オプションのリスト</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_LIST</li> - <li>ATK: ATK_ROLE_LIST</li> - <li>UA: NSAccessibilityListRole</li> - <li>MSAA/IA2: ROLE_SYSTEM_LIST</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#listbox">listbox</a></code></li> - <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/listbox" title="listbox">listbox</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listitem/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listitem/index.html deleted file mode 100644 index a4c8e5bc98..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listitem/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: ROLE_LISTITEM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>リスト内の項目を表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST">ROLE_LIST</a></code> もご覧ください。</p> - -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> - -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> -</ul> - -<h2 id="States" name="States">状態</h2> - -<ul> - <li><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/States#STATE_SELECTABLE">STATE_SELECTABLE</a>.</li> -</ul> - -<h2 id="Mapped_to" name="Mapped_to">別名</h2> - -<ul> - <li>AT-SPI: <code>ROLE_LIST_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li> - <li>UA: <code>NSAccessibilityRowRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_LISTITEM</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用する要素</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#listitem">listitem</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/listitem" title="listitem">listitem</a></code>></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/li" title="HTML の <li> 要素は、リストの項目を表すために用いられます。この要素は、その項目が属する順序付きリスト (<ol>)、順序なしリスト (<ul>)、メニュー (<menu>) のいずれかの子要素として配置する必要があります。メニュー要素および順序なしリスト内においては、リストの項目は通常、行頭文字伴って表示され、順序付きリスト内では、数字や文字による連番のリストマーカーを伴って表示されます。"><code><li></code></a></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menubar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menubar/index.html deleted file mode 100644 index 4f02f8cf0c..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menubar/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: ROLE_MENUBAR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUBAR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUBAR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ユーザにより選択されたメニューの (ウィンドウのタイトルバー下に配置された) メニューバーを表します。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> -<h2 id="Events" name="Events">イベント</h2> -<ul> - <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_MENU_START">EVENT_MENU_START</a></code> - その配下にある <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM">ROLE_MENUITEM</a></code> がフォーカスされた時に発生。</li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_MENU_BAR</code></li> - <li>ATK: <code>ATK_ROLE_MENU_BAR</code></li> - <li>UA: <code>NSAccessibilityMenuBarRole</code></li> - <li>MSAA: <code>ROLE_SYSTEM_MENUBAR</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: role="<code><a class="external" href="https://w3c.github.io/aria/#menubar">menubar</a></code>"</li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/menubar" title="menubar">menubar</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menuitem/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menuitem/index.html deleted file mode 100644 index 455ca5e29a..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menuitem/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: ROLE_MENUITEM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>メニュー項目を表します。実行するコマンドやオプションをユーザに選択させるための、メニュー内のエントリです。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> - -<h2 id="Children" name="Children">子要素</h2> -<p>子はありません。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_MENU_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_MENU_ITEM</code></li> - <li>UA: <code>NSAccessibilityMenuItemRole</code></li> - <li>MSAA/ IA2: <code>ROLE_SYSTEM_MENUITEM</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#menuitem">menuitem</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/menuitem" title="menuitem">menuitem</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menupopup/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menupopup/index.html deleted file mode 100644 index 0a580711c8..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menupopup/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: ROLE_MENUPOPUP -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUPOPUP -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUPOPUP ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>メニューを表します。実行する操作をユーザに選択させるための、オプションの一覧を提供します。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li> -</ul> -<h2 id="Events" name="Events">イベント</h2> -<ul> - <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_MENUPOPUPSTART">EVENT_MENUPOPUPSTART</a></code> - メニューが表示された時に発生。</li> - <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_MENUPOPUPEND">EVENT_MENUPOPUPEND</a></code> - メニューが隠された時に発生。</li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_MENU</code></li> - <li>ATK: <code>ATK_ROLE_MENU</code></li> - <li>UA: <code>NSAccessibilityMenuRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_MENUPOPUP</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#menu">menu</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/popup" title="popup">popup</a></code>/>, <<code><a href="/ja/docs/Mozilla/Tech/XUL/menupopup" title="menupopup">menupopup</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_nothing/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_nothing/index.html deleted file mode 100644 index 0c05a6fb07..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_nothing/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_NOTHING -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_NOTHING -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_NOTHING ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>アクセシブルが、明確に定義されたロールを持っていない場合に使用されます。</p> - -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> - -<p>アクセシブルは、任意の <a href="/docs/Web/Accessibility/AT-APIs/Gecko/Interfaces">インターフェイス</a> を実装できます。</p> - -<h2 id="Mapped_to" name="Mapped_to">別名</h2> - -<ul> - <li>AT-SPI: <code>ROLE_UNKNOWN</code></li> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA: 0</li> - <li>IA2: <code>IA2_ROLE_UNKNOWN</code></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option/index.html deleted file mode 100644 index 3e67ec16fe..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE_OPTION -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>リストボックス内のオプション。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_LIST_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li> - <li>UA: <code>NSAccessibilityRowRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_LISTITEM</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#option">option</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option_pane/index.html deleted file mode 100644 index 21ca6a487a..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option_pane/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE OPTION PANE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION_PANE -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION_PANE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>その主な用途がダイアログ内にある特殊なペイン。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_OPTION_PANE</li> - <li>ATK: ATK_ROLE_OPTION_PANE</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA: USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_OPTION_PANE</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outline/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outline/index.html deleted file mode 100644 index c8ef12e7a5..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outline/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: ROLE_OUTLINE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ツリービューコントロールなどのアウトライン構造またはツリー構造を表します。階層的なリストを表示し、ユーザは下層の展開と折り畳みができます。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleTreeCache" title="">nsIAccessibleTreeCache</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_TREE</code></li> - <li>ATK: <code>ATK_ROLE_TREE</code></li> - <li>UA: <code>NSAccessibilityOutlineRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_OUTLINE</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tree">tree</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/tree" title="tree">tree</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outlineitem/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outlineitem/index.html deleted file mode 100644 index 183d743baf..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outlineitem/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: ROLE_OUTLINEITEM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINEITEM -tags: - - AT_APIs - - Accessibility - - NeedsContent - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINEITEM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>アウトライン構造またはツリー構造内の項目を表します。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleTreeCache" title="">nsIAccessibleTreeCache</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_LIST_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li> - - <li>UA: <code>NSAccessibilityRowRole</code> (サブロールとして <code>OutlineRow</code> を使用)</li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_OUTLINEITEM</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#treeitem">treeitem</a></code></li> - <li>HTML: ??</li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/treeitem" title="treeitem">treeitem</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_page/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_page/index.html deleted file mode 100644 index 9bdae12420..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_page/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE PAGE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGE -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>ドキュメント内容のページを表すオブジェクト。これは、ページ単位でユーザーによってアクセスされたドキュメントで使用されています。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_PAGE</li> - <li>ATK: ATK_ROLE_PAGE</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA:USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_PAGE</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetab/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetab/index.html deleted file mode 100644 index b0a45223c8..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetab/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: ROLE_PAGETAB -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ページタブを表します。これはページタブリストの子要素です。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST">ROLE_PAGETABLIST</a></code> も参照してください。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_PAGE_TAB</code></li> - <li>ATK: <code>ATK_ROLE_PAGE_TAB</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_PAGETAB</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tab">tab</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetablist/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetablist/index.html deleted file mode 100644 index 97ef09b02a..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetablist/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: ROLE_PAGETABLIST -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ページタブコントロールのコンテナを表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB">ROLE_PAGETAB</a></code>を参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_PAGE_TAB_LIST</code></li> - <li>ATK: <code>ATK_ROLE_PAGE_TAB_LIST</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_PAGETABLIST</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tablist">tablist</a></code></li> - <li>DHTML: role="tabs"</li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/tabs" title="tabs">tabs</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pane/index.html deleted file mode 100644 index 9289ffde50..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pane/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: ROLE_PANE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PANE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PANE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>フレームウィンドウやドキュメントウィンドウ内のペインを表します。ユーザは他のペイン間および現在のペインのコンテンツ内の間を移動できますが、異なるペイン内の項目間は移動できません。このように、ペインはフレームウィンドウやドキュメントより下位、個々のコントロールよりも上位のグループレベルを表します。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_PANEL</code></li> - <li>ATK: ATK_<code>ROLE_PANEL</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_GROUPING</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#region">region</a></code></li> - <li>HTML: first child of <a href="/ja/docs/Web/HTML/Element/frame" title="<frame> は、別の HTML 文書を表示できる個々の領域を定義する HTML 要素です。 frame 要素は <frameset> の内部で使用します。"><code><frame></code></a> or <a href="/ja/docs/Web/HTML/Element/iframe" title="HTML のインラインフレーム要素 (<iframe>) は、入れ子になった閲覧コンテキストを表現し、現在の HTML ページに他のページを埋め込むことができます。"><code><iframe></code></a></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/panel" title="panel">panel</a></code>/>, <<code><a href="/ja/docs/Mozilla/Tech/XUL/tabbox" title="tabbox">tabbox</a></code>/></li> -</ul> -<h2 id="Features" name="Features">特徴</h2> -<ul> - <li><code>nsIAccessible::value</code> は、現在のドキュメントの URL を露呈します。</li> - <li><code>nsIAccessible::name</code> は、現在のペインの <a href="/ja/docs/Web/HTML/Element/title" title="HTML 題名要素 (<title>) は、ブラウザーのタイトルバーやページのタブに表示される文書の題名を定義します。"><code><title></code></a> を露呈します。</li> - <li>編集可能エリアでない限り、<code>STATE_READONLY</code> を設定します。</li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_paragraph/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_paragraph/index.html deleted file mode 100644 index a7f4443dc4..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_paragraph/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE PARAGRAPH -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARAGRAPH -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARAGRAPH ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>テキストの段落。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_PARAGRAPH</li> - <li>ATK: ATK_ROLE_PARAGRAPH</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA: USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_PARAGRAPH</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_parent_menuitem/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_parent_menuitem/index.html deleted file mode 100644 index f79f65b850..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_parent_menuitem/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE_PARENT_MENUITEM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARENT_MENUITEM -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARENT_MENUITEM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ユーザーが別のメニューを表示するように選択することができ、メニュー内の項目であるメニュー項目を表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_MENU</code></li> - <li>ATK: <code>ATK_ROLE_MENU</code></li> - <li>UA: <code>NSAccessibilityMenuItemRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_MENUITEM</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/menuitem" title="menuitem">menuitem</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_password_text/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_password_text/index.html deleted file mode 100644 index ab51e83aae..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_password_text/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE PASSWORD TEXT -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PASSWORD_TEXT -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PASSWORD_TEXT ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>パスワード、またはテキストコンテンツがユーザーに視覚的に示されていない他の場所に使用するテキストオブジェクトです。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_PASSWORD_TEXT</li> - <li>ATK: ATK_ROLE_PASSWORD_TEXT</li> - <li>UA: NSAccessibilityTextFieldRole</li> - <li>MSAA/IA2: ROLE_SYSTEM_TEXT</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>HTML: <input type="password"/></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_popup_menu/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_popup_menu/index.html deleted file mode 100644 index e2c8897daf..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_popup_menu/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ROLE_POPUP_MENU -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_POPUP_MENU -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_POPUP_MENU ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ユーザーはこれらの選択肢のいずれかを選択するとき、通常、ユーザーに選択肢のリストを提供するために使用され、一時的なウィンドウが非表示になります。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_POPUP_MENU</code></li> - <li>ATK: <code>ATK_ROLE_POPUP_MENU</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_MENUPOPUP</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_progressbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_progressbar/index.html deleted file mode 100644 index 37ff081c99..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_progressbar/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: ROLE_PROGRESSBAR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROGRESSBAR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROGRESSBAR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>動的にユーザーが進行中の操作の完了率を示すプログレスバーを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_PROGRESS_BAR</code></li> - <li>ATK: ATK_<code>ROLE_PROGRESS_BAR</code></li> - <li>UA: <code>NSAccessibilityProgressIndicatorRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_PROGRESSBAR</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <<code><a class="external" href="https://w3c.github.io/aria/#progressbar">progressbar</a></code>/></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/progress" title="HTML の <progress> 要素は、タスクの進捗状況を表示します。プログレスバーとしてよく表示されます。"><code><progress></code></a></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/progressmeter" title="progressmeter">progressmeter</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_propertypage/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_propertypage/index.html deleted file mode 100644 index a9d719e7c8..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_propertypage/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: ROLE_PROPERTYPAGE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROPERTYPAGE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROPERTYPAGE ---- -<p><a href="/ja/docs/Accessibility/AT-APIs/Gecko/Roles">« Gecko Roles ページ</a></p> - -<p>プロパティシートを表します。</p> - -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> - -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> -</ul> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_SCROLL_PANE</code></li> - <li>ATK: <code>ATK_ROLE_SCROLL_PANE</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_PROPERTYPAGE</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tabpanel">tabpanel</a></code></li> - <li>XUL:<<code><a href="/ja/docs/Mozilla/Tech/XUL/tabpanel" title="tabpanel">tabpanel</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pushbutton/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pushbutton/index.html deleted file mode 100644 index a0b0ecc486..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pushbutton/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: ROLE_PUSHBUTTON -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON -tags: - - AT_APIs - - Accessibility - - Reference - - Référence(2) -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>プッシュボタンコントロールを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_PUSH_BUTTON</code></li> - <li>UA: <code>NSAccessibilityButtonRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_PUSHBUTTON</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#button">button</a></code></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/button" title="HTML の <button> 要素はクリックできるボタンを表し、フォームや、文書で単純なボタン機能が必要なあらゆる場所で使用することができます。"><code><button></code></a></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/button" title="button">button</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radio_menu_item/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radio_menu_item/index.html deleted file mode 100644 index 4ba76918dd..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radio_menu_item/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_RADIO_MENU_ITEM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIO_MENU_ITEM -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIO_MENU_ITEM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>メニュー項目であるラジオボタンを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_RADIO_MENU_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_RADIO_MENU_ITEM</code></li> - <li>UA: <code>NSAccessibilityMenuItemRole</code></li> - <li>MSAA: <code>ROLE_SYSTEM_MENUITEM</code></li> - <li>IA2: <code>IA2_ROLE_RADIO_MENU_ITEM</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#menuitemradio">menuitemradio</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radiobutton/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radiobutton/index.html deleted file mode 100644 index 4d48e00c69..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radiobutton/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: ROLE_RADIOBUTTON -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIOBUTTON -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIOBUTTON ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ラジオボタンとも呼ばれるオプションボタンを表します。これは、相互に排他的なオプションのグループの1つです。この属性を持つ単一の親を共有するすべてのオブジェクトは、単一の相互排他的なグループの一部であると仮定されます。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_RADIO_BUTTON</code></li> - <li>ATK: <code>ATK_ROLE_RADIO_BUTTON</code></li> - <li>UA: <code>NSAccessibilityRadioButtonRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_RADIOBUTTON</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#radio">radio</a></code></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/input" title="HTML の <input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code><input></code></a> of type <code>radio</code>.</li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/radio" title="radio">radio</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_redundant_object/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_redundant_object/index.html deleted file mode 100644 index efbc9084c5..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_redundant_object/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ROLE REDUNDANT OBJECT -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_REDUNDANT_OBJECT -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_REDUNDANT_OBJECT ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Descroption" name="Descroption">説明</h2> - -<p>アクセシブルな階層内で他のオブジェクトと重複しているオブジェクトです。AT は、典型的には、このロールを持つオブジェクトを無視します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: ATK_ROLE_REDUNDANT_OBJECT</li> - <li>UA: NSAccessibilityUnknownRole</li> - <li>MSAA: USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_REDUNDANT_OBJECT</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_rich_option/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_rich_option/index.html deleted file mode 100644 index 9d1206aafc..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_rich_option/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE RICH OPTION -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RICH_OPTION -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RICH_OPTION ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>リストボックス内の豊富なオプション。それは子供として他のウィジェットを持つことができます。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_LIST_ITEM</li> - <li>ATK: ATK_ROLE_LIST_ITEM</li> - <li>UA: NSAccessibilityRowRole</li> - <li>MSAA/IA2: ROLE_SYSTEM_LISTITEM</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/listitem" title="listitem">listitem</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_root_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_root_pane/index.html deleted file mode 100644 index 35f5b9ca40..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_root_pane/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ROLE_ROOT_PANE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ルート区画。ガラス区画と階層化区画を子として持つ特殊な区画。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE">ROLE_GLASS_PANE</a></code> と <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE">ROLE_LAYERED_PANE</a></code>を参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_ROOT_PANE</code></li> - <li>ATK: ATK_<code>ROLE_ROOT_PANE</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_ROOT_PANE</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_row/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_row/index.html deleted file mode 100644 index 537ae5a89b..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_row/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: ROLE_ROW -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>テーブル内のセルの行を表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code> も参照してください。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_LIST_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li> - <li>UA: <code>NSAccessibilityRowRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_ROW</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#row">row</a></code></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/tr" title="HTML の <tr> 要素は、表のひとつの行で構成される <tr> ブロックを内部に持つマークアップを明示します。行の内部で <th> 要素および <td> 要素が、それぞれ見出しやデータのセルを生成します。"><code><tr></code></a></li> - <li>XUL:<<code><a href="/ja/docs/Mozilla/Tech/XUL/listitem" title="listitem">listitem</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ruler/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ruler/index.html deleted file mode 100644 index ef0ae65d70..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ruler/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE RULER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RULER -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RULER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>ワードプロセッサで使用されるような定規。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_RULER</li> - <li>ATK: ATK_ROLE_RULER</li> - <li>UA: @"AXRuler"</li> - <li>MSAA: USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_RULER</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scroll_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scroll_pane/index.html deleted file mode 100644 index 30de644a96..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scroll_pane/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ROLE_SCROLL_PANE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>スクロールペイン、これは、ユーザーが大量の情報を少しずつ表示できるようにするオブジェクトです。その子は、スクロールバーとビューポートを含めることができます。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEW_PORT">ROLE_VIEW_PORT</a></code>を参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_SCROLL_PANE</code></li> - <li>ATK: <code>ATK_ROLE_SCROLL_PANE</code></li> - <li>UA: <code>NSAccessibilityScrollAreaRole</code></li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_SCROLL_PANE</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scrollbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scrollbar/index.html deleted file mode 100644 index 22af0adf33..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scrollbar/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: ROLE_SCROLLBAR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLLBAR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLLBAR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>垂直または水平スクロールバーを表します。クライアント領域の一部か、コントロール内で使用されます。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>ATK: <code>ATK_ROLE_SCROLL_BAR</code></li> - <li>UA: <code>NSAccessibilityScrollBarRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_SCROLLBAR</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>サポートされていません。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_section/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_section/index.html deleted file mode 100644 index 0c08471fd0..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_section/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE SECTION -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SECTION -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SECTION ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>文書コンテンツのコンテナ。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_SECTION</li> - <li>ATK: ATK_ROLE_SECTION</li> - <li>UA: NSAccessibilityGroupRole</li> - <li>MSAA:USE_ROLE_STRING</li> - <li>IA2: IA2_ROLE_SECTION</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#section">section</a></code></li> - <li>HTML: <div/>, <blockquote/></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_separator/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_separator/index.html deleted file mode 100644 index ef277767b6..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_separator/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: ROLE_SEPARATOR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SEPARATOR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SEPARATOR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>セパレータメニュー項目やウィンドウ内のペインを分割するバーなど、空間を二つの領域に視覚的に分割するために使用されます。</p> -<h2 id="Children" name="Children">子要素</h2> -<p>子はありません。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_SEPARATOR</code></li> - <li>ATK: ATK_<code>ROLE_SEPARATOR</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_SEPARATOR</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#separator">separator</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/separator" title="separator">separator</a></code>/></li> - <li>HTML: <span class="nowiki"><a href="/ja/docs/Web/HTML/Element/hr" title="HTML の <hr> 要素は、段落レベルの要素間において、テーマの意味的な区切りを表します。例えば、話の場面の切り替えや、節内での話題の転換などです。"><code><hr></code></a></span></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_slider/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_slider/index.html deleted file mode 100644 index db831c8a29..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_slider/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: ROLE_SLIDER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SLIDER -tags: - - AT_APIs - - Accessibility - - Reference - - Référence(2) -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SLIDER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ユーザーが最小値と最大値の間の指定された単位で設定を調整することを可能にするスライダーを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_SLIDER</code></li> - <li>ATK: <code>ATK_ROLE_SLIDER</code></li> - <li>UA: <code>NSAccessibilitySliderRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_SLIDER</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#slider">slider</a></code></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_sound/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_sound/index.html deleted file mode 100644 index 9fd7001061..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_sound/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: ROLE_SOUND -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SOUND -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SOUND ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>システムサウンドを表します。様々なシステムイベントに関連付けられます。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_UNKNOWN</code></li> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_SOUND</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>サポートされていません。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_spinbutton/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_spinbutton/index.html deleted file mode 100644 index b50d439b1a..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_spinbutton/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: ROLE_SPINBUTTON -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPINBUTTON -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPINBUTTON ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>ユーザーがスピンボックスに関連付けられた別の"buddy"コントロールに表示される値をインクリメントまたはデクリメントすることができます制御であるスピンボックスを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_SPIN_BUTTON</code></li> - <li>ATK: <code>ATK_ROLE_SPIN_BUTTON</code></li> - <li>UA: <code>NSAccessibilityIncrementorRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_SPINBUTTON</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#spinbutton">spinbutton</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/spinbuttons" title="spinbuttons">spinbuttons</a></code>/></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_split_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_split_pane/index.html deleted file mode 100644 index 690141f20b..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_split_pane/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ROLE_SPLIT_PANE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLIT_PANE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLIT_PANE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>同時に2つのパネルを表示する特殊なパネルで分割ペイン。二つのパネルの間に、ユーザは1つのパネルが大きく、他方のパネルを小さくするために操作することができる分周器です。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_SPLIT_PANE</code></li> - <li>ATK: <code>ATK_ROLE_SPLIT_PANE</code></li> - <li>UA: <code>NSAccessibilitySplitGroupRole</code></li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_SPLIT_PANE</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_statusbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_statusbar/index.html deleted file mode 100644 index 2eb49709db..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_statusbar/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE_STATUSBAR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATUSBAR -tags: - - AT_APIs - - Accessibility - - NeedsUpdate - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATUSBAR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ステータスバーを表します。現在の操作やアプリケーションの状態、選択したオブジェクトについての情報を表示する、ウィンドウ下部の領域です。ステータスバーには異なる種類の情報を表示する複数のフィールドがあります。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_STATUSBAR</code></li> - <li>ATK: <code>ATK_ROLE_STATUSBAR</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_STATUSBAR</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#status">status</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/statusbar" title="statusbar">statusbar</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table/index.html deleted file mode 100644 index 71e8f18a6b..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE_TABLE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>セルの行と列を含むテーブルを表します。また、任意で行ヘッダと列ヘッダが含まれます。次のロールも参照してください: <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER">ROLE_COLUMNHEADER</a></code>, <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROWHEADER">ROLE_ROWHEADER</a></code>, <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMN">ROLE_COLUMN</a></code>, <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW">ROLE_ROW</a></code>, <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL">ROLE_CELL</a></code>。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_TABLE</code></li> - <li>ATK: <code>ATK_ROLE_TABLE</code></li> - <li>UA: <code>NSAccessibilityGroupRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_TABLE</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#grid">grid</a></code></li> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/table" title="HTML の <table> 要素は表形式のデータ、つまり、行と列の組み合わせによるセルに含まれたデータによる二次元の表で表現される情報です。"><code><table></code></a></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/listbox" title="listbox">listbox</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_column_header/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_column_header/index.html deleted file mode 100644 index dbf9e12353..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_column_header/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ROLE_TABLE_COLUMN_HEADER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_COLUMN_HEADER -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_COLUMN_HEADER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>テーブルの列のヘッダー。このロールは<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER">ROLE_COLUMNHEADER</a></code>のデュープであるに見えます。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_TABLE_COLUMN_HEADER</code></li> - <li>ATK: <code>ATK_ROLE_TABLE_COLUMN_HEADER</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_COLUMNHEADER</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_row_header/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_row_header/index.html deleted file mode 100644 index 1f6ea525d8..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_row_header/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: ROLE_TABLE_ROW_HEADER -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_ROW_HEADER -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_ROW_HEADER ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>表の行のヘッダー。このロールは<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROWHEADER">ROLE_ROWHEADER</a></code>のデュープであるに見えます。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_TABLE_ROW_HEADER</code></li> - <li>ATK: <code>ATK_ROLE_TABLE_ROW_HEADER</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_ROWHEADER</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tear_off_menu_item/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tear_off_menu_item/index.html deleted file mode 100644 index 311f7da062..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tear_off_menu_item/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ROLE_TEAR_OFF_MENU_ITEM -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEAR_OFF_MENU_ITEM -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEAR_OFF_MENU_ITEM ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>そのメニューをはがすと再接続するために使用されるメニュー項目。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_TEAROFF_MENU_ITEM</code></li> - <li>ATK: <code>ATK_ROLE_TEAR_OFF_MENU_ITEM</code></li> - <li>UA: <code>NSAccessibilityMenuItemRoleм</code></li> - <li>MSAA: <code>ROLE_SYSTEM_MENUITEM</code></li> - <li>IA2: <code>IA2_ROLE_TEAR_OFF_MENU</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_terminal/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_terminal/index.html deleted file mode 100644 index a46f45ff18..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_terminal/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: ROLE_TERMINAL -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TERMINAL -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TERMINAL ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>アクセス可能な端末を表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: <code>ROLE_TERMINAL</code></li> - <li>ATK: <code>ATK_ROLE_TERMINAL</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA: <code>USE_ROLE_STRING</code></li> - <li>IA2: <code>IA2_ROLE_TERMINAL</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_text_leaf/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_text_leaf/index.html deleted file mode 100644 index 3bcb001036..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_text_leaf/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: ROLE_TEXT_LEAF -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_LEAF -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_LEAF ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>編集を可能にするか、読み取り専用に指定された選択可能なテキストを表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityStaticTextRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_TEXT</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_titlebar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_titlebar/index.html deleted file mode 100644 index 16ea650639..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_titlebar/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: ROLE_TITLEBAR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TITLEBAR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TITLEBAR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ウィンドウのタイトルまたはキャプションバーを表します。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA: <code>ROLE_SYSTEM_TITLEBAR</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>このロールは、MSAA のみでサポートされており、Microsoft Windows で自動的にサポートされています。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toggle_button/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toggle_button/index.html deleted file mode 100644 index c68f16675c..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toggle_button/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE TOGGLE BUTTON -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOGGLE_BUTTON -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOGGLE_BUTTON ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>トグルボタン。オンまたはオフにするが、現在の状態を示す別々のインジケータを提供しないことができる特殊なプッシュボタン。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_TOGGLE_BUTTON</li> - <li>ATK: ATK_ROLE_TOGGLE_BUTTON</li> - <li>UA: NSAccessibilityButtonRole</li> - <li>MSAA: ROLE_SYSTEM_PUSHBUTTON</li> - <li>IA2: IA2_ROLE_TOGGLE_BUTTON</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toolbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toolbar/index.html deleted file mode 100644 index 1595276171..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toolbar/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: ROLE_TOOLBAR -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLBAR -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLBAR ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ツールバーを表します。よく使用される機能への簡単なアクセスを提供するコントロール (プッシュボタンやトグルボタン) のグループです。</p> -<h2 id="Children" name="Children">子要素</h2> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_TOOL_BAR</code></li> - <li>ATK: <code>ATK_ROLE_TOOL_BAR</code></li> - <li>UA: <code>NSAccessibilityToolbarRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_TOOLBAR</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#toolbar">toolbar</a></code></li> - <li>XUL:<<code><a href="/ja/docs/Mozilla/Tech/XUL/toolbar" title="toolbar">toolbar</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tooltip/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tooltip/index.html deleted file mode 100644 index 47eb22a0e9..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tooltip/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: ROLE_TOOLTIP -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLTIP -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLTIP ---- -<p><a href="/ja/docs/Accessibility/AT-APIs/Gecko/Roles">« Gecko Roles ページ</a></p> -<p>役立つヒントを提供するツールチップを表します。</p> -<h2 id="Interfaces" name="Interfaces">インターフェイス</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li> -</ul> -<h2 id="Children" name="Children">子要素</h2> -<p>子はありません。</p> -<h2 id="Events" name="Events">イベント</h2> -<ul> - <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_ASYNCH_SHOW">EVENT_ASYNCH_SHOW</a></code> - ツールチップが表示された時に発生。</li> -</ul> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI:</li> - <li>ATK: <code>ATK_ROLE_TOOL_TIP</code></li> - <li>UA: @"AXHelpTag"</li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_TOOLTIP</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tooltip">tooltip</a></code></li> - <li>XUL: <<code><a href="/ja/docs/Mozilla/Tech/XUL/tooltip" title="tooltip">tooltip</a></code>/></li> -</ul> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tree_table/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tree_table/index.html deleted file mode 100644 index e97b473952..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tree_table/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ROLE TREE TABLE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TREE_TABLE -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TREE_TABLE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>データの複数の列を表示したり、列の展開や折りたたみのできるコントロールを表します。このロールは <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE">ROLE_OUTLINE</a></code> とだまされやすいように見えます。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_TREE_TABLE</li> - <li>ATK: ATK_ROLE_TREE_TABLE</li> - <li>UA: NSAccessibilityTableRole</li> - <li>MSAA/IA2: ROLE_SYSTEM_OUTLINE</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#treegrid">treegrid</a></code></li> - <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/tree" title="tree">tree</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_viewport/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_viewport/index.html deleted file mode 100644 index ca3ada95b7..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_viewport/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: ROLE VIEWPORT -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEWPORT -tags: - - AT_APIs - - Accessibility -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEWPORT ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<h2 id="Description" name="Description">説明</h2> - -<p>ビューポート。オブジェクトは通常、スクロールペインで使用されます。これは、ユーザーが見ることができるデータ全体の一部を表します。ユーザーがスクロールバーを操作するのに合わせて、ビューポートの内容は変更することができます。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE">ROLE_SCROLL_PANE</a></code> も参照してください。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>AT-SPI: ROLE_VIEWPORT</li> - <li>ATK: ATK_ROLE_VIEWPORT</li> - <li>UA: NSAccessibilityUnknownRole</li> - <li>MSAA: ROLE_SYSTEM_PANE</li> - <li>IA2: IA2_ROLE_VIEW_PORT</li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<p>使用されていません。</p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_whitespace/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_whitespace/index.html deleted file mode 100644 index f1319ad295..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_whitespace/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: ROLE_WHITESPACE -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_WHITESPACE -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_WHITESPACE ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> - -<p>他のオブジェクトとの間の空白を表します。</p> - -<h2 id="Mapped_to" name="Mapped_to">マッピング</h2> - -<ul> - <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li> - <li>UA: <code>NSAccessibilityUnknownRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_WHITESPACE</code></li> -</ul> - -<h2 id="Used_by" name="Used_by">使用</h2> - -<ul> - <li>HTML: <a href="/ja/docs/Web/HTML/Element/br" title="HTML の <br> 要素 は、文中に改行(キャリッジリターン)を生成します。詩や住所など、行の分割が重要な場合に有用です。"><code><br></code></a></li> -</ul> - -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_window/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_window/index.html deleted file mode 100644 index 0a777812d0..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_window/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: ROLE_WINDOW -slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_WINDOW -tags: - - AT_APIs - - Accessibility - - Reference -translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_WINDOW ---- -<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p> -<p>ウィンドウ枠を表します。これは、タイトルバーやクライアント、ウィンドウに含まれる他のオブジェクトなどの子オブジェクトを含みます。</p> -<h2 id="Mapped_to" name="Mapped_to">別名</h2> -<ul> - <li>AT-SPI: <code>ROLE_WINDOW</code></li> - <li>ATK: <code>ATK_ROLE_WINDOW</code></li> - <li>UA: <code>NSAccessibilityWindowRole</code></li> - <li>MSAA/IA2: <code>ROLE_SYSTEM_WINDOW</code></li> -</ul> -<h2 id="Used_by" name="Used_by">使用する要素</h2> -<p>ロールは、Microsoft Windows により自動的にサポートされています。</p> -<p></p><section class="Quick_links" id="Quick_Links"> - -</section><p></p> diff --git a/files/ja/mozilla/tech/accessibility/at-apis/index.html b/files/ja/mozilla/tech/accessibility/at-apis/index.html deleted file mode 100644 index 8cd6f37533..0000000000 --- a/files/ja/mozilla/tech/accessibility/at-apis/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: AT-APIs -slug: Mozilla/Tech/Accessibility/AT-APIs ---- -{{wiki.localize('System.API.page-generated-for-subpage')}} diff --git a/files/ja/mozilla/tech/accessibility/index.html b/files/ja/mozilla/tech/accessibility/index.html deleted file mode 100644 index db1f1ad9f7..0000000000 --- a/files/ja/mozilla/tech/accessibility/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Accessibility API Implementation Details -slug: Mozilla/Tech/Accessibility -tags: - - AT APIs - - Accessibility - - Landing - - Mozilla - - Reference -translation_of: Mozilla/Tech/Accessibility ---- -<p>{{Draft}}</p> - -<p>これらのページには、 <strong>Assistive Technology API</strong> の Mozilla 固有の実装の詳細に関するドキュメントが含まれています。</p> - -<p>{{LandingPageListSubpages}}</p> - -<h2 id="Subnav">Subnav</h2> - -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Web/Accessibility"><strong>Accessibility</strong></a></li> - <li><a href="/ja/docs/Mozilla/Accessibility"><strong>Mozilla and Accessibility</strong></a></li> - <li class="toggle"> - <details open><summary><a href="/ja/docs/Mozilla/Tech/Accessibility"><strong>Accessibility API Implementation Details</strong></a></summary> {{ListSubpagesForSidebar("/ja/docs/Mozilla/Tech/Accessibility", 1)}}</details> - </li> -</ol> -</section> diff --git a/files/ja/mozilla/tech/index.html b/files/ja/mozilla/tech/index.html deleted file mode 100644 index 1a0fa3a176..0000000000 --- a/files/ja/mozilla/tech/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Mozilla technologies -slug: Mozilla/Tech -tags: - - Landing - - Mozilla - - NeedsTranslation - - Reference - - TopicStub - - XUL -translation_of: Mozilla/Tech ---- -<p>Mozilla には、プロジェクトのコンポーネントとして使用されるいくつかのテクノロジーがあります。これらはここに文章化されています。</p> - -<p>{{LandingPageListSubpages}}</p> diff --git a/files/ja/mozilla/tech/xpcom/accessing_the_windows_registry_using_xpcom/index.html b/files/ja/mozilla/tech/xpcom/accessing_the_windows_registry_using_xpcom/index.html deleted file mode 100644 index 28acf4cc24..0000000000 --- a/files/ja/mozilla/tech/xpcom/accessing_the_windows_registry_using_xpcom/index.html +++ /dev/null @@ -1,281 +0,0 @@ ---- -title: Accessing the Windows Registry Using XPCOM -slug: Mozilla/Tech/XPCOM/Accessing_the_Windows_Registry_Using_XPCOM -tags: - - Add-ons - - Extensions -translation_of: Mozilla/Tech/XPCOM/Accessing_the_Windows_Registry_Using_XPCOm ---- -<p> -</p><p><br> -</p><p>{{ 英語版章題("Introduction") }} -</p> -<h3 id=".E5.B0.8E.E5.85.A5" name=".E5.B0.8E.E5.85.A5"> 導入 </h3> -<p>Windows 専用の機能として実装する場合、環境や他のインストールされているプログラムに関する情報を目的に Windows のレジストリへアクセスするのはよく有用であります。このために、<a href="ja/XPCOM">XPCOM</a> インターフェースを利用して、レジストリのデータを読み書きします。この文書では、いくつかの Mozilla 製品で利用可能なインターフェースの利用方法について説明します。 -</p><p>この文書のサンプルは、<a href="ja/XPCOM">XPCOM</a> を利用して <a href="ja/JavaScript">JavaScript</a> で全て記述されています。 -</p><p>{{ 英語版章題("Support in Firefox 1.5 or newer") }} -</p> -<h3 id="Firefox_1.5_.E3.82.82.E3.81.97.E3.81.8F.E3.81.AF.E3.81.9D.E3.82.8C.E4.BB.A5.E9.99.8D.E3.81.A7.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name="Firefox_1.5_.E3.82.82.E3.81.97.E3.81.8F.E3.81.AF.E3.81.9D.E3.82.8C.E4.BB.A5.E9.99.8D.E3.81.A7.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88"> Firefox 1.5 もしくはそれ以降でサポート </h3> -<p><a href="ja/Firefox_1.5">Firefox 1.5</a> でレジストリへより広範囲にアクセス可能となる新しい API <a href="ja/NsIWindowRegKey">nsIWindowRegKey</a> が追加されました。このインターフェースにより、Windows API がより近いものになりますが、さまざまな低レベルの詳細な部分についてあなたが対処する必要がでてきます。もし、Firefox 1.5 かそれ以降でのみ利用する拡張を作成する場合は、この章だけを読むことで十分でしょう。 -</p><p>{{ 英語版章題("A simple example") }} -</p> -<h4 id=".E7.B0.A1.E5.8D.98.E3.81.AA.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB" name=".E7.B0.A1.E5.8D.98.E3.81.AA.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB"> 簡単なサンプル </h4> -<p>Here's a simple example showing how to read your Windows ProductId: -</p> -<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] - .createInstance(Components.interfaces.nsIWindowsRegKey); -wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion", - wrk.ACCESS_READ); -var id = wrk.readStringValue("ProductId"); -wrk.close(); -</pre> -<p>This example, while simple, shows several important things about using the interface. First, you must use <code>createInstance()</code> to get an object implementing this interface, not <code>getService()</code>. Second, you must call <code>open()</code> on the key before attempting to read a value. -</p><p>Notice in the <code>open()</code> call that the root key to use is specified using the named constants available on the <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a> interface, in this case <code>ROOT_KEY_LOCAL_MACHINE</code>, which corresponds to <code>HKEY_LOCAL_MACHINE</code> in the Windows registry. Also notice that the path to the key has backslashes escaped, a necessity in JavaScript and C++ string constants. -</p><p>The desired access rights are specified using a named constant from the interface, in this example <code>ACCESS_READ</code>. This can be very important when dealing with non-Administrator accounts with restricted privileges. </p><p>The value is read using <code>readStringValue()</code>. You have to specify what type of data you expect to read, which we will expand on later. Finally, note that you should close the key when you are done to avoid wasting system resources. -</p><p>{{ 英語版章題("Opening Registry Keys") }} -</p> -<h4 id="Opening_Registry_Keys" name="Opening_Registry_Keys"> Opening Registry Keys </h4> -<p>Before doing anything with a registry key you must first open the key you are interested in. The example above demonstates this using the <code>open()</code> method. If you want to create a new key, you can use the <code>create()</code> method, which takes the same parameters as <code>open()</code>. Note that it is not an error to call <code>create()</code> on an existing key, and doing so has the same result as calling <code>open()</code>. -</p><p>Both of these methods take a root key as the first parameter. From JavaScript, you will want to use the named constants on the interface for this parameter. They are: -</p> -<ul><li> <code>ROOT_KEY_CLASSES_ROOT</code> — Corresponds to <code>HKEY_CLASSES_ROOT</code> -</li><li> <code>ROOT_KEY_CURRENT_USER</code> — Corresponds to <code>HKEY_CURRENT_USER</code> -</li><li><code> ROOT_KEY_LOCAL_MACHINE</code> — Corresponds to <code>HKEY_LOCAL_MACHINE</code> -</li></ul> -<p>The second parameter for <code>open()</code> and <code>create()</code> is the path to the key. As noted in the example above, you will need to escape backslashes within the string. -</p><p>The third parameter for <code>open()</code> and <code>create()</code> is the access mode. It is specified as a bitwise combination of flags defined on the interface. You can read the interface documentation for a full explanation, but we will show only the three most commonly used modes here: -</p> -<ul><li> <code>ACCESS_READ</code> — For reading values, enumerating keys, and receiving notifications -</li><li> <code>ACCESS_WRITE</code> — For setting values and creating sub keys -</li><li> <code>ACCESS_ALL</code> — Access for all operations -</li></ul> -<p>In addition to <code>open()</code> and <code>create()</code>, there are the <code>openChild()</code> and <code>createChild()</code> methods. You can call these methods on an already-opened registry key to open a child key. Both methods take a relative path and access mode as parameters and return a new object implementing <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a>. Here's the simple example again, but using <code>openChild()</code>: -</p> -<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] - .createInstance(Components.interfaces.nsIWindowsRegKey); -wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Microsoft", - wrk.ACCESS_READ); -var subkey = wrk.openChild("Windows\\CurrentVersion", wrk.ACCESS_READ); -var id = subkey.readStringValue("ProductId"); -subkey.close(); -wrk.close(); -</pre> -<p>Once you've opened a registry key, you can begin to make use of it. -</p><p>{{ 英語版章題("Reading Registry Values") }} -</p> -<h4 id="Reading_Registry_Values" name="Reading_Registry_Values"> Reading Registry Values </h4> -<p>Probably the most common action associated with the Windows registry is reading values. The simple example above shows how to read an existing string value. However, Windows registry values can have several data types, so you need to ensure that you read the correct type. You can check the type of a value using the method <code>getValueType()</code>. This method returns an integer indicating the data type of the value. The data types supported by this interface are defined as named constants on the interface as follows: -</p> -<ul><li> <code>TYPE_NONE</code> — Probably not useful -</li><li> <code>TYPE_STRING</code> — A Unicode string value -</li><li> <code>TYPE_BINARY</code> — Binary data -</li><li> <code>TYPE_INT</code> — A 32 bit integer -</li><li> <code>TYPE_INT64</code> — A 64 bit integer -</li></ul> -<p>Each of these types (except <code>TYPE_NONE</code>) has a corresponding method to read the value data: -</p> -<ul><li> <code>readStringValue()</code> -</li><li> <code>readBinaryValue()</code> -</li><li> <code>readIntValue()</code> -</li><li> <code>readInt64Value()</code> -</li></ul> -<p>Since JavaScript is a dynamically-typed language, you may wish to use the following code to handle all types of data. In this function, <code>wrk</code> is expected to be an already opened <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a>. -</p> -<pre>function readRegistryValue(wrk, value) -{ - switch (wrk.getValueType(value)) { - case wrk.TYPE_STRING: - return wrk.readStringValue(value); - case wrk.TYPE_BINARY: - return wrk.readBinaryValue(value); - case wrk.TYPE_INT: - return wrk.readIntValue(value); - case wrk.TYPE_INT64: - return wrk.readInt64Value(value); - } - // unknown type - return null; -} -</pre> -<p>{{ 英語版章題("Writing Registry Values") }} -</p> -<h4 id="Writing_Registry_Values" name="Writing_Registry_Values"> Writing Registry Values </h4> -<p>Writing registry values is quite similar to reading. For each supported data type, there is a <code>write*Value()</code> method complementary to the <code>read*Value()</code> method. Don't forget that if you are writing a new value, you may need to <code>create()</code> the parent key first. This example demonstrates writing a new string value: -</p> -<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] - .createInstance(Components.interfaces.nsIWindowsRegKey); -wrk.create(wrk.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\MDC\\Test", - wrk.ACCESS_WRITE); -wrk.writeStringValue("TestValue", "Hello World!"); -wrk.close(); -</pre> -<p>{{ 英語版章題("Checking the Existence of Keys and Values") }} -</p> -<h4 id="Checking_the_Existence_of_Keys_and_Values" name="Checking_the_Existence_of_Keys_and_Values"> Checking the Existence of Keys and Values </h4> -<p>Before you attempt to read a value or open a child key, you should check to see whether it exists first. The <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a> interface provides methods for both of these—<code>hasValue()</code> and <code>hasChild()</code>—as demonstrated in this example: -</p> -<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] - .createInstance(Components.interfaces.nsIWindowsRegKey); -wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Microsoft", - wrk.ACCESS_READ); -if (wrk.hasChild("Windows")) { - var subkey = wrk.openChild("Windows\\CurrentVersion", wrk.ACCESS_READ); - var id; - if (subkey.hasValue("ProductId")) - id = subkey.readStringValue("ProductId"); - subkey.close(); -} -wrk.close(); -</pre> -<p>{{ 英語版章題("Enumerating Registry Keys and Values") }} -</p> -<h4 id="Enumerating_Registry_Keys_and_Values" name="Enumerating_Registry_Keys_and_Values"> Enumerating Registry Keys and Values </h4> -<p>In some situations, you may want to enumerate a number of keys or values whose names you do not know. The <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a> interface provides the <code>childCount</code>, <code>getChildName()</code>, <code>valueCount</code>, and <code>getValueName()</code> properties and methods for enumerating keys and values respectively. You can use these methods to read a list of values or recursively access a branch of the registry. This example reads all the startup programs in one key of the registry. -</p> -<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] - .createInstance(Components.interfaces.nsIWindowsRegKey); -wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", - wrk.ACCESS_READ); -for (var i=0; i<wrk.valueCount; i++) { - var name = wrk.getValueName(i); - var value = readRegistryValue(wrk, name); - // do something interesting here... -} -wrk.close(); -</pre> -<p>For simplicity, this example assumes the existence of the <code>readRegistryValue()</code> function defined above. -</p><p>{{ 英語版章題("Removing Registry Keys and Values") }} -</p> -<h4 id="Removing_Registry_Keys_and_Values" name="Removing_Registry_Keys_and_Values"> Removing Registry Keys and Values </h4> -<p>To remove child keys and values from the registry, you can use the <code>removeChild()</code> and <code>removeValue()</code> methods. <code>removeChild()</code> removes a child key and all of its values, but will fail if the key has any child keys of its own. In that case you must manually enumerate the children and remove them individually. This example shows how to recursively delete a registry key and all of its children. Use with caution! -</p> -<pre>function removeChildrenRecursive(wrk) -{ - // we count backwards because we're removing them as we go - for (var i = wrk.childCount - 1; i >= 0; i--) { - var name = wrk.getChildName(i); - var subkey = wrk.openChild(name, wrk.ACCESS_ALL); - removeChildrenRecursive(subkey); - subkey.close(); - wrk.removeChild(name); - } -} - -var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] - .createInstance(Components.interfaces.nsIWindowsRegKey); -wrk.open(wrk.ROOT_KEY_CURRENT_USER, - "SOFTWARE\\MDC\\Test", - wrk.ACCESS_ALL); -removeChildrenRecursive(wrk); -wrk.close(); -</pre> -<p>{{ 英語版章題("Monitoring Registry Keys") }} -</p> -<h4 id="Monitoring_Registry_Keys" name="Monitoring_Registry_Keys"> Monitoring Registry Keys </h4> -<p>If you would like to know whether a registry key has changed since you last checked it, you can use the <code>startWatching()</code>, <code>stopWatching()</code>, and <code>hasChanged()</code> methods. You must call <code>startWatching()</code> for the key to be monitored. The method takes one parameter, a boolean indicating whether child keys should be watched. After that, you can call <code>hasChanged()</code> to determine whether or not you need to reread the value. Calling <code>hasChanged()</code> automatically resets the watch, so you can be sure that if it returns <code>true</code> there are changes. This example demonstrates a trivial registry value cache for one key: -</p> -<pre>var cache = {}; - -function readRegistryValueNoCache(wrk, value) -{ - switch (wrk.getValueType(value)) { - case wrk.TYPE_STRING: - return wrk.readStringValue(value); - case wrk.TYPE_BINARY: - return wrk.readBinaryValue(value); - case wrk.TYPE_INT: - return wrk.readIntValue(value); - case wrk.TYPE_INT64: - return wrk.readInt64Value(value); - } - // unknown type - return null; -} - -function readRegistryValue(wrk, value) -{ - if (wrk.hasChanged()) { - // wipe out the cache - cache = {}; - } - - if (value in cache) { - return cache[value]; - } - - cache[value] = readRegistryValueNoCache(wrk, value); - return cache[value]; -} - -var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] - .createInstance(Components.interfaces.nsIWindowsRegKey); -wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE, - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion", - wrk.ACCESS_READ); -wrk.startWatching(false); // only watch the values on this key, not child keys -var id = readRegistryValue(wrk, "ProductId"); -/* later you can read this again, - and it should come from the cache unless - there have been changes to the registry. - Remember to call wrk.close() when you - are finished! -*/ -</pre> -<p>{{ 英語版章題("Support in Firefox 1.0") }} -</p> -<h3 id="Support_in_Firefox_1.0" name="Support_in_Firefox_1.0"> Support in Firefox 1.0 </h3> -<p>Firefox 1.0 includes a much simpler interface to the Windows registry, without most of the functionality supported in newer versions. The functionality is exposed in the <a href="ja/NsIWindowsShellService">nsIWindowsShellService</a> interface. It consists of only one method, <code>getRegistryEntry()</code>, and a set of named constants to specify the root key. You can use it as shown in the following example: -</p> -<pre>var wss = Components.classes["@mozilla.org/browser/shell-service;1"] - .getService(Components.interfaces.nsIWindowsShellService); -var id = wss.getRegistryEntry(wss.HKLM, - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion", - "ProductId"); -</pre> -<div class="note"><b>Note:</b> There's no way to set a registry value using this interface.</div> -<p>{{ 英語版章題("Support in SeaMonkey and Other Non-toolkit Applications") }} -</p> -<h3 id="Support_in_SeaMonkey_and_Other_Non-toolkit_Applications" name="Support_in_SeaMonkey_and_Other_Non-toolkit_Applications"> Support in SeaMonkey and Other Non-toolkit Applications </h3> -<p>In older versions of SeaMonkey and other non-toolkit-based applications, an interface existed called nsIWindowsRegistry, containing the same method and named constants as the methods described above for Firefox 1.0. It can be used as follows: -</p> -<pre>var wss = Components.classes["@mozilla.org/winhooks;1"] - .getService(Components.interfaces.nsIWindowsRegistry); -var id = wss.getRegistryEntry(wss.HKLM, - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion", - "ProductId"); -</pre> -<p>{{ 英語版章題("Backwards Compatibility") }} -</p> -<h3 id="Backwards_Compatibility" name="Backwards_Compatibility"> Backwards Compatibility </h3> -<p>If you need to support Firefox 1.0 and other older browser versions, you should check to see which interfaces are available. The following skeleton code will allow you to determine which interface to use: -</p> -<pre>if ("@mozilla.org/windows-registry-key;1" in Components.classes) { - // Firefox 1.5 or newer -} -else if ("@mozilla.org/winhooks;1" in Components.classes) { - // SeaMonkey or other older non-toolkit application -} -else if ("@mozilla.org/browser/shell-service;1" in Components.classes) { - var wss = Components.classes["@mozilla.org/browser/shell-service;1"] - .getService(Components.interfaces.nsIWindowsShellService); - if ("getRegistryEntry" in wss) { - // Firefox 1.0 - } - else { - // nothing supported - } -} -else { - // nothing supported -} -</pre> -<p><br> -</p> -<div class="noinclude"> -</div> -{{ languages( { "en": "en/Accessing_the_Windows_Registry_Using_XPCOM", "fr": "fr/Extraits_de_code/Acc\u00e8s_au_registre_Windows_en_utilisant_les_XPCOM" } ) }} diff --git a/files/ja/mozilla/tech/xpcom/fun_with_xbl_and_xpconnect/index.html b/files/ja/mozilla/tech/xpcom/fun_with_xbl_and_xpconnect/index.html deleted file mode 100644 index 74334c0d77..0000000000 --- a/files/ja/mozilla/tech/xpcom/fun_with_xbl_and_xpconnect/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Fun With XBL and XPConnect -slug: Mozilla/Tech/XPCOM/Fun_With_XBL_and_XPConnect -tags: - - XBL - - XPCOM - - 'XPCOM:Language Bindings' - - XPConnect - - 移行 -translation_of: Mozilla/Tech/XPCOM/Fun_with_XBL_and_XPConnect ---- -<h3 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h3> - -<p>この文章では、XBL の応用である、XULウィジェットへのアクセスを可能にする簡単な XPCOMインターフェースについて述べます。 XBLのこのインターフェースを定義するという特徴は、自動補完を行う C++ オブジェクトへの XPConnectを介したインターフェースを定義するのに使用されます。 一度通常の XULテキストフィールドをこのインターフェースに結び付ければ、通常の JavaScript を用いて、オブジェクトの自動補完機能を呼び出すようになります。 この相互作用の基本的なモデルは次のとおりです:</p> - -<p> </p> - -<blockquote><img alt="画像:Xpconnect_xp.gif"></blockquote> - -<h3 id="XPCOM.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.B8.E7.B5.90.E3.81.B3.E4.BB.98.E3.81.91.E3.82.8B" name="XPCOM.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.B8.E7.B5.90.E3.81.B3.E4.BB.98.E3.81.91.E3.82.8B">XPCOMオブジェクトへ結び付ける</h3> - -<p>ウィジェットは、自動補完の検索を行う自動補完エンジンである XPCOMオブジェクトを保持します。</p> - -<pre class="eval"> <binding name="autocomplete" extends="xul:box"> - <content> - <xul:textfield class="addressingWidget"/> - <xul:menupopup/> - </content> - - <interface> - <property name="autoCompleteSession"> - ![CDATA[ - Components.classes['<a class="external" rel="freelink">component://netscape/messenger/autoc...&type=addrbook</a>']. - getService(Components.interfaces.nsIAutoCompleteSession); - ]] - </property> -</pre> - -<p>ですので、autoCompleteSession というウィジェットに propetry を定義しました。 この property の初期値は評価されて xp-connectオブジェクトへ入ります。 これで、.autoCompleteSession を呼ぶと xp-connectオブジェクトを返します。</p> - -<h3 id="XPCOM.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.82.92.E5.85.AC.E9.96.8B.E3.81.99.E3.82.8B" name="XPCOM.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.82.92.E5.85.AC.E9.96.8B.E3.81.99.E3.82.8B">XPCOMインターフェースを公開する</h3> - -<p>ウィジェットでサポートしたい XPCOM オブジェクトのインターフェースを手動で公開するには、あまりきれいでないトリックをひとつ行う必要があります。 幸運なことに、このデモンストレーションでは我々はインターフェースにメソッドをひとつだけ持っています =). わたしのやることは具体的には、メソッド呼び出しを XPCOMオブジェクトへ中継する XBLウィジェットにメソッドの属性を定義することで全てです。</p> - -<pre class="eval"> <method name="autoComplete"> - <argument name="aSearchString"/> - <argument name="resultListener"/> - <body> - ![CDATA[ - return this.autoCompleteSession.autoComplete(null, - anonymousContent[0], aSearchString, this.autoCompleteListener); - ]] - </body> - </method> -</pre> - -<p>メソッドの本体がそのまま自動補完のセッションを得て、その上で自動補完メソッドを呼び出しているのが分かるでしょう。</p> - -<h3 id=".E3.82.A6.E3.82.A3.E3.82.B8.E3.82.A7.E3.83.83.E3.83.88.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.82.92.E5.AE.9F.E8.A3.85.E3.81.99.E3.82.8B" name=".E3.82.A6.E3.82.A3.E3.82.B8.E3.82.A7.E3.83.83.E3.83.88.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.82.92.E5.AE.9F.E8.A3.85.E3.81.99.E3.82.8B">ウィジェットのインターフェースを実装する</h3> - -<p>次にやるべきことは、自動補完のセッションを渡せるようにウィジェットのインターフェースを実装することです。 自動補完セッションがウィジェットに検索結果付きでコールバックしてほしいところです。 XPCOMオブジェクトのときに行ったのと同じようなトリックを行うことができます。</p> - -<pre class="eval"><property name="autoCompleteListener"> - ![CDATA[ - ({ - onAutoCompleteResult: function(aItem, aOriginalString, aMatch) - { - if ( aItem ) - { - anonymousContent[0].value = aMatch; - } - } - }) - ]] -</pre> - -<p>autoCompleteListener の値を処理する JS がオブジェクトを生成する(そして式をわたしが行ったようなペアの集合につつむ)限りは、その autoCompleteListener の値はわたしのインターフェースを実装したオブジェクトになります。 ここで、.autoCompleteListener の結果を auto complete listener を必要とするメソッド(たとえばわたしの自動補完セッションオブジェクトのような)へ渡すことができます。</p> - -<h3 id=".E3.82.A4.E3.83.99.E3.83.B3.E3.83.88.E3.83.8F.E3.83.B3.E3.83.89.E3.83.A9.E3.82.92.E4.BD.9C.E3.82.8B" name=".E3.82.A4.E3.83.99.E3.83.B3.E3.83.88.E3.83.8F.E3.83.B3.E3.83.89.E3.83.A9.E3.82.92.E4.BD.9C.E3.82.8B">イベントハンドラを作る</h3> - -<p>最後の部分は簡単なところです。 自動補完検索を開始するハンドラが欲しいところです。 このハンドラは、そのまま XPCOMオブジェクトに渡される、我々の公開したウィジェット上の自動補完メソッドを呼んで、nsIAutoCompleteListener の実装に渡します。</p> - -<pre class="eval"> <handlers> - <handler type="keypress" keycode="vk_return" - value="autoComplete(anonymousContent[0].value, - this.autoCompleteListener);"/> - </handlers> -</pre> diff --git a/files/ja/mozilla/tech/xpcom/generating_guids/index.html b/files/ja/mozilla/tech/xpcom/generating_guids/index.html deleted file mode 100644 index d992f0e151..0000000000 --- a/files/ja/mozilla/tech/xpcom/generating_guids/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Generating GUIDs -slug: Mozilla/Tech/XPCOM/Generating_GUIDs -tags: - - Add-ons - - Developing Mozilla - - 'Developing_Mozilla:Tools' - - Extensions - - Tools - - XPCOM - - 要更新 -translation_of: Mozilla/Tech/XPCOM/Generating_GUIDs ---- -<p><b>GUID</b> は、Mozilla プログラミングで、XPCOM <a href="/ja/docs/Interfaces">インタフェース</a> (このタイプの GUID は IID と呼ばれています) やコンポーネント (CID) 、<a href="/ja/docs/Extension">拡張機能</a>や<a href="/ja/docs/Themes">テーマ</a>を含むアドオンなどの実体のそれぞれの型を識別するために使われます。とはいえ、<a href="/ja/docs/Firefox_1.5">Firefox 1.5</a> からは、アドオンでは <code><a class="link-mailto" href="mailto:extensionname@organization.tld" rel="freelink">extensionname@organization.tld</a></code> 形式の ID で<a href="/ja/docs/Install_Manifests#id">識別することができます(また、そうするべきです)</a>。</p> - -<div class="blockIndicator warning"> - <p><strong>警告:</strong> If you just want an ID for your add-on, generating a GUID is almost definitely not what you want to do. Using the <code><var>extensionname</var>@<var>organization</var>.<var>tld</var></code> form is approximately one thousand times easier for everyone involved. Don't have a domain name? Do you have a blog on a subdomain? Use that. If all else fails, using <code><var>extensionname</var>@<var>yourusername</var>.addons.mozilla.org</code> should be fine; no one will care. Remember, these are identifiers, not e-mail addresses, and they're never resolved.</p> -</div> - -<h2 id="Canonical_form" name="Canonical_form">標準形式</h2> -<p>GUID の共通のフォームは <code>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx</code> です。各 <code>x</code> には 16 進数が入ります。ここには、標準形式の GUID の生成に利用できるツールが数多くあります。</p> - -<div class="note"> - <p><strong>Note:</strong> If you do choose to use an email-style ID for your add-on, you probably don't want it to be a real email address, since it might attract spam.</p> -</div> - -<h3 id="Online_tools" name="Online_tools">オンラインツール</h3> -<ul> - <li><a href="http://www.somacon.com/p113.php">Generate GUID Online</a></li> - <li><a href="http://www.famkruithof.net/uuid/uuidgen">UUID (GUID) Generator on the WEB</a></li> - <li><a href="http://mozilla.pettay.fi/cgi-bin/mozuuid.pl">UUID Generator for Mozilla Code</a> (both IDL and C++.h forms)</li> - <li><a class="link-irc" href="irc://irc.mozilla.org/firefox">#firefox</a> IRC チャンネル上の (botbot や firebot のような) ボットのひとつで、それらに "uuid" とメッセージを送る (<code>/msg</code>) ことで GUID を取得できます。</li> - -</ul> -<h3 id="Windows" name="Windows">Windows</h3> -<p>Windows ユーザは GUID を得るために Microsoft の<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=94551F58-484F-4A8C-BB39-ADB270833AFC&displaylang=en">GuidGen</a> ツールを使用することができます。 (このツールは MS Visual C++ の一部でもあります)</p> -<h3 id="Linux" name="Linux">Linux</h3> -<p><code>/usr/bin/uuidgen</code> を使用します。これは、<code>libuuid1</code> パッケージ (Debian) にあります。</p> -<h3 id="Perl" name="Perl">Perl</h3> -<p><a href="http://www.johnkeiser.com/mozilla/mozilla_tools.html">jkeiser's Mozilla tools</a> に C++ および IDL の両方のスタイルの出力ができる UUID generator が含まれています。</p> -<h2 id="COM.2FXPCOM_format" name="COM.2FXPCOM_format">COM/XPCOM 形式</h2> -<p>Mozilla C++ コード内で IID および CID を 定義する(<code>#define</code>) 場合は、一般的に次の書式を使用します。</p> -<pre class="brush:cpp">// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx -#define NS_...ID \ -{ 0xXXXXXXXX, 0xXXXX, 0xXXXX, \ - { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX } } -</pre> -<p>以下のツールを使用すると、この形式でコードを生成することができます。</p> -<h3 id="Online_tools" name="Online_tools">オンラインツール</h3> -<ul> - <li><a href="http://mozilla.pettay.fi/cgi-bin/mozuuid.pl" rel="freelink">http://mozilla.pettay.fi/cgi-bin/mozuuid.pl</a></li> -</ul> -<h3 id="guidgen" name="guidgen">guidgen</h3> -<p><code>guidgen.exe</code> は UUID をこの形式で生成できます。これは Microsoft Visual Studio の一部です。</p> -<h3 id="bash" name="bash">bash</h3> -<p>以下をあなたの <code>.bashrc</code> ファイルに追加します:</p> -<pre class="brush:cpp">uuidgen-c++() -{ - local UUID=$(uuidgen) - echo "// $UUID" - echo "#define NS__IID \\" - echo "{ 0x${UUID:0:8}, 0x${UUID:9:4}, 0x${UUID:14:4}, \\" - echo -n " { 0x${UUID:19:2}, 0x${UUID:21:2}, 0x${UUID:24:2}, " - echo -n "0x${UUID:26:2}, 0x${UUID:28:2}, 0x${UUID:30:2}, " - echo "0x${UUID:32:2}, 0x${UUID:34:2} } }" -} -</pre> -<h3 id="Perl_2" name="Perl_2">Perl</h3> -<pre class="brush:text">#!/usr/bin/perl -$uuid = `uuidgen`; -chomp $uuid; -print $uuid, "\n"; -@parts = ($uuid =~ /^(.{8})-(.{4})-(.{4})-(..)(..)-(..)(..)(..)(..)(..)(..)$/); -print "{ 0x$parts[0], 0x$parts[1], 0x$parts[2], \\", "\n", " { "; -for (3 .. 9) { - print "0x$parts[$_], "; -} -print "0x$parts[10] } }", "\n"; -</pre> diff --git a/files/ja/mozilla/tech/xpcom/generic_factory/index.html b/files/ja/mozilla/tech/xpcom/generic_factory/index.html deleted file mode 100644 index 297a49c5f5..0000000000 --- a/files/ja/mozilla/tech/xpcom/generic_factory/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: Generic factory -slug: Mozilla/Tech/XPCOM/Generic_factory -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Generic_factory ---- -<p><a href="ja/XPCOM">XPCOM</a> では、<b>汎用ファクトリ</b> は <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsIGenericFactory.h" rel="custom">xpcom/glue/nsIGenericFactory.h</a></code> にある機能を利用して生成されたファクトリのことを指します。 -</p><p><span>元の訳では「総称ファクトリー」となっていたが、「汎用」の方が適当ではないか</span> -</p> -<h4 id="概要"> 概要 </h4> -<p>ほとんどの XPCOM ファクトリは、とても単純なもので済みます。Rick Potts は、テンプレートベースの汎用ファクトリ (nsFactory<T>) を書いていますが、これによりファクトリの生成過程が単純化され、CreateInstance() メソッドを書くだけで済むようになります。新しい nsIGenericFactory インタフェースによる、もっと進んだ手段を使うことができます。これは、一つのインタフェースを、nsIFactory の簡易な実装が必要な時にいつでも再使用できるようにしたものです。そのインタフェースとその使用の記述をここに挙げます。 -</p> -<pre class="eval">/** - * 汎用的な nsIFactory の実装を提供します。この実装は、とても - * 簡易なファクトリを必要とする DLL で使うことができます。 - */ -class nsIGenericFactory : public nsIFactory { -public: - static const nsIID& IID() { static nsIID iid = NS_IGENERICFACTORY_IID; return iid; } - - typedef NS_CALLBACK(ConstructorProcPtr) (nsISupports *aOuter, REFNSIID aIID, void **aResult); - - /** - * 汎用ファクトリのコンストラクタ関数を設定します。 - * これは CreateInstance によって呼び出されます。 - */ - NS_IMETHOD SetConstructor(ConstructorProcPtr constructor) = 0; -}; -</pre> -<p>nsIGenericFactory は、簡単に使えます。NS_GENERICFATORY_CIDのCID と NS_IGENERICFACTORY_IID の IID を使って、リポジトリから新しいインスタンスを作成します。ConstructionProcPtr プロトタイプに適合するコンストラクタ関数を定義してください。そして、その関数に対するポインタとともに nsIGenericFactory::SetConstructor を呼び出してください。それでおしまいです。これで、あなたは完全な機能を持つファクトリオブジェクトを使うことができます。 -</p> -<h4 id="実例"> 実例 </h4> -<pre class="eval">class nsIComponent : public nsISupports { -public: - NS_IMETHOD DoSomething() = 0; -}; - -class MyComponent : public nsIComponent { -public: - MyComponent(); - virtual ~MyComponent(); - - static NS_METHOD Create(nsISupports *aOuter, REFNSIID aIID, void **aResult); - - NS_IMPL_ISUPPORTS - - NS_IMETHOD DoSomething(); -}; -</pre> -<p>このクラスのためのファクトリを作るには、単に以下のように書いてください。 -</p> -<pre class="eval">nsIFactory* NewComponentFactory(nsIRepository* repository) -{ - nsIGenericFactory* factory = NULL; - nsCID kGenericFactoryCID = NS_GENERICFACTORY_CID; - nsresult res = repository->CreateInstance(kGenericFactoryCID, NULL, nsIGenericFactory::IID(), &factory); - if (res == NS_OK) { - factory->SetConstructor(&MyComponent::Create); - } - return factory; -} -</pre> -<p>この例では、XPCOM リポジトリは、インタフェースとして使うことができると仮定しています。(もうすぐそうなる予定です) -</p> -<h4 id="背景"> 背景 </h4> -<p>(これは、私のオリジナルのニュース投稿 <<a class=" link-mailto" href="mailto:beard-2402991733140001@h-198-93-95-151.mcom.com">beard-2402991733140001@h-198-93-95-151.mcom.com</a>> が元になっています。) -</p><p>我々は、異なるファクトリ実装を膨大に作ってきたと思われます。すべての単純なファクトリの代わりとして以下のクラスを使えば、コードサイズ (すべての QueryInterface、AddRef、Release の実装) を縮小できるはずです。 -</p> -<pre class="eval"><span>// アイデア: 汎用ファクトリを作ることで、多くの - // nsIFactory コードの複製を避けられます。我々に必要なのは、 - // アロケータ関数だけです。その他の実装は、まったく同じです。 - - #include "nsIFactory.h" - - class nsGenericFactory : public nsIFactory { - public: - typedef nsresult (*CreatorProcPtr) (nsISupports *aOuter, - REFNSIID aIID, void **aResult); - - nsGenericFactory(CreatorProcPtr creator); - virtual ~nsGenericFactory(); - - NS_DECL_ISUPPORTS - - NS_IMETHOD CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult); - - NS_IMETHOD LockFactory(PRBool aLock); - - private: - CreatorProcPtr mCreator; - }; - - nsGenericFactory::nsGenericFactory(CreatorProcPtr creator) - : mCreator(creator) - { - NS_INIT_REFCNT(); - } - - nsGenericFactory::~nsGenericFactory() {} - - static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID); - - NS_IMPL_ISUPPORTS(nsGenericFactory, kIFactoryIID) - - NS_IMETHODIMP nsGenericFactory::CreateInstance(nsISupports *aOuter, - REFNSIID aIID, void **aResult) - { - return mCreator(aOuter, aIID, aResult); - } - - NS_IMETHODIMP nsGenericFactory::LockFactory(PRBool aLock) - { - return NS_OK; - }</span> -</pre> -<p>多くのクラスは、クリエータ関数として使うための静的なエントリーポイントをすでに持っています。そのため、多くの場合、クラスのための新しいファクトリを作るのは、単にこんな感じでいいのです。 -</p> -<pre class="eval">nsIFactory* NewMallocFactory() -{ - nsIFactory* factory = new nsGenericFactory(&nsMalloc::Create); - factory->AddRef(); - return factory; -} -</pre> -<p>Warren に話すと、彼はこの手順を短縮するために、関数ポインタと一緒にファクトリを登録できるようにしようと提案しました。 -</p> -<div class="originaldocinfo"> -<h2 id="原文書の情報"> 原文書の情報 </h2> -<ul><li> 著者: <a class="link-mailto" href="mailto:beard@netscape.com">Patrick Beard</a> -</li><li> 最終更新日: February 26, 1999 -</li><li> 著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a> -</li></ul> -</div> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/guide/how_to_build_an_xpcom_component_in_javascript/index.html b/files/ja/mozilla/tech/xpcom/guide/how_to_build_an_xpcom_component_in_javascript/index.html deleted file mode 100644 index 0e12b4f39c..0000000000 --- a/files/ja/mozilla/tech/xpcom/guide/how_to_build_an_xpcom_component_in_javascript/index.html +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: How to Build an XPCOM Component in Javascript -slug: Mozilla/Tech/XPCOM/Guide/How_to_Build_an_XPCOM_Component_in_Javascript -tags: - - Add-ons - - Extensions - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Guide/Building_components_in_JavaScript ---- -<p> -</p><p>これは JavaScript で XPCOM コンポーネントを作成するための "Hello World" 的なチュートリアルです。このチュートリアルでは、XPCOM がどのように、そしてなぜそのように動くのかということや、コードの例が何をするものなのかということは説明しません。詳細は <a href="ja/XPCOM">別の記事</a> を参照してください。このチュートリアルでは、コンポーネントをできる限り少数かつ簡単なステップで<b>動かす</b>ためにすべきことを説明していきます。 -</p><p>警告:これは Mac 上での結果です。Windows では手順が異なるかもしれません。 -</p><p><br> -</p> -<h2 id=".E5.AE.9F.E8.A3.85" name=".E5.AE.9F.E8.A3.85"> 実装 </h2> -<p>このコンポーネントの例では "Hello World!" という文字列を返すメソッド 1 つだけを公開します。 -</p> -<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.AE.E5.AE.9A.E7.BE.A9" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.AE.E5.AE.9A.E7.BE.A9"> インタフェースの定義 </h3> -<p>作ったコンポーネントを JavaScript から、あるいは他の XPCOM コンポーネント内で使用したいとなると、公開したいインタフェースを定義しなければなりません(そのコンポーネントを JavaScript から<b>のみ</b>使用したい場合は、ここで説明するインタフェースを作成せずに済むように <code>wrappedJSObject</code> というトリックを使うことができます。<a class="external" href="http://kb.mozillazine.org/Dev_:_Extending_the_Chrome_Protocol">ここ</a> に例があります)。 -</p><p>Mozilla アプリケーションには定義済みのインタフェースがたくさんあるため、新たに定義する必要がないかもしれません。既存の XPCOM インタフェースは Mozilla のソースコードの中のさまざまな場所で閲覧することができますし、<a class="external" href="http://xpcomviewer.mozdev.org/">XPCOMViewer</a> という、登録済みのインタフェースやコンポーネントを閲覧するための GUI を使うこともできます。Firefox 1.5 で動作する古いバージョンの XPCOMViewer は <a class="external" href="http://downloads.mozdev.org/xpcomviewer/">mozdev mirrors</a> からダウンロードできます。 -</p><p>もし必要なインタフェースが見つかれば、IDL を書いたり typelib をコンパイルしたりする必要はありません。<a href="#.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.9C.E6.88.90">次のセクション</a> に飛んでもかまいません。 -</p><p>適当な既存のインタフェースが見つからなかった場合は独自に定義する必要があります。XPCOM はインタフェースの定義に <a href="ja/XPIDL">XPIDL</a> という IDL の方言を使用します。ここに今回の HelloWorld コンポーネント用の XPIDL 定義を示します。 -</p><p>HelloWorld.idl -</p> -<pre>#include "nsISupports.idl" - -[scriptable, uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)] -interface nsIHelloWorld : nsISupports -{ - string hello(); -}; -</pre> -<p>作成する XPCOM コンポーネントおのおのに新しい UUID を付ける必要があることに注意してください。詳細は <a href="ja/Generating_GUIDs">GUID の生成</a> を参照してください。 -</p> -<h3 id="typelib_.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.AB" name="typelib_.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.AB"> typelib のコンパイル </h3> -<p>インタフェース定義を Mozilla アプリケーションに登録して使用するためには、バイナリ形式 (XPT) にコンパイルする必要があります。コンパイルは Gecko SDK を用いて行うことができます。Mac、Linux、Windows 版の Gecko SDK の入手方法については <a href="ja/Gecko_SDK">Gecko SDK</a> という記事をお読みください。 -</p> -<div class="note"><b>注意:</b>Mac 版の SDK は PowerPC 版のみダウンロード可能です。Intel 版が必要な場合はそのページの説明に従って自分でコンパイルする必要があります。</div> -<p>このコマンドを実行して typelib をコンパイルします。ここで、<tt>{sdk_dir}</tt> は Gecko SDK を解凍したディレクトリです。 -</p> -<pre class="eval">{sdk_dir}/bin/xpidl -m typelib -w -v -I {sdk_dir}/idl -e HelloWorld.xpt HelloWorld.idl -</pre> -<p>これで HelloWorld.xpt という typelib ファイルが現在の作業ディレクトリに作成されます。 -</p> -<h3 id=".E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.9C.E6.88.90" name=".E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.9C.E6.88.90"> コンポーネントの作成 </h3> -<p>HelloWorld.js -</p> -<pre>/*********************************************************** -定数 -***********************************************************/ - -// nsIHelloWorld.idl 内のインタフェース定義への参照 -const nsIHelloWorld = Components.interfaces.nsIHelloWorld; - -// すべてのコンポーネントがサポートしなければならない必須の基本インタフェースへの参照 -const nsISupports = Components.interfaces.nsISupports; - -// このコンポーネントを一意的に識別する UUID -// http://kruithof.xs4all.nl/uuid/uuidgen にて生成可能 -const CLASS_ID = Components.ID("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}"); - -// 説明 -const CLASS_NAME = "My Hello World Javascript XPCOM Component"; - -// テキスト形式の一意識別子 -const CONTRACT_ID = "@dietrich.ganx4.com/helloworld;1"; - -/*********************************************************** -クラス定義 -***********************************************************/ - -// クラスコンストラクタ -function HelloWorld() { -}; - -// クラス定義 -HelloWorld.prototype = { - - // このインタフェースで公開したい関数の定義 - hello: function() { - return "Hello World!"; - }, - - QueryInterface: function(aIID) - { - if (!aIID.equals(nsIHelloWorld) && - !aIID.equals(nsISupports)) - throw Components.results.NS_ERROR_NO_INTERFACE; - return this; - } -}; - -/*********************************************************** -クラスファクトリ - -このオブジェクトはグローバルスコープである Components.classes のメンバ。 -コントラクト ID がキーになっている。例: - -myHelloWorld = Components.classes["@dietrich.ganx4.com/helloworld;1"]. - createInstance(Components.interfaces.nsIHelloWorld); - -***********************************************************/ -var HelloWorldFactory = { - createInstance: function (aOuter, aIID) - { - if (aOuter != null) - throw Components.results.NS_ERROR_NO_AGGREGATION; - return (new HelloWorld()).QueryInterface(aIID); - } -}; - -/*********************************************************** -モジュール定義(xpcom 登録) -***********************************************************/ -var HelloWorldModule = { - registerSelf: function(aCompMgr, aFileSpec, aLocation, aType) - { - aCompMgr = aCompMgr. - QueryInterface(Components.interfaces.nsIComponentRegistrar); - aCompMgr.registerFactoryLocation(CLASS_ID, CLASS_NAME, - CONTRACT_ID, aFileSpec, aLocation, aType); - }, - - unregisterSelf: function(aCompMgr, aLocation, aType) - { - aCompMgr = aCompMgr. - QueryInterface(Components.interfaces.nsIComponentRegistrar); - aCompMgr.unregisterFactoryLocation(CLASS_ID, aLocation); - }, - - getClassObject: function(aCompMgr, aCID, aIID) - { - if (!aIID.equals(Components.interfaces.nsIFactory)) - throw Components.results.NS_ERROR_NOT_IMPLEMENTED; - - if (aCID.equals(CLASS_ID)) - return HelloWorldFactory; - - throw Components.results.NS_ERROR_NO_INTERFACE; - }, - - canUnload: function(aCompMgr) { return true; } -}; - -/*********************************************************** -モジュール初期化 - -アプリケーションがコンポーネントを登録するときにこの関数が呼び出される。 -***********************************************************/ -function NSGetModule(aCompMgr, aFileSpec) { return HelloWorldModule; } - -</pre> -<h2 id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB" name=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB"> インストール </h2> -<h3 id=".E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E3.81.AB" name=".E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E3.81.AB"> 拡張機能に </h3> -<ol><li> HelloWorld.js と HelloWorld.xpt を {extensiondir}/components/ にコピーする -</li><li> プロファイルディレクトリから compreg.dat と xpti.dat を削除する -</li><li> アプリケーションを再起動する -</li></ol> -<h3 id="Firefox_.E3.81.AB" name="Firefox_.E3.81.AB"> Firefox に </h3> -<ol><li> ソースから実行する場合、HelloWorld.js と HelloWorld.xpt を {objdir}/dist/bin/components ディレクトリにコピーする -</li><li> components ディレクトリから compreg.dat と xpti.dat を削除する -</li><li> プロファイルディレクトリから compreg.dat と xpti.dat を削除する -</li><li> アプリケーションを再起動する -</li></ol> -<h2 id=".E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.BF.E7.94.A8" name=".E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.BF.E7.94.A8"> コンポーネントの使用 </h2> -<pre>try { - // JavaScript 内でコンポーネントを使用できるようにするには、一般にこれが必要 - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - var myComponent = Components.classes['@dietrich.ganx4.com/helloworld;1'] - .createInstance(Components.interfaces.nsIHelloWorld); - - alert(myComponent.hello()); -} catch (anError) { - dump("ERROR: " + anError); -} -</pre> -<h2 id=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E8.B3.87.E6.96.99" name=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E8.B3.87.E6.96.99"> その他の資料 </h2> -<ul><li> XPCOM コンポーネントの JS での実装についての mozillazine フォーラムの 2 つのスレッド。説明、コードの例、トラブルシューティング情報もあり: -<ul><li> <a class=" external" href="http://forums.mozillazine.org/viewtopic.php?t=308369" rel="freelink">http://forums.mozillazine.org/viewtopic.php?t=308369</a> -</li><li> <a class=" external" href="http://forums.mozillazine.org/viewtopic.php?t=367298" rel="freelink">http://forums.mozillazine.org/viewtopic.php?t=367298</a> -</li></ul> -</li><li> <a class="external" href="http://kb.mozillazine.org/Implementing_XPCOM_components_in_JavaScript">Implementing XPCOM components in JavaScript</a> - kb.mozillazine.org 内 -</li><li> <a class="external" href="http://www.mozilla.org/scriptable/avoiding-leaks.html">Using XPCOM in JavaScript without leaking</a> - 必読 -</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/xpcom/sample/nsSample.js">コンポーネントの例</a> -</li><li> <a class="external" href="http://www.mozilla.org/scriptable/js-components-status.html">古い JS+XPCOM のメモ</a> - wrappedJSObject の情報もあり -</li></ul> -<div class="noinclude"> -</div> -{{ languages( { "en": "en/How_to_Build_an_XPCOM_Component_in_Javascript", "zh-cn": "cn/How_to_Build_an_XPCOM_Component_in_Javascript" } ) }} diff --git a/files/ja/mozilla/tech/xpcom/guide/index.html b/files/ja/mozilla/tech/xpcom/guide/index.html deleted file mode 100644 index 725b612220..0000000000 --- a/files/ja/mozilla/tech/xpcom/guide/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: XPCOM guide -slug: Mozilla/Tech/XPCOM/Guide -tags: - - Landing - - Mozilla - - NeedsTranslation - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Guide ---- -<p><span class="seoSummary">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</span></p> -<div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/ja/docs/How_to_Build_an_XPCOM_Component_in_Javascript">How to Build an XPCOM Component in Javascript</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/ja/docs/Mozilla_internal_string_guide">XPCOM string guide</a></dt><dd class="landingPageList">このガイドは過剰に存在しているstringクラスについてドキュメント化したものです。これによって「こういう場合、いったいどのstringクラスを使ったらいいの?」という長年の疑問に対する答えとなることを期待しています。</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/ja/docs/XPCOM_hashtable_guide">XPCOM ハッシュテーブル・ガイド</a></dt><dd class="landingPageList">ハッシュテーブルは、<strong>アイテム</strong>を格納するための構造体です。個々のアイテムは、それぞれを識別するための<strong>キー</strong>を持ちます。ハッシュテーブルからアイテムを検索・追加・削除するためにはキーを使います。ハッシュテーブルは<a href="/ja/XPCOM_array_guide" title="https://developer.mozilla.org/ja/XPCOM_array_guide">配列</a>に似ていますが、以下に示すような大きな違いがあります。</dd></dl></div> - </div> diff --git a/files/ja/mozilla/tech/xpcom/guide/mozilla_internal_string_guide/index.html b/files/ja/mozilla/tech/xpcom/guide/mozilla_internal_string_guide/index.html deleted file mode 100644 index bdcb54baa2..0000000000 --- a/files/ja/mozilla/tech/xpcom/guide/mozilla_internal_string_guide/index.html +++ /dev/null @@ -1,834 +0,0 @@ ---- -title: XPCOM string guide -slug: Mozilla/Tech/XPCOM/Guide/Mozilla_internal_string_guide -tags: - - 移行 - - 要更新 -translation_of: Mozilla/Tech/XPCOM/Guide/Internal_strings ---- -<h2 id=".E5.BA.8F.E6.96.87" name=".E5.BA.8F.E6.96.87">序文</h2> - -<div> -<p>by Alec Flett<br> - Thanks to David Baron for <a class="external" href="http://dbaron.org/mozilla/coding-practices">actual docs</a>,<br> - Peter Annema for lots of direction,<br> - Myk Melez for some more docs, and<br> - David Bradley for a diagram<br> - Revised by Darin Fisher for Mozilla 1.7<br> - Revised by Jungshik Shin to clarify character encoding issues</p> -</div> - -<p> このガイドは過剰に存在しているstringクラスについてドキュメント化したものです。これによって「こういう場合、いったいどのstringクラスを使ったらいいの?」という長年の疑問に対する答えとなることを期待しています。</p> - -<div style="border: thin solid steelblue; padding: 0.5em;"> -<p> もしあなたがMozillaの組み込み開発者か、もしくはMozillaコードベースとは別個に配布されることを予定しているXPCOMコンポーネントを書いているなら、この文書は多くの場合あなたにとって最適のものとは言えません!もしあなたがMozilla 1.7以降を対象に開発を行っているなら、この文書の代わりに新しい最小版APIである <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsStringAPI.h" rel="custom">xpcom/glue/nsStringAPI.h</a></code> とりわけ<code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/string/public/nsEmbedString.h" rel="custom">xpcom/string/public/nsEmbedString.h</a></code> クラスを使うべきです。</p> -</div> - -<p> お急ぎですか?それなら <a href="/ja/XPCOM/String_Quick_Reference" title="ja/XPCOM/String_Quick_Reference">String Quick-Reference</a> () を見てください。</p> - -<h2 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h2> - -<p>string クラスは、unicode と 1バイト文字の文字列のバッファを扱うために使われる C++ クラスのライブラリです。 これらは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/string" rel="custom">xpcom/string</a></code> ディレクトリの Mozilla コードベースに属します。</p> - -<p>Abstract (interface) クラスは"nsA"で始まり、 具象クラスは"<code>ns</code>"で始まります。 "<code><strong>C</strong>String</code>" を名前に持つクラスは シングルバイト ASCII 文字列もしくは、UTF-8 やその他の文字セットでエンコードされたマルチバイト unicode 文字列を参照する 8 ビット文字を格納します。 名前に単に "<code>String</code>" を持つ他のすべてのクラスは、 主に UTF16 でエンコードされる 2バイト(<code>PRUnichar</code>)文字列を参照します。 例:<code>nsAString</code> は 2バイト文字を蓄えるための抽象クラスで、 <code>nsDependentCString</code> は 1バイト文字を蓄えるための具象クラスです。 どの 2バイト文字列クラスも同等の 1バイト文字列クラスを持ちます。 例:<code>nsCString</code> クラスは 1バイト文字列クラスで、 <code>nsString</code> と対応します。</p> - -<p>1バイトと 2バイトの文字列クラスは完全に異なる基底クラスを持ちますが、 同じ API を共有します。 このように、1バイト文字列を 2バイト文字列へ、何らかのヘルパークラスかルーチンによる変換なしに代入することは出来ません。 このドキュメントの目的は、クラスドキュメントの中で 2バイト文字列クラスについて言及することです。 どの 2バイトクラスも同等の 1バイトクラスを持つと仮定しても安全です。</p> - -<h2 id="String_ガイドライン">String ガイドライン</h2> - -<p>仲間の開発者、レビューワ、ユーザをハッピーにさせるために、コードの中でこれらの単純なルールに従ってください。</p> - -<ul> - <li>是非とも<a href="#Unicode_Conversion"><code><span class="nowiki">*WithConversion</span></code> 関数を避ける</a>: <code>AssignWithConversion</code>, <code>AppendWithConversion</code>, <code>EqualsWithConversion</code>, など</li> - <li>出来る限りもっとも抽象的なクラスを使う。大抵はこれ: - <ul> - <li><a href="#Abstract_Classes"><code>nsAString</code></a> 関数の引数のために</li> - <li><a href="#Concrete_Classes"><code>nsString</code> メンバ変数のために </a></li> - <li><a href="#Concrete_Classes"><code>nsAutoString</code> または <code>nsXPIDLString</code></a> ローカル(スタックベース)変数のために</li> - </ul> - </li> - <li><code>nsAString</code> 互換オブジェクトとしてリテラル文字列(例:<code>"foo"</code>)を表現するためには <a href="#Literal_Strings"><code>NS_LITERAL_[C</code></a>STRING/<code>NS_NAMED_LITERAL_[C]STRING</code>] を使う。</li> - <li>文字列を結合するときには<a href="#Concatenation">string 連結</a>(例: "<code>+</code>" オペレータ)を使う。</li> - <li><code>nsAString</code>互換文字列を変換する必要のある生の文字ポインタを持つとき、 <a href="#Raw_Pointers"><code>nsDependentString</code></a>を使う。</li> - <li>既存の文字列から一部を抜き出すためには <a href="#Substring"><code>Substring()</code></a> を使う。</li> - <li>文字列断片の解析と抜き出しには <a href="#Iterators">iterators</a> を使う。</li> -</ul> - -<p> </p> - -<h2 id="Abstract.EF.BC.88.E6.8A.BD.E8.B1.A1.EF.BC.89.E3.82.AF.E3.83.A9.E3.82.B9" name="Abstract.EF.BC.88.E6.8A.BD.E8.B1.A1.EF.BC.89.E3.82.AF.E3.83.A9.E3.82.B9">Abstract(抽象)クラス</h2> - -<p>どの string クラスも <code>nsAString</code>(もしくは <code>nsACString</code>) から派生しています。 このクラスはアクセスと文字列操作のための基礎インタフェースを提供します。 具象クラスが <code>nsAString</code>から派生する一方、 <code>nsAString</code>自身はインスタンス化できません。</p> - -<p>これは、コードベースの他の部分で抽象オブジェクト記述の記述のために Mozilla が使っている "interface" の考え方によく似ています。 インタフェースについて、クラス名は "nsI" で始まり、"I" は "Interface" を意味します。 抽象クラスは "nsA" で始まり、"A" は "Abstract" を意味します。</p> - -<p><code>nsAString</code> から派生した抽象クラスがたくさんあります。 これらの抽象サブクラスもまたインスタンス化できません。 しかし、それらは <code>nsAString</code> よりもわずかながらより詳細に string を記述します。 それからは、抽象クラスの背後で下敷きになった実装が <code>nsAString</code> に加えて特定の能力を提供することを保証します。</p> - -<p>以下のリストで主な抽象クラスについて記述します。一度それらになじんだら、<a href="#Appendix_WhatToUse">どのクラスをいつ使うか</a>を参照してください。</p> - -<ul> - <li><code class="decl">nsAString</code><span class="nowiki">: すべての文字列のための基底クラスです。 これは、代入/個々の文字へのアクセス/基本的なの文字操作/文字列比較のための API を提供します。このクラスは XPIDL の </span><code>AString</code> 引数型に対応します。</li> - <li><code class="decl">nsSubstring</code><span class="nowiki">: string クラスのすべてに対する共通の基本クラスです。文字列の内部のデータへ最適化されたアクセスをするためのものです。</span><code>nsSubstring</code> は null 終端文字列である必要はありません(後方互換のために、<code>nsASingleFragmentString</code> は、このクラスを示す typedef がなされています)。</li> - <li><code class="decl">nsString</code><span class="nowiki">: null 終端の保存を保証した </span><code>nsSubstring</code> によって作られます。このクラスでは、下敷きとなっている文字バッファにアクセスするためのメソッド(<code>.get()</code>) を使うことができます。(後方互換のために、<code>nsAFlatString</code> は、このクラスを示す typedef がなされています)。</li> -</ul> - -<p>その他の string クラスは、<code>nsSubstring</code> か <code>nsString</code> かを継承しています。 そのため、どの文字列クラスも <code>nsAString</code> と互換があります。</p> - -<p><code>nsSubstring</code> と <code>nsAString</code> は共に null 終端である必要のない一続きの文字の配列を示していることに言及するのは重要なことでしょう。 この似通った二つのクラスが存在する必要があるのは何故なのかと疑問に思う人もいるでしょう。 えぇ、<code>nsSubstring</code> は主として、最適化目的に存在します。それは、<code>nsAString</code> が Mozilla 1.0 とともにリリースされた凍結された <code>nsAString</code> crustバイナリレベルの互換を保たなくてはならないからです。 Mozilla 1.7 のリリースまで、<code>nsAString</code> は複合的な断片に分けられた文字列を表す能力を持っていました。 複合的な断片に分けられた文字列のサポートに関するコストは高く、限られたメリットを提供していました。 文字列クラスの複雑さを減らして、パフォーマンスを改善しようという努力のために、複合的な断片に分けられた文字列のサポートを削減する決定がなされました。詳細は <a class="external" href="http://bugzilla.mozilla.org/show_bug.cgi?id=231995">bug 231995</a> を参照して下さい。</p> - -<p><code>nsSubstring</code> は、下敷きとしている <code>nsAString</code> バッファへのより効果的なインタフェースを提供していますが、<code>nsAString</code> は未だにパラメータ渡しのためにもっとも共通して使われています。 それは、XPIDL の <code>AString</code> と対応した文字辣クラスだからです。 そのために、この文字列ガイドは <code>nsAString</code> に重点を置いた文字列クラスについて言及し続けるでしょう。</p> - -<p>どの stiring も <code>nsAString</code>(もしくは <code>nsACString</code>) から派生しているため、それらはいくつかの基礎となる機能を共有します。</p> - -<p>読取専用の共通メソッド:</p> - -<ul> - <li><code class="decl">.Length()</code> - string 中の文字数。</li> - <li><code class="decl">.IsEmpty()</code> - string が何らかの値を持っているかどうか決定する最も早い方法。次のコードでテストするよりこれを使ってください:<code><em>string</em>.Length == 0</code></li> - <li><code class="decl">.Equals(<em>string</em>)</code> - もし引数の string が現在の string と同じ値を持っていれば TRUE。</li> -</ul> - -<p>文字列修正の共通メソッド:</p> - -<ul> - <li><code class="decl">.Assign(<em>string</em>)</code> - 新しい値を string に代入する。</li> - <li><code class="decl">.Append(<em>string</em>)</code> - string に値を追加する。</li> - <li><code class="decl">.Insert(<em>string</em>, <em>position</em>)</code> - 引数の string を <em>position</em> の文字の後ろに挿入する。</li> - <li><code class="decl">.Truncate(<em>length</em>)</code> - string を引数の長さに縮める。</li> -</ul> - -<p><a href="#Appendix_nsAString">付録</a>に完全なドキュメントがあります。</p> - -<p> </p> - -<h3 id=".E8.AA.AD.E5.8F.96.E5.B0.82.E7.94.A8_strings" name=".E8.AA.AD.E5.8F.96.E5.B0.82.E7.94.A8_strings">読取専用 strings</h3> - -<p>string 上での<code>const</code> 属性は string が書き込み可能かどうかを示します。 もし、string が<code>const nsAString</code> のように定義されていたら、string 内のデータは操作不可です。 もし、<code>const</code> でないメソッドを <code>const</code> string 上で呼び出そうとしても、 コンパイラはビルド時にエラーとしてこれを示します。</p> - -<p>例:</p> - -<p> </p> - -<pre class="eval">void nsFoo::ReverseCharacters(nsAString& str) { - ... - str.Assign(reversedStr); // modifies the string -} -</pre> - -<p>これはコンパイルできない。なぜなら、<code>const</code> クラスへ代入しているから:</p> - -<pre class="eval">void nsFoo::ReverseCharacters(const nsAString& str) { - ... - <strong>str.Assign(reversedStr);</strong> -} -</pre> - -<p> </p> - -<h3 id=".E9.96.A2.E6.95.B0.E3.81.AE.E5.BC.95.E6.95.B0.E3.81.A8.E3.81.97.E3.81.A6.E3.81.AE_Abstract.EF.BC.88.E6.8A.BD.E8.B1.A1.EF.BC.89.E3.82.AF.E3.83.A9.E3.82.B9" name=".E9.96.A2.E6.95.B0.E3.81.AE.E5.BC.95.E6.95.B0.E3.81.A8.E3.81.97.E3.81.A6.E3.81.AE_Abstract.EF.BC.88.E6.8A.BD.E8.B1.A1.EF.BC.89.E3.82.AF.E3.83.A9.E3.82.B9">関数の引数としての Abstract(抽象)クラス</h3> - -<p>関数の引数としては、具象クラスの代わりにできる限りもっとも抽象的なインタフェースを使うことが推奨されます。 文字列を参照渡しする場合には、ポインタ('*'文字)ではなく、C++の参照('&' 文字)を用いるのが習慣です。たとえば:</p> - -<pre class="eval">// 抽象クラスによる参照 -nsFoo::PrintString(<strong>const nsAString&</strong> str) {..} - -// 具象クラスを使っている! -nsFoo::PrintString(const <strong>nsString&</strong> str) {..} - -// ポインタを使っている! -nsFoo::PrintString(const <strong>nsAString*</strong> str) {..} -</pre> - -<p>抽象クラスはまた、ときどきオブジェクトへの一時的な参照を蓄えるのにも使われます。 これらの両方の使い方は、後述の<a href="#Common_Patterns">共通パターン</a>を参照してください。</p> - -<p> </p> - -<h2 id=".E5.85.B7.E8.B1.A1.E3.82.AF.E3.83.A9.E3.82.B9" name=".E5.85.B7.E8.B1.A1.E3.82.AF.E3.83.A9.E3.82.B9">具象クラス</h2> - -<p>具象クラスは string データを実際に蓄える必要があるコードの中で使うためのものです。 具象クラスのもっともありがちな使い方は、ローカル変数もしくはクラスや構造体のメンバとして使うというものです。 抽象クラスはそれぞれデータの格納方式が違うために、大抵は具象クラスの格納方針も異なります。</p> - -<p>以下はに、もっとも一般的な具象クラスの一覧を示します。一度それらになじんだら、<a href="#Appendix_WhatToUse">どのクラスをいつ使うか</a>を参照してください。 The following is a list of the most common concrete classes. Once you are familiar with them, see the appendix describing <a href="#Appendix_WhatToUse">What Class to Use When</a>.</p> - -<ul> - <li><code class="decl">nsString / nsCString</code> - バッファがヒープ上に割り当てられている null 終端 string です。 string オブジェクトがなくなったときにそのバッファは破棄されます。</li> - <li><code class="decl">nsAutoString / nsCAutoString</code> - nsString から派生した、 string 自身と同じ格納スペースに 64文字バッファを持つ string。 もし、文字長が 64より長い string が nsAutoString に代入されると、新しいバッファがヒープ上に割り当てられます。 これはメンバ変数としてはあまり用いられるべきではないでしょう。</li> - <li><code class="decl">nsXPIDLString / nsXPIDLCString</code>- nsString から派生した文字列で、 このクラスは <code>getter_Copies()</code> 演算子によって、XPIDL の<code>出力 wstring / string</code> パラメータへの簡単なアクセスをサポートしています。</li> - <li><code class="decl">nsDependentString</code>- nsString から派生した文字列で、 この string は自分自身ではバッファを<strong>持ちません</strong>。 生の文字列(<code>const PRUnichar*</code> や <code>const char*</code>)を <code>nsAString</code> 型に変換するのに有用です。</li> - <li><code class="decl">nsPrintfCString</code>- nsString から派生した文字列で、 この string は nsCAutoString のように振る舞います。 このクラスのコンストラクタで <code>printf</code> スタイルのフォーマットの string と引数リストから シングルバイトの string を作ることが出来ます。</li> - <li><code class="decl">NS_LITERAL_STRING/NS_NAMED_LITERAL_STRING</code>- これらは("abc" のような)リテラル stringを <code>nsAStrings</code> や nsString のサブクラスに変換します。 プラットフォームでサポートしているダブルバイト string リテラルにおいて(例:MSVC++ や -fshort-wchar オプションを付けた GCC)、これらは <code>nsDependentString</code> クラス周辺の単純なマクロです。 これらは <code>nsDependentString</code> による単なるラップより若干速いです。なぜなら、それらの長さの計算にコンパイラを使い、ダブルバイトリテラル string のごちゃごちゃしたクロスプラットフォーム上の細部を隠しもするからです。</li> -</ul> - -<p>ヘルパールーチンなどの副産物として作られた具象クラスはたくさんあります。 これらのクラスは<em>直接使うことを避け</em>るべきです。 string ライブラリから自分のためのクラスを作ってください。</p> - -<ul> - <li><code class="decl">nsSubstringTuple</code> - <a href="#Concatenation">文字列連結</a>を通した生成</li> - <li><code class="decl">nsDependentSubstring</code> - <a href="#Substring">Substring</a> を通した生成</li> - <li><code class="decl">nsPromiseFlatString</code> - <a href="#Raw_Pointers"><code>PromiseFlatString()</code></a> を通した生成</li> -</ul> - -<p>もちろん、あなたのコードの中のこれらの string クラスの参照が必要な時はあります。 しかし、一般的なルールでは、これらは使わない方がよいです。</p> - -<h2 id=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF" name=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF">イテレータ</h2> - -<p>イテレータは string の中の位置への参照を保つオブジェクトです。 ある意味で、これらは配列の中のインデックスを参照する数値や、 文字列の中の位置を参照する文字ポインタのようなものです。 イテレータは、文字列への読み込みと書き込みとを区別する文法的な意味も提供します。</p> - -<p>イテレータは文字列の部分文字列の抽出のためにもっともよく用いられるべきです。 これらは文字列の内容の修正のための機能を提供しますが、 たいていはヘルパールーチン、つまり文字列自身のメソッドの方が、複雑な文字列変換より早いでしょう。</p> - -<p>イテレータは繰り返している文字列クラスで宣言されます:</p> - -<pre class="eval">nsAString::const_iterator start, end; // 読み取り専用イテレータ - nsAStrings - nsAFlatString::iterator substr_start, substr_end; // nsString のための書き込み用イテレータ -</pre> - -<p>イテレータは string にある4つのメソッドのうちあなたが参照したい一つにより初期化されます:</p> - -<pre class="eval">// 'str' から読み込もう -str.BeginReading(start); // 'str' の先頭で 'start' を初期化する -str.EndReading(end); // 'end' は string の終端になるでしょう - -// 'url' に書き込みもしたいんです -url.BeginWriting(substr_start); -url.EndWriting(substr_end); -</pre> - -<p>ポインタ参照オペレータ * によってイテレータが指す文字へアクセス可能です。</p> - -<pre class="eval">if (*start == '[') - printf("Starts with a bracket\n"); -</pre> - -<p>上記例では、'end' と 'substr_end' は実際にかつて string の終端だった文字を指すでしょう。 なので、.EndReading() の結果を直接ポインタ内容参照してはいけないことに注意してください。</p> - -<p>二つのイテレータが同じ位置を指すかどうかは、== か != で調べることが出来ます。 ++ でイテレータの参照を進めることも出来ます。 ++ はイテレータの前にもってくることが好まれます。そして、それは一時的なイテレータの作成を防ぐことになります。</p> - -<p> </p> - -<pre class="eval">while (start != end) // string 全体を通して順番に回る - ++start; -</pre> - -<p>(const-iterators とは反対のように)書き込みイテレータにより、効果的に string に書き込むことが出来ます:</p> - -<p> </p> - -<pre class="eval">// * をすべて ! に変える -while (substr_start != substr_end) { - if (*substr_start == '*') - *substr_start = '!'; - ++substr_start; -} -</pre> - -<p>With the patch for <a class="external" href="http://bugzilla.mozilla.org/show_bug.cgi?id=231995">bug 231995</a>, this loop is now as efficient as iterating with raw character pointers.</p> - -<p> </p> - -<h3 id=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.AB.E3.82.88.E3.82.8B.E3.83.AB.E3.83.BC.E3.83.97" name=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.AB.E3.82.88.E3.82.8B.E3.83.AB.E3.83.BC.E3.83.97">イテレータによるループ</h3> - -<p><span id="comment">原文ではindex部分には残っていますが、見出し、a nameを含めて削除されています。</span></p> - -<h2 id=".E3.83.98.E3.83.AB.E3.83.91.E3.83.BC.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.A8.E9.96.A2.E6.95.B0" name=".E3.83.98.E3.83.AB.E3.83.91.E3.83.BC.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.A8.E9.96.A2.E6.95.B0">ヘルパークラスと関数</h2> - -<h3 id=".E6.96.87.E5.AD.97.E5.88.97.E6.A4.9C.E7.B4.A2" name=".E6.96.87.E5.AD.97.E5.88.97.E6.A4.9C.E7.B4.A2">文字列検索</h3> - -<p><code>FindInReadable()</code> はかつての <code>string.Find(..)</code> の代わりのものです。 構文は:</p> - -<pre class="eval">PRBool FindInReadable(const nsAString& pattern, - nsAString::const_iterator start, nsAString::const_iterator end, - nsStringComparator& aComparator = nsDefaultStringComparator()); -</pre> - -<p>これを使うために、<code>start</code> と <code>end</code> は検索したい文字列のそれぞれ先頭と終端をさしていなくてはなりません。 もし、探している文字列が見つかったら、<code>start</code> と <code>end</code> は見つかった部分の先頭と終端を指すように調整されます。 戻り値は、PR_TRUE か PR_FALSE で、文字列が見つかったかどうかを示します。</p> - -<p>例:</p> - -<pre class="eval">const nsAString& str = GetSomeString(); -nsAString::const_iterator start, end; - -str.BeginReading(start); -str.EndReading(end); - -NS_NAMED_LITERAL_STRING(valuePrefix, "value="); - -if (FindInReadable(valuePrefix, start, end)) { - // end は今、検索した文字の後ろを指している - valueStart = end; -} -</pre> - -<h3 id=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E5.BD.93" name=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E5.BD.93">メモリ割当</h3> - -<p>既存の文字列から新しい文字列バッファ(<code>PRUnichar*</code>/<code>char*</code>)を割り当てるために好ましいメソッドは、 以下のメソッドです:</p> - -<ul> - <li><strong><code>PRUnichar* ToNewUnicode(<em>nsAString&</em>)</code></strong> - nsAString から <code>PRUnichar*</code> を割り当てます。</li> - <li><strong><code>char *ToNewCString(<em>nsACString&</em>)</code></strong> - nsACString から <code>char*</code> バッファを割り当てます。 このメソッドは nsAStrings 上でも働きますが、暗黙の<a href="#Lossy_Conversions">損失の多い変換</a>となるでしょう。 この機能は入力が厳密に ASCII であることが判っている場合にだけ使うべきです。しばしば UTF8 への変換がより適しています。 次項 <code class="decl">ToNewUTF8String</code> も参照のこと。</li> - <li><strong><code>char* ToNewUTF8String(<em>nsAString&</em>)</code></strong> - 与えられた nsAString の UTF8 エンコードされたバージョンを含む新しい <code>char*</code> バッファを割り当てます。 詳細は<a href="#Unicode_Conversion">Unicode 変換</a>を参照して下さい。</li> -</ul> - -<p>これらのメソッドは These methods return a buffer allocated using XPCOM's allocator (<code>nsMemory::Alloc</code>) instead of the traditional allocator (<code>malloc</code>, etc.). You should use <code>nsMemory::Free</code> to deallocate the result when you no longer need it. これらのメソッドは伝統的なアロケータ (<code>malloc</code> など)の代わりに XPCOM のアロケータ (<code>nsMemory::Alloc</code>)で割り当てられたバッファを返すでしょう。 必要としなくなった時、その戻り値を開放するために <code>nsMemory::Free</code> を使うべきです。</p> - -<h3 id=".E6.97.A2.E5.AD.98.E3.81.AE.E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E6.96.AD.E7.89.87" name=".E6.97.A2.E5.AD.98.E3.81.AE.E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E6.96.AD.E7.89.87">既存の文字列の断片</h3> - -<p>実際に新しいスペースを割り当てたり、その文字列の部分文字列の文字をコピーしたりしないで既存の文字列の部分文字列を参照するのはとても簡単です。<code>Substring()</code> はそのような文字列への参照を生成するのにとてもよいメソッドです。</p> - -<pre class="eval">void ProcessString(const nsAString& str) { - const nsAString& firstFive = Substring(str, 0, 5); - // firstFive は今最初の 5 文字を示す文字列です -} -</pre> - -<p> </p> - -<h2 id="Unicode_.E5.A4.89.E6.8F.9B" name="Unicode_.E5.A4.89.E6.8F.9B">Unicode 変換</h2> - -<p>文字列は二つの基本的な形式で<em>保存</em>することができます。 8 ビット文字(<code>char</code>)文字列もしくは、16 ビット文字(<code>PRUnichar</code>)文字列です。 クラス名に大文字の「C」を持つどの文字列クラスも、8 ビット文字を含みます。 それには、nsCString、nsDependentCString などのクラスが含まれます。 「C」を<em>持たない</em>どの文字列クラスも、16 ビット文字を含みます。</p> - -<p>格納構造に加え、文字列はまた、<em>エンコード</em>もされているという側面があります。 文字列のエンコーディングは、8 もしくは 16 ビットの文字列として unicode 文字値の組を保持することを意味します。 大きな文字値を小さな容量の文字列として保存する方法がたくさんあるため、エンコーディングがたくさんあります。 <em>文字セット</em>は、特定のエンコーディング方法の人間が理解できる名称です。 例えば、「ASCII」は 7 ビット値を 8 ビット文字列にマッピングした文字セットです。 「isolatin1」は8 ビット文字列で西欧文字エンコーディングするための共通文字セットです。</p> - -<p>文字列の文字セットは、文字列クラスの名前によって定義されて<em>いません</em>。 そのかわり、文字列の適切なエンコーディングを決定することは実装者の責任です。 もっとも一般的なのエンコーディングは:</p> - -<ul> - <li><strong>ASCII</strong> - 基本的な英語のみの文字列のための 8 ビットエンコーディングです。 どの ASCII 値も配列の正確に 1 バイトに格納されます。</li> - <li><strong>UCS2</strong> - 基本の unicode 格納のためのエンコーディングです。 UCS2 で格納された文字の unicode 値は、文字列クラスの正確に一つの 16 ビット <code>PRUnichar</code> に格納されます。</li> - <li><strong>UTF8</strong> - unicode 値のための8 ビットエンコーディング。 どの UTF8 値も 1 から 6 バイトの組で保持されます。 UTF8 は unicode 文字セット全体を表現する能力があり、効率よく UTF32 へマップします。</li> - <li><strong>UTF16</strong> - 拡張 unicode 格納のための 16 ビットエンコーディングです。 UCS2 に対して後方互換性があります。 UTF16で格納された unicode 文字値は、文字列クラスの 1 つもしくは 2 つの 16ビット <code>PRUnichar</code> を必要とします。 このエンコーディングは現在頻繁には使われません。しかし、より新しい unicode 標準が採用されるにつれて、きっと増えるでしょう。 UTF16 は unicode 文字セット全体を表現する能力があり、効率よく UTF32 へマップします。</li> -</ul> - -<p>加えて、国際化ライブラリによって提供される文字通り何百のエンコーディングがあります。 これらのライブラリへのアクセスは、アプリケーションの一部であるか(例えば Mozilla の <code>nsICharsetConversionManager</code> のように)、オペレーティングシステムへビルドされている(例えば Unix 系 OS の <code>iconv()</code> のように)でしょう。</p> - -<p>既存のコードで作業する時、正しい変換機構を決定するために、操作している文字列の現在の使い方を吟味することは重要です。</p> - -<p>新しいコードを書く時、どの格納クラスそしてエンコーディングがもっとも適切かを知ろうとしても混乱するかもしれません。この問題への単純な答えはありません。しかし、少数の重要なガイドラインがあります:</p> - -<ul> - <li><strong>文字列はいつも ASCII ?</strong> 最初の、そして最大のもので、どの種類の値が文字列に格納されているかを決めることが必要です。文字列がいつでも内部の ASCII 文字列、例えば「left」、「true」、「background」などであれば、そのままの C-文字列がたぶん選ぶべきものです。</li> - <li><strong>文字列が ASCII であれば、ASCII でない文字列と比較・代入・さもなければ相互作用しますか?</strong> 8 ビット ASCII 値を 16 ビット UCS2 文字列と代入もしくは比較するとき、実行時に「膨らませる」必要があります。 もし、文字列が十分に小さい(そう、 64 バイトより小さい)ならば、余計な変換を避けるために 16 ビット unicode クラスにも文字列を格納する、というのも手です。そのかわり、ASCII 文字列が、8 ビット文字列だった場合に比べて 2 倍のスペース、つまり 16 ビット unicode 文字列と同じスペースを占める、という欠点があります。</li> - <li><strong>文字列はたいてい ASCII であるけれど、unicode をサポートしなくていいのでしょうか?</strong> 文字列はほとんど大抵 ASCII であるけれど、unicode 値も格納する必要があるのなら、UTF8 は正しいエンコーディングだ。 ASCII 値は 8 ビットのまま格納され、拡張 unicode 値は 2 〜 6 バイトで格納されるでしょう。 しかし、もし文字列が unicode 値との比較や代入までも必要とするのなら、実行時変換が必要となるでしょう。</li> - <li><strong>ASCII でない大きな文字列データを格納しますか?</strong> ここに至るまでは、 UTF8 は理想的な文字列に見えます。 欠点は、西欧以外の文字のほとんど(例えば日本語文字)を使う場合に、UTF8 は「ふくれ気味な」エンコーディングです。 UTF-8 では、日本語文字列は大抵一文字あたり 3 バイト必要です。 UCS2 では、一文字が 2 バイトであるのと比べて、日本語テキストにおいて UTF-8 は相当に多くのサイズを消費します。</li> - <li><strong>unicode 文字列のコンテントを処理する必要がありますか?</strong> UTF8 やその他の 8 ビット格納形式で unicode 値をエンコーディングすることの一つの問題点は、実際も unicode 値も文字列の中で複数バイトにわたることです。 ほとんどのエンコーディングでは、実際のバイト数は文字から文字へで異なります。 それぞれの文字を通して反復処理する必要があるときには、エンコーディングを考慮する必要があります。 UCS2 文字列で反復処理するなら、これは非常に簡易です。なぜなら、どの 16 ビット PRUnichar も、unicode 値と対応するからです。</li> -</ul> - -<p>ASCII、UTF8、UCS2 の変換を助けるため、 いくつかのヘルパーメソッドとヘルパークラスがあります。 これらのクラスのうちいくつかは、スタック上の一時オブジェクトとしてもっともよく使われるため、関数のように見えます。</p> - -<p>To assist with ASCII, UT8 and UCS2 conversions, there are some helper methods and classes. Some of these classes look like functions, becuase they are most often used as temporary objects on the stack.</p> - -<h4 id="UTF8_.2F_UCS2_.E5.A4.89.E6.8F.9B" name="UTF8_.2F_UCS2_.E5.A4.89.E6.8F.9B">UTF8 / UCS2 変換</h4> - -<ul> - <li><code class="decl">NS_ConvertUTF8toUCS2(<em>const nsACString&</em>)</code> - UTF-8 エンコードされた nsACString もしくは <code>const char*</code> を UCS2 string に変換する nsAutoString のサブクラス。もし、代わりに <code>const PRUnichar*</code> バッファが必要なら、.get() メソッドを使ってください。例:</li> -</ul> - -<pre class="eval">/* シグネチャ: void HandleUnicodeString(const nsAString& str); */ -object->HandleUnicodeString(<strong>NS_ConvertUTF8toUCS2</strong>(utf8String)); -</pre> - -<pre class="eval">/* シグネチャ: void HandleUnicodeBuffer(const PRUnichar* str); */ -object->HandleUnicodeBuffer(<strong>NS_ConvertUTF8toUCS2</strong>(utf8String).get()) - -</pre> - -<ul> - <li><code class="decl">NS_ConvertUCS2toUTF8(<em>const nsAString&</em>)</code> - UTF8 エンコードされた nsAString を UTF8 された文字列に変換する nsAFlatCString。上記同様に、<code>const char*</code> へアクセスするときは、.get() を使ってください。</li> - <li><code class="decl">NS_ConvertUCS2toUTF8(<em>const nsAString&</em>)</code> - UCS2 エンコードされた nsAString を UTF-8 エンコードされた string へ変換する nsCAutoString。 上記項目と同様に、<code>const char*</code> にアクセスするために .get() を使うことが出来ます。</li> -</ul> - -<pre class="eval">/* シグネチャ: void HandleUTF8String(const nsACString& str); */ -object->HandleUTF8String(NS_ConvertUCS2toUTF8(unicodeString)); -</pre> - -<pre class="eval">/* シグネチャ: void HandleUTF8Buffer(const char* str); */ -object->HandleUTF8Buffer(NS_ConvertUCS2toUTF8(unicodeString).get()) -</pre> - -<ul> - <li><code class="decl">CopyUTF8toUCS2(<em>const nsACString&, const nsAString&</em>)</code> - 変換と割り当てを行う。</li> -</ul> - -<pre class="eval">// UCS2 値を返す -void Foo::GetUnicodeValue(nsAString& result) { - CopyUTF8toUCS2(mLocalUTF8Value, result); -} -</pre> - -<ul> - <li><code class="decl">CopyUCS2toUTF8(<em>const nsAString&, const nsACString&</em>)</code> - 変換と割り当てを行う。</li> -</ul> - -<pre class="eval">// UTF8 値を返す -void Foo::GetUTF8Value(nsACString& result) { - CopyUCS2toUTF8(mLocalUnicodeValue, result); -} -</pre> - -<ul> - <li><code class="decl">ToNewUTF8String(<em>const nsAString&</em>)</code> - 割り当てと変換を行う</li> -</ul> - -<pre class="eval">void Foo::GetUTF8Value(const char** result) { - *result = ToNewUTF8String(mLocalUnicodeValue); -} -</pre> - -<p> </p> - -<h3 id=".E6.90.8D.E5.A4.B1.E3.81.AE.E5.A4.9A.E3.81.84.E5.A4.89.E6.8F.9B" name=".E6.90.8D.E5.A4.B1.E3.81.AE.E5.A4.9A.E3.81.84.E5.A4.89.E6.8F.9B">損失の多い変換</h3> - -<p>以下はオリジナル文字列が ASCII ベースであることが保証できるときだけ使われるべきです。</p> - -<h4 id="UCS2_.E3.81.8B.E3.82.89_ASCII_.E3.81.B8.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.90.E3.83.BC.E3.82.BF" name="UCS2_.E3.81.8B.E3.82.89_ASCII_.E3.81.B8.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.90.E3.83.BC.E3.82.BF">UCS2 から ASCII へのコンバータ</h4> - -<p>これらのコンバータ(変換機構)は、変換プロセスの中で<em><strong>情報の消失</strong></em>があるため<em><strong>とても危険</strong></em>です。<em><strong>UCS2 から ASCII への変換は、文字列が ASCII であることが保証されない限りさけるべきです</strong></em>。どの UCS2(16 ビット)文字も、8 ビット文字は単に 8 ビット文字にキャストされます。それは、0xFF を超えるすべての文字の値は任意の 8 ビット文字に変換されてしまうということです。</p> - -<ul> - <li><code class="decl">NS_LossyConvertUCS2toASCII(<em>nsAString</em>)</code> - string の圧縮した値を含む一時バッファを持つ nsCAutoString。</li> - <li><code class="decl">CopyUCS2toASCII(<em>nsAString</em>, <em>nsACString</em>)</code> - UCS2 から ASCII 文字列オブジェクトへコピーの変換をします。</li> - <li><code class="decl">ToNewCString(<em>nsAString</em>)</code> - 新しい <code>char*</code> 文字列を割り当てます。</li> -</ul> - -<p> </p> - -<h4 id="ASCII_.E3.81.8B.E3.82.89_UCS2_.E3.81.B8.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.90.E3.83.BC.E3.82.BF" name="ASCII_.E3.81.8B.E3.82.89_UCS2_.E3.81.B8.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.90.E3.83.BC.E3.82.BF">ASCII から UCS2 へのコンバータ</h4> - -<p>これらは、<em>ASCII でない文字列を無意味な unicode 文字列に壊してしまう</em>ため、<em><strong>とても危険</strong></em>です。 <em><strong>ASCII から UCS2 への変換は、文字列が ASCII であることが保証されない限りさけるべきです</strong></em>。 つまり、もし複数バイト文字セットの 8 ビット文字列エンコードされたものを持っている場合、文字列のどのバイトもただキャストによって 16 バイト数値に"水増し"されるだけなのです。</p> - -<p>例えば、文字列の最初の unicode 文字が 4 バイトの UTF-8 シーケンスで表されているような UTF-8 文字列を想像してください。"水増しされた" unicode 文字列の最初の 4 バイトは最初の文字をあらわす 4 つの値を含んでいます。これらの値は文字列を UCS2 として扱うなら無意味です。</p> - -<ul> - <li><code class="decl">NS_ConvertASCIItoUCS2(<em>nsACString</em>)</code> - string の水増しした値を含む一時バッファを持つ nsCAutoString。</li> - <li><code class="decl">NS_ConvertASCIItoUCS2(<em>nsACString</em>)</code> - 水増しした文字列の値を含む一時バッファをもつ nsAFlatString。</li> - <li><code class="decl">CopyASCIItoUCS2(<em>nsACString</em>, <em>nsAString</em>)</code> - ある文字列から unicode 文字列オブジェクトへコピーの変換をします。</li> - <li><code class="decl">ToNewUnicode(<em>nsACString</em>)</code> - 水増しした値を含む新しい <code>PRUnichar*</code> 文字列を生成します。</li> -</ul> - -<p> </p> - -<h2 id=".E5.85.B1.E9.80.9A.E3.83.91.E3.82.BF.E3.83.BC.E3.83.B3" name=".E5.85.B1.E9.80.9A.E3.83.91.E3.82.BF.E3.83.BC.E3.83.B3">共通パターン</h2> - -<p>多くの API は、呼び出し元に文字列を返すためのバッファを割り当てるメソッドとなります。 バッファを使い終えた時に呼び出し元が文字列を解放することを覚えている必要があるため、これはトリッキーでもあります。 幸運にも、<code>nsXPIDLString</code> クラスでこれを簡単に行えます。</p> - -<p><br> - メソッドはこのような感じです:</p> - -<pre class="eval">void GetValue(PRUnichar** aValue) -{ - *aValue = ToNewUnicode(foo); -} -</pre> - -<p>文字列クラスなしで、呼び出し元は文字列を解放する必要があるでしょう:</p> - -<pre class="eval">{ - PRUnichar* val; - GetValue(&val); - - if (someCondition) { - // 値を解放することを忘れてはいけない - // don't forget to free the value! - nsMemory::Free(val); - return NS_ERROR_FAILURE; - } - - ... - // 後で、やはり解放を忘れてはいけない! - // and later, still don't forget to free! - nsMemory::Free(val); -} -</pre> - -<p><code>nsXPIDLString</code> を使えば、このことを心配する必要はありません。 <code>getter_Copies()</code> を使って文字列クラスをラップするだけで、 スコープの外へ出た時にクラスがバッファを解放するでしょう。</p> - -<pre class="eval">{ - nsXPIDLString val; - GetValue(getter_Copies(val)); -</pre> - -<pre class="eval"> // val はここで自身によって解放されるでしょう - // val will free itself here - if (someCondition) - return NS_ERROR_FAILURE; - ... - // 後で、やはり解放する必要がない - // and later, still nothing to free -} -</pre> - -<p>結果としてのコードはとても単純で、読みやすいです。</p> - -<p> </p> - -<h3 id=".E3.83.AA.E3.83.86.E3.83.A9.E3.83.AB.E6.96.87.E5.AD.97.E5.88.97" name=".E3.83.AA.E3.83.86.E3.83.A9.E3.83.AB.E6.96.87.E5.AD.97.E5.88.97">リテラル文字列</h3> - -<p><em>リテラル文字列</em>は C++ コードに書かれた生の文字列の値です。 例えば、<code>printf("Hello World\n");</code> ステートメント中の値 <code>"Hello World\n"</code> はリテラル文字列です。 nsAString や nsACString が必要なとき、リテラル文字列値を挿入する必要がしばしば発生します。 これら 4 つのマクロは必要な変換のために提供されています:</p> - -<ul> - <li><code class="decl">NS_LITERAL_CSTRING(<em>literal string</em>)</code> - 一時的 nsCString</li> - <li><code class="decl">NS_NAMED_LITERAL_CSTRING(<em>variable</em>,<em>literal string</em>);</code> - <em>variable</em> と名づけられた nsCString 変数を定義します</li> - <li><code class="decl">NS_LITERAL_STRING(<em>literal string</em>)</code> - Unicode 版<em>literal string</em>(リテラル文字列)を持つ一時 nsString</li> - <li><code class="decl">NS_NAMED_LITERAL_STRING(<em>variable</em>,<em>literal string</em>);</code> - Unicode 版 <em>literal string</em>(リテラル文字列)を持つ、名称 <em>variable</em> の nsString 変数を宣言する</li> -</ul> - -<p>nsDependentCString もまた nsCString の中の文字列の値をラップすることを考えれば、これらのマクロの <code>CSTRING</code> 版は、一見不要に見えます。これらのマクロの長所は、これらの文字列の長さがコンパイル時に計算できるため、実行時に長さを決めるために文字列を読み込む必要がありません。</p> - -<p>これらのマクロの <code>STRING</code> 版は、(例えば、MSVC++ や -fshort-wchar オプション付きの GCC のように)リテラル unicode 文字列をサポートするプラットフォーム上での実行時の変換をしないで、unicode 版の固定のリテラル string を宣言する移植性のある方法を提供します。</p> - -<pre class="eval">// Init(const PRUnichar*) 呼び出し -Init(L"start value"); // よくない - L"..." は移植性が低い! -Init(NS_ConvertASCIItoUCS2("start value").get()); // よくない - 実行時の ASCII->UCS2 変換! - -// Init(const nsAString&) 呼び出し -Init(nsDependentString(L"start value")); // よくない - 移植性が低い! -Init(NS_ConvertASCIItoUCS2("start value")); // よくない - 実行時の ASCII->UCS2 変換! - -// Init(const nsACString&) 呼び出し -Init(nsDependentCString("start value")); // よくない - 文字列長が実行時に決まる -</pre> - -<p>適切な NS_LITERAL_[C]STRING 使用法を以下にいくつか示します。</p> - -<pre class="eval">// Init(const PRUnichar*) 呼び出し -Init(NS_LITERAL_STRING("start value").get()); - -// Init(const nsAString&) 呼び出し -Init(NS_LITERAL_STRING("start value")); - -// Init(const nsACString&) 呼び出し -Init(NS_LITERAL_CSTRING("start value")); -</pre> - -<p><br> - これらのマクロを使った問題の追跡に役に立つであろう詳細をいくつか示します:</p> - -<p><code>NS_LITERAL_STRING</code> は(Windows や Macintosh などといった)いくつかのプラットフォーム上でコンパイル時に UCS2 への変換をしますが、他のプラットフォームでは実行時に変換されます。NS_LITERAL_STRING を使うことによって、あなたのコードで問題のプラットフォームのために最良の変換が使われることを保証します。</p> - -<p>いくつかのプラットフォームで実行時変換が行われるため、<code>NS_LITERAL_STRING/NS_NAMED_LITERAL_STRING</code> マクロ内部でのリテラル文字列連結の使用は、それらのプラットフォームではコンパイルされるでしょうが、コンパイル時変換をサポートするプラットフォーム上ではコンパイルできないでしょう。</p> - -<p>以下に例示します:</p> - -<p> </p> - -<pre class="eval">// Init(nsAString&) 呼び出し -Init(NS_LITERAL_STRING("start " - "value")); // いくつかのプラットフォームでだけコンパイルされます。 -</pre> - -<p>その理由は、いくつかのプラットフォームで<code>L"..."</code> 構文が使われますが、これは連結の最初の文字列にだけ適用されるためです(<code>"start "</code>)。コンパイラは unicode でない文字列 <code>"value"</code> との連結を試みると困惑します。</p> - -<h3 id=".E6.96.87.E5.AD.97.E5.88.97.E9.80.A3.E7.B5.90" name=".E6.96.87.E5.AD.97.E5.88.97.E9.80.A3.E7.B5.90">文字列連結</h3> - -<p>文字列は <code>+</code> 演算子を用いて互いに連結可能です。結果となる文字列は <code>const nsAString</code> オブジェクトとなります。 結果となる文字列は、その他の <code>nsAString</code> のように振る舞いをさせることも参照もできます。 連結は<em>部分文字列のコピーではありません</em>。代わりに、オリジナルの文字列を参照するに過ぎません。 結果としての文字列は、少なくとも連結された文字列と同じだけの生存期間を持つという意味で、その部分文字列のすべてに依存します。</p> - -<p>例えば、二つの文字列の値を使うことができ、接続を <code>const nsAString&</code> をとる他の関数に引き渡すことができます:</p> - -<pre class="eval">void HandleTwoStrings(const nsAString& one, const nsAString& two) { - // HandleString(const nsAString&) 呼び出し - HandleString(one + two); -} -</pre> - -<p>注意:このケースでは、二つの文字列は暗黙のうちに一時的な nsString に結びつけられ、 一時的 string は、<code>HandleString</code> に渡されます。 もし、<code>HandleString</code> がその入力を他の nsString へ代入したならば、 いくつかの文字列を連結し、その結果を一時変数に格納することもできます:</p> - -<pre class="eval">NS_NAMED_LITERAL_STRING(start, "start "); -NS_NAMED_LITERAL_STRING(middle, "middle "); -NS_NAMED_LITERAL_STRING(end, "end"); -// 3つの相互依存した断片を持つ string を生成 - 複雑なコピーではない! -nsString combinedString = start + middle + end; -</pre> - -<p> </p> - -<pre class="eval">// void HandleString(const nsAString&); 呼び出し -HandleString(combinedString); -</pre> - -<p>もし、一度きりだけ使う一時的なものを作るために <code>NS_LITERAL_STRING</code> を使うのなら、 結合の中で定義するのが安全でしょう。なぜなら、文字列バッファは(<code>nsSubstringTuple</code> 型の)一時的結合オブジェクトと同じ生存期間となるからです。</p> - -<pre class="eval">// HandlePage(const nsAString&); 呼び出し -// 結合された文字列はその部分文字列と同じ生存期間なので安全 -HandlePage(NS_LITERAL_STRING("start ") + NS_LITERAL_STRING("end")); -</pre> - -<h3 id=".E3.83.AD.E3.83.BC.E3.82.AB.E3.83.AB.E5.A4.89.E6.95.B0" name=".E3.83.AD.E3.83.BC.E3.82.AB.E3.83.AB.E5.A4.89.E6.95.B0">ローカル変数</h3> - -<p>関数内のローカル変数は通常、スタック上に確保されます。 <code>nsAutoString</code>/<code>nsCAutoString</code> クラスは、 <code>nsString</code>/<code>nsCString</code> の派生物です。 これらが、文字列自身と同じ格納領域に割り当てられた 64 文字のバッファを持ちます。 もし、nsAutoString がスタック上に割り当てられていれば、文字列は破棄時に 64 文字スタックバッファ持ちます。 They own a 64-character buffer allocated in the same storage space as the string itself. If the nsAutoString is allocated on the stack, then it has at its disposal a 64-character stack buffer. このことにより、小さな文字列を扱う時、余計なメモリの割り当てをしないで実装することができます。</p> - -<pre class="eval">... -nsAutoString value; -GetValue(value); // 結果が 64 文字より少なければ、 - // 割り当てを省くことができる。 -GetValue(value); // if the result is less than 64 characters, - // then this just saved us an allocation -... -</pre> - -<h3 id=".E3.83.A1.E3.83.B3.E3.83.90.E5.A4.89.E6.95.B0" name=".E3.83.A1.E3.83.B3.E3.83.90.E5.A4.89.E6.95.B0">メンバ変数</h3> - -<p>一般に、メンバ変数としては、<code>nsString</code> や <code>nsCString</code> といった具象クラスを使うべきでしょう。</p> - -<pre class="eval">class Foo { - ... - // これらは UTF8 や unicode 値を各々格納する - // these store UTF8 and Unicode values respectively - nsCString mLocalName; - nsString mTitle; -}; -</pre> - -<p>文字列は直接クラスの中で宣言され、文字列へのポインタとして宣言されるのではないことに注意してください。 このようにはしないでください:</p> - -<p>Note that the strings are declared directly in the class, not as pointers to strings. Don't do this:</p> - -<pre class="eval">class Foo { -public: - Foo() { mLocalName = new nsCString(); } - ~Foo() { delete mLocalName; } - -private: - // これらは UTF8 や unicode 値を各々格納する - // these store UTF8 and Unicode values respectively - nsCString* mLocalName; -}; -</pre> - -<p>上記のコードは文字列オブジェクトのコストを節約しているように見えるかもしれませんが、 <code>nsString</code>/<code>nsCString</code> は小さなオブジェクトです。 割り当てのオーバーヘッドは、ポインタで節約するよりも数バイト勝っているだけです。</p> - -<p><br> - その他の間違ったパターンとしては、メンバ変数として、 <code>nsAutoString</code>/<code>nsCAutoString</code> を使うというものがあります。 <a href="#Local_Variables">ローカル変数</a>で述べたように、 これらのクラスはとても大きなバッファを中にもって作られます。 もしクラスの中にこれらを持つことは、クラスを 64 バイト(<code>nsCAutoString</code>)もしくは 128 バイト(<code>nsAutoString</code>)膨らませることになります。</p> - -<p><br> - 例:</p> - -<pre class="eval">class Foo { - ... - - // Foo クラスが 128 バイト膨らむ! - // bloats 'Foo' by 128 bytes! - nsAutoString mLocalName; -}; -</pre> - -<p> </p> - -<h3 id=".E7.94.9F.E3.81.AE.E6.96.87.E5.AD.97.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF" name=".E7.94.9F.E3.81.AE.E6.96.87.E5.AD.97.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF">生の文字ポインタ</h3> - -<p><code>PromiseFlatString()</code> は、元になった文字列と同じ値を含む null 終端のバッファを持つ一時バッファを生成するのに使うことができます。 <code>PromiseFlatString()</code> は必要ならば一時バッファを作ります。 これは多くの場合、nsAString を null 終端文字列を要求する API に通すために使われます。</p> - -<p>以下の例では、nsAString はリテラル文字列と一体化されます。そして結果は単純な文字バッファを求める API に通されます。</p> - -<pre class="eval">// URL を修正し、AddPage(const PRUnichar* url) へ通す -void AddModifiedPage(const nsAString& url) { - NS_NAMED_LITERAL_STRING(httpPrefix, "<a class="external" href="http://" rel="freelink">http://</a>"); - const nsAString& modifiedURL = httpPrefix + url; - - // 一時バッファ生成 - AddPage(PromiseFlatString(modifiedURL).get()); -} -</pre> - -<p>既に null 終端である文字列を扱うとき、<code>PromiseFlatString()</code> は洗練された方法です。 そのようなケースで一時バッファを作らなくてすみます。</p> - -<p> </p> - -<pre class="eval">// URL を修正し、AddPage(const PRUnichar* url) へ通す -void AddModifiedPage(const nsAString& url, PRBool addPrefix) { - if (addPrefix) { - // 一時バッファを作成<strong>なければならない</strong> - 文字列は複数の断片でできている - NS_NAMED_LITERAL_STRING(httpPrefix, "<a class="external" href="http://" rel="freelink">http://</a>"); - AddPage(PromiseFlatString(httpPrefix + modifiedURL)); - } else { - // 一時バッファを作成<strong>してもよい</strong>、実行時にチェックする - AddPage(PromiseFlatString(url).get()); - } -} -</pre> - -<p> </p> - -<h2 id="IDL" name="IDL">IDL</h2> - -<p>文字列ライブラリは IDL を通しても利用できます。 特別に IDL 型を定義することによって属性やメソッドを宣言することで、 string クラスは対応メソッドへの引数として使えます。</p> - -<p> </p> - -<h3 id="IDL_.E6.96.87.E5.AD.97.E5.88.97.E5.9E.8B" name="IDL_.E6.96.87.E5.AD.97.E5.88.97.E5.9E.8B">IDL 文字列型</h3> - -<p>C++ シグネチャにより、メソッドのすべての引数が<a href="#Abstract_Classes">抽象クラス</a>をベースにしているようなのような上述通りの抽象型を定義することができます。 以下のテーブルには IDL のそれぞれの文字列型の目的を記します。</p> - -<table class="standard-table"> - <tbody> - <tr> - <th class="header">IDL type</th> - <th class="header">C++ Type</th> - <th class="header">Purpose</th> - </tr> - <tr> - <td><code>string</code></td> - <td><code>char*</code></td> - <td>Raw character pointer to ASCII (7-bit) string, no string classes used. High bit is not guaranteed across XPConnect boundaries</td> - </tr> - <tr> - <td><code>wstring</code></td> - <td><code>PRUnichar*</code></td> - <td>Raw character pointer to UTF-16 string, no string classes used</td> - </tr> - <tr> - <td><code>AString</code></td> - <td><code>nsAString</code></td> - <td>UTF-16 string</td> - </tr> - <tr> - <td><code>ACString</code></td> - <td><code>nsACString</code></td> - <td>8-bit string, all bits are preserved across XPConnect boundaries</td> - </tr> - <tr> - <td><code>AUTF8String</code></td> - <td><code>nsACString</code></td> - <td>UTF-8 string - converted to UTF-16 as necessary when value is used across XPConnect boundaries</td> - </tr> - <tr> - <td><code>DOMString</code></td> - <td><code>nsAString</code></td> - <td>UTF-16 string used in the DOM. More or less the same as <code>AString</code>, but in JavaScript it has no distinction between whether the string is void or just empty. (not sure on this, looking for corrections.</td> - </tr> - </tbody> -</table> - -<h3 id="C.2B.2B_.E3.82.B7.E3.82.B0.E3.83.8D.E3.83.81.E3.83.A3" name="C.2B.2B_.E3.82.B7.E3.82.B0.E3.83.8D.E3.83.81.E3.83.A3">C++ シグネチャ</h3> - -<p>IDL では、<code>in</code> 引数は読み込み専用で、*String 引数に対する C++ シグネチャにより、それらの引数のための <code>const nsAString&</code> を使った上記ガイドラインが行えます。 <code>out</code> と <code>inout</code> 引数は、呼ばれた側で書き込み可能なよう単純に <code>nsAString</code> として定義されています。</p> - -<table class="standard-table"> - <tbody> - <tr> - <th class="header">IDL</th> - <th class="header">C++</th> - </tr> - <tr> - <td> - <pre class="eval"> -interface nsIFoo : nsISupports { - - attribute AString utf16String; - - - - - AUTF8String getValue(in ACString key); - -}; -</pre> - </td> - <td> - <pre class="eval"> -class nsIFoo : public nsISupports { - - NS_IMETHOD GetUtf16String(nsAString& - aResult) = 0; - NS_IMETHOD SetUtf16String(const nsAString& - aValue) = 0; - - NS_IMETHOD GetValue(const nsACString& aKey, - nsACString& aResult) = 0; -}; -</pre> - </td> - </tr> - </tbody> -</table> - -<p>上記の例では、<code>unicodeString</code> は Unicode 文字列として扱われています。 <code>GetUnicodeString()</code> のインプリメントでは <code>aResult.Assign</code> を値を返す("return"する)のに使っています。 <code>SetUnicodeString()</code> では、文字列の値は<a href="#Iterators">イテレータ</a>、<a href="#Raw_Pointers"><code>PromiseFlatString</code></a>、その他の文字列への代入などを含む雑多なメソッドを通して使うことができます。</p> - -<p><code>GetValue()</code> では、最初の引数である <code>aKey</code> は、生の 8 ビット 値の連続として扱われます。 <code>aKey</code> 内の ASCII でないどの文字列も、XPConnect 境界を越えた場合も内容が保証されます。 <code>GetValue()</code> のインプリメンテーションは UTF-8 エンコードされた 8 ビット文字列の aResult への代入となっています。 もし、このメソッドがスクリプトからの呼び出しなどによって XPConnect の境界を越えて呼ばれたとき、結果は UTF-8 から UCS2へデコードされ、Unicode 値として利用されます。</p> - -<h3 id=".E6.96.87.E5.AD.97.E5.88.97.E5.9E.8B.E3.81.AE.E9.81.B8.E6.8A.9E" name=".E6.96.87.E5.AD.97.E5.88.97.E5.9E.8B.E3.81.AE.E9.81.B8.E6.8A.9E">文字列型の選択</h3> - -<p>IDL で使う正しい文字列型を決めるのは難しいかもしれません。 以下の点は適切な文字列型を決める助けになるでしょう。</p> - -<ul> - <li>文字列クラスを用いることは、<code>out</code> 引数へ新規にメモリ割当をすることを防ぐでしょう。 例えば、もし呼び出し側が <code>nsAutoString</code> を <code>out</code> 引数のための値を受け取るのに使っている場合、(C++ 内で単純に <code>nsAString</code> として定義されている)短い(64 文字以下の)値の <code>out</code> 引数への代入は <code>nsAutoString</code> のバッファへの値のコピーに過ぎません。 それ以上に、文字列クラスを使うことで、文字列バッファを共有することができます。 多くの場合、ある文字列オブジェクトから別の文字列オブジェクトへ代入することにより、参照のカウントを単に増やすことを優先してコピーを避けることが出来ます。</li> - <li>文字列クラスを使った <code>in</code> 文字列は、しばしば長さを事前に計算します。これはパフォーマンス上のメリットとなるでしょう。</li> - <li>生の文字バッファが必要とされる場所では、<code>string</code> と <code>wstring</code> は <code>PromiseFlatString</code> よりも高速なアクセスを提供します。</li> - <li><code>AUTF8String</code> で定義された UTF-8 文字列は、XPConnect 境界を越えるとき、デコードされる必要があるでしょう。 これはパフォーマンスに打撃を与えます。一方で、 UTF-8 文字列は共通で用いられる ASCII 文字列では省スペースしか占有しません。</li> - <li><code>wstring</code> や <code>AString</code> で定義された Unicode 文字列は、Unicode 値が必要とされるときは、速いです。 しかし、もし値によりしばしば ASCII が使われるなら、下敷きとなった文字列の格納スペースの半分は無駄になります。</li> -</ul> - -<h2 id=".E4.BB.98.E9.8C.B2_A_.E3.81.A9.E3.81.AE.E3.82.AF.E3.83.A9.E3.82.B9.E3.82.92.E3.81.84.E3.81.A4.E4.BD.BF.E3.81.86.E3.81.8B" name=".E4.BB.98.E9.8C.B2_A:_.E3.81.A9.E3.81.AE.E3.82.AF.E3.83.A9.E3.82.B9.E3.82.92.E3.81.84.E3.81.A4.E4.BD.BF.E3.81.86.E3.81.8B">付録 A: どのクラスをいつ使うか</h2> - -<p>この表はどのクラスをいつ使うべきかを示すクィックリファレンスです。</p> - -<table class="alternate data"> - <tbody> - <tr> - <th>内容</th> - <th>クラス</th> - <th>メモ</th> - </tr> - <tr class="even"> - <td>ローカル変数</td> - <td><code>nsAutoString</code><code>nsCAutoString</code></td> - <td> </td> - </tr> - <tr class="odd"> - <td>クラスのメンバ変数</td> - <td><code>nsString</code><code>nsCString</code></td> - <td> </td> - </tr> - <tr class="even"> - <td>メソッドの引数の型</td> - <td><code>nsAString</code><code>nsACString</code></td> - <td>引数に抽象クラスを使う。入力引数には <code>const nsAString&</code> を使い、出力引数には <code>nsAString&</code> を使う。</td> - </tr> - <tr class="odd"> - <td>出力文字列を回収するRetrieving "out" string/wstrings</td> - <td><code>nsXPIDLString</code><code>nsXPIDLCString</code></td> - <td><code>getter_Copies()</code> を使う。<code>nsString</code> / <code>nsCString</code> と似ている。</td> - </tr> - <tr class="even"> - <td>文字バッファをラップするbuffers</td> - <td><code>nsDependentString</code><code>nsDependentCString</code></td> - <td><code>const char*</code> / <code>const PRUnichar*</code> バッファをラップする。</td> - </tr> - <tr class="odd"> - <td>リテラル文字列</td> - <td><code>NS_LITERAL_STRING</code><code>NS_LITERAL_CSTRING</code></td> - <td>nsDependent[C]String と似ているが、ビルド時に長さが事前計算される。</td> - </tr> - </tbody> -</table> - -<h2 id=".E4.BB.98.E9.8C.B2_B_nsAString_.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9.3D" name=".E4.BB.98.E9.8C.B2_B:_nsAString_.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9.3D">付録 B: nsAString リファレンス=</h2> - -<p>読み込み専用メソッド</p> - -<ul> - <li><strong>Length()</strong></li> - <li><strong>IsEmpty()</strong></li> - <li><strong>IsVoid()</strong></li> - <li><strong>BeginReading(<em>iterator</em>)</strong></li> - <li><strong>EndReading(<em>iterator</em>)</strong></li> - <li><strong>Equals(<em>string</em>[,<em>comparator</em>])</strong></li> - <li><strong>First()</strong></li> - <li><strong>Last()</strong></li> - <li><strong>CountChar()</strong></li> - <li><strong>Left(<em>outstring</em>, <em>length</em>)</strong></li> - <li><strong>Mid(<em>outstring</em>, <em>position</em>, <em>length</em>)</strong></li> - <li><strong>Right(<em>outstring</em>, <em>length</em>)</strong></li> - <li><strong>FindChar(<em>character</em>)</strong></li> -</ul> - -<p>文字列を修正するメソッド</p> - -<ul> - <li><strong>Assign(<em>string</em>)</strong></li> - <li><strong>Append(<em>string</em>)</strong></li> - <li><strong>Insert(<em>string</em>)</strong></li> - <li><strong>Cut(<em>start</em>, <em>length</em>)</strong></li> - <li><strong>Replace(<em>start</em>, <em>length</em>, <em>string</em>)</strong></li> - <li><strong>Truncate(<em>length</em>)</strong></li> - <li><strong>SetIsVoid(<em>state</em>)</strong></li> - <li><strong>BeginWriting(<em>iterator</em>)</strong></li> - <li><strong>EndWriting(<em>iterator</em>)</strong></li> - <li><strong>SetCapacity()</strong></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/guide/xpcom_hashtable_guide/index.html b/files/ja/mozilla/tech/xpcom/guide/xpcom_hashtable_guide/index.html deleted file mode 100644 index 9d2c618917..0000000000 --- a/files/ja/mozilla/tech/xpcom/guide/xpcom_hashtable_guide/index.html +++ /dev/null @@ -1,297 +0,0 @@ ---- -title: XPCOM ハッシュテーブル・ガイド -slug: Mozilla/Tech/XPCOM/Guide/XPCOM_hashtable_guide -translation_of: Mozilla/Tech/XPCOM/Guide/Hashtables ---- -<h2 id="What_Is_a_Hashtable.3F" name="What_Is_a_Hashtable.3F">ハッシュテーブルとは何ですか?</h2> - -<p>ハッシュテーブルは、<strong>アイテム</strong>を格納するための構造体です。個々のアイテムは、それぞれを識別するための<strong>キー</strong>を持ちます。ハッシュテーブルからアイテムを検索・追加・削除するためにはキーを使います。ハッシュテーブルは<a href="/ja/XPCOM_array_guide" title="https://developer.mozilla.org/ja/XPCOM_array_guide">配列</a>に似ていますが、以下に示すような大きな違いがあります。</p> - -<table class="standard-table"> - <tbody> - <tr> - <th> </th> - <th class="header">配列</th> - <th class="header">ハッシュテーブル</th> - </tr> - <tr> - <td class="header">キー:</td> - <td><em>整数。</em>配列ではキーとして常に整数が利用され、またキーは連続している必要があります。</td> - <td><em>任意の型。</em>文字列、整数、 XPCOM インターフェースのポインタ、 IID を含む、ほとんどすべてのデータ型がキーとして利用できます。また、キーは連続している必要はありません(たとえば 1, 5, 3000 を利用できます)。</td> - </tr> - <tr> - <td class="header">検索にかかる時間:</td> - <td><em>O(1)。</em>検索時間は定数時間です。</td> - <td><em>O(1)。</em>検索時間は一般に定数時間ですが、配列よりも定数時間だけ長くかかる可能性があります。</td> - </tr> - <tr> - <td class="header">ソート:</td> - <td><em>ソートされています。</em>アイテムはソートされて保管されます。また、ソートされた順序で列挙されます。</td> - <td><em>ソートされていません。</em>アイテムはソートされずに保管されます。また、ソートされずに列挙されます。</td> - </tr> - <tr> - <td class="header">追加・削除:</td> - <td><em>O(n)。</em>大きな配列へのアイテムの追加・削除は時間がかかる可能性があります。</td> - <td><em>O(1)。</em>ハッシュテーブルへのアイテムの追加・削除は高速に行われます。</td> - </tr> - <tr> - <td class="header">余計に消費される領域:</td> - <td><em>なし。</em>配列は中が詰まった構造体であり、アイテムのサイズ以上に消費される領域はありません。</td> - <td><em>あり。</em>ハッシュテーブルは中が詰まった構造体ではありません。実装によりますが、大量のメモリが無駄に消費される可能性があります。</td> - </tr> - </tbody> -</table> - -<p>実装としては、ハッシュテーブルはキーを渡されるとそのキーに数学的な<strong>ハッシュ関数</strong>を適用してキーを<strong>乱数化</strong>します。以後、キーのハッシュ値がアイテムの場所の検索に利用されます。優れたハッシュテーブルの実装は、メモリが余計に必要になったとき、または多すぎる量のメモリが割り当てられているとき、自動的にハッシュテーブルのサイズを変更します。</p> - -<h2 id="When_Should_I_Use_a_Hashtable.3F" name="When_Should_I_Use_a_Hashtable.3F">どんなときにハッシュテーブルを使うべきですか?</h2> - -<p>ハッシュテーブルは以下のような場合に有用です。</p> - -<ul> - <li>高速なランダムアクセスが必要なデータのセット</li> - <li>非整数のキー、連続しない整数のキーを持ったデータ</li> - <li>アイテムの追加・削除が大量に発生するデータ</li> -</ul> - -<p>以下のような場合、ハッシュテーブルは利用されるべきでは<em>ありません</em>。</p> - -<ul> - <li>データのセットがソートされている必要がある場合</li> - <li>アイテムの数が非常に少ない場合(おおむね12-16個未満)</li> - <li>ランダムアクセスを必要としないデータ</li> -</ul> - -<p>このような状況では、配列、連結リスト、様々な木構造などが効果的です。</p> - -<h2 id="Mozilla.27s_Hashtable_Implementations" name="Mozilla.27s_Hashtable_Implementations">Mozilla のハッシュテーブル実装</h2> - -<p>Mozilla ではいくつかのハッシュテーブルの実装を用意しています。これらはテスト・調整されており、また実装にかかわる内部の複雑さが隠蔽されています。</p> - -<ul> - <li><code><a href="#PLDHash_.28JSDHash.29">PLDHash</a></code> - C の低レベルAPI。キーとデータを単独の大きな構造体としてメモリ上に格納します。ヒープ領域を効果的に利用します。利用者は「エントリークラス」(訳注:保管するアイテムを表すクラス・構造体)を宣言する必要があります。 また、アイテムへのポインタを別に持っておくことはできません。</li> - <li><code><a href="#PLHashTable">PLHashTable</a></code> - C の低レベルAPI。エントリークラスへのポインタは変化しません。大きな構造体を利用する場合は効果的です。細かなヒープ領域を大量に確保する結果、メモリを無駄に使用することがよくあります。</li> - <li><code><a href="#nsTHashtable">nsTHashtable</a></code> - <code>低レベル C++ による</code><code> PLDHash の</code>ラッパです。コールバック関数を生成し、ほとんどのキャストを自動的に行います。利用者はキーとデータを保持するエントリークラスを自分で用意します。</li> - <li><code><a href="#nsBaseHashtable_and_friends:_nsDataHashtable.2C_nsInterfaceHashtable.2C_and_nsClassHashtable">nsDataHashtable/nsInterfaceHashtable/nsClassHashtable</a></code> - 高レベル C++ による <code>PLDHash のラッパです。</code>単純なキー型・データ型を利用する一般的な使い方をする場合は簡単に利用できます。 利用者はエントリークラスを宣言・使用する必要がありません。 <code><strong>nsDataHashtable</strong></code> 型は <code>PRUint32</code> のようなスカラー値を扱います。 <code><strong>nsInterfaceHashtable</strong></code> 型はインタフェースを、 <code><strong>nsClassHashtable</strong></code> 型はクラスへのポインタ型を扱います。</li> -</ul> - -<h3 id="Which_Hashtable_Should_I_Use.3F" name="Which_Hashtable_Should_I_Use.3F">どのハッシュテーブルを使えば良いですか?</h3> - -<table class="standard-table"> - <tbody> - <tr> - <th class="header" colspan="2" rowspan="2"> </th> - <th class="header" colspan="5">キーの型:</th> - </tr> - <tr> - <th class="header">integer</th> - <th class="header">String/CString</th> - <th class="header">nsID</th> - <th class="header">nsISupports*</th> - <th class="header">Complex</th> - </tr> - <tr> - <td class="header" rowspan="8">データ型:</td> - <td class="header">None (Hash Set)</td> - <td><code>nsInt32HashSet</code></td> - <td><code>ns(C)StringHashSet</code></td> - <td colspan="3"><code>nsTHashtable<...></code></td> - </tr> - <tr> - <td class="header" rowspan="2">Simple (PRUint32)</td> - <td colspan="4"><code>nsDataHashtable</code></td> - <td rowspan="6"><code>nsTHashtable<...></code></td> - </tr> - <tr> - <td><code><nsUint32HashKey,<br> - PRUint32></code></td> - <td><code><ns(C)StringHashKey,<br> - PRUint32></code></td> - <td><code><nsIDHashKey,<br> - PRUint32></code></td> - <td><code><nsISupportsHashKey,<br> - PRUint32></code></td> - </tr> - <tr> - <td class="header" rowspan="2">Interface (nsISupports)</td> - <td colspan="4"><code>nsInterfaceHashtable</code></td> - </tr> - <tr> - <td><code><nsUint32HashKey,<br> - nsISupports></code></td> - <td><code><ns(C)StringHashKey,<br> - nsISupports></code></td> - <td><code><nsIDHashKey,<br> - nsISupports></code></td> - <td><code><nsISupportsHashKey,<br> - nsISupports></code></td> - </tr> - <tr> - <td class="header" rowspan="2">Class (nsString*)</td> - <td colspan="4"><code>nsClassHashtable</code></td> - </tr> - <tr> - <td><code><nsUint32HashKey,<br> - nsString></code></td> - <td><code><ns(C)StringHashKey,<br> - nsString></code></td> - <td><code><nsIDHashKey,<br> - nsString></code></td> - <td><code><nsISupportsHashKey,<br> - nsString></code></td> - </tr> - <tr> - <td class="header">Complex<br> - (structures, etc.)</td> - <td colspan="5"><code>nsTHashtable<...></code></td> - </tr> - </tbody> -</table> - -<h3 id="PLDHash_.28JSDHash.29" name="PLDHash_.28JSDHash.29">PLDHash (JSDHash)</h3> - -<p><code>PLDHash</code> <span style="font-family: monospace;">と</span><code> JSDHash</code> は同じものです。 <code>PLDHash は</code> XPCOM ライブラリから、 <code>JSDHash は</code> JavaScript のライブラリからリンクされています。 <code>JSDHash</code> は SpiderMonkey の JavaScript エンジンで広く利用されています。</p> - -<p><code>PLDHash</code> は C で書かれた低レベルな実装です。非常に柔軟ですが、 <code>PLDHash</code> を理解し、利用するためには多少の時間がかかります。基本的なガイドはここにありますが、 <code>PLDHash を利用するつもりであれば、 </code><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h" rel="custom">xpcom/glue/pldhash.h</a></code> のほとんどを読む必要があります。 C++ のコードから利用する場合、キャストにかかわるエラーの可能性を容易に避けられるため、 C++ によるラッパ(後述)の方がずっと易しく、また安全です。</p> - -<p>利用者はまず <a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#81" rel="custom"><code>PLDHashEntryHdr</code></a> から派生する<strong>エントリー構造体</strong>を宣言する必要があります。エントリー構造体はハッシュテーブルに格納するデータ(任意のポインタ、固定長のデータ型)を持ちます。<strong>ノート:</strong> double-hashing 実装のため、ハッシュテーブルの内容が変更された際、エントリーはメモリ上で移動される可能性があります。エントリーへのポインタを定数としたい場合は、 <code><a href="#PLHashTable">PLHashTable</a></code> が代わりに利用できます。</p> - -<p>また、利用者は <a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#312" rel="custom"><code>PLDHashTableOps</code></a> 構造体を初期化しなくてはいけません。この構造体は C++ の vtable と似たようなもので、エントリーを初期化・比較・検索するための適切なユーザ定義関数へのポインタを提供します。 <code>PLDHash</code> はキーの型が何であるかを知らないため、キーを扱う全ての関数は <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#354" rel="custom">const void*</a></code> で宣言されなければなりません。また、利用者のコードはこれらのポインタを適切な型にキャストする必要があります。</p> - -<p>PLDHashTables は、スタック・ヒープのどちらにも配置することができます。:</p> - -<ul> - <li>スタックに配置する場合、または C++ のクラスメンバとして利用される場合、テーブルは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#427" rel="custom">PL_DHashTableInit</a> で初期化され</code>、 <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#459" rel="custom">PL_DHashTableFinish</a></code> で破棄される必要があります。</li> - <li>ヒープに配置する場合、 <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#410" rel="custom">PL_NewDHashTable</a></code>, <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#420" rel="custom">PL_DHashTableDestroy</a></code> でテーブルの割り当て・削除を行ってください。</li> -</ul> - -<h3 id="PLHashTable" name="PLHashTable">PLHashTable</h3> - -<p><code>PLHashTable</code> は NSPR の一部です。ヘッダファイルは <code><code><a href="https://dxr.mozilla.org/mozilla-central/source/nsprpub/lib/ds/plhash.h" rel="custom">nsprpub/lib/ds/plhash.h</a></code></code> にあります。 <code>PLHashTable</code> はヒープに多数の領域を割り当てようとするため、一般的には <code><a href="#PLDHash_.28JSDHash.29">PLDHash</a></code> の方が <code>PLHashTable よりも優れています。</code></p> - -<p><code>PLDHash よりも </code><code>PLHashTable</code> の方が好ましい状況は以下の2つです。</p> - -<ul> - <li>エントリーへのポインタが定数である必要がある場合。</li> - <li>ハッシュテーブルに格納されているエントリーが非常に大きい場合(12ワード以上)。 <code>PLDHash</code> は大きな構造体を効率的に扱えません。</li> -</ul> - -<h3 id="nsTHashtable" name="nsTHashtable">nsTHashtable</h3> - -<p><code>nsTHashtable</code> は <code>PLDHash をラップする C++ のテンプレートで、</code> <code>PLDHash</code> の複雑な部分(コールバック関数、構造体など)を隠蔽します。 <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsTHashtable.h" rel="custom">xpcom/glue/nsTHashtable.h</a></code> に目を通しておいてください。</p> - -<p><code>nsTHashtable を利用するためには、利用者は</code> <a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsTHashtable.h#65" rel="custom">pre-defined format</a> にある通りに<code>エントリークラスを宣言する必要があります。このエントリークラスは、ハッシュテーブルに格納するキーとデータを保持します(上記の </code><code>PLDHash と同様です</code><code>)。また、クラスの中でキーを処理する関数も宣言します。<span style="font-family: Verdana,Tahoma,sans-serif;">ほとんどの場合、エントリークラスは完全にインラインで書くことができます。</span></code>エントリークラスの例については <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsHashKeys.h" rel="custom">xpcom/glue/nsHashKeys.h</a></code> を参照してください。</p> - -<p>テンプレートのパラメータはエントリークラスです。テーブルを正しく初期化するためには <code>Init()</code> を利用しなくてはいけません。また現在のところ、テーブルの内容を変更するためには <code>PutEntry/GetEntry/RemoveEntry</code> 関数を利用してください。 <code>EnumerateEntries</code> 関数では列挙ができますが、並び順は見かけ上ランダムである(ソートされていない)ことに気をつけてください。</p> - -<ul> - <li><code>nsTHashtable</code> はスタック、クラスメンバ、ヒープに割り当てることができます。</li> - <li>エントリーへのポインタは、ハッシュテーブルにアイテムが追加・削除された際に変更されることがあります。エントリーへのポインタを長時間保持しないでください。</li> - <li>このため、 <code>nsTHashtable</code> は本質的にスレッドセーフではありません。マルチスレッドで利用する場合、適切なロック機構を用意する必要があります。</li> -</ul> - -<p><code>nsTHashtable を使用する前に、</code> <code>nsBaseHashtable</code> とその関連クラスが利用用途に合うかどうか確認してください。エントリークラスを宣言する必要がないため、それらの方がずっと使いやすくなっています。もし単純なキー型・データ型を利用するのであれば、多くの場合こちらの方が良い選択肢です。</p> - -<h3 id="nsBaseHashtable_and_friends_nsDataHashtable.2C_nsInterfaceHashtable.2C_and_nsClassHashtable" name="nsBaseHashtable_and_friends:_nsDataHashtable.2C_nsInterfaceHashtable.2C_and_nsClassHashtable">nsBaseHashtable とその関連クラス: nsDataHashtable, nsInterfaceHashtable, nsClassHashtable</h3> - -<p>これらの C++ テンプレートは、 <code>PLDHash</code> の複雑な部分のほとんどを隠蔽しつつ、ハッシュテーブルを利用するための高レベルなインタフェースを提供します。以下のような機能を持ちます:</p> - -<ul> - <li>ハッシュテーブルの操作はエントリークラスを使わずに行うことができます。コードの可読性を高めます。</li> - <li>スレッドセーフ性(オプション)。ハッシュテーブルは読み書きの際にロックを設定することができます。</li> - <li>予め定義されたキークラス。strings, インタフェースを自動的にクリーンアップします。</li> - <li><code>nsInterfaceHashtable</code> <span style="font-family: monospace;">と</span><code> nsClassHashtable</code> は自動的にオブジェクトを解放・削除し、メモリリークを防ぎます。</li> -</ul> - -<p><code>nsBaseHashtable</code> は直接利用しません。ここから派生した3つの派生クラスから、保持するデータ型に合わせて利用するクラスを1つ選んでください。 <code>KeyClass</code> は <code>nsHashKeys.h</code> で定義されています。他3つも同様です:</p> - -<ul> - <li><code>nsDataHashtable<KeyClass, <em>DataType</em>></code> - <code>DataType</code> は <code>PRUint32</code> or <code>PRBool</code> のような単純型です。</li> - <li><code>nsInterfaceHashtable<KeyClass, <em>Interface</em>></code> - <code>Interface</code> は <code>nsISupports</code>, <code>nsIDOMNode</code> のような XPCOM インタフェースです。</li> - <li><code>nsClassHashtable<KeyClass, <em>T</em>></code> - <code>T</code> は任意の C++ クラスです。ハッシュテーブルはオブジェクトへのポインタを格納します。また、オブジェクトがハッシュテーブルから取り去られた場合、そのオブジェクトを削除します。</li> -</ul> - -<p>目を通しておくべき重要なファイルは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsBaseHashtable.h" rel="custom">xpcom/glue/nsBaseHashtable.h</a></code> と <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsHashKeys.h" rel="custom">xpcom/glue/nsHashKeys.h</a></code> です。これらのクラスはスタック、クラスメンバ、ヒープに置くことができます。初期化には <code>Init()</code> 関数を利用してください。このとき、スレッドセーフな排他制御を行うかどうかを決められます。ハッシュテーブルの内容を変更するには <code>Put()</code>, <code>Get()</code>, <code>Remove()</code> 関数を利用してください。</p> - -<p>2つの列挙関数が用意されています:</p> - -<ul> - <li><code>EnumerateRead()</code> は読み取り専用の列挙型を提供します。内容の変更や削除はできません。</li> - <li><code>Enumerate()</code> は読み書きのできる列挙型を提供します。必要に応じて内容の変更・削除ができます。</li> -</ul> - -<h3 id="Using_nsTHashtable_as_a_hash-set" name="Using_nsTHashtable_as_a_hash-set">nsTHashtable をハッシュセットとして利用する</h3> - -<p>ハッシュセットはキーの存在だけを追跡します。キーとデータとの関連づけは行いません。このような動作は、 <code>nsTHashtable<nsSomeHashKey></code> を利用することで実現できます。The appropriate entries are GetEntry and PutEntry.</p> - -<h2 id="Future_Plans" name="Future_Plans">Future Plans</h2> - -<h3 id="nsISimpleEnumerator_support" name="nsISimpleEnumerator_support">nsISimpleEnumerator support</h3> - -<p>The (obsolete) <code>nsHashtable</code> has a wrapper that exposes an <code>nsISimpleEnumerator</code> on its items. I will add this support to the various <code>nsBaseHashtable</code> classes as well, as needed.</p> - -<h2 id="Hash_Functions" name="Hash_Functions">Hash Functions</h2> - -<p>All of the above hashtables need a <a class="external" href="http://www.nist.gov/dads/HTML/hash.html">Hash Function</a>. This function converts the key into a semi-unique integer. The mozilla codebase already contains hash functions for most key types, including narrow and wide strings, pointers, and most binary data:</p> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void*<br> - (or nsISupports*)</code></td> - <td>cast using <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nscore.h#443" rel="custom">NS_PTR_TO_INT32</a></code></td> - </tr> - <tr> - <td><code>char*</code> string</td> - <td rowspan="2"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsCRT.h#228" rel="custom">nsCRT::HashCode()</a></code></td> - </tr> - <tr> - <td><code>PRUnichar*</code> string</td> - </tr> - <tr> - <td><code>nsAString</code></td> - <td rowspan="2"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsTHashtable.cpp#41" rel="custom">HashString()</a></code></td> - </tr> - <tr> - <td><code>nsACString</code></td> - </tr> - <tr> - <td><code>nsID&</code></td> - <td><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsHashKeys.h#227" rel="custom">nsIDHashKey::HashKey()</a></code></td> - </tr> - </tbody> -</table> - -<p>Writing a good hash function is well beyond the scope of this document, and has been discussed extensively in computer-science circles for many years. There are many different types of hash functions. Mozilla has tuned a good general-purpose hash algorithm for strings and <code>nsID</code>.</p> - -<h2 id="Mozilla.27s_Old.2FObsolete.2FDeprecated.2FDecrepit_Hashtables" name="Mozilla.27s_Old.2FObsolete.2FDeprecated.2FDecrepit_Hashtables">Mozilla's Old/Obsolete/Deprecated/Decrepit Hashtables</h2> - -<h3 id="nsHashtable" name="nsHashtable">nsHashtable</h3> - -<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsHashtable.h" rel="custom">nsHashtable</a></code> was a C++ wrapper around <code>PLHashTable</code>, and now wraps <code>PLDHash</code>. The design of the key classes is not optimal, however, and <code>nsHashtable</code> has been deprecated in favor of <code>nsDataHashtable</code> and friends.</p> - -<h3 id="nsObjectHashtable" name="nsObjectHashtable">nsObjectHashtable</h3> - -<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsHashtable.h#163" rel="custom">nsObjectHashtable</a></code> is a form of <code>nsHashtable</code>. It has been replaced by <code>nsClassHashtable</code>.</p> - -<h3 id="nsSupportsHashtable" name="nsSupportsHashtable">nsSupportsHashtable</h3> - -<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsHashtable.h#193" rel="custom">nsSupportsHashtable</a></code> is a form of <code>nsHashtable</code>. It has been replaced by <code>nsInterfaceHashtable</code>.</p> - -<h3 id="nsHashSets" name="nsHashSets">nsHashSets</h3> - -<p><code>nsHashSets</code> has predefined hash sets for common keys, which are trivially easy to use. See <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsHashSets.h" rel="custom">xpcom/ds/nsHashSets.h</a></code>. This functionality has been replaced by <code>nsTHashtable<nsSomeHashKey></code>.</p> - -<h3 id="nsDoubleHashtable" name="nsDoubleHashtable">nsDoubleHashtable</h3> - -<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsDoubleHashtable.h" rel="custom">nsDoubleHashtable</a></code> is the (obsolete) precursor to <code>nsTHashtable</code>. It uses macros instead of C++ templates.</p> - -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - -<ul> - <li>Author(s): Benjamin Smedberg <<a class="link-mailto" href="mailto:benjamin@smedbergs.us" rel="freelink">benjamin@smedbergs.us</a>></li> -</ul> -</div> - -<p> </p> diff --git a/files/ja/mozilla/tech/xpcom/index.html b/files/ja/mozilla/tech/xpcom/index.html deleted file mode 100644 index ceea8f01cb..0000000000 --- a/files/ja/mozilla/tech/xpcom/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: XPCOM -slug: Mozilla/Tech/XPCOM -tags: - - Landing - - Mozilla - - XPCOM - - アドオン - - 拡張機能 -translation_of: Mozilla/Tech/XPCOM ---- -<p><strong>XPCOM</strong> は Microsoft COM と同じクロスプラットフォームのコンポーネントオブジェクトモデルです。これには複数の<a href="/ja/docs/XPCOM/Language_Bindings">言語バインディング</a>があり、XPCOM コンポーネントを C++ に加えて JavaScript、Java、Pythonで使用および実装することができます。XPCOM のインタフェースは <a href="/ja/docs/XPIDL">XPIDL</a> という IDL の方言で定義されています。</p> - -<div class="warning"> -<p><strong>XPCOM は Firefox 拡張機能ではもはや利用できません。代わりに <a href="/ja/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> を使用してください。</strong></p> -</div> - -<p>XPCOM 自体は一連のコアコンポーネントとクラスを提供します。XPCOM コンポーネントの大部分はこのコアセットの一部ではなく、プラットフォームの他の部分 (例えば <a href="/ja/docs/Mozilla/Gecko">Gecko</a> や <a href="/ja/docs/Necko">Necko</a>) によって提供されます。アプリケーション、または拡張機能を使用することもできます。</p> - - - -<div class="row topicpage-table"> -<div class="section"> -<dl> - <dt class="landingPageList"><a href="/ja/docs/Accessing_the_Windows_Registry_Using_XPCOM">Accessing the Windows Registry Using XPCOM</a></dt> - <dd class="landingPageList"></dd> - <dt class="landingPageList"><a href="/ja/docs/Fun_With_XBL_and_XPConnect">Fun With XBL and XPConnect</a></dt> - <dd class="landingPageList">この文章では、XBL の応用である、XULウィジェットへのアクセスを可能にする簡単な XPCOMインターフェースについて述べます。 XBLのこのインターフェースを定義するという特徴は、自動補完を行う C++ オブジェクトへの XPConnectを介したインターフェースを定義するのに使用されます。 一度通常の XULテキストフィールドをこのインターフェースに結び付ければ、通常の JavaScript を用いて、オブジェクトの自動補完機能を呼び出すようになります。 この相互作用の基本的なモデルは次のとおりです:</dd> - <dt class="landingPageList"><a href="/ja/docs/Generating_GUIDs">Generating GUIDs</a></dt> - <dd class="landingPageList"><strong>GUID</strong> は、Mozilla プログラミングで、XPCOM <a href="/ja/docs/Interfaces">インタフェース</a> (このタイプの GUID は IID と呼ばれています) やコンポーネント (CID) 、<a href="/ja/docs/Extension">拡張機能</a>や<a href="/ja/docs/Themes">テーマ</a>を含むアドオンなどの実体のそれぞれの型を識別するために使われます。とはいえ、<a href="/ja/docs/Firefox_1.5">Firefox 1.5</a> からは、アドオンでは <code><a class="link-mailto" href="mailto:extensionname@organization.tld" rel="freelink">extensionname@organization.tld</a></code> 形式の ID で<a href="/ja/docs/Install_Manifests#id">識別することができます(また、そうするべきです)</a>。</dd> - <dt class="landingPageList"><a href="/ja/docs/Generic_factory">Generic factory</a></dt> - <dd class="landingPageList"><a href="ja/XPCOM">XPCOM</a> では、<strong>汎用ファクトリ</strong> は <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsIGenericFactory.h" rel="custom">xpcom/glue/nsIGenericFactory.h</a></code> にある機能を利用して生成されたファクトリのことを指します。</dd> - <dt class="landingPageList"><a href="/ja/docs/Interfacing_with_the_XPCOM_cycle_collector">Interfacing with the XPCOM cycle collector</a></dt> - <dd class="landingPageList">これは Firefox 3 の XPCOM に導入されたサイクルコレクタの簡単な概要です。既存の C++ クラスを XPCOM サイクルコレクションに加えるための変更を順を追って説明します。cyclical-ownership リークに困っているクラスがあれば、このページが役立つでしょう。</dd> - <dt class="landingPageList"><a href="/ja/docs/Introduction_to_XPCOM_for_the_DOM">Introduction to XPCOM for the DOM</a></dt> - <dd class="landingPageList">Fabian Guisset <<a class="link-mailto" href="mailto:fguisset@softhome.net">fguisset@softhome.net</a>></dd> - <dt class="landingPageList"><a href="/ja/docs/XPCOM/Setting_HTTP_request_headers">Setting HTTP request headers</a></dt> - <dd class="landingPageList">HTTP は Web の中核を成す技術の一つです。実際のコンテンツに加え、HTTP ヘッダによって<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">いくつかの重要な情報</a>が HTTP リクエストとレスポンスの両方で渡されます。</dd> - <dt class="landingPageList"><a href="/ja/docs/Storage">Storage</a></dt> - <dd class="landingPageList"><strong>Storage</strong> は <a href="http://www.sqlite.org/">SQLite</a> データベース API です。信頼できる呼び出し元、つまり拡張機能と Firefox コンポーネントのみが利用できます。</dd> - <dt class="landingPageList"><a href="/ja/docs/XPCOM/The_Thread_Manager">The Thread Manager</a></dt> - <dd class="landingPageList"></dd> - <dt class="landingPageList"><a href="/ja/docs/Using_nsCOMPtr">Using nsCOMPtr</a></dt> - <dd class="landingPageList">このドキュメントは、<code>nsCOMPtr</code> について書かれたすべてを集めたものです。もしあなたが <code>nsCOMPtr</code> について疑問があり、このドキュメントでは分からないのであれば、 おそらくそれに答えられるドキュメントはないでしょう。<a class="external" href="news:mozilla.dev.tech.xpcom">XPCOM ニュースグループ</a>、または他のベテランの <code>nsCOMPtr</code> ユーザに尋ねる、あるいは実験して答えを見つける、などの別の手段で答えを得るしかありません。</dd> -</dl> - -<dl> -</dl> -</div> - -<div class="section"> -<dl> - <dt class="landingPageList"><a href="/ja/docs/Weak_reference">Weak reference</a></dt> - <dd class="landingPageList">In <a href="ja/XPCOM">XPCOM</a>, a <strong>weak reference</strong> is a special object that contains a pointer to an XPCOM object, but does<em>not</em> keep that object alive. If the referent object is destroyed before the weak reference, the pointer inside the weak reference is set to <code>nsnull</code>.</dd> - <dt class="landingPageList"><a href="/ja/docs/XPCOM/wrappedJSObject">wrappedJSObject</a></dt> - <dd class="landingPageList"><code>wrappedJSObject</code>は<a href="ja/XPConnect">XPConnect</a>ラッパで利用できることがあるプロパティです。利用できる場合、それはあなたに、ラッパによって隠蔽されたJavaScriptオブジェクトへのアクセスを可能にします。</dd> - <dt class="landingPageList"><a href="/ja/docs/XPCOM_ABI">XPCOM ABI</a></dt> - <dd class="landingPageList"><a href="ja/XPCOM">XPCOM</a> <abbr title="Application Binary Interface">ABI</abbr>は、XPCOMコンポーネントのバイナリインターフェースです。スクリプト言語(<a href="ja/JavaScript">JavaScript</a>など)によって書かれたXPCOMコンポーネントは、特に改変をしなくてもプラットフォーム(WindowsやOS Xなど)を越えて動作させられますが、コンパイルが必要な言語(C++など)で書かれたコンポーネントの場合、異なるプラットフォームで動かすためには再コンパイルが必要です。コンパイルされたXPCOMコンポーネントは多くの場合、「バイナリ」や「ネイティブ」などと呼ばれます。</dd> - <dt class="landingPageList"><a href="/ja/docs/Mozilla/Tech/XPCOM/Guide">XPCOM guide</a></dt> - <dd class="landingPageList">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</dd> - <dt class="landingPageList"><a href="/ja/docs/XPCOM_ownership_guidelines">XPCOM ownership guidelines</a></dt> - <dd class="landingPageList">...自然なことです。もしあなたが一時的なオブジェクトを作ったのであれば、明らかにそれを破壊するのはあなたの責任です。それは確かに所有の徴候です。もしあなたがより長い生存期間を持つオブジェクトを作ったのであれば、あなたは所有権を失うまでそれを所有することになるでしょう。</dd> - <dt class="landingPageList"><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference">XPCOM reference</a></dt> - <dd class="landingPageList">This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</dd> - <dt class="landingPageList"><a href="/ja/docs/XPCOM/Language_Bindings">XPCOM 言語バインディング</a></dt> - <dd class="landingPageList"><strong>XPCOM 言語バインディング</strong>は、以下の目的のために特定の言語と <a href="/ja/XPCOM" rel="internal" title="ja/XPCOM">XPCOM</a> との橋渡しを行います。</dd> - <dt class="landingPageList"><a href="/ja/docs/xptcall_FAQ">xptcall FAQ</a></dt> - <dd class="landingPageList"><code>xptcall</code> は、低レベルの XPCOM メソッド呼び出しのための小さなライブラリです。プラットフォーム固有の C/C++ とアセンブラ言語のコードを使って実装されています。異なる言語間の呼び出しと異なるスレッドへのメソッド呼び出しを容易にするためのものです。 Mozillaをあらゆるプラットフォーム上で動作させるためには、このコードを移植する必要があります。</dd> -</dl> -</div> -</div> - - - - - -<div class="blockIndicator communitybox"> -<div class="column-container"> -<h2 id="XPCOMコミュニティに参加してください">XPCOMコミュニティに参加してください</h2> - -<div class="column-half"> -<div class="communitysubhead">あなたの好きな方法でディスカッションに参加してください</div> - -<ul class="communitymailinglist"> - <li><a href="https://lists.mozilla.org/listinfo/dev-tech-xpcom">メーリングリストとして</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom">ニュースグループとして</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom/feeds">フィードとして</a></li> -</ul> -</div> - -<div class="column-half"> -<ul class="communitycontact"> - <li><strong>IRC: </strong><a href="irc://irc.mozilla.org/developers">#developers</a> <span class="smaller">(<a href="https://wiki.mozilla.org/IRC">さらに詳しく</a>)</span></li> - <li><strong>Tools: </strong><a href="http://ted.mielczarek.org/code/mozilla/jscomponentwiz/">JavaScript Component Wizard</a>, <a href="http://www.mytools360.com-a.googlepages.com/home#XPComPro">Visual C++ Component Wizard</a>, <a href="http://www.yutools.com/wp/tools/yuxpcomwizard/?lang=en">Visual C++ Component Wizard for Visual Studio 2010</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/xpcomviewer/">XPCOMViewer addon: browse XPCOM interfaces easily</a></li> -</ul> -</div> -</div> -</div> - - - - - -<section id="Quick_Links"> -<ol> - <li><a href="http://www.ibm.com/developerworks/library/os-xpcomfirefox/">Tutorial from IBM DeveloperWorks</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary components tutorial</a></li> - <li><a href="http://www.iosart.com/firefox/xpcom/">Linux and Windows how-to guide</a></li> - <li><a href="http://starkravingfinkle.org/blog/2006/10/mozilla-platform-xpcom-in-c/">Windows example blog post</a></li> - <li><a href="http://wanderingstan.com/2007-11-16/geekout_how_to_make_a_c_xpcom_component">Another Windows example</a></li> - <li><a href="http://rcrowley.org/2007/07/17/cross-platform-xpcom-a-howto.html">Mac OS X example</a></li> - <li><a href="/en-US/docs/Web/JavaScript" title="JavaScript (JS) is a lightweight interpreted or JIT-compiled programming language with first-class functions. While it is most well-known as the scripting language for Web pages, many non-browser environments also use it, such as Node.js, Apache CouchDB and Adobe Acrobat.">JavaScript</a></li> -</ol> -</section> diff --git a/files/ja/mozilla/tech/xpcom/interfacing_with_the_xpcom_cycle_collector/index.html b/files/ja/mozilla/tech/xpcom/interfacing_with_the_xpcom_cycle_collector/index.html deleted file mode 100644 index 3c154bd1fe..0000000000 --- a/files/ja/mozilla/tech/xpcom/interfacing_with_the_xpcom_cycle_collector/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Interfacing with the XPCOM cycle collector -slug: Mozilla/Tech/XPCOM/Interfacing_with_the_XPCOM_cycle_collector -tags: - - Firefox 3 - - XPCOM - - 要更新 -translation_of: Mozilla/Tech/XPCOM/Interfacing_with_the_XPCOM_cycle_collector ---- -<div></div> -<p>これは Firefox 3 の XPCOM に導入されたサイクルコレクタの簡単な概要です。既存の C++ クラスを XPCOM サイクルコレクションに加えるための変更を順を追って説明します。cyclical-ownership リークに困っているクラスがあれば、このページが役立つでしょう。</p> -<p>このドキュメントは Mozilla C++ 開発者向けです。</p> - - -<h2 id="What_the_cycle_collector_does" name="What_the_cycle_collector_does">サイクルコレクタの役割</h2> - -<p>サイクルコレクタは、そのほとんどの時間を費やして、ガーベッジサイクルに加わる <i>かもしれない</i>、XPCOM オブジェクトへのポインタを蓄積して (または捨てて) います。これは、コレクタ作業の待機 (<span style="color: green;">idle</span>)ステージにおいて "疑わしい" refcount イベント (0 ではない N の N+1 から N) を通過する、とても素早い <code>nsAutoRefCnt</code> レジスタおよび、そのアンレジスタの特殊な変異型です。</p> -<p>コレクタはバッファに居座る疑わしいポインタを定期的に検査します。これはコレクタ作業の調査 (<span style="color: green;">scan</span>)ステージです。このステージでは、コレクタは単独のサイクルコレクション・ヘルパークラスの各候補に繰り返し尋ね、ヘルパーが存在するときは、コレクタが候補 (自身) の子を記述するようにヘルパーに要求します。この方法で、コレクタが、疑わしいオブジェクトの手がかりとなる所有者の部分グラフを構築します。</p> -<p>すべての参照をもう一つのオブジェクトへ再び問い合わせ、参照カウントがすべてグループ内の内部ポインタで占められているオブジェクトを確立するオブジェクトのグループをコレクタが見つけた場合、開放の対象となる <i>cyclical garbage</i> グループに入れるかどうかが考慮されます。これはコレクタ作業のリンク解除 (<span style="color: green;">unlink</span>)ステージです。このステージでは、コレクタは見つかったガーベッジオブジェクトをざっと見渡し、それらのヘルパーオブジェクトに再び相談して、各オブジェクトをそれらの子から "リンク解除" するか尋ねます。</p> -<p>コレクタは JS ヒープを見渡す方法も知っており、所有者のサイクルをそこへ提出したり、そこから去らせたりできます。</p> - - - -<h2 id="How_the_collector_can_fail" name="How_the_collector_can_fail">コレクタの失敗例</h2> - -<p>サイクルコレクタは保守的なデバイスです。以下はガーベッジサイクルの収集に失敗する状況です。</p> -<ol> - <li>デフォルトで任意のポインタを疑うことはありません。オブジェクトは <i>それら自身で疑う</i> べきです。一般的に、<code>nsAutoRefCnt</code> よりも <code>nsCycleCollectingAutoRefCnt</code> が使用されます。</li> - <li><code>nsICycleCollectionParticipant</code> に QI された (<span style="color: green;">QI'ed</span>)時は、ヘルパーオブジェクトを返すオブジェクトを横断するだけです。横断中に未知の境目 (<span style="color: green;">edge</span>)に遭遇した場合は、その境目で断念します。これはサイクルに加えられたすべての境目が関与していなければならないことを意味します。そうでなければ、サイクルは見つかりません。</li> - <li>ヘルパーオブジェクト上の <code>Traverse</code> メソッドと <code>Unlink</code> メソッドは魔法ではありません。これらはプログラマが提供しており、正しく動作しなければなりませんが、正しく動作しないとコレクタが失敗します。</li> - <li>コレクタはスタック上に存在する一時的な自身へのポインタを見つける方法を知りません。そのため、プログラムのトップループの近くからだけ実行することが重要です。追加の自身へのポインタがあってもクラッシュしませんが、自身のオブジェクト内で見つかる、参照カウントに加えることができないポインタ自身を見つけるため、サイクルの収集に失敗する可能性があります。</li> -</ol> - - - -<h2 id="How_to_make_your_classes_participate" name="How_to_make_your_classes_participate">クラスをサイクルコレクタに加える方法</h2> - -<p>サイクルコレクタとあなたのクラスの間のインタフェースは、<code>xpcom/base/nsCycleCollector.h</code> のコンテンツを使用して直接アクセスできます。しかし、あなたのクラスに注釈をつけるための、もっと簡単に使用できる便利なマクロが <code>xpcom/base/nsCycleCollectionParticipant.h</code> にあります。一般的に、<code>mBar</code> と <code>mBaz</code> の 2 つの <code>nsCOMPtr</code> エッジを持つ <code>nsFoo</code> クラスを調整すると仮定すると、処理はいくつかの簡単な調整に絞られます:</p> -<ol> - <li><code>nsFoo.h</code> と <code>nsFoo.cpp</code> の両方に <code>nsCycleCollectionParticipant.h</code> ヘッダを include します。</li> - <li><code>nsFoo</code> の定義で、<code>NS_DECL_ISUPPORTS</code> の行を <code>NS_DECL_CYCLE_COLLECTING_ISUPPORTS</code> に変更します。</li> - <li><code>nsFoo</code> の定義のパブリックな部分に <code>NS_DECL_CYCLE_COLLECTION_CLASS(nsFoo)</code> の行を追加します。</li> - - <li><code>nsFoo.cpp</code> 内の <code>nsFoo</code> のインタフェースマップに <code>NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(nsFoo)</code> の行を追加します。 -<pre>NS_INTERFACE_TABLE_HEAD(nsFoo) - NS_INTERFACE_TABLE2(nsFoo, - nsIBar, - nsIBaz) - NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsFoo) -NS_INTERFACE_MAP_END -</pre></li> - <li><code>nsFoo.cpp</code> 内の <code>NS_IMPL_ADDREF(nsFoo)</code> の行を <code>NS_IMPL_CYCLE_COLLECTING_ADDREF(nsFoo)</code> に変更します。</li> - <li><code>nsFoo.cpp</code> 内の <code>NS_IMPL_RELEASE(nsFoo)</code> の行を <code>NS_IMPL_CYCLE_COLLECTING_RELEASE(nsFoo)</code> に変更します。</li> - <li><code>nsFoo.cpp</code> に <code>NS_IMPL_CYCLE_COLLECTION_CLASS_2(nsFoo, mBar, mBaz)</code> の行を追加します。</li> -</ol> - -<p>あなたのクラスを、この設計図よりもさらに複雑な構造にすることも可能です。例えば、あなたのクラスが複数の <code>nsISupports</code> ベースクラスを持っており、破滅を明確にするいくつかの <code>*_AMBIGUOUS</code> マクロを使用する必要がある場合です。または、あなたのクラスが <code>NS_IMPL_CYCLE_COLLECTION_CLASS_<i>N</i></code> マクロで効果が無い、複雑な所有者構造をしている場合です。後者の場合は、あなたのヘルパークラスに <i>Traverse</i> メソッドと <i>Unlink</i> メソッドを自分で実装する必要があるでしょう。これらの例では <code>NS_IMPL_CYCLE_COLLECTION_TRAVERSE_{BEGIN,END}</code> マクロと <code>NS_IMPL_CYCLE_COLLECTION_UNLINK_{BEGIN,END}</code> マクロの使用が役立ちます。これらの使用例は、より複雑な <code>content/base/src/nsGenericElement.cpp</code> などのクラスを参照してください。あなたのクラスが切取られた部分であるか、他のクラスの集合である場合、切り取られたクラスや外部のクラスもサイクルコレクションに加えられることが重要です。そうしないと、サイクルコレクタにオブジェクトも収集させてしまいます。</p> - -<h3 id="Manually_implementing_the_Traverse_and_Unlink_methods" name="Manually_implementing_the_Traverse_and_Unlink_methods">Manually implementing the Traverse and Unlink methods</h3> -<p>Each field that may contain cycle collected objects needs to be passed to the cycle collector, so it can detect cycles that pass through those fields.</p> -<p>The main macro for Traverse is NS_IMPL_CYCLE_COLLECTION_TRAVERSE:<br> - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSomeMember)</p> - -<p>Unlink works similarly:<br> - NS_IMPL_CYCLE_COLLECTION_UNLINK(mSomeMember)</p> - -<p>These macros should handle a variety of cases, such as reference counted pointers to cycle collected nsISupports or non-nsISupports objects, as well as arrays of these pointers.</p> diff --git a/files/ja/mozilla/tech/xpcom/introduction_to_xpcom_for_the_dom/index.html b/files/ja/mozilla/tech/xpcom/introduction_to_xpcom_for_the_dom/index.html deleted file mode 100644 index ed14941416..0000000000 --- a/files/ja/mozilla/tech/xpcom/introduction_to_xpcom_for_the_dom/index.html +++ /dev/null @@ -1,319 +0,0 @@ ---- -title: Introduction to XPCOM for the DOM -slug: Mozilla/Tech/XPCOM/Introduction_to_XPCOM_for_the_DOM -translation_of: Mozilla/Tech/XPCOM/Introduction_to_XPCOM_for_the_DOM ---- -<p>Fabian Guisset <<a class="link-mailto" href="mailto:fguisset@softhome.net">fguisset@softhome.net</a>> -</p><p>注意: この文書はまだ DOM の権威の校正を経ておりませんので、正確でない部分があるかもしれません。 -</p><p>この文書は <b>DOM コードのコンテキスト</b>で XPCOM を<b>使用する</b>方法の入門書です。文書に記述されています XPCOM や nsCOMPtr の使用法は DOM コードを読んだり、書いたりするために必要な知識の 8 割をカバーしています。XPCOM の上級向けの内容については <a href="ja/XPCOM">XPCOM</a> のページをご参照ください。 -</p><p>この文書のバグの追跡は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=99592" title="FIXED: hacking the DOM feedback">バグ 99592</a> で可能です。 -</p><p>対象読者: DOM コードに C++ と XPCOM を使用するための手っ取り早い入門書が必要な読者。<a class="external" href="http://www.mozilla-japan.org/docs/dom/mozilla/hacking.html">DOM ハッキングガイド</a> の残りの部分を読むには、この文書の内容を理解している必要があります。 -</p> -<div class="note"> -<p>重要な注意事項: この文書は C++ の知識、特にそのオブジェクト指向の部分の理解を前提としています。Stanley Lippman と Josee Lajoie による「C++ Primer」を読んで、私は C++ を学んでから、DOM コードをあれこれ試してみました。この本は、その分野に関わるすべての初心者にお勧めできます。 </p> -</div> -<h3 id=".E5.85.A5.E9.96.80.E3.81.B8.E3.81.AE.E6.89.8B.E5.BC.95.E3.81.8D" name=".E5.85.A5.E9.96.80.E3.81.B8.E3.81.AE.E6.89.8B.E5.BC.95.E3.81.8D"> 入門への手引き </h3> -<p>DOM は XPCOM を広く使います。事実、 DOM を実装して使用するには XPCOM が必要になります。しかし、コードを読んだり既存のフレームワークに何かするだけならば、詳細まで知る必要はありません。nsCOMPtr も含めて DOM が提供する数多くのマクロや機能はとても便利なものです。この章では、できるだけ枝葉末節の解説を避けて、 XPCOM のうち DOM で最も広く使われている範囲をカバーしたいと思います。そして nsCOMPtr のインターフェイス、参照カウント、 nsISupports インターフェイスを解説します。新しいインターフェイスの追加方法についてのチュートリアルや、最後に C++ におけるクラスの継承についての詳細の議論についても解説します。 -</p> -<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9"> インターフェイス </h3> -<p>オブジェクト指向のプログラミングは<b>クラス</b>間の<b>継承</b>の使用を基本にしています。さらに、メソッドを宣言しても実装しないメソッドがある場合、クラスは「抽象クラス」として宣言することができます。この概念を最大限に推し進めると、メソッドを実装せずに宣言したクラスは「完全に仮想的」になります。そのようなクラスはインターフェイスと呼ばれます。インターフェイスの目的は、ひとつのインターフェイスに・・・実装の詳細内容を心配することなく、(普通クラスとして表される) オブジェクトを操作する一セットのメソッドを持たせることです。もしあるクラスが、あるインターフェイスを実装しているならば、そのままインターフェイスのメソッドを使うようにしてください。そうすれば、インターフェイスの実装 (具象クラス) に変更があっても、気にする必要がなくなります。XPCOM はこの考えを究極まで推進しています。純粋な仮想メソッドが以下の構文で宣言されます: </p> -<pre class="eval">virtual nsresult FunctionFoo() = 0; -</pre> -<p>インターフェイスはこのようにすべてのメンバ関数が純粋に仮想関数として宣言される、単に C++ のクラスです。インターフェイスはまた <a href="ja/XPIDL">XPIDL</a> を使って定義されます。この件は、 1.E の節「新しいインターフェイスの追加方法」で解説されます。 -</p><p>インターフェイスは実装を備えていないので、非抽象クラス (具象クラス) によって実装される必要があります。その際、インターフェイスが nsIFoo 、クラスが nsFoo である場合、「nsFoo は nsIFoo を実装する」あるいは「nsFoo は nsIFoo を継承する」と言います。C++ クラスのコードは次のようになります: -</p> -<pre class="eval">class nsFoo : public nsIFoo -</pre> -<p>オブジェクト指向の C++ を知らない人のために言うと、nsFoo は nsIFoo からの「派生」として宣言されることになります。そしてこの時、nsIFoo は nsFoo の「基底クラス」になります。この入門書では、オブジェクト指向の C++ についてもっと多くを知る必要はありません。しかし、1.F 節ではその件でさらに詳しい議論があり、DOM コードのほとんどを理解することが必要になります。 -</p><p>(オブジェクトと呼ばれる) クラスのインスタンスは (ヒープや空き領域に)、下記の構文を使って動的に割り付けられます。 </p> -<pre class="eval">nsFoo *fooptr = new nsFoo; -</pre> -<p>その時オブジェクトは、 fooptr 経由でのみ操作されます。この時、nsFoo クラスが nsIFoo インターフェイスを実装するならどうなるかを考えてみましょう。nsFoo オブジェクトを fooptr 経由で直接操作可能ですね。しかし、コードはあまり頑健ではありません。事実、使われているメソッドの名前やシグニチャーを変更する者がいると、全コードに渡りこれらのメソッドへの呼び出しをすべて変えなければなりません。具象クラスとは反対に、インターフェイスは時が経過しても安定しているはずです。事実、Mozilla コードの多くのインターフェイスは凍結されて (インターフェイス定義の最初に @Frozen コメントで指示されて) います。これは、それらのインターフェイスがこの先変わることがないという意味です。メリットは、こうして作られたコードが将来永遠に (最高の条件で) 存在し続けることです。反対に欠点は、そのようなインタフェースを改善する方法を見つけなければならないということと、それらを凍結すると実装者に新しいインタフェースを作らせるのを強いることになってしまう、ということです。要するに、必要な時はいつでも実装ではなくインターフェイスを操作することです。nsFoo によって実装される nsIFoo インターフェイスへのポインタは以下のように宣言されます。 -</p> -<pre class="eval">nsIFoo *fooptr = new nsFoo; -</pre> -<p>fooptr のようなポインタはその時、「nsFoo クラスのインスタンスによって実装される nsIFoo インターフェイスへのポインタ」とか、それを短縮して「nsIFoo へのポインタ」と呼ばれます。今後私が「インターフェイスへのポインタ」について言う時は、「C++ 具象クラスのインターフェイスによって実装されたインターフェイスへのポインタ」を事実上意味します。注意すべき重要点は、nsIFoo へのポインタのみが nsIFoo インターフェイスやその親で定義されたメソッドを呼び出せることです。たとえば、nsFoo が nsIFoo と nsIBa というふたつの異なるインターフェイスを実装するなら、nsIFoo へのポインタは nsIBa で定義されたメソッドを呼び出せません。その逆もありません。 -</p><p>注意: 前の段落は大変重要です。もしそれが完全に理解できていないならば、これ以上読み進める必要はありません。 -</p><p>参照カウントの基本 -</p><p>XPCOM は参照カウントのメカニズム(短縮形 refcount )を使って、インターフェイスのポインタがオブジェクトを指している間にオブジェクトが削除されていないことを確認します。事実、削除されたオブジェクトを指し示すポインタを間接参照することは悪い影響を及ぼす可能性があります。そんな訳で、インターフェイスへのポインタがオブジェクトのアドレスを代入される都度、そのオブジェクトのカウントを一つ増やす必要があります。これを実行する関数は、”AddRef”と呼ばれ、nsISupports インターフェイスで定義されます。ポインタがすでにオブジェクトのアドレスを保持しない時、そのオブジェクトの参照カウントを一つ減じる必要があります。これには同じく、nsISupports インターフェイスで定義された”Release”関数を使用します。オブジェクトの参照カウントが 0(zero) に達するとオブジェクトは自分自身を削除します。こんなわけで、各々のオブジェクトの参照カウントの記録を確保することは大変重要になります。最初のケースでは、もし AddRef を使ってオブジェクトのカウントを増やすのを忘れると、私たちがポインタを使用して何かする前にオブジェクトは自分自身を削除するかもしれません。そのために、間接参照される時に、クラッシュを引き起こすことがあります。次のケースでは、もしオブジェクトを Release 関数を使って開放することを忘れると、オブジェクトは自分自身を削除しません。それで「メモリリーク」を発生させ、つまり、不要になってもオブジェクトを確保しているので、メモリがシステムに返されることはありません。どちらのケースも不都合なので、参照カウントには細心の注意を払わなくてはなりません。 -</p><p>幸運なことに、とっても便利な nsCOMPtr があります。 </p> -<h3 id="nsCOMPtr" name="nsCOMPtr"> nsCOMPtr </h3> -<p>Scott Collins は私たちに <a href="ja/Using_nsCOMPtr">nsCOMPtr</a> を授けてくれたので、すぐにそれを使用しましょう。 nsCOMPtr は C++ auto_ptr の拡張機能で、参照カウントの操作を管理します。そして、比較、初期化などに対していくつかの機能を提供します。nsCOMPtr は大抵の場合インターフェイスへの通常のポインタのように使われます。nsIFoo インターフェイスへのポインタは、通常下記のように宣言されます: -</p> -<pre class="eval">nsIFoo *fooptr; -</pre> -<p>同じ nsIFoo インターフェイスへの nsCOMPtr は下記のように宣言されます: -</p> -<pre class="eval">nsCOMPtr<nsIFoo> fooptr; -</pre> -<p>nsCOMPtr は次の節で解説されます。nsCOMPtr についての詳細情報は <a href="ja/Using_nsCOMPtr#Getting_Started_Guide">ユーザの手引き</a> を読んでください。 -</p> -<h3 id="QueryInterface.28.29" name="QueryInterface.28.29"> QueryInterface() </h3> -<p>再び、nsIFoo と nsIFoo2 の 2 つのインターフェイスを実装する nsFoo クラスを考えてください: -</p> -<pre class="eval">class nsFoo : public nsIFoo, public nsIFoo2 -</pre> -<p>ともかく nsFoo のインスタンスが作られることを前提としましょう (この断定はほとんど常に正しいです)。そうすると、nsIFoo インターフェイスで定義されたメソッドを使ってそのオブジェクトを操作したくなるでしょう。目的は nsIFoo インターフェイスへポインタを確保することです。そのために、主な 2 つのテクニックが存在し、コンテキストによってするべきことが分かります。最初のテクニックは「Getter」を使うことであり、次のテクニックは「this」ポインタで static なキャストを使うことです。 -</p><p>getter は、グローバルな領域やクラスの領域で定義され、要求されたインターフェイスへのポインタを「返す」関数です。一般的に getter は以下のように機能します:最初にインターフェイスへのポインタである ifooptr を代入なしに宣言します。それから、getter 関数へポインタのアドレスを渡します。この時 getter 関数は、ポインタへ正確なアドレスを代入し、要求されたインターフェイスへのポインタへ QueryInterface します。ifooptr はすでに、実際のオブジェクトのアドレスを代入されたインターフェイスへのポインタとなっています。このようにして、ifooptr 経由で nsIFoo で定義されたメソッドをすぐに呼び出せます。以下にコードの例を示します。 </p> -<pre class="eval">nsCOMPtr<nsIFoo> ifooptr; -GetInterfaceIFoo(getter_AddRefs(ifooptr)); -ifooptr->FunctionOfnsIFoo(); -</pre> -<p>独特の構文である getter_AddRefs(pointer) は、通常の「&」(address-of) C++ 演算子に対して nsCOMPtr が対応するものと同じです。すなわち、Getter メソッドは AddRef メソッドを呼び出します。これは、「このオブジェクトに参照を追加しません。もうすでにあなたが追加していますからね」という呼び出し元と「このオブジェクトへは私が参照を追加しますので、追加しないでください」という呼び出し先との間の契約になります。もし、呼び出し元と呼び出し先が両方で AddRef を実行すると、どちらかの参照は解放されないので、オブジェクトはメモリリークとなります。 -</p><p>すべての Getter 関数は返されたポインタを <b>AddRef しなければならない</b>ことに注意してください。それでも今 Getter 関数 を使用しているとしても、心配することはありません。<a href="ja/XPCOM_ownership_guidelines">XPCOM 所有の手引き</a> で詳しい情報を参照できます。 -</p><p>フレームやビューのように、インターフェイスには参照カウントされないものがあることにも注意してください。これらに対しては生のインターフェイスポインタを使用しなければなりません。マニュアルで参照カウントする必要はありません。 </p> -<pre class="eval">今 nsIFoo2 インターフェイスで宣言され、nsFoo で実装された関数を実行したいとしましょう。しかしこの時、ifooptr 経由ではその関数にアクセスできません。それは 1.B の節で述べた理由のために ifooptr が nsIFoo へのポインタだからです。XPCOM には便利なメソッドがあり、別のインターフェイスへのポインタがある時、インターフェイスへのポインタを持てます。そして、2 つのインターフェイスは同じオブジェクトによって実装されます。この時のメソッドが QueryInterface() です。それは nsISupports インターフェイスで定義されます。<b>Mozilla の各々のインターフェイスは nsISupports を継承しています</b>。このことは、XPCOM の主要規則の 1 つです。目的はこうです。オブジェクト (クラスのインスタンス) が所定のインターフェイスを実装するかどうかを知る。これが QueryInterface() の働きです。インターフェイスとインターフェイスを保持するポインタのアドレスを QueryInterface() に渡します。その時インターフェイスがオブジェクトによって実装されていれば、渡されたポインタはオブジェクトのアドレスを代入されます。もし実装されていなければ、 QueryInterface() は NS_NOINTERFACE を返し、渡されたポインタは null になります。 -</pre> -<p>QueryInterface() はユーザへオブジェクトの実装を隠蔽するのに便利です。 QueryInterface() をただ呼び出してから、インターフェイスのメソッドを呼び出します。その外は知る必要がありません。それでは、nsIFoo へのポインタがある時、どのように QueryInterface() を使って nsIFoo2 へのポインタを得るのでしょうか? ifooptr を再利用できない以上、nsIFoo2 への新ポインタである ifooptr2 を作ります。以下の構文が (nsCOMPtr とだけ使う場合) 推奨されます: </p> -<pre class="eval">nsCOMPtr<nsIFoo2> ifooptr2 (do_QueryInterface(ifooptr)); -</pre> -<p>この構文は nsCOMPtr の宣言と初期化を同時にするのに推奨されます。あとで、別のアドレスをそこへ代入する必要があるならば、簡単にこうできます: -</p> -<pre class="eval">ifooptr2 = do_QueryInterface(another_pointer); - -</pre> -<p>しかしこの構文は、単に実際の関数への便利なショートカットにすぎません。以下の構文は生のポインタで QueryInterface() を使用する方法を表します。 -</p> -<pre class="eval">nsIFoo2 *ifooptr2; -ifooptr->QueryInterface(NS_GET_IID(nsIFoo2), (void **)&ifooptr2); -</pre> -<p>NS_GET_IID は引数の IID に対して評価をするマクロです。2 つのインターフェイスを比較して同一性を調べるのに便利です。nsCOMPtr への getter_AddRefs() の働きについてはすでに見たとおりです。今回は、ifooptr2 のアドレスを渡します。nsFoo は nsIFoo2 を実装するので、ifooptr2 は nsFoo の現在のインスタンスのアドレスを代入されます。すると、ifooptr2 経由で nsIFoo2 で定義されたメソッドを呼び出せます: -</p> -<pre class="eval">ifooptr2->FunctionOfnsIFoo2(); -</pre> -<p>ところで、 nsFoo で実装されないインターフェイスへ QueryInterface を試みるならば、渡されたポインタは null となります。そんな訳で、自分の処理を本当に確実に明白に間違いないと思われないなら、nsCOMPtr が null になっていないかどうか必ず確認してください。以下のサンプルを参考にしてください。 -</p> -<pre class="eval">nsCOMPtr<nsINotImplemented> iptr(do_QueryInterface(ifooptr)); -if(!iptr) { - // nsFoo は nsINotImplemented を実装しない。 iptr はそのため null である - return NS_OK; -} -</pre> -<p>QueryInterface が null-safe であることに注意することも大切です。たとえば前の例では、ifooptr がnull であっても、不都合は発生しません。さらに、QueryInterface の呼び出しの戻り値は正当な理由がない限りは返されるべきではありません。NS_NOINTERFACE を返すことが心配ならば、前のサンプルが示すように NS_OK を返してください。 -</p><p>この節の始めに、インターフェイスへのポインタを取得する 2 つ目の方法について話しました。これは、getter 関数が有効でない場合に使われるはずです。おそらくご存知でしょうが、オブジェクトの”this”メンバはそのオブジェクトへのポインタです。そこで必要なインターフェイスへ static に”this”を単にキャストできます。しかしキャストする前にご自分の処理が絶対間違いようにしてください。間違いがあれば参照カウントで問題が発生します。 -</p><p>最近遭遇した問題の例を紹介します: nsHTMLAnchorElement クラスのメンバ関数で、nsHTMLAnchorElement オブジェクトによって実装された nsIContent インターフェイスへのポインタを取得する必要がありました。しかし、getter 関数がなかったので 2 つ目の方法を使わなければなりませんでした: </p> -<pre class="eval">nsCOMPtr<nsIContent> content = getter_AddRefs(NS_STATIC_CAST(nsIContent*, this)); -// または自分自身をカウントしたいならば、 -nsIContent *content = NS_STATIC_CAST(nsIContent*, this); -</pre> -<p>この 2 つめの構文は注意して扱われる必要があり、XPCOM プログラマーの上級者だけに推奨されます。 -</p><p>ここまでに解説しました XPCOM と nsCOMPtr の使用方法はコードを読んだり少しでも書くのに必要な知識の 8 割をカバーしています。引き続き do_GetService へ進んで、QueryInterface などの実装の説明は可能ですが、そこまでする必要があると思いません。そこで XPCOM のさらに詳しい内容については <a class="external" href="http://www.mozilla-japan.org/projects/xpcom/">XPCOM プロジェクトのページ</a> を参照してください。 -</p><p>次の節は Mozilla DOM へ新しいインターフェイスを追加する方法に関するチュートリアルであり、ビルドの解説やその他を含みます。最後の節はオブジェクト指向の C++ 、インターフェイスの継承、その他面白いトピックに関する詳細の内容についての議論になっています。 </p> -<h3 id=".E3.83.81.E3.83.A5.E3.83.BC.E3.83.88.E3.83.AA.E3.82.A2.E3.83.AB_.E6.96.B0.E3.81.97.E3.81.84.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E8.BF.BD.E5.8A.A0.E6.96.B9.E6.B3.95" name=".E3.83.81.E3.83.A5.E3.83.BC.E3.83.88.E3.83.AA.E3.82.A2.E3.83.AB:_.E6.96.B0.E3.81.97.E3.81.84.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E8.BF.BD.E5.8A.A0.E6.96.B9.E6.B3.95"> チュートリアル: 新しいインターフェイスの追加方法 </h3> -<h4 id=".E5.A7.8B.E3.82.81.E3.81.AB" name=".E5.A7.8B.E3.82.81.E3.81.AB"> 始めに </h4> -<p>このチュートリアルの目的は、DOM に新しいインターフェイスを追加しそれを実装する方法を解説することです。チュートリアルを理解するために前節をよく理解してください。新しいインターフェイスを追加したくなるのにはいくつかの理由があります。新しい DOM のオブジェクトを追加したり、最終的な「インターフェイスの凍結”を順守するためです。最初に XPIDL を調べて、それがどのようにインターフェイスの定義を支援できるか見てみましょう。次にビルドシステム、makefiles、などを解説します。最後に、 nsIDOMFabian インターフェイス (Fabian は私の名前なのですが ;-) を通じてこれらの新しいインターフェイスの実装を観てみましょう。 -</p> -<h4 id="XPIDL" name="XPIDL"> XPIDL </h4> -<p>XPIDL は Cross-Platform Interface Definition Language の頭文字です。 C++ でインターフェイスを直接コーディングせずに、 XPIDL を使うことが可能です。それを使用するとインターフェイスの定義のタスクを簡略化し、文書の自動生成や XPT の生成などの面白い機能をいくつか提供します。最初にするべきことは、私たちのインターフェイスである nsIDOMFabian が何をするか決めます。この文書のために、私は nsIDOMFabian という新しい HTML インターフェイスを実装することにしました。そのインターフェイスは nsHTMLDocument クラスによって実装されます。 -</p><p>XPIDL の構文は簡単です: </p> -<pre class="eval"><span class="nowiki"> - #include "domstubs.idl"; - - [scriptable, uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)] - interface nsIDOMFabian : nsISupports - { - void fabian(); - readonly attribute boolean neat; - }; - </span> -</pre> -<p>これが nsIDOMFabian インターフェイスの定義です。インターフェイスの <i>uuid</i> は一意の識別子であり、すべてのインターフェイスに 1 つ必要です。ウインドウで guidgen を使うか、また irc.mozilla.org の #mozilla で「mozbot uuid」コマンドを発行して uuid を生成できます。 -</p><p>コンパイル時に、XPIDL コンパイラはこのインターフェイスの定義を実際の C++ コードに変換しますが、これは純粋な抽象クラスを備えたヘッダファイルです。このクラスは以下のようになっています: </p> -<pre class="eval"><span class="nowiki"> - #define NS_IDOMFABIAN_IID \ - {0xxxxxxxxx, 0xxxxx, 0xxxxx, \ - { 0xxx, 0xxx, 0xxx, 0xxx, 0xxx, 0xxx, 0xxx, 0xxx }} - - class nsIDOMFabian : public nsISupports { - public: - - NS_IMETHOD Fabian(void) = 0; - NS_IMETHOD GetNeat(PRBool *aNeat) = 0; - - }; - - #define NS_DECL_NSIDOMFABIAN - #define NS_FORWARD_NSIDOMFABIAN(_to) - #define NS_FORWARD_SAFE_NSIDOMFABIAN(_to) - </span> -</pre> -<p>見て分かるとおり、自動生成のヘッダは私たちのインターフェイスの IID を備えており、「純粋な抽象クラス」は正しく定義されます。XPIDL コンパイラは IDL メソッドと属性を以下の規則に従って C++ の関数へ変換します: -</p><p>インターフェイスのメソッドは C++ でも同じ名前を保持します。しかし IDL ではいわゆる「interCaps」モデルを使用しなければなりません。つまり最初の文字は小文字になり、そのあとの新しい単語の最初の文字は大文字になります。たとえば、IDL では getElementById と書くので、C++ では GetElementById に翻訳されることになります。 -</p><p>NS_IMETHOD は基本的に「virtual nsresult」を意味するマクロです。ここでは解説していませんが、規則に従って引数のリストと戻り値の型は正しい C++ の型へ変換されます。 -</p><p>インターフェイスの属性は 2 つの関数になります: getter と setter です。私たちの例では、属性は read-only で宣言されるので、getter だけが定義されます: GetNeat です。引数は自動的に XPIDL によって生成される PRBool 型のオブジェクトへのポインタです。賢いですね。同じ interCaps のモデルが同様に IDL の属性へ適用されることに注意してください。 -</p><p>1.E.d で 3 つのマクロが詳細に解説されます。次のステップは新しいインターフェイスをビルドすることです。 </p><p><br> -</p> -<h4 id=".E3.83.93.E3.83.AB.E3.83.89.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0" name=".E3.83.93.E3.83.AB.E3.83.89.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0"> ビルドシステム </h4> -<p>ここはとても簡単なところです: すでにあるものをコピーするだけですから。最初にどのディレクトリへインターフェイスを置くか決めなければなりません。最も論理的選択は、すべての HTML インターフェイスが存在する dom/public/idl/html です。次に、このディレクトリのすべての makefiles へ nsIDOMFabian.idl を追加しなければなりません。これには必要であれば、「MANIFEST」「makefile.win」「Makefile.in」などが含まれます。単に nsIDOMFabian の既存のエントリをコピーしてください。<b>注意: Makefiles では、TABS と ホワイトスペースが混在します。他のエントリはかならず正確にコピーしてください。</b> -</p><p>次にインターフェイスをビルドするために dom/ へ「make」とタイプしてください。すべてうまく行けば、 nsIDOMFabian.h ファイルが dom/public/idl/html/_xpidlgen/ にあり、インターフェイスに対して C++ コードを保持しているはずです。私の経験ではインターフェイスを機能させる前に、残念ながら「distclean」をビルドしなければならないことがあります。 </p> -<h4 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E5.AE.9F.E8.A3.85" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E5.AE.9F.E8.A3.85"> インターフェイスの実装 </h4> -<p>インターフェイスの実装方法をさらに詳細に観てみましょう。 C++ の具象クラスによってインターフェイスが実装されなければならないことをすでに知っています。このクラスは複数のインターフェイスを直接または継承によって実装できます (継承の議論は次の節を参照してください)。また私たちは XPIDL で定義されたインターフェイスがメソッドと属性を保持し、これらは XPIDL コンパイラによって C++ の関数に変換されることも知りました。インターフェイスを実装するクラスは明示的に、インターフェイスで定義された各メソッドを実装し、各属性の setter と getter を実装しなければなりません。もし属性が read-only であればもちろん getter だけが必要になります。 -</p><p><a href="https://dxr.mozilla.org/mozilla-central/source/content/html/document/src/nsHTMLDocument.h" rel="custom">nsHTMLDocument.h</a> で定義されている nsHTMLDocument クラスに nsIDOMFabian を実装することにしました。するべきことが 3 つあります: クラスの宣言を変更すること、クラスの本体を変更すること、インターフェイスで宣言された関数をコード化することです。 -</p><p>クラス宣言とクラス本体の変更: </p> -<pre class="eval"><span class="nowiki"> - #include "nsIDOMFabian.h" - class nsHTMLDocument: public ... , - public nsIDOMFabian - { - // ... - NS_DECL_NSIDOMFABIAN - // ... - }; - </span> -</pre> -<p>最初に nsIDOMFabian を継承するように、nsHTMLDocument クラスを宣言する必要があります。それからクラスの public なインターフェイスで、マクロの NS_DECL_NSIDOMFABIAN を使ってインターフェイスの実装に必要なメソッドを宣言します。このマクロは XPIDL コンパイラによって自動生成されることを憶えてください。 それは nsIDOMFabian インターフェイスのためのクラスで実装されるメソッドをすべて宣言します。典型的な NS_DECL_NSIFOO マクロは以下のようになっています: -</p> -<pre class="eval"><span class="nowiki"> - #define NS_DECL_NSIFOO \ - NS_IMETHOD GetBar(); - </span> -</pre> -<p>このマクロはクラスの定義で使われる必要があり、nsFoo クラスは nsFoo::GetBar() メソッドを備えることになります。関数が宣言されたので、最後にコード化が可能になります。 -</p><p>関数を実装する様々な可能性があります。最初の方法は最も簡単です。実装しなければならない関数は nsHTMLDocument::Fabian() と nsHTMLDocument::GetNeat() です。それでは、コード化してみましょう。 </p> -<pre class="eval">NS_IMETHODIMP nsHTMLDocument::Fabian(void) -{ - printf("Hello from the nsIDOMFabian interface\n"); - // 任意のコード... - return NS_OK; -} - -NS_IMETHODIMP nsHTMLDocument::GetNeat(PRBool *aNeat) -{ - if(!aNeat) { - return NS_ERROR_NULL_POINTER; - } - - nsresult rv = Fabian(); - if( rv == NS_OK ) { - *aNeat = PR_TRUE; - } else { - *aNeat = PR_FALSE; - } - return NS_OK; -} -</pre> -<p>このコードはもちろん nsHTMLDocument.cpp で書かれます。関数はとても簡単であり、ただ概念を説明しているだけです。2 番めの可能性は「インターフェイス転送マクロ」を使うことです。このマクロはまた XPIDL コンパイラによって自動生成されます。以下はインターフェイス転送の背景にある理論で、そのあとに来るのは nsIDOMFabian のサンプルです。 -</p> -<h5 id=".E7.90.86.E8.AB.96" name=".E7.90.86.E8.AB.96"> 理論 </h5> -<p>実際のクラス nsBar を継承する実際のクラス nsFoo があると仮定しましょう。また nsFoo が nsIFoo インターフェイスを実装するとも仮定しましょう。nsFoo が nsIFoo を実装する可能性の 1 つは、 nsIFoo インターフェイスのメソッドを、クラス nsBar のこれらの同じメソッドの実装へ転送することです。 -</p> -<pre class="eval">// XPIDLでの nsIFoo インターフェイス (最低限の実装) -interface nsIFoo { - attribute type prop; - void meth(); -}; - -class nsBar { - NS_IMETHOD GetProp(); - NS_IMETHOD SetProp(); - NS_IMETHOD Meth(); -}; - -class nsFoo : public nsIFoo, - public nsBar { -// nsFoo クラスの定義 -}; - -nsFoo::GetProp() { return nsBar::GetProp(); } -nsFoo::SetProp() { return nsBar::SetProp(); } -nsFoo::Meth() { return nsBar::Meth(); } -</pre> -<p>このようなコードが機能するのに nsBar はもちろん GetProp、 SetProp、 Meth を実装しなければなりません。注意が必要なのは、nsBar は nsIFoo インターフェイスのメソッドを実装しますが、nsIFoo インターフェイスを継承<b>しません</b>。 そしてこの場合<b>だけ</b>インターフェイス転送を使用できます。 -</p><p>この時 3 つのメソッドをタイプして nsBar へ送らなくても、代わりに「インターフェイス転送マクロ」の NS_FORWARD_NSIFOO を使用できます。 </p> -<pre class="eval"><span class="nowiki"> - #define NS_FORWARD_NSIFOO(_to) \ - NS_IMETHOD GetProp() { return _to GetProp(); } \ - NS_IMETHOD SetProp() { return _to SetProp(); } \ - NS_IMETHOD Meth() { return _to Meth(); } - </span> -</pre> -<p>このマクロの意味を理解するのは簡単です。 _to クラスの実装に対して nsIFoo インターフェイスのすべてのメソッドを転送します。 -</p><p>nsIDOMFabian のアプリケーション: nsDocument で 2 つの関数をコード化し nsHTMLDocument から nsDocument へ nsIDOMFabian を転送できます。こうすることで例えば、 nsXMLDocument で nsDocument のコードを再利用することもできます。この技術はすでに大抵のドキュメントメソッドで使われています。 </p> -<pre class="eval">// File nsDocument.h: -class nsDocument : public ... -{ - // ... - NS_IMETHOD Fabian(void); - NS_IMETHOD GetNeat(PRBool *aNeat); - // ... -} - -// File nsDocument.cpp: -nsDocument::Fabian() -{ - // ... -} -nsDocument::GetNeat(PRBool *aNeat) -{ - // ... -} - -// File nsHTMLDocument.h: -class nsHTMLDocument : public ... , - public nsIDOMFabian -{ - // ... - NS_FORWARD_NSIDOMFABIAN(nsDocument::) - // ... -} - -// Nothing needed in nsHTMLDocument.cpp -</pre> -<p>これは「インターフェイス転送」の簡単な例です。これらの2つの方法は DOM でインターフェイスを実装する最も一般的方法です。もう少し複雑な他の方法がありますが、ここでは扱いません -</p><p><b>重要な注記: どの DOM クラスによって実装される nsISupports インターフェイスも、転送マクロや宣言マクロを使って実装されません。nsISupports の実装には特別なマクロが提供されます</b> -</p><p>新しいインターフェイスの追加方法についてのチュートリアルはここで終わりです。ただ全面的に rebuild してください。distclean でビルドするといいでしょう。<b>しかし、JavaScript からメソッドを有効にすることはできません</b>。というのは、nsIDOMFabian は Class Info. にないからです。その追加方法に関しては <a class="external" href="http://www.mozilla.org/docs/dom/mozilla/hacking.html#oneh">Class Info の使い方</a> を参照してください。 </p> -<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E7.B6.99.E6.89.BF_.28.E4.B8.8A.E7.B4.9A.E8.80.85.E5.90.91.E3.81.91.29" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E7.B6.99.E6.89.BF_.28.E4.B8.8A.E7.B4.9A.E8.80.85.E5.90.91.E3.81.91.29"> インターフェイスの継承 (上級者向け) </h3> -<p>Mozilla における継承モデルは当然 C++ クラスの継承モデルと同じです。オブジェクト指向のプログラミングに詳しい方であれば、この議論の理解には問題はないでしょう。 -</p> -<h5 id=".E7.94.9F.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E7.B6.99.E6.89.BF" name=".E7.94.9F.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E7.B6.99.E6.89.BF"> 生のインターフェイスの継承 </h5> -<p>最初の概念を理解するのは難しくありません。それは、「インターフェイスの継承」です。XPIDL や header にインターフェイスの定義があれば、そのインターフェイスは必ず他のインターフェイスを継承しています。たとえば、 nsIDOMHTMLAnchorElement インターフェイスにとって以下の「連鎖」が備わっています:<br> nsISupports -> nsIDOMNode -> nsIDOMElement -> nsIDOMHTMLElement -> nsIDOMHTMLAnchorElement -</p><p>すなわち、クラスが連鎖にあるインターフェイスの 1 つを実装すると、そのクラスは<i>実装されたインターフェイスのすべての祖先</i>を実装しなければならないということです。たとえば、実際のクラスが、nsIDOMElement を実装するなら、そのクラスは nsIDOMNode と nsISupports をも実装しなければならないのです。 </p> -<h5 id=".E7.90.86.E8.AB.96_2" name=".E7.90.86.E8.AB.96_2"> 理論 </h5> -<p>インターフェイスの継承がどういうことであるかを理解できたので、もっと一般的なケースを調べてみましょう。最初にごく理論的に考えて、次に nsHTMLAnchorElement のサンプルを使って議論を解説します。 -</p><p>実際のクラス nsFoo によって実装されている DOM オブジェクト Foo があると仮定しましょう。nsIFoo1、nsIFoo2、nsIFoo3 の 3 つのインターフェイス に加えて別の実際のクラス nsBar もあるとしましょう。この状況は以下のようになります: </p> -<pre class="eval">nsBar <- nsIFoo1 - | - V -nsFoo <- nsIFoo2 <- nsIFoo3 -</pre> -<p>この状況で上記に記されているように nsIFoo2 インターフェイスは nsIFoo3 インターフェイスを継承します。 nsFoo は nsIFoo2 を実装しその結果 nsIFoo3 も実装します。nsBar は nsIFoo1 を実装します。実際のクラス nsFoo は別の実際のクラス nsBar を継承します。継承を説明する規則は以下のようになっています: -</p> -<ul><li> nsFoo は自動的に nsIFoo1 を実装します。というのは、すでに nsIFoo1 を実装しているクラスを継承しているからです。 -</li><li> nsBar は nsIFoo1 を実装しなければ<i>なりません</i>。 -</li><li> nsFoo は、nsIFoo2 と nsIFoo3 が nsBar へ<i>転送</i>されない限りは、nsIFoo2 と nsIFoo3 を実装しなければ<i>なりません</i>。インターフェイスの転送については 1.E.d の節で解説されています。 -</li></ul> -<p>これらの規則はとても簡単であり DOM のコードで広く使われています。クラスやインターフェイスが増えるにつれてコードはより複雑になりますが、上記の方法を使えば必ず問題を低減することができます。 -</p> -<h5 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB"> サンプル </h5> -<p>簡単なサンプルである HTML Anchor Element を見てみましょう。 最初に、インターフェイスの継承規則を解説しましょう。nsIDOMHTMLAnchorElement(HTML Anchor Element のために W3C によって定義されたメソッドやプロパティを備えているが)を見れば、それが別のインターフェイスである nsIDOMHTMLElement を継承してるのが分かります: -</p> -<pre class="eval">interface nsIDOMHTMLAnchorElement : nsIDOMHTMLElement -</pre> -<p>すなわち、nsIDOMHTMLAnchorElement インターフェイスを実装するクラスはすべて nsIDOMHTMLElement インターフェイスも実装しなければならないということです。 nsIDOMHTMLElement を見ると、それが nsIDOMElement を継承しており、後者は nsIDOMNode を継承しており、さらに nsIDOMNode が、nsISupports を継承しているのが分かります。 nsIDOMHTMLAnchorElement は継承のために今述べたすべてのインターフェイスを実装しなければなりません。インターフェイスの実装方法は 1.E.d.の段落を参照してください。 -</p><p>インターフェイスの継承によってトップレベルのインターフェイスが nsISupports であることが分かります。すべてのインターフェイスは直接的にまた間接的に nsISupports を継承しなければなりません。このインターフェイスは 1.B. の節で説明された AddRef()、 Release()、QueryInterface() という3 つのメソッドを定義します。 nsISupports は <a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nsISupports.idl" rel="custom">xpcom/base/</a> で 1999 年以降変更されることなく平和に息づいています。 XPCOM インターフェイスと nsISupports については、<a class="external" href="http://www.mozilla-japan.org/docs/modunote.htm">モジュール化の方法</a> をご参照ください。 -</p><p>インターフェイスが継承された時の実装を解説するのに、HTML Anchor Element を実装している実際のクラスを調べてみましょう。調べるのは nsHTMLAnchorElement です。実際のクラスの継承の連鎖はこのようになっています: </p> -<pre class="eval">nsGenericElement -> nsGenericHTMLElement -> nsGenericHTMLContainerElement -> nsHTMLAnchorElement -</pre> -<p>クラスの定義は以下のようになっています: -</p> -<pre class="eval">class nsHTMLAnchorElement : public nsGenericHTMLContainerElement -class nsGenericHTMLContainerElement : public nsGnericHTMLElement -class nsGenericHTMLElement : public nsGenericElement -</pre> -<pre class="eval">クラスの定義を見ると、nsGenericHTMLElement と nsGenericHTMLContainerElement は直接インターフェイスを実装していません。しかし、nsGenericElement は実装しています: -</pre> -<pre class="eval">class nsGenericElement : public nsIHTMLContent -</pre> -<p>これはもちろん nsGenericElement が nsIHTMLContent インターフェイスを実装していることになります。 nsIHTMLContent への継承の連鎖は以下のようになります: -</p> -<pre class="eval">nsISupports -> nsIContent -> nsIStyledContent -> nsIXMLContent -> nsIHTMLContent -</pre> -<p>nsGenericElement は上記のすべてのインターフェイスを実装しなくてはなりません。そして、<i>nsGenericElement を継承するすべての実際のクラスは自動的にこれらのインターフェイスを実装します</i>。 このことはすでにこの段落で定義した規則と一致しています。 -</p> -<h3 id=".E9.96.A2.E9.80.A3.E8.B3.87.E6.96.99" name=".E9.96.A2.E9.80.A3.E8.B3.87.E6.96.99"> 関連資料 </h3> -<ul><li> <a href="ja/XPIDL/xpidl">XPIDL リファレンス</a> -</li><li> <a class="external" href="http://www.mozilla-japan.org/docs/dom/mozilla/classes/">DOM オブジェクトを C++ クラスへマッピングする</a> -</li><li> <a class="external" href="http://www.mozilla-japan.org/docs/modunote.htm">モジュール化の方法</a> -</li></ul> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.classes/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.classes/index.html deleted file mode 100644 index 0095fbdc58..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.classes/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Components.classes -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.classes -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.classes ---- -<p> </p> - -<p><code>Components.classes</code> は、プロパティが <a href="ja/ContractID">ContractID</a> によって索引付けされたクラスである、読み出し専用オブジェクトです。</p> - -<h2 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h2> - -<p><code>Components.classes</code> は、<a href="ja/NsIJSCID">nsIJSCID</a> インターフェースを実装した読み出し専用オブジェクトです。それぞれのオブジェクトは、<a href="ja/XPCOM">XPCOM</a> サービスとして構築またはアクセスされうる XPCOM コンポーネントのクラスのひとつを表します。</p> - -<p>このオブジェクトのプロパティは、コンポーネントクラスの ContractID (または人間が読める形式の名前) で索引付けされています。</p> - -<p>All of the properties and methods of the nsIJSCID and its ancestor interface <a href="ja/NsIJSID">nsIJSID</a> are available for use on the objects contained in this object.</p> - -<p><strong>Note</strong> that <code>Components.classes</code> reflects only those component classes that have been previously installed and registered with the component manager using ContractIDs. If you want to use a class which was only registered with their <a href="ja/CID">CID</a>, use <code><a href="ja/Components.classesByID">Components.classesByID</a></code> instead of <code>Components.classes</code> to retrieve it.</p> - -<p>あるマシンには ContractID を指定されたアドオンコンポーネントが存在し、別のマシンにはインストールされていないこともあり得ます。Components.classes は、以前にインストールされ ProgId を用いてコンポーネントマネージャに登録されたコンポーネントクラスのみを反映します。ですから、あるマシンには ProgID を指定されたアドオンコンポーネントが存在し、別のマシンにはインストールされていないこともあり得ます。<code>Components.classes</code> オブジェクトに与えられた要素がそのマシンに登録されていない場合、その要素にアクセスを試みると、ストリクトモードでは JavaScript の警告が生成され、戻り値は JavaScript の <code><a href="ja/Core_JavaScript_1.5_Reference/Global_Properties/undefined">undefined</a></code> になります。要素にアクセスする際は、あらかじめ <code><a href="ja/Core_JavaScript_1.5_Reference/Operators/Special_Operators/in_Operator">in</a></code> オペレータを使って、その要素をテストするべきです。</p> - -<pre class="eval">if (!("@some/bogus/class;1" in Components.classes)) - // do something... -</pre> - -<p><code>Components.classes</code> オブジェクトのプロパティは <code><a href="ja/Core_JavaScript_1.5_Reference/Statements/for...in">for...in</a></code> ループを使って列挙できます。</p> - -<h2 id=".E4.BD.BF.E3.81.84.E6.96.B9" name=".E4.BD.BF.E3.81.84.E6.96.B9">使い方</h2> - -<h3 id=".E4.B8.8E.E3.81.88.E3.82.89.E3.82.8C.E3.81.9F_ContractID_.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B" name=".E4.B8.8E.E3.81.88.E3.82.89.E3.82.8C.E3.81.9F_ContractID_.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B">与えられた ContractID のためのオブジェクトを取得する</h3> - -<p>In order to retrieve the object for a given ContractID, you can query the <code>Components.classes</code> array as follows:</p> - -<pre class="eval">var clazz0 = Components.classes["@mozilla.org/preferences;1"]; -var clazz1 = Components.classes["@mozilla.org/messenger;1"]; -</pre> - -<p>The first line will return you the class object for the ContractID <code>@mozilla.org/preferences;1</code>, the second line will return you the class object for the ContractID <code>@mozilla.org/messenger;1</code>.</p> - -<div class="note"> -<p>It may be helpful to abbreviate <code>Components.classes</code> by storing a reference to the object as a constant:</p> - -<pre class="eval">// use whatever name suits your fancy -- Cc is probably the most common abbreviation -const Cc = Components.classes; -const C = Components.classes; - -var clazz0 = Cc["@mozilla.org/preferences;1"]; -var clazz1 = C["@mozilla.org/messenger;1"]; -</pre> -</div> - -<h3 id="XPCOM_.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.82.92.E4.BD.9C.E6.88.90.E3.81.99.E3.82.8B" name="XPCOM_.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.82.92.E4.BD.9C.E6.88.90.E3.81.99.E3.82.8B">XPCOM コンポーネントのインスタンスを作成する</h3> - -<p>An XPCOM component instance can be created from the returned class object as follows:</p> - -<pre class="eval">var clazz = Components.classes["@mozilla.org/messenger;1"]; -var obj = clazz.createInstance(); -</pre> - -<p><code>createInstance()</code> calls will return <a href="ja/XPConnect">XPConnect</a> wrappers for these native objects which only expose the methods of the <a href="ja/NsISupports">nsISupports</a> interface. This is because the specific interface on the component that the caller desires has not been specified. Specifying that interface is done using the properties of the <code><a href="ja/Components.interfaces">Components.interfaces</a></code> object:</p> - -<pre class="eval">var obj = Components.classes["@mozilla.org/supports-array;1"] - .createInstance(Components.interfaces.nsISupportsArray); -</pre> - -<p>which is equivalent to:</p> - -<pre class="eval">var obj = Components.classes["@mozilla.org/supports-array;1"]; - .createInstance() - .QueryInterface(Components.interfaces.nsISupportsArray); -</pre> - -<p>Alternatively, you can use the <code><a href="ja/Core_JavaScript_1.5_Reference/Operators/Special_Operators/new_Operator">new</a></code> operator on the class object to create a new instance of that class:</p> - -<pre class="eval">var clazz = Components.classes["@mozilla.org/supports-array;1"]; -var inst = new clazz(Components.interfaces.nsISupportsArray); -</pre> - -<p>This implicitly calls the <code>createInstance()</code> method for you.</p> - -<h3 id="XPCOM_.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9" name="XPCOM_.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9">XPCOM サービスコンポーネントへのアクセス</h3> - -<p>既存のインスタンスは、以下のように、サービスとしてアクセスできます。</p> - -<pre class="eval">var clazz = Components.classes["@mozilla.org/preferences;1"]; -var obj = clazz.getService(); -</pre> - -<p><code>getService()</code> は、<code>createInstance()</code> のように、ネイティブオブジェクトへの <a href="ja/XPConnect">XPConnect</a> ラッパーを返し、<a href="ja/NsISupports">nsISupports</a> インターフェースのメソッドのみを見せます。これは、呼び出し側の求めるコンポーネント上の特殊なインターフェースが特定されないようにするためです。このインターフェースの指定は、<code><a href="ja/Components.interfaces">Components.interfaces</a></code> オブジェクトの要素を使って行います。</p> - -<pre class="eval">var clazz = Components.classes["@mozilla.org/preferences;1"] -var srv = clazz.getService(Components.interfaces.nsIPref); -</pre> - -<p>これは以下と同等です。</p> - -<pre class="eval">var clazz = Components.classes["@mozilla.org/preferences;1"] -var obj = clazz.getService(); -var srv = obj.QueryInterface(Components.interfaces.nsIPref); -</pre> - -<h2 id=".E3.81.82.E3.82.8B.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.80.81.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.81.AE.E4.BD.9C.E6.88.90.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.8B.E3.80.81.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.81.A8.E3.81.97.E3.81.A6.E5.88.A9.E7.94.A8.E5.8F.AF.E8.83.BD.E3.81.8B.E3.82.92.E8.AA.BF.E3.81.B9.E3.82.8B" name=".E3.81.82.E3.82.8B.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.80.81.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.81.AE.E4.BD.9C.E6.88.90.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.8B.E3.80.81.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.81.A8.E3.81.97.E3.81.A6.E5.88.A9.E7.94.A8.E5.8F.AF.E8.83.BD.E3.81.8B.E3.82.92.E8.AA.BF.E3.81.B9.E3.82.8B">あるコンポーネントについて、インスタンスの作成が必要か、サービスとして利用可能かを調べる</h2> - -<p>It is not possible to programmatically determine if a given component has to be instantiated or used as a service.</p> - -<p>Often, this is stated in the documentation of the component you want to use. If this is not the case, you might want to try and find example usages of that component within <a class="external" href="http://lxr.mozilla.org/mozilla/search">LXR</a>.</p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.classesbyid/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.classesbyid/index.html deleted file mode 100644 index ca8065fee2..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.classesbyid/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Components.classesByID -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.classesByID -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.classesByID ---- -<p> -</p><p><code>Components.classesByID</code> は、プロパティが <a href="ja/CID">CID</a> によって索引付けされたクラスである、読み出し専用オブジェクトです。 -</p> -<h2 id="はじめに"> はじめに </h2> -<p><code>Components.classesByID</code> は、<a href="ja/NsIJSCID">nsIJSCID</a> インターフェースを実装した読み出し専用オブジェクトです。それぞれのオブジェクトは、<a href="ja/XPCOM">XPCOM</a> サービスとして構築またはアクセスされうる XPCOM コンポーネントのクラスのひとつを表します。 -</p><p><code>Components.classesByID</code> は、要素が CID の「標準的な」形式で索引付けされている以外は <code><a href="ja/Components.classes">Components.classes</a></code> と同様です。また、コンポーネントマネージャによって <a href="ja/ContractID">ContractID</a> を使って登録されたコンポーネントクラスだけでなく、プレーンの CID を使って登録されたクラスも表します。 -</p> -<h2 id="使い方"> 使い方 </h2> -<p>In order to retrieve the object for a given CID, you can use that CID as an index with <code>Components.classesByID</code> as follows: -</p> -<pre class="eval">var clazz = Components.classesByID["{ed132c20-eed1-11d2-baa4-00805f8a5dd7}"]; -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.constructor/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.constructor/index.html deleted file mode 100644 index dba394eb69..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.constructor/index.html +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Components.Constructor -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.Constructor -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.Constructor ---- -<p> -</p><p><span id="Summary"></span> -</p> -<h3 id="概要"> 概要 </h3> -<p>XPCOM コンポーネントの新規インスタンスを作成/生成するのに使用できる JavaScript 関数を作成します。 -</p><p><span id="Syntax"></span> -</p> -<h3 id="構文"> 構文 </h3> -<pre class="eval">var func = [ new ] Components.Constructor(<i>contractID</i> [, <i>interfaceName</i> [, <i>initializer</i> ] ]); -</pre> -<p><span id="Parameters"></span> -</p> -<h3 id="パラメータ"> パラメータ </h3> -<dl><dt> <code>contractID</code></dt><dd> コンポーネントのコントラクト ID を含む文字列 -</dd><dt> <code>interfaceName</code> </dt><dd> 与えられると、新規作成されるインスタンスそれぞれに対してこの文字列の名前のインターフェイスで <a href="ja/NsISupports/QueryInterface">QueryInterface</a> が呼び出される -</dd><dt> <code>initializer</code> </dt><dd> 与えられると、この文字列の名前の関数が、新規作成されるインスタンスに対してその時に与えられる引数を使って呼び出される -</dd></dl> -<p><span id="Description"></span> -</p> -<h3 id="説明"> 説明 </h3> -<p><code>Components.Constructor()</code> は XPCOM コンポーネントのインスタンス作成に便利なショートカットです。これを使うと、インスタンスを作りたい時に毎回 <code>Components.classes</code>、<code>Components.interfaces</code>、<code>createInstance</code> などをタイピングする手間が無くなります。また、より <a href="ja/JavaScript">JavaScript</a> 的な構文で XPCOM オブジェクトを作成できるようになります。もう一つの重要な恩恵として、<code>Components.Constructor()</code> はいくつかの計算をあらかじめ行うので、<code>Components.Constructor()</code> から返される関数を使って XPCOM オブジェクトを作成した方が下記に示すように基本原則に基づいてオブジェクトを作成するよりも高速になります。 (JavaScript エンジンと XPCOM の間のレイヤーをまたぐ回数がより少なくて済むというのも高速になる理由の一つです。) -</p><p><code>Components.Constructor()</code> によって返される関数のふるまいは、 <code>Components.Constructor()</code> が呼び出されたときに与えられた引数によって異なります。与えられた引数が 1 つだけなら、その引数は作成される XPCOM コンポーネントの<a href="ja/Contract_ID">コントラクト ID</a> になります。コンポーネントはすぐ返されますが、そのコンポーネントからは基本インターフェイスの <code><a href="ja/NsISupports">nsISupports</a></code> しか利用できません。なのでそのオブジェクトのメソッドを呼び出すためにはそれに対して <a href="ja/NsISupports/QueryInterface">QueryInterface</a> を呼び出さなければなりません。例えば、 -</p> -<pre class="eval">var BinaryInputStream = Components.Constructor("@mozilla.org/binaryinputstream;1"); -var bis = new BinaryInputStream(); -print(bis.toString()); // "[xpconnect wrapped nsISupports]" - -try -{ - // someInputStream は既存の nsIInputStream - // bis は nsIBinaryInputStream に QI されていないのでエラーを投げる - bis.setInputStream(someInputStream); -} -catch (e) -{ - bis.QueryInterface(Components.interfaces.nsIBinaryInputStream); - bis.setInputStream(someInputStream); // これで成功 -} -</pre> -<p>引数が 2 つ与えられると、作成されるインスタンスは第 2 引数の名前を持つ XPCOM インターフェイスに <code><a href="ja/NsISupports/QueryInterface">QueryInterface</a></code> されます。 -</p> -<pre class="eval">var BinaryInputStream = Components.Constructor("@mozilla.org/binaryinputstream;1", - "nsIBinaryInputStream"); -var bis = new BinaryInputStream(); -print(bis.toString()); // "[xpconnect wrapped nsIBinaryInputStream]" - -// someInputStream は既存の nsIInputStream -bis.setInputStream(someInputStream); // 成功 -</pre> -<p>引数が 3 つ与えられると、インスタンスに対して <code><a href="ja/NsISupports/QueryInterface">QueryInterface</a></code> されるだけでなく、初期化メソッドも呼び出されたことになります。初期化メソッドに使われる引数は、<code>Components.Constructor()</code> によって作成された関数を呼び出す時に渡された引数です。 -</p> -<pre class="eval">var BinaryInputStream = Components.Constructor("@mozilla.org/binaryinputstream;1", - "nsIBinaryInputStream", - "setInputStream"); -try -{ - // 引数の数が nsIBinaryInputStream.setInputStream が - // 取るものと異なるのでエラーを投げる - var bis = new BinaryInputStream(); -} -catch (e) -{ - // someInputStream は既存の nsIInputStream - bis = new BinaryInputStream(someInputStream); // 成功 - var bytes = bis.readByteArray(<i>someNumberOfBytes</i>); // 成功 -} -</pre> -<p>基本原則に基づいたインスタンスの作成と <code>Components.Constructor()</code> を使ったインスタンスの作成を比較して下さい。後者の方が前者よりもずっと (たくさんの違う場所でコンポーネントのインスタンスを作成している場合には特に) 読みやすくなります。 -</p> -<pre class="eval">var bis = Components.classes["@mozilla.org/binaryinputstream;1"] - .createInstance(Components.interfaces.nsIBinaryInputStream); -bis.setInputStream(someInputStream); -</pre> -<pre class="eval">// 前もって BinaryInputStream が初期化されているとして -var bis = new BinaryInputStream(someInputStream); -</pre> -<p><code>Components.Constructor()</code> は、他の一般的なメソッドを使って実現できる挙動のシンタックスシュガーに過ぎません (高速できれいなシンタックスシュガーですが)。 次の JavaScript 関数と等価です。 -</p> -<pre class="eval">function Components_Constructor(contractID, interfaceName, initializer) -{ - var ccArgs = arguments; - - function ctor() - { - var instance = Components.classes[contractID] - .createInstance(Components.interfaces.nsISupports); - - if (ccArgs.length > 1) - { - instance.QueryInterface(Components.interfaces[interfaceName]); - - if (ccArgs.length > 2) - instance[initializer].apply(instance, arguments); - } - - return instance; - } - - return ctor; -} -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.exception/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.exception/index.html deleted file mode 100644 index f7a4540734..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.exception/index.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Components.Exception -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.Exception -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.Exception ---- -<p> -</p> -<h3 id="要約"> 要約 </h3> -<p><code>Components.Exception</code> は、nsIXPCException オブジェクトを作る JavaScript コンストラクタです。これらの例外オブジェクトは JavaScript で XPCOM インターフェースを実装する際に投げられるでしょう。例外が補足 (catch) できなかった場合、単純に <code>nsresult</code> の値を投げるよりも、この方がエラーコンソールにより分かりやすい診断結果を表示できるでしょう。 -</p><p><a href="ja/NsIXPCException">nsIXPCException</a> もご覧ください。 -</p> -<h3 id="構文"> 構文 </h3> -<pre class="eval">var exception = [ new ] Components.Exception([ <i>message</i> [, <i>result</i> [, <i>stack</i> [, <i>data</i> ] ] ] ]); -</pre> -<h3 id="パラメータ"> パラメータ </h3> -<dl><dt> <code>message</code> </dt><dd> 例外が投げられた場合に、あるいは開発者が指定した場所で、エラーコンソールに表示する文字列。デフォルトは「exception」 -</dd><dt> <code>result</code> </dt><dd> 例外の <code>nsresult</code> 値。デフォルトは <code>NS_ERROR_FAILURE</code> -</dd><dt> <code>stack</code> </dt><dd> 例外にセットされる XPCOM スタック。デフォルトは現在のスタックチェーン -</dd><dt> <code>data</code> </dt><dd> 保存したい任意の追加データ。デフォルトは <code>null</code> -</dd></dl> -<h3 id="実例"> 実例 </h3> -<pre class="eval">throw Components.Exception("I am throwing an Exception from a Javascript XPCOM component."); -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.id/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.id/index.html deleted file mode 100644 index 5908f888b6..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.id/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Components.ID -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.ID -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.ID ---- -<p> -</p> -<h3 id="要約"> 要約 </h3> -<p><code>Components.ID</code> は、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIJSID" title="">nsIJSID</a></code> インターフェースに合わせたネイティブオブジェクトを作成するコンストラクタです。 -</p> -<h3 id="構文"> 構文 </h3> -<pre class="eval">var interfaceID = [ new ] Components.ID(iid); -</pre> -<h3 id="パラメータ"> パラメータ </h3> -<dl><dt> <code>iid</code></dt><dd> A string of the format <code>'{00000000-0000-0000-0000-000000000000}'</code> giving the interface ID of the interface -</dd></dl> -<h3 id="説明"> 説明 </h3> -<p><code>Components.ID</code> は、インターフェース ID をパラメータとして取る、QueryInterface、getInterfaces などのメソッドを実装するために使われるインターフェース ID を作成します。 -</p><p><code><a href="ja/Components.classes">Components.classes</a></code>、<code><a href="ja/Components.classesByID">Components.classesByID</a></code>、<code><a href="ja/Components.interfaces">Components.interfaces</a></code> は、ほとんどの JavaScript コードが扱うことのない <code>nsID</code> をほぼすべて提供します。Components.classes, Components.classesByID, Components.interfaces はほとんどの JavaScript コードが扱う必要がある nsID のほぼ全てです。例外は、コンポーネントが JavaScript で書かれていて、自身を独自の <code>nsID</code> でコンポーネントマネージャに登録する必要がある場合です。その際の ID は未登録のため、<code><a href="ja/Components.classes">Components.classes</a></code> には現れません。 -</p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.interfaces/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.interfaces/index.html deleted file mode 100644 index 8105f7f239..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.interfaces/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Components.interfaces -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.interfaces -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.interfaces ---- -<p> -</p><p><code>Components.interfaces</code> は、プロパティがそれらの名前によって索引付けされたクラスである、読み出し専用オブジェクトです。 -</p> -<h2 id="はじめに"> はじめに </h2> -<p><code>Components.interfaces</code> は、<a href="ja/NsIJSCID">nsIJSCID</a> インターフェースを実装した読み出し専用オブジェクトです。それぞれのオブジェクトは、いくつかのコンポーネントが実装している (あるいは未実装の可能性もあります) <a href="ja/XPCOM">XPCOM</a> インターフェースのひとつを表します。 -</p><p><br> -対応する <code>.idl</code> の宣言が <code>[scriptable]</code> として設計されたインターフェースのみを反映します。つまり、<a href="ja/XPConnect">XPConnect</a> が JavaScript へ反映することのできるインターフェースということです。 -</p><p><code>Components.interfaces</code> オブジェクトのプロパティは、<code>nsID</code> nsID 型のパラメータを除いた XPCOM メソッドで利用されます。これには <code><a href="ja/NsISupports">nsISupports</a>::<a href="ja/NsISupports/QueryInterface">QueryInterface</a></code>、<code>nsICID::getService</code> が受け取る追加パラメータ、<code>nsICID::createInstance</code> (JavaScript から呼ばれた場合)、<code><a href="ja/NsIClassInfo">nsIClassInfo</a>::<a href="ja/NsIClassInfo/getInterfaces">getInterfaces</a></code> が含まれます。 -</p><p><code>Components.interfaces</code> オブジェクトのプロパティは <code><a href="ja/Core_JavaScript_1.5_Reference/Statements/for...in">for...in</a></code> ループを使って列挙できます。 -</p> -<h2 id="使い方"> 使い方 </h2> -<h3 id="インターフェースオブジェクトへのアクセス"> インターフェースオブジェクトへのアクセス </h3> -<p><code>Components.interfaces</code> オブジェクトのプロパティはインターフェース名で索引付けされます。インターフェースオブジェクトは以下のようにして取得できます。 -</p> -<pre class="eval">var iface = Components.interfaces.nsISupportsArray; -</pre> -<p>この戻り値は <code>nsISupportsArray</code> インターフェースのインターフェースオブジェクトです。 -</p> -<h3 id="インターフェースで定義されたコンスタントへのアクセス"> インターフェースで定義されたコンスタントへのアクセス </h3> -<p>Interface descriptions (cf. <a href="ja/XPIDL">XPIDL</a>) may not only contain method declarations, but also constants. For example, assume we have the following interface declaration: -</p> -<pre class="eval">interface nsIFoo : nsISupports { - const PRUint32 MYFLAG = 5; -}; -</pre> -<p>The constant <code>MYFLAG</code> can then be accessed using -</p> -<pre class="eval">var myFlag = Components.interfaces.nsIFoo.MYFLAG; -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.lastresult/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.lastresult/index.html deleted file mode 100644 index d830cc301c..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.lastresult/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Components.lastResult -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.lastResult -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.lastResult ---- -<p> -</p><p><code>Components.lastResult</code> は XPConnect を介した直前の <a href="ja/XPCOM">XPCOM</a> メソッド呼び出しの結果コードである数値コード <code>nsresult</code> を返します。 -</p> -<h2 id="はじめに"> はじめに </h2> -<p><code>Components.lastResult</code> は一般的に、「成功」コードを返す XPCOM メソッドの結果のテストにのみ役立ちます。というのは、失敗した結果コードは XPConnect が例外に変換して、呼び出し元の JavaScript メソッドへ投げるからです。ほとんどのインターフェースは 1 つの成功コード (<code>NS_OK</code>) だけを返すので、<code>Components.lastResult</code> はほとんど必要ありません。 -</p><p><code>Components.lastResult</code> が利用される場合は、対象の呼び出しの後テストのためにローカル変数に保存することが、複数のテストを <code>Components.lastResult</code> に対して行うよりも適当です。多くの「Components」プロパティとメソッドは XPConnect で実装されていて、それに続く <code>Components.lastResult</code> 呼び出しは対象とした呼び出しでなく「暗黙的な」 XPConnect 呼び出しの結果を返すかもしれないからです。 -</p> -<h2 id="実例"> 実例 </h2> -<p>In the following example, the local variable <code>i</code> contains the actual result returned by <code>bar()</code> (assuming that <code>bar()</code> is called via XPConnect), and <code>Components.lastResult</code> contains the success code returned by <code>bar()</code>. -</p> -<pre class="eval">// Given that foo.bar is a method that might return -// the success codes NS_OK, '5', and '6' OR some error code... -try -{ - var i = foo.bar(); - - switch (Components.lastResult) - { - case Components.results.NS_OK: - // NS_OK is good! - break; - case 5: - // do something with 5 here - break; - case 6: - // do something with 6 here - break; - default: - // this was a success code we did not expect. Bad component! - break; - } - // and so on.... -} -catch (e) -{ - // the call threw an exception or a native component returned - // a failure code! - if (e instanceof Components.interfaces.nsIXPCException) - { - // we might do something interesting here with the exception object - var rv = e.result; - } - else - { - // if we don't know how to handle it then rethrow - throw e; - } -} -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.manager/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.manager/index.html deleted file mode 100644 index 29aea92083..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.manager/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Components.manager -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.manager -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.manager ---- -<p> -</p><p><code>Components.manager</code> はグローバルなネイティブコンポーネントマネージャーサービスの便利な反映です。<a href="ja/NsIComponentManager">nsIComponentManager</a> インターフェースのスクリプト可能なメソッドはこのオブジェクトで直接呼び出しできます。 -</p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.results/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.results/index.html deleted file mode 100644 index 129d147668..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.results/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Components.results -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.results -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.results ---- -<p> -</p><p><code>Components.results</code> は、<code><a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/src/xpc.msg" rel="custom">js/src/xpconnect/src/xpc.msg</a></code> にあるマクロの最初のパラメータとしてリストされた名前のプロパティを持つ、読み出し専用オブジェクトです。各オブジェクトの値はそのコンスタントの値に対応しています。 -</p> -<h2 id="はじめに"> はじめに </h2> -<p><code>Components.results</code> は、よく知られた XPCOM の結果コードの名前をプロパティに持つオブジェクトで、それぞれの値は対応する結果コードに対応しています。このオブジェクトのプロパティは、未知の nsresult 変数をテストするのに利用したり、失敗を示すために「投げ」たりできます。 -</p> -<pre class="eval"> if(something_unexpected_happened) - throw Components.results.NS_ERROR_UNEXPECTED; -</pre> -<p><code>Components.results</code> オブジェクトのプロパティは <code><a href="ja/Core_JavaScript_1.5_Reference/Statements/for...in">for...in</a></code> ループを使って列挙できます。 -</p> -<h2 id="使い方"> 使い方 </h2> -<h3 id="nsISupports_の実装"> <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> の実装 </h3> -<p>The standard <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> is usually implemented in JavaScript by using <code>Components.results</code> to get a failure return value if <code> does not implement the given interface. Note the common use of an abbreviation for <code>Components.results</code>, <code>Cr</code>: -</p> -<pre class="eval">const Ci = Components.interfaces, Cr = Components.results; - -function Class() -{ - /* ... */ -} -Class.prototype = -{ - /* ... */ - QueryInterface: function(id) - { - if (id.equals(Ci.IMyInterface)) - return this; - throw Cr.NS_ERROR_NO_INTERFACE; - } -}; -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.returncode/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.returncode/index.html deleted file mode 100644 index ad0542e783..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.returncode/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Components.returnCode -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.returnCode -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.returnCode ---- -<p> -</p><p><code>Components.returnCode</code> は、<code>return</code> 命令による戻り値に加えて <a href="ja/XPCOM">XPCOM</a> の結果コードを保持できるプロパティです。 -</p> -<div class="warning"> -<p>Note that <code>Components.returnCode</code> is currently non-functional due to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=287107" title='FIXED: xpcwrappedjsclass.cpp rev 1.73 regressed "return" of NS_COMFALSE (Components.returnCode)'>バグ 287107</a>. This problem was introduced in Mozilla 1.4. -</p> -</div> -<h2 id=".E4.BD.BF.E3.81.84.E6.96.B9" name=".E4.BD.BF.E3.81.84.E6.96.B9"> 使い方 </h2> -<p><code>Components.returnCode</code> は、JavaScript メソッドが特定の <code>nsresult</code> コードを返すことを、そのメソッドの XPCOM 呼び出し元へ示すのに利用できるプロパティです。 -</p><p>一般的には、<a href="ja/XPConnect">XPConnect</a> は JavaScript コードが <code>nsresult</code> コードを心配する必要のないようにうまく働きます。デフォルトでは、JavaScript メソッドの結果が成功だと、XPConnect は結果コード <code>NS_OK</code> を呼び出し元へ返します。もし JavaScript コードが失敗のシグナルを送る必要がある場合は、例外を投げることで果たします。しかし、成功コードの返り値を規定した XPCOM インターフェースがごくわずかに存在します。<code>Components.returnCode</code> はそれら稀なインターフェースを JavaScript で実装できるようにするために存在します。 </p> -<h2 id=".E5.AE.9F.E4.BE.8B" name=".E5.AE.9F.E4.BE.8B"> 実例 </h2> -<pre class="eval">var foo = { - bar: function(i) { - if (yada_yada) - Components.returnCode = 5; - - return i * 2; - } -}; -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.stack/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.stack/index.html deleted file mode 100644 index f5b60e5c92..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.stack/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Components.stack -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.stack -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.stack ---- -<p> -</p><p><code>Components.stack</code> は、現在の JavaScript コールスタックのスナップショットを表す <a href="ja/NsIStackFrame">nsIStackFrame</a> (<a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nsIException.idl#50" rel="custom">IDL 定義</a>) 型の読み出し専用プロパティです。これは様々な診断目的で利用できます。 -</p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html deleted file mode 100644 index 6c0cd7bf78..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Components.utils.evalInSandbox -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.evalInSandbox -tags: - - Add-ons - - Developing Mozilla - - Extensions - - JavaScript - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.evalInSandbox ---- -<p> -</p> -<h3 id="はじめに"> はじめに </h3> -<p>制限付き特権を持つ環境下で <a href="ja/JavaScript">JavaScript</a> のコードを評価したい場合があるかもしれません。<a href="ja/Firefox_1.5">Firefox 1.5</a> (Gecko 1.8) 以降にはこのための API が存在します。それにはそのコンテキスト内でコードを作成し、評価できる「サンドボックス (sandbox)」という概念が含まれています。このメソッドを用いて評価されるコードは常に普通のウェブページと同様の制限付き特権を持つ環境下で評価されます。 -</p> -<h4 id="使用法"> 使用法 </h4> -<p>evalInSandbox を使用するには、まず <code>Components.utils.Sandbox</code> というコンストラクタを用いてサンドボックスオブジェクトを作成する必要があります。サンドボックスは主要な URI で初期化しなければなりません。この URI は同一生成元 (same origin) セキュリティチェックに使用されます。例えば、<code><span>http://www.example.com/</span></code> という URI を渡すと、このサンドボックスを用いて評価されるコードは <span>http://www.example.com</span> からのデータにアクセスできるようになります。ウェブページの JavaScript から <code><a href="ja/DOM/document.domain">document.domain</a></code> をセットして同一生成元セキュリティチェックを変更することができるため、DOM window オブジェクトをサンドボックスのコンストラクタに渡してしまうこともできます。 -</p> -<pre>// 主要な URI を渡してサンドボックスを作成 -var s = Components.utils.Sandbox("http://www.example.com/"); -// サンドボックスオブジェクトは実行するスクリプトに対して -// グローバルスコープを持つ -s.y = 5; -var result = Components.utils.evalInSandbox("x = y + 2; x + 3", s); -// result は 10、s.x は 7 となる - -s.foo = Components; -// この場合は "Permission Denied" というエラーが生じる -Components.utils.evalInSandbox("foo.classes", s); -</pre> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.forcegc/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.forcegc/index.html deleted file mode 100644 index cafc9f1ca9..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.forcegc/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Components.utils.forceGC -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.forceGC -tags: - - NeedsContent - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.forceGC ---- -<p>このメソッドはスクリプトにガベージコレクションサイクルを強制します。 JavaScript ヒープがある大きさを超えると Mozilla JavaScript エンジンは自動的にガベージコレクションを実行するでしょう。もっとも、この機構は JS オブジェクトにぶら下がる ネイティブ (C++) XPCOM オブジェクトを把握してはいません。多くの場合、 JavaScript アプリケーションは巨大な XPCOM (のツリー) を参照している JavaScript オブジェクトについての内部情報を持っており、いつ参照しなくなるかを知っています。この場合 JavaScript からガベージコレクションサイクルを強制できることが重要になることがあります。</p> - -<p>ガベージコレクションを強制することは、他にも<a href="ja/Components.utils.getWeakReference">弱い JavaScript 参照</a>のハッシュからの死んだ参照 (<span style="color: green;">dead reference</span>)をクリーニングする前です。</p> - -<p>このメソッドを使う人はガベージコレクションが非常に負担の大きい (<span style="color: green;">expensive</span>)操作で、絶対必要だと<strong>知っている</strong> 時のみ使用すべきだとことに注意してください。</p> - -<div class="note"><strong>注</strong>: <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIDOMWindowUtils#garbageCollect()">nsIDOMWindowUtils.garbageCollect()</a></code> は同様の機能を提供しますが、 JavaScript エンジンのガベージコレクターに加えてサイクルコレクターも起動します。これにより、ガベージコレクターに依存するテストケースなど、 JavaScript オブジェクトのサイクルを構築する XPCOM コンポーネントも回収されることが重要になるかもしれないと分かるでしょう。</div> - -<p><code>UniversalXPConnect</code> 特権が必要です。</p> - -<p>もし、実行されている JavaScript コードがない状態で、将来的にガベージコレクションを起こすことをスケジューリングしたい場合は、代わりに <a href="/en/Components.utils.schedulePreciseGC" title="en/Components.utils.schedulePreciseGC"><code>Components.utils.schedulePreciseGC()</code></a> を使用することができます。</p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html deleted file mode 100644 index 7d07c19b32..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Components.utils.getWeakReference -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference -tags: - - XPCOM - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference ---- -<p>このメソッドは <a href="ja/Firefox_3">Firefox 3</a> で導入され、オブジェクトの弱い参照 (<span style="color: green;">weak reference</span>)を得るために使います。オブジェクトの参照を得るには、結果のオブジェクトに対して <code>get()</code> を実行する必要があります。</p> - -<p>加えて、 <code>get()</code> が成功しても、オブジェクトが有効であるとは限りません。単にまだガベージコレクトされていないからかもしれないからです。オブジェクトが本当に欲しいものであるかを確認するには、 (DOM ノードの <a href="/ja/docs/Web/API/Node/parentNode" title="指定されたノードの DOM ツリー内の親ノードを返します。"><code>Node.parentNode()</code></a> のように) 他の角度からチェックする必要があります。</p> - -<h3 id="文法">文法</h3> - -<pre>weakRef = Components.utils.getWeakReference(<em>obj</em>); -</pre> - -<h4 id="引数">引数</h4> - -<dl> - <dt><code>obj</code></dt> - <dd>弱い参照を得ようとするオブジェクト。</dd> -</dl> - -<div class="note"> -<p><strong>注:</strong> <span title="(Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)">Gecko 11.0</span> では、 このメソッドは <code>obj</code> が <code>null</code> の場合に例外を投げるように変更されました。 <span title="(Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9)">Gecko 12.0</span> で、暗黙に失敗するという以前の動作に戻されました。</p> -</div> - -<h3 id="例">例</h3> - -<p>こちらの例では、ウィンドウへの弱い参照を把握します。そして後から、配列の中から一致するものを探して使用します。</p> - -<pre>var arr = []; - -arr.push(Cu.getWeakReference(window)); - -// この部分は他のブロックで実行されます。 -for (var i=0; i<arr.length; i++) { - if (arr[i].get() == window) { - // ウィンドウが見つかった - break; - } -} -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.import/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.import/index.html deleted file mode 100644 index 68cf7c5539..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.import/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Components.utils.import -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.import -tags: - - NeedsContent - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.import ---- -<p>このメソッドは <a href="/ja/Firefox_3_for_developers" title="ja/Firefox_3_for_developers">Firefox 3</a> で導入され、異なるスコープ間でコードを簡単に共有するのに使われます。例えば、自分のコンポーネントの中で、コンポーネント登録の長い定型文をコピー&ペーストすることを避けるために <a href="/ja/XPCOMUtils.jsm" title="ja/XPCOMUtils.jsm">XPCOMUtils.jsm</a> をインポートすることができます。</p> - -<p>詳細は、<a href="/ja/JavaScript_code_modules/Using" title="ja/Using_JavaScript_code_modules">JavaScript コードモジュールの利用</a> を参照してください。</p> - -<div class="note"> -<p><strong>注記:</strong> <span title="(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)">Gecko 2.0</span> 以前、JavaScript コードモジュールは <strong>file:</strong> URL または <strong>resource:</strong> URL のみでしか読み込めませんでした。<span title="(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)">Gecko 2.0</span> で <strong>chrome:</strong> URL からの読み込みに対応しました。JAR アーカイブ内にあっても使用できます。</p> -</div> - -<p><span id="Syntax"></span></p> - -<h3 id="Syntax" name="Syntax">構文</h3> - -<pre class="eval">Components.utils.import<em>(url</em> [, <em>scope</em>]); - -// 上記のコードでは jslint などの構文チェックツールコンパイラエラーが報告される場合は以下のように書けます。 - -Components.utils["import"](<em>url </em>[, <em>scope</em>]);</pre> - -<p><span id="Parameters"></span></p> - -<h3 id="Parameters" name="Parameters">引数</h3> - -<dl> - <dt><code>url</code></dt> - <dd>読み込まれるスクリプトの URL の文字列。URL は、ディスク上のファイルを指さなくてはなりません。JAR ファイル内を指すことがあります。</dd> - <dt><code>scope</code></dt> - <dd>スクリプト上にインポートされる任意のオブジェクト。省略した場合、グローバルオブジェクトが使用されます。</dd> - <dd> - <div class="warning"> - <p>Under Boot2Gecko, the scope is not optional. If your code is meant to work on all platforms, you should always provide a scope.</p> - - <p>In case of doubt, <code>this</code> is generally a good scope.</p> - </div> - </dd> - <dt>return value</dt> - <dd>the module's global object.<br> - use of the return value is discouraged since it grants access to the module's internal properties which are not part of its public API.</dd> -</dl> - -<p>読み込んだファイル内でエラー (構文エラーなど) が発生した場合、import が例外を投げます。</p> - -<p><span id="Example"></span></p> - -<h3 id="Example" name="Example">例</h3> - -<pre class="eval">Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); -</pre> - -<p><span id="Difference_from_mozIJSSubScriptLoader"></span></p> - -<h3 id="Difference_from_mozIJSSubScriptLoader" name="Difference_from_mozIJSSubScriptLoader">mozIJSSubScriptLoader との違い</h3> - -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIJSSubScriptLoader" title="">mozIJSSubScriptLoader</a></code> との違い:</p> - -<ul> - <li>異なる場所から同じコードをインポート/読み込みした時の挙動 - <ul> - <li>サブスクリプトローダ (<span style="color: green;">subscript loader</span>) は、特定のコードが実行される度毎に 呼び出し元 (<span style="color: green;">caller</span>) のグローバルオブジェクトで評価します。</li> - <li><code>Components.utils.import</code> はそれぞれのモジュールのコードを一度だけ、自分自身のスコープの中で評価します</li> - </ul> - - <p>例:</p> - - <pre class="eval">var scope1 = {}, scope2 = {}; -Components.utils.import("resource://gre/modules/JSON.jsm", scope1); -Components.utils.import("resource://gre/modules/JSON.jsm", scope2); -assert(scope2.XPCOMUtils === scope1.XPCOMUtils); -</pre> - - <p>...<code>true</code> を返します。対して:</p> - - <pre class="eval">var someURL = "resource://gre/modules/JSON.jsm"; -var obj1 = {}, obj2 = {}; -var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] - .getService(Components.interfaces.mozIJSSubScriptLoader); -loader.loadSubScript(someURL, obj1); -loader.loadSubScript(someURL, obj2); -assert(obj2 === obj1); -</pre> - - <p>..<code>false</code> を返します。</p> - - <p>これは、異なるスコープで実行している JS 間での効果的なコード (とデータ?) の共有に <code>Components.utils.import</code> がより適している事を意味しています。</p> - </li> -</ul> - -<p><span id="Additional_Resources"></span></p> - -<h3 id="Additional_Resources" name="Additional_Resources">追加リソース</h3> - -<article class="approved text-content"> -<div class="boxed translate-rendered"> -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/Components.utils">Components.utils</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=238324" title="FIXED: Implement JavaScript code-sharing module system">バグ 238324</a></li> - <li>The documentation in <a href="https://dxr.mozilla.org/mozilla-central/source/js/xpconnect/idl/xpccomponents.idl" rel="custom">xpccomponents.idl</a></li> - <li>The tests in <code><a href="https://dxr.mozilla.org/mozilla-central/source/js/xpconnect/tests/unit/" rel="custom">js/xpconnect/tests/unit/</a></code></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using#Importing_CommonJS_modules">Importing SDK/CommonJS modules into other code</a></li> -</ul> -</div> -</article> - -<div class="ckeditor-container editor-container dirty"> -<div class="editor"> -<div style="height: 168px;"> -<div style="border: 1px solid rgb(182, 182, 182); width: 503px; position: fixed; top: 0px;"> </div> -</div> -</div> -</div> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.reporterror/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.reporterror/index.html deleted file mode 100644 index 56489ade2e..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.reporterror/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Components.utils.reportError -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.reportError -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.reportError ---- -<p><code>Components.utils.reportError</code> は、<a href="ja/Error_Console">エラーコンソール</a>に JavaScript の Error オブジェクトを送り、プログラムの実行に戻ります。例外を「食べて」おきながらも、例外をコンソールに送りたい例外処理ブロックで用います。</p> - -<p>これは必ずパラメータを 1 つ用いて呼び出します。通常、このパラメータは例外ハンドラが受け取ったオブジェクトです。それが JavaScript のエラーオブジェクトでなければ、パラメータは文字列に変換され、新しくエラーとして送られます。つまり、<code>Components.utils.reportError</code> を用いてデバッグメッセージをエラーコンソールに送ることができるということです。<a href="ja/DOM/window.dump">dump()</a> を用いるとネイティブコンソールにメッセージを出力できるのと同じようなものです。</p> - -<p>しかしながらログをとるには <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService" title="">nsIConsoleService</a></code> を使用すべきです。これは <code>reportError</code> とは異なり、メッセージを通常の深刻度で記録するためです。</p> - -<pre class="eval">function myDump(aMessage) { - var consoleService = Components.classes["@mozilla.org/consoleservice;1"] - .getService(Components.interfaces.nsIConsoleService); - consoleService.logStringMessage("My component: " + aMessage); -} -</pre> - -<p>Firefox 3: エラーコンソールにはデフォルトではクロームエラーが表示されません。それらを表示するには、 'javascript.options.showInConsole' の設定を true に設定するか、代わりに <a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService" title="en/Console service">nsConsoleService </a>を使用してメッセージを表示します。</p> - -<p>Firefox 4: このバージョンでは、デフォルトで 'javascript.options.showInConsole' の設定が true に設定されています。</p> - -<h3 id=".E4.BE.8B" name=".E4.BE.8B">例</h3> - -<p>例外ハンドラでの使用:</p> - -<pre class="eval">try { - this.could.raise.an.exception; -} catch(e) { - Components.utils.reportError(e); // エラーを送り、実行を続ける -} -</pre> - -<p>エラーコンソールへのデバッグメッセージの出力:</p> - -<pre class="eval">Components.utils.reportError("init() called"); -</pre> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils/index.html deleted file mode 100644 index 6a581462b2..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Components.utils -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils ---- -<p> -</p><p><code>Components.utils</code> は便利でありながらも必須というわけではない、さまざまな XPConnect の機能のまとまりです。そのインタフェースは <code><a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/idl/xpccomponents.idl" rel="custom">js/src/xpconnect/idl/xpccomponents.idl</a></code> で定義されています。オブジェクトには今のところ次のメンバがあります。 -</p> -<table class="fullwidth-table"> -<tbody><tr> -<th>プロパティ</th> -<th>説明</th> -</tr> -<tr> -<td><a href="ja/Components.utils.evalInSandbox">evalInSandbox</a></td> -<td>サンドボックスで JavaScript コードを実行する。普通、制限付き特権を持つ環境下でコードを実行するのに使用する。</td> -</tr> -<tr> -<td><code><a href="ja/Components.utils.forceGC">forceGC</a></code></td> -<td> ガベージコレクションサイクルを強制する。</td> -</tr> -<tr> -<td><code><a href="ja/Components.utils.getWeakReference">getWeakReference</a></code></td> -<td> 渡されたオブジェクトの弱い参照を得る。</td> -</tr> -<tr> -<td><code><a href="ja/Components.utils.import">import</a></code></td> -<td> JS のモジュールを、スコープを共有することなく現在のスクリプトに読み込む -</td></tr> -<tr> -<td><a href="ja/Components.utils.lookupMethod">lookupMethod</a></td> -<td>XPCOM オブジェクトのネイティブな(つまり、インタフェースで宣言されている)メソッドやプロパティを探す。<a href="ja/XPCNativeWrapper">XPCNativeWrapper</a> と同様の目的を果たす。</td> -</tr> -<tr> -<td><a href="ja/Components.utils.reportError">reportError</a></td> -<td>JavaScript の Error オブジェクトを JavaScript コンソールに送る。</td> -</tr><tr> -<td><a href="ja/Components.utils.Sandbox">Sandbox</a></td> -<td><code>evalInSandbox</code> で使用するサンドボックス (sandbox) オブジェクトを作成する。</td> -</tr> -</tbody></table> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components_object/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components_object/index.html deleted file mode 100644 index 7bf0a7f0d0..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/components_object/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Components object -slug: Mozilla/Tech/XPCOM/Language_Bindings/Components_object -tags: - - DOM - - Gecko - - Gecko DOM Reference - - 'XPCOM:Language Bindings' - - XPConnect - - 要更新 -translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components_object ---- -<p><code>Components</code> オブジェクトは、<a href="/ja/docs/XPConnect">XPConnect</a> 機能が <a href="/ja/docs/JavaScript">JavaScript</a> へ反映されるのを仲介するオブジェクトです。<code>Components</code> オブジェクトは、実際には、XPConnect を利用するトップレベルのオブジェクトとして、JavaScript へ反映される {{Source("js/src/xpconnect/idl/xpccomponents.idl", "nsIXPCComponents")}} インタフェースのネイティブインスタンスです。</p> -<p><code>Components</code> のプロパティの一部は高度な特権を必要とするため、Web ページ上では機能しません。</p> -<p><code>Components</code> オブジェクトは次のメンバを持ちます。</p> -<table class="fullwidth-table"> - <tbody> - <tr> - <th>メンバ</th> - <th>説明</th> - </tr> - <tr> - <td><a href="/ja/docs/Components.classes"><code>classes</code></a></td> - <td>ContractID によるクラスの配列</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.classesByID"><code>classesByID</code></a></td> - <td>CID によるクラスの配列</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.Constructor"><code>function Object() { [native code] }</code></a></td> - <td>コンポーネントのコンストラクタのためのコンストラクタ</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.Exception"><code>Exception</code></a></td> - <td>XPConnect の例外のためのコンストラクタ</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.ID"><code>ID</code></a></td> - <td>XPCOM nsID のためのコンストラクタ</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.interfaces"><code>interfaces</code></a></td> - <td>インタフェース名によるインタフェースの配列</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.interfacesByID"><code>interfacesByID</code></a></td> - <td>IID によるインタフェースの配列</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.isSuccessCode"><code>isSuccessCode</code></a></td> - <td>与えられた結果コードが成功かどうかを判別するための関数</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.lastResult"><code>lastResult</code></a></td> - <td>直前の XPConnect 呼び出しの結果コード</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.manager"><code>manager</code></a></td> - <td>グローバル XPCOM コンポーネントマネージャ</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.results"><code>results</code></a></td> - <td>名前による既知の結果コードの配列</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.returnCode"><code>returnCode</code></a></td> - <td>現在の呼び出しの未決定の結果</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.stack"><code>stack</code></a></td> - <td>現在の JavaScript のコールスタック</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.utils"><code>utils</code></a></td> - <td>いくつかの便利な機能へのアクセスを提供します。</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.utils.evalInSandbox"><code>utils.evalInSandbox</code></a></td> - <td>JavaScript コードをサンドボックス内で実行。通常は限られた特権でコードを実行するときに使われます。</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.utils.forceGC"><code>utils.forceGC</code></a></td> - <td>{{Gecko_minversion_inline(1.9)}} ガベージコレクションサイクルを強制します。</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.utils.getWeakReference"><code>utils.getWeakReference</code></a></td> - <td>{{Gecko_minversion_inline(1.9)}} 渡されたオブジェクトの弱い参照を取得します。</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.utils.import"><code>utils.import</code></a></td> - <td>{{Gecko_minversion_inline(1.9)}} JavaScript モジュールを、スコープを共有せずに現在のスクリプトに読み込みます。</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.utils.lookupMethod"><code>utils.lookupMethod</code></a></td> - <td>XPCOM オブジェクトのネイティブの (例えばインタフェースで宣言された) メソッドやプロパティを参照します。<a href="/ja/docs/XPCNativeWrapper"><code>XPCNativeWrapper</code></a> と同じ役割を果たします。</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.utils.reportError"><code>utils.reportError</code></a></td> - <td>JavaScript エラーオブジェクトを <a href="/ja/docs/Error_Console">エラーコンソール</a> に出力します。</td> - </tr> - <tr> - <td><a href="/ja/docs/Components.utils.Sandbox"><code>utils.Sandbox</code></a></td> - <td><code>evalInSandbox</code> で利用するサンドボックスオブジェクトを生成します。</td> - </tr> - </tbody> -</table> -<p><span class="comment">EDITORS! please keep descriptions of the following properties in sync with <a href="/ja/docs/Components.utils">Components.utils</a> page.</span></p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/index.html deleted file mode 100644 index f576a1cbb6..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: XPCOM 言語バインディング -slug: Mozilla/Tech/XPCOM/Language_Bindings -translation_of: Mozilla/Tech/XPCOM/Language_Bindings ---- -<p><strong>XPCOM 言語バインディング</strong>は、以下の目的のために特定の言語と <a href="/ja/XPCOM" rel="internal" title="ja/XPCOM">XPCOM</a> との橋渡しを行います。</p> - -<ul> - <li>他の言語から XPCOM オブジェクトへのアクセス方法を提供します(「アクセス」とは、 XPCOM オブジェクトの読み込み・書き込み・生成・オブジェクトのメソッド呼び出しを意味します)。</li> - <li>他の言語で書かれた XPCOM オブジェクトのモジュールを「露出」させます。モジュールは XPCOM バインディングが存在する言語すべてからアクセスすることができるようになります。</li> -</ul> - -<p>XPCOM レイヤー自身は C/C++ で書かれているため、 XPCOM API は C/C++ でサンドボックスの外側から呼び出すことができます。また、他の言語から XPCOM API を利用できるようにするためには別のレイヤーが必要になります。</p> - -<p>そのようなバインディング層が様々な言語に対して提供されています。</p> - -<ul> - <li><strong>JavaScript</strong>: <a href="/ja/XPConnect" rel="internal" title="ja/XPConnect">XPConnect</a> (これは Firefox に含まれています。 XUL アプリケーションで利用されています)</li> - <li><strong>Java</strong>: <a href="/ja/JavaXPCOM" rel="internal" title="ja/JavaXPCOM">JavaXPCOM</a> (これは Firefox には含まれていませんが、XULRunner の標準のビルドには梱包されており、また Eclipse のアプリケーションで利用されています)</li> - <li><strong>Python</strong>: <a href="/ja/PyXPCOM" rel="internal" title="ja/PyXPCOM">PyXPCOM</a> (これは標準のビルドには含まれていませんが、 ActiveState Komodo 製品では利用されています)</li> - <li><strong>Perl</strong>: <a href="/ja/PlXPCOM" rel="internal" title="ja/PlXPCOM">PlXPCOM</a></li> - <li><strong>Ruby</strong>: <a href="/ja/RbXPCOM" rel="internal" title="ja/RbXPCOM">RbXPCOM</a></li> -</ul> - -<p>利用法が必要な場合は、それぞれのバインディングのページを参照してください。</p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html deleted file mode 100644 index 6d9b1ca50b..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Development -slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Development -tags: - - JavaXPCOM - - 'XPCOM:Language Bindings' -translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Development ---- -<p> -</p> -<h3 id=".E3.82.BD.E3.83.BC.E3.82.B9" name=".E3.82.BD.E3.83.BC.E3.82.B9"> ソース </h3> -<p>最新のソースコードは、Mozilla trunk上の {{ Source("extensions/java/xpcom") }} ディレクトリ内にあります。 -</p> -<h3 id=".E6.A7.8B.E7.AF.89.E6.89.8B.E9.A0.86" name=".E6.A7.8B.E7.AF.89.E6.89.8B.E9.A0.86"> 構築手順 </h3> -<p>ビルドの手順はここにあります: <a href="ja/Building_JavaXPCOM">Building JavaXPCOM</a>。 -</p> -<h3 id=".E3.83.90.E3.82.B0" name=".E3.83.90.E3.82.B0"> バグ </h3> -<p>すべての JavaXPCOM バグは、 <a class="external" href="http://bugzilla.mozilla.org/">Bugzilla</a>内で、"Core" プロダクトと "Java to XPCOM Bridge" コンポーネントを使って記録されています。 -</p> -<ul><li> 公開されている JavaXPCOMバグの<a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&product=Core&component=Java+to+XPCOM+Bridge&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&chfieldto=Now">一覧</a> -</li><li> 新しい JavaXPCOMバグを<a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=Java+to+XPCOM+Bridge&rep_platform=All&op_sys=All">開く</a> -</li><li> 最近1ヶ月の<a class="external" href="http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=all&branch=HEAD&branchtype=match&dir=mozilla%2Fextensions%2Fjava%2Fxpcom&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=month&mindate=&maxdate=&cvsroot=%2Fcvsroot">チェックイン</a> -</li></ul> -{{ languages( { "en": "en/JavaXPCOM/Development", "zh-cn": "cn/JavaXPCOM/\u5f00\u53d1" } ) }} diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html deleted file mode 100644 index d523b94ce1..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html +++ /dev/null @@ -1,156 +0,0 @@ ---- -title: Embedding Mozilla in a Java Application using JavaXPCOM -slug: >- - Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM -tags: - - Embedding Mozilla - - JavaXPCOM - - 'XPCOM:Language Bindings' -translation_of: Archive/Mozilla/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM ---- -<p> -</p><p><a href="ja/XULRunner">XULRunner</a>には<a href="ja/JavaXPCOM">JavaXPCOM</a>が標準搭載されており、これは、JavaのコードとXPCOMの相互利用を可能にするものです。この記事で示すとおり、JavaでのXPCOMオブジェクトの操作は、C++の場合とそれほど大きな差はありません。 -</p> -<h4 id="必要な環境"> 必要な環境 </h4> -<ul><li> Java 1.4.2 以降 -</li><li> <a href="ja/XULRunner">XULRunner</a> 1.8.0.1 以降 -</li></ul> -<h4 id="組み込み"> 組み込み </h4> -<p>Mozilla を Java アプリケーションに埋め込むためには、<tt>xulrunner/sdk/lib</tt>フォルダーにある<tt>MozillaInterfaces.jar</tt>というライブラリをclasspathに追加する必要があります。このライブラリは Mozilla をブートストラップし、XPCOM メソッドを呼び出すために必要なインターフェースを提供します。 -</p><p>組み込みを開始するために、<a href="https://dxr.mozilla.org/mozilla-central/source/extensions/java/xpcom/interfaces/Mozilla.java" rel="custom">Mozilla</a>共有クラスの提供するメソッドを使用します。はじめに、Java アプリケーションは適切な XULRunner installationを見つける必要があります。 -</p> -<pre class="eval"> Mozilla mozilla = Mozilla.getInstance(); - GREVersionRange[] range = new GREVersionRange[1]; - range[0] = new GREVersionRange("1.8.0", true, "1.9", false); - <span>// work with trunk nightly version 1.9a1 ^^</span> - - try { - File grePath = Mozilla.getGREPathWithProperties(range, null); - LocationProvider locProvider = new LocationProvider(grePath); - mozilla.initEmbedding(grePath, grePath, locProvider); - } catch (FileNotFoundException e) { - <span>// この例外は greGREPathWithProperties が GRE を見つけられなかったときに送出されます</span> - } catch (XPCOMException e) { - <span>// この例外は initEmbedding が失敗したときに送出されます</span> - } -</pre> -<p><code>LocationProvider</code>はJavaアプリケーションによって提供されるクラスです。これはインターフェース<a href="https://dxr.mozilla.org/mozilla-central/source/extensions/java/xpcom/interfaces/IAppFileLocProvider.java" rel="custom">IAppFileLocProvider</a>を実装しているもので、 -and tells XPCOM where to find certain files and directories. -</p><p><code>initEmbedding</code>メソッドは embedding process を開始するもので、Java アプリケーションと XPCOM や Mozilla の連携を可能にするものです。ひとたび Java アプリケーションが Mozilla を使う作業を終えたとき、それは embedding process を terminate する必要があります。 -</p> -<pre class="eval"> try { - mozilla.termEmbedding(); - } catch (XPCOMException e) { - <span>// この例外は termEmbedding が失敗したときに送出されます</span> - } -</pre> -<h4 id="XPCOMオブジェクトを利用する"> XPCOMオブジェクトを利用する </h4> -<p>Mozilla が組み込まれると、Java アプリケーションは XPCOM オブジェクトを利用することができるようになります。<code>Mozilla</code> クラスはこれの手助けをするメソッドを提供しており、たとえば、<code>getServiceManager</code>、<code>getComponentManager</code>、<code>newLocalFile</code>があります。JavaXPCOM により、 Java アプリケーションがXPCOM オブジェクトを取得し、メソッドを呼び出すのに加え、Java クラスオブジェクトを XPCOM メソッドに渡すことも可能になります。 -</p><p>例えば: -</p> -<pre class="eval"> Mozilla mozilla = Mozilla.getInstance(); - WindowCreator creator = new WindowCreator(); <span>// nsIWindowCreator を実装</span> - - nsIServiceManager serviceManager = mozilla.getServiceManager(); - - nsIWindowWatcher windowWatcher = (nsIWindowWatcher) serviceManager - .getServiceManagerByContractID(NS_WINDOWWATCHER_CONTRACTID, - nsIWindowWatcher.NS_IWINDOWWATCHER_IID); - windowWatcher.setWindowCreator(creator); -</pre> -<p>この例では、<code>nsIWindowCreator</code>インターフェースを実装した Java のクラスである<code>WindowCreator</code>が存在し、それを Mozilla に登録しようとしています。そのために、まず service manager を取得するのですが、それは Mozilla のwindow watcherのリファレンスにある方法によります。 -</p><p>別の例: (<a class="external" href="http://rayh.co.uk">rayh.co.uk</a>にあるもの) -</p> -<pre class="eval"> // linux 上ではこのコードが実行されるより前に gtk が初期化されている必要があることに注意 - Mozilla moz = Mozilla.getInstance(); - - // 次に XUL アプリケーションを実行するために、XPCOMのservice managerのインスタンスを取得する必要がある - nsIServiceManager serviceManager = moz.getServiceManager(); - - // 次に @mozilla.org/toolkit/app-startup;1 サービスを取得する必要がある - nsIAppStartup appStartup = (nsIAppStartup)serviceManager.getServiceByContractID("@mozilla.org/toolkit/app-startup;1", nsIAppStartup.NS_IAPPSTARTUP_IID); - - // 上のものへの nsIWindowWatcher インターフェースを取得する - nsIWindowCreator windowCreator = (nsIWindowCreator)appStartup.queryInterface(nsIWindowCreator.NS_IWINDOWCREATOR_IID); - - // window watcher サービスを取得する - nsIWindowWatcher windowWatcher = (nsIWindowWatcher)serviceManager.getServiceByContractID("@mozilla.org/embedcomp/window-watcher;1", nsIWindowWatcher.NS_IWINDOWWATCHER_IID); - - // window creator をsetする (from step 6) - windowWatcher.setWindowCreator(windowCreator); - - // Create the root XUL window を作成: - nsIDOMWindow win = windowWatcher.openWindow(null, "<a class=" external">chrome://your-app/content/window.xul</a>", "mywindow", "chrome,resizable,centerscreen", null); - - // これを active window にする - windowWatcher.setActiveWindow(win); - - // application を xpcom/xul に手渡し、ここでブロックする: - appStartup.run(); -</pre> -<p>これは動作する LocationProvider の例です : -</p> -<pre class="eval"> public class LocationProvider implements IAppFileLocProvider { -</pre> -<pre class="eval"> private final File libXULPath; - int counter = 0; - - public LocationProvider(File grePath) { - this.libXULPath = grePath; - } -</pre> -<pre class="eval"> public File getFile(String aProp, boolean[] aPersistent) { - File file = null; - if (aProp.equals("GreD") || aProp.equals("GreComsD")) { - file = libXULPath; - if (aProp.equals("GreComsD")) { - file = new File(file, "components"); - } - } - else if (aProp.equals("MozBinD") || - aProp.equals("CurProcD") || - aProp.equals("ComsD") || - aProp.equals("ProfD")) - { - file = libXULPath; - if (aProp.equals("ComsD")) { - file = new File(file, "components"); - } - } - return file; - } -</pre> -<pre class="eval"> public File[] getFiles(String aProp) { - File[] files = null; - if (aProp.equals("APluginsDL")) { - files = new File[1]; - files[0] = new File(libXULPath, "plugins"); - } - return files; - } -</pre> -<p><br> -</p> -<h4 id="XPCOM_の_UI_を別のスレッドから呼び出す"> XPCOM の UI を別のスレッドから呼び出す </h4> -<p>appStartup.run() はメインのイベントループを始動し、アプリケーションが終了するまでそこに留まります。これ以降の場所で XPCOM とcommunicateするためには、nsIProxyObjectManager を使用する必要があります。 -</p><p>上の例に引き続き新しいウインドウを作成するためには、このようにします : -</p> -<pre class="eval"> // まず、event queue service を取得します。これは、XPCOM の全てのイベントキューを処理するものです。 - nsIEventQueueService eventQueueServive = (nsIEventQueueService)serviceManager.getServiceByContractID("@mozilla.org/event-queue-service;1",nsIEventQueueService.NS_IEVENTQUEUESERVICE_IID); - - // 次に、ウインドウを開くために、UI スレッドを取得します。 - // nsIEventQueueService が所有するstatic変数がUIイベント用の特別なキューを所有しています。 - nsIEventQueue eventQueue = eventQueueServive.getSpecialEventQueue(nsIEventQueueService.UI_THREAD_EVENT_QUEUE); - - // 次に、proxy object manager 用の proxy を作成します。 - nsIProxyObjectManager proxy = (nsIProxyObjectManager)componentManager.createInstanceByContractID("@mozilla.org/xpcomproxy;1",null,nsIProxyObjectManager.NS_IPROXYOBJECTMANAGER_IID); - - // そして、proxy object manager を使って、さきほど作成した nsIWindowWatcher のインスタンスへの proxy を作成します。 - nsIWindowWatcher windowProxy = (nsIWindowWatcher)proxy.getProxyForObject(eventQueue,windowWatcher.NS_IWINDOWWATCHER_IID,windowWatcher,nsIProxyObjectManager.INVOKE_SYNC); - - // そうすれば、proxy を使ってメソッドを普通に呼び出すことができます。 - windowProxy.openWindow(null, chromeUri, name, "centerscreen", null); -</pre> -<p>さらに詳しい情報は、<a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIProxyObjectManager.html">XulPlanet's documentation of nsIProxyObjectManager</a>を参照してください。 -</p><p>これは、<a class="external" href="http://rayh.co.uk/blog/?p=14">Injecting Events onto XPCOM’s UI Thread</a>からとられたものです。 -</p> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html deleted file mode 100644 index 9c34d27c84..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Examples -slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Examples -tags: - - JavaXPCOM - - 'XPCOM:Language Bindings' -translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Examples ---- -<p> -</p><p>いくつかの Java テストアプリケーションがソースツリーにチェックインされています。ここには、Java から Gecko の埋め込みや XPCOM の初期化をする方法の例があります。<a class="external" href="http://lxr.mozilla.org/mozilla/source/extensions/java/xpcom/tests">mozilla/extensions/java/xpcom/tests</a> -</p> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html deleted file mode 100644 index c2707f8de0..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: JavaXPCOM -slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM -tags: - - JavaXPCOM - - 'XPCOM:Language Bindings' - - 要更新 -translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM ---- -<p> </p> -<div> - <p><b>JavaXPCOM</b> は Java と <a href="ja/XPCOM">XPCOM</a> のコミュニケーションを可能にします。つまり、Java アプリケーションは、XPCOM オブジェクトにアクセスでき、XPCOM オブジェクトも XPCOM インターフェースを実装するすべての Java class にアクセスできます。 JavaXPCOM を使うことで、開発者は Java アプリケーションから XPCOM や埋め込み <a href="ja/Gecko">Gecko</a> にデータを伝送することができます。 JavaXPCOM は <a href="ja/XPConnect">XPConnect</a> (JavaScript-XPCOM ブリッジ) に非常によく似ていて <a href="ja/XPIDL">XPIDL</a> を使用します。</p> - <p>JavaXPCOM は <a href="ja/XULRunner">XULRunner</a> の一部として標準で構築されています。 最近のビルドまたは <a href="ja/XULRunner_1.8.0.4_Release_Notes">XULRunner 1.8.0.4</a> をダウンロードして試してみてください。</p> -</div> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h4 id=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.86.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3" name=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.86.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3"><a>ドキュメンテーション</a></h4> - <dl> - <dt> - <a href="ja/JavaXPCOM/Development">JavaXPCOM Development</a></dt> - <dd> - <small>ソースの取得・構築方法、それから読み方・バグの報告の方法。</small></dd> - </dl> - <dl> - <dt> - <a href="ja/JavaXPCOM/Examples">サンプルコード</a></dt> - <dd> - <small>いくつかの Java テストアプリケーションがソースツリーにチェックインされており、Java から Gecko の埋め込みや XPCOM を初期化する方法の例があります。</small></dd> - </dl> - <dl> - <dt> - <a href="ja/JavaXPCOM/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM">JavaXPCOM を使って Java アプリケーションへ Mozilla を組み込む</a></dt> - <dd> - <small><a href="ja/XULRunner">XULRunner</a> には JavaXPCOM が標準搭載されており、これは、Java のコードと XPCOM の相互利用を可能にするものです。この記事で示すとおり、Java での XPCOM オブジェクトの操作は C++ の場合とそれほど大きな差はありません。</small></dd> - </dl> - <p><span class="alllinks"><a>すべて見る...</a></span></p> - </td> - <td> - <h4 id=".E3.82.B3.E3.83.9F.E3.83.A5.E3.83.8B.E3.83.86.E3.82.A3" name=".E3.82.B3.E3.83.9F.E3.83.A5.E3.83.8B.E3.83.86.E3.82.A3">コミュニティ</h4> - <ul> - <li>Mozilla Java フォーラムを見る...</li> - </ul> - <ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-tech-java"> メーリングリストとして</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.tech.java"> ニュースグループとして</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.tech.java/feeds"> フィードとして</a></li> -</ul> - <ul> - <li>Mozilla Embedding フォーラムを見る...</li> - </ul> - <ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-embedding"> メーリングリストとして</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.embedding"> ニュースグループとして</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.embedding/feeds"> フィードとして</a></li> -</ul> - <ul> - <li><a class="link-mailto" href="mailto:jhpedemonte@gmail.com">Javier Pedemonte</a> JavaXPCOM プロジェクトを率いている開発者</li> - </ul> - <h4 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h4> - <dl> - <dd> - <a href="ja/XPCOM">XPCOM</a>, <a href="ja/Embedding_Mozilla">Embedding Mozilla</a></dd> - </dl> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html deleted file mode 100644 index 14a9eb1ee0..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: その他の情報源 -slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Other_Resources -tags: - - JavaXPCOM - - 'XPCOM:Language Bindings' -translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Other_Resources ---- -<h2 id="Other_Resources" name="Other_Resources">その他の情報源</h2> -<ul> - <li><a href="/ja/docs/Embedding_Mozilla">Embedding Mozilla</a></li> - <li><a href="/ja/docs/XPConnect">XPConnect</a> - Javascript-XPCOM bridge</li> - <li><a href="/ja/docs/BlackConnect">BlackConnect</a> - Java-XPCOM bridge (no longer supported)</li> - <li><a href="http://www.mozilla.org/projects/blackwood/connect/RequirementsSpec.html#IDL">XPIDL to Java types</a> - from Blackconnect</li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/plxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/plxpcom/index.html deleted file mode 100644 index 4bb9b94597..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/plxpcom/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: PlXPCOM -slug: Mozilla/Tech/XPCOM/Language_Bindings/PlXPCOM -tags: - - PlXPCOM - - XPCOM - - 'XPCOM:Language Bindings' -translation_of: Mozilla/Tech/XPCOM/Language_bindings/PlXPCOM ---- -<p>Perl XPCOM (plXPCOM): Perl と XPCOM のバインディング -</p> -<ul><li> <a class="external" href="http://plxpcom.mozdev.org/">プロジェクトページ</a> (MozDev) -</li><li> <a class="external" href="http://plxpcom.mozdev.org/docs/XPCOM.html">Perl オブジェクト定義</a> (MozDev) -</li><li> <a class="external" href="http://plxpcom.mozdev.org/docs/xpcom-perl.html">開発者ガイド</a> (MozDev) -</li><li> <a class="link-news" href="news://news.mozdev.org/public.mozdev.plxpcom">ニュースグループ</a> (MozDev) -</li><li> <a class="external" href="http://plxpcom.mozdev.org/list.html">メーリングリスト</a> (MozDev) -</li></ul> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/pyxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/pyxpcom/index.html deleted file mode 100644 index 5dfb513534..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/pyxpcom/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: PyXPCOM -slug: Mozilla/Tech/XPCOM/Language_Bindings/PyXPCOM -tags: - - PyXPCOM - - 'XPCOM:Language Bindings' -translation_of: Mozilla/Tech/XPCOM/Language_bindings/PyXPCOM ---- -<p> -</p> -<div> -<p><b>PyXPCOM</b> は <a class="external" href="http://www.python.org/">Python</a> と <a href="ja/XPCOM">XPCOM</a> の間で通信を可能にします。すなわち、Python アプリケーションが XPCOM オブジェクトにアクセスできるように、また XPCOM が XPCOM インタフェースを実装したあらゆる Python クラスにアクセスできるようにします。PyXPCOM によって開発者は Python アプリケーションから XPCOM や組み込み <a href="ja/Gecko">Gecko</a> に通話が可能になります。PyXPCOM は <a href="ja/JavaXPCOM">JavaXPCOM</a> (Java と XPCOM のブリッジ) や <a href="ja/XPConnect">XPConnect</a> (JavaScript と XPCOM のブリッジ) と類似しています。 -</p> -Python のクラスとインタフェース: Mozilla は組み込み開発者やコンポーネント開発者が利用できる多くの外部インターフェイスを定義しています。PyXPCOM はこれらのインタフェースを Python インタフェースとしてアクセスできる機能を提供します。PyXPCOM は Python から XPCOM や Gecko の初期化や終了を行う関数にアクセスを提供するいくつかのクラスや、さらに XPCOM のヘルパー関数をいくつか含みます。</div> -<table class="topicpage-table"> -<tbody><tr><td> -<h4 id="ドキュメント"> <a>ドキュメント</a> </h4> -<dl><dt> <a href="ja/Building_PyXPCOM">PyXPCOM のビルド</a> -</dt><dd> <small>PyXPCOM のビルド手順。</small> -</dd></dl> -<dl><dt> <a href="ja/Creating_a_Python_XPCOM_component">Creating a Python XPCOM component</a> -</dt><dd> <small>Python を使って簡単な <a href="ja/XPCOM">XPCOM</a> コンポーネントを作る方法のサンプル。</small> -</dd></dl> -<dl><dt> <a class="external" href="http://www.ibm.com/developerworks/jp/webservices/library/co-pyxp1/">PyXPCOM 入門</a> -</dt><dd> <small>PyXPCOM は XPCOM と Python の間を橋渡しする技術です。この記事はこれから PyXPCOM を学ぶ開発者のためのスタートガイドです。</small> -</dd></dl> -<p><span><a>すべて見る...</a></span> -</p> -<h4 id="歴史"> 歴史 </h4> -<p>PyXPCOM は当初 <a class="external" href="http://www.activestate.com/">ActiveState Tool Corporation</a> によって開発され、彼らの <a class="external" href="http://www.activestate.com/Products/Komodo">Komodo プロジェクト</a> の一部として <a class="external" href="http://aspn.activestate.com/ASPN/Downloads/Komodo/index/PyXPCOM/">知られています</a>。現在のリリースでは Mozilla ビルドシステムにすでに <a class="external" href="http://public.activestate.com/pyxpcom/">統合されています</a>。 -</p> -</td> -<td> -<h4 id="コミュニティ"> コミュニティ </h4> -<ul><li> Mozilla XPCOM フォーラムを見る... -</li></ul> -<ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-tech-xpcom"> メーリングリストとして</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom"> ニュースグループとして</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom/feeds"> フィードとして</a></li> -</ul> - -<ul><li> <a class="external" href="http://listserv.activestate.com/mailman/listinfo/pyxpcom">ActiveState の Python XPCOM bindings メーリングリスト</a> -</li><li> <a class="link-irc" href="irc://irc.mozilla.org:6667/pyxpcom">#pyxpcom on irc.mozilla.org</a> -</li></ul> -<h4 id="ソースコード"> ソースコード </h4> -<ul><li> PyXPCOM のコードは trunk の <code><a href="https://dxr.mozilla.org/mozilla-central/source/extensions/python/xpcom/" rel="custom">extensions/python/xpcom/</a></code> ディレクトリから利用可能です。 -</li><li> PyXPCOM は標準ではビルドされないことに気をつけてください。PyXPCOM をビルドするには <a href="ja/Building_PyXPCOM">PyXPCOM のビルド</a> を参照してください。 -</li></ul> -<h4 id="関連事項"> 関連事項 </h4> -<dl><dd> <a href="ja/XPCOM">XPCOM</a> -</dd><dd> <a href="ja/PyDOM">PyDOM</a>: JavaScript を Python で置き換える -</dd></dl> -</td></tr></tbody></table> -<p><span>Categories</span> -</p><p><span>Interwiki Language Links</span> -</p><p><br> -</p> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/rbxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/rbxpcom/index.html deleted file mode 100644 index ff1cec39a2..0000000000 --- a/files/ja/mozilla/tech/xpcom/language_bindings/rbxpcom/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: RbXPCOM -slug: Mozilla/Tech/XPCOM/Language_Bindings/RbXPCOM -tags: - - RbXPCOM - - XPCOM - - 'XPCOM:Language Bindings' -translation_of: Mozilla/Tech/XPCOM/Language_bindings/RbXPCOM ---- -<p>Ruby Cross-Platform COM (rbXPCOM): Ruby と XPCOM のバインディング -</p> -<ul><li> <a class="external" href="http://rbxpcom.mozdev.org/">プロジェクトページ</a> (MozDev) -</li><li> <a class="external" href="http://rbxpcom.mozdev.org/no_wrap/doc/">マニュアル</a> (MozDev) -</li><li> <a class="external" href="http://rbxpcom.mozdev.org/list.html">メーリングリスト</a> (MozDev) -</li><li> <a class="link-news" href="news://news.mozdev.org/public.mozdev.rbxpcom">ニュースグループ</a> (MozDev) -</li></ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/components/index.html b/files/ja/mozilla/tech/xpcom/reference/components/index.html deleted file mode 100644 index 930d831c1e..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/components/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Standard XPCOM components -slug: Mozilla/Tech/XPCOM/Reference/Components -tags: - - Components - - Landing - - Mozilla - - NeedsContent - - NeedsTranslation - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Reference/Components ---- -<p>There are a number of components provided in the standard implementation of XPCOM; these are as follows.</p> -<div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/ja/docs/nsCategoryManager">nsCategoryManager</a></dt><dd class="landingPageList">The XPCOM Category Manager.</dd><dt class="landingPageList"><a href="/ja/docs/nsDirectoryService">nsDirectoryService</a></dt><dd class="landingPageList">XPCOM ディレクトリサービス。このサービスは、OS 固有のマナーで "よく知られた" ディレクトリの場所を返します。例えば、システムの一時ディレクトリやデスクトップディレクトリ、現在の作業ディレクトリなどのパスを提供します。</dd><dt class="landingPageList"><a href="/ja/docs/nsLocalFile">nsLocalFile</a></dt><dd class="landingPageList"><code><a href="ja/NsILocalFile">nsILocalFile</a></code> を実装するコンポーネント。</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/ja/docs/nsObserverService">nsObserverService</a></dt><dd class="landingPageList">XPCOM Observer サービス。</dd><dt class="landingPageList"><a href="/ja/docs/nsScriptableInputStream">nsScriptableInputStream</a></dt><dd class="landingPageList"><code><a href="ja/NsIScriptableInputStream">nsIScriptableInputStream</a></code> を実装するコンポーネント。</dd></dl></div> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nscategorymanager/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nscategorymanager/index.html deleted file mode 100644 index 06226a5d35..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/components/nscategorymanager/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: nsCategoryManager -slug: Mozilla/Tech/XPCOM/Reference/Components/nsCategoryManager -tags: - - Components - - 'Components:Frozen' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsCategoryManager ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> - -<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3> - -<p>The XPCOM Category Manager.</p> - -<dl> - <dt>Class ID</dt> - <dd><code>16d222a6-1dd2-11b2-b693-f38b02c021b2</code></dd> - <dt>ContractID</dt> - <dd><code>@mozilla.org/categorymanager;1</code></dd> -</dl> - -<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3> - -<p><code><a href="ja/NsICategoryManager">nsICategoryManager</a></code></p> - -<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3> - -<p>このコンポーネントは、単独で使用するか、XPCOM サービスマネージャを通してアクセスします。</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nsdirectoryservice/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nsdirectoryservice/index.html deleted file mode 100644 index dbec00fb06..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/components/nsdirectoryservice/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: nsDirectoryService -slug: Mozilla/Tech/XPCOM/Reference/Components/nsDirectoryService -tags: - - Components - - 'Components:Frozen' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsDirectoryService ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> - -<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3> - -<p>XPCOM ディレクトリサービス。このサービスは、OS 固有のマナーで "よく知られた" ディレクトリの場所を返します。例えば、システムの一時ディレクトリやデスクトップディレクトリ、現在の作業ディレクトリなどのパスを提供します。</p> - -<dl> - <dt>Class ID</dt> - <dd><code>f00152d0-b40b-11d3-8c9c-000064657374</code></dd> - <dt>ContractID</dt> - <dd><code>@mozilla.org/file/directory_service;1</code></dd> -</dl> - -<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3> - -<p><code><a href="ja/NsIProperties">nsIProperties</a></code>, <code><a href="ja/NsIDirectoryService">nsIDirectoryService</a> </code></p> - -<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3> - -<p>このコンポーネントは、単独で使用するか、XPCOM サービスマネージャを通してアクセスします。</p> - -<h3 id=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B" name=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B">コード例</h3> - -<pre>#include "nsXPCOM.h" -#include "nsCOMPtr.h" -#include "nsDirectoryServiceDefs.h" -#include "nsIServiceManager.h" -#include "nsIProperties.h" - -/** - * Get the location of the system's "temp" directory. - */ -nsresult GetTempDir(nsIFile **aResult) -{ - nsresult rv; - - nsCOMPtr<nsIServiceManager> svcMgr; - rv = NS_GetServiceManager(getter_AddRefs(svcMgr)); - if (NS_FAILED(rv)) - return rv; - - nsCOMPtr<nsIProperties> directory; - rv = svcMgr->GetServiceByContractID("@mozilla.org/file/directory_service;1", - NS_GET_IID(nsIProperties), - getter_AddRefs(directory)); - if (NS_FAILED(rv)) - return rv; - - rv = directory->Get(NS_OS_TEMP_DIR, NS_GET_IID(nsIFile), aResult); - - return rv; -} -</pre> - -<p>NS_OS_TEMP_DIR は、他の多くの Directory Service キーと共に、<a class="external" href="http://lxr.mozilla.org/mozilla/source/xpcom/io/nsDirectoryServiceDefs.h">nsDirectoryServiceDefs.h</a> で定義されているので注意してください。</p> - -<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3> - -<p><a href="ja/Using_nsIDirectoryService">Using nsIDirectoryService</a>, <a href="ja/NsIProperties#get">nsIProperties::get</a>, <a href="ja/NsIDirectoryServiceProvider">nsIDirectoryServiceProvider</a></p> - -<div class="noinclude"> </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nslocalfile/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nslocalfile/index.html deleted file mode 100644 index 2b7872b2b8..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/components/nslocalfile/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: nsLocalFile -slug: Mozilla/Tech/XPCOM/Reference/Components/nsLocalFile -tags: - - Components - - 'Components:Frozen' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsLocalFile ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> - -<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3> - -<p><code><a href="ja/NsILocalFile">nsILocalFile</a></code> を実装するコンポーネント。</p> - -<dl> - <dt>Class ID</dt> - <dd><code>2e23e220-60be-11d3-8c4a-000064657374</code></dd> - <dt>ContractID</dt> - <dd><code>@mozilla.org/file/local;1</code></dd> -</dl> - -<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3> - -<p><code><a href="ja/NsILocalFile">nsILocalFile</a></code>, <code><a href="ja/NsIFile">nsIFile</a></code></p> - -<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3> - -<p>このコンポーネントは XPCOM コンポーネントマネージャを通してアクセスします。</p> - -<h3 id=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B" name=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B">コード例</h3> - -<pre>function getFileSize(path) { - var file = - Components.classes["@mozilla.org/file/local;1"]. - createInstance(Components.interfaces.nsILocalFile); - file.initWithPath(path); - return file.fileSize; -} -</pre> diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nsobserverservice/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nsobserverservice/index.html deleted file mode 100644 index 579189906f..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/components/nsobserverservice/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: nsObserverService -slug: Mozilla/Tech/XPCOM/Reference/Components/nsObserverService -tags: - - Components - - 'Components:Frozen' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsObserverService ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> - -<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3> - -<p>XPCOM Observer サービス。</p> - -<dl> - <dt>Class ID</dt> - <dd><code>D07F5195-E3D1-11d2-8ACD-00105A1B8860</code></dd> - <dt>ContractID</dt> - <dd><code>@mozilla.org/observer-service;1</code></dd> -</dl> - -<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3> - -<p><code><a href="ja/NsIObserverService">nsIObserverService</a></code></p> - -<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3> - -<p>このコンポーネントは、単独で使用するか、XPCOM サービスマネージャを通してアクセスします。これはメインスレッドからのみ使用されるべきです。</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nsscriptableinputstream/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nsscriptableinputstream/index.html deleted file mode 100644 index ce98722492..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/components/nsscriptableinputstream/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: nsScriptableInputStream -slug: Mozilla/Tech/XPCOM/Reference/Components/nsScriptableInputStream -tags: - - Components - - 'Components:Frozen' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsScriptableInputStream ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> - -<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3> - -<p><code><a href="ja/NsIScriptableInputStream">nsIScriptableInputStream</a></code> を実装するコンポーネント。</p> - -<dl> - <dt>Class ID</dt> - <dd><code>7225c040-a9bf-11d3-a197-0050041caf44</code></dd> - <dt>ContractID</dt> - <dd><code>@mozilla.org/scriptableinputstream;1</code></dd> -</dl> - -<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3> - -<p><code><a href="ja/NsIScriptableInputStream">nsIScriptableInputStream</a></code>, <code><a href="ja/NsIInputStream">nsIInputStream</a></code></p> - -<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3> - -<p>このコンポーネントは XPCOM コンポーネントマネージャを通してアクセスします。</p> - -<h3 id=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B" name=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B">コード例</h3> - -<pre>const nsIScriptableInputStream = Components.interfaces.nsIScriptableInputStream; - -function consumeStream(inputStream) -{ - var factory = Components.classes["@mozilla.org/scriptableinputstream;1"]; - - var sis = factory.createInstance(nsIScriptableInputStream); - sis.init(inputStream); - - try - { - while (true) - { - var chunk = sis.read(512); - if (chunk.length == 0) - break; - - // ok, chunk now contains a portion of the stream's data. - // Do something with it! - } - } - catch (e) - { - dump("Error: failed reading from stream:\n" + e + "\n"); - } -} -</pre> - -<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3> - -<p><a href="ja/NsIScriptableInputStream">nsIScriptableInputStream</a></p> - -<div class="noinclude"> </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/glue_classes/index.html b/files/ja/mozilla/tech/xpcom/reference/glue_classes/index.html deleted file mode 100644 index 370f7ffe1e..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/glue_classes/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: XPCOM glue classes -slug: Mozilla/Tech/XPCOM/Reference/Glue_classes -tags: - - Classes - - Landing - - NeedsTranslation - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Reference/Glue_classes ---- -<p><span class="seoSummary">These "glue" classes are provided to make it easier to use XPCOM from C++ code.</span> When these classes are used by a component, you may need to link the component against the XPCOM glue library.</p> -<div class="row topicpage-table"> - <div class="section"><dl><dl><dt></dt></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/ja/docs/nsCOMPtr">nsCOMPtr</a></dt><dd class="landingPageList">このユーティリティクラスは、 C++ のコードからの XPCOM インタフェースの参照の管理をシンプルにします。</dd></dl></div> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/glue_classes/nscomptr/index.html b/files/ja/mozilla/tech/xpcom/reference/glue_classes/nscomptr/index.html deleted file mode 100644 index 3de5c924b8..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/glue_classes/nscomptr/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: nsCOMPtr -slug: Mozilla/Tech/XPCOM/Reference/Glue_classes/nsCOMPtr -tags: - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Glue_classes/nsCOMPtr ---- -<div>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></div> - -<h2 id="Summary" name="Summary">概要</h2> - - -<p>このユーティリティクラスは、 C++ のコードからの XPCOM インタフェースの参照の管理をシンプルにします。</p> - -<pre class="syntaxbox">#include "nsCOMPtr.h"</pre> - - -<h2 id="Remarks" name="Remarks">備考</h2> - -<p>詳細については『 <a href="/ja/docs/Using_nsCOMPtr"><code>nsCOMPtr</code> の使用</a>』 を参照して下さい。</p> - - - - - -このクラスを使用するには、コンポーネントまたはアプリケーションから <a href="/ja/docs/XPCOM_Glue">XPCOM glue library</a> にリンクする必要があります。クラス自体とそれに使用されている支援機能は凍結されていませんが、容易な再利用のために XPCOM glue library の一部として提供されています。 diff --git a/files/ja/mozilla/tech/xpcom/reference/index.html b/files/ja/mozilla/tech/xpcom/reference/index.html deleted file mode 100644 index 49949e50fd..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: XPCOM reference -slug: Mozilla/Tech/XPCOM/Reference -tags: - - Landing - - Mozilla - - NeedsTranslation - - Reference - - TopicStub - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Reference ---- -<p>This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</p> -<div class="note"> - <p><strong>Note:</strong> If you're working on a module in the Mozilla codebase that's compiled with the <code>MOZILLA_INTERNAL_API</code> flag set, some of these APIs -- the string functions and classes in particular -- are not the ones you should be using. See the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Internal_strings">XPCOM internal string guide</a> for documentation of the internal string API used within the Mozilla codebase.</p> -</div> -<div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/ja/docs/NS_ENSURE_TRUE">NS ENSURE TRUE</a></dt><dd class="landingPageList"><strong>マクロ</strong></dd><dt class="landingPageList"><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Components">Standard XPCOM components</a></dt><dd class="landingPageList">There are a number of components provided in the standard implementation of XPCOM; these are as follows.</dd><dt class="landingPageList"><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Glue_classes">XPCOM glue classes</a></dt><dd class="landingPageList">These "glue" classes are provided to make it easier to use XPCOM from C++ code.</dd><dt class="landingPageList"><a href="/ja/docs/XPCOM_Interface_Reference_group">XPCOM Interface Reference group</a></dt><dd class="landingPageList">このページには2010年12月1日現在の Mozilla インターフェースが一覧となっています。<a href="/ja/XPCOM_Interface_Reference" title="ja/XPCOM_Interface_Reference">the XPCOM interface Reference</a> の一覧はアルファベット順に並べられていますが、このページではそれらを機能ごとにグループ化するという試みがなされています。グループ化とカテゴリの名称は著者<span style="color: darkgreen; background: #ef9;">【訳注: 英語版のこのページの著者】</span>による独断が多少入り混じっています。(これについては涙を流す結末になりうる重大な論点であるとは認識しています。ですが、どうやら私がこの編集を行った最初の人物であるようなので、最初の編集者としての権利を得たものとします。)</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/ja/docs/XPCOM_Interface_Reference">XPCOM インタフェースリファレンス</a></dt><dd class="landingPageList">これは Mozilla プラットフォームにおいて提供されている XPCOM インタフェースのリファレンスです。</dd></dl></div> - </div> -<p>Many XPCOM pages return an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Core_functions/nsresult">nsresult</a></code>. Prior to Gecko 19 (Firefox 19 / Thunderbird 19 / SeaMonkey 2.16), this was an integer that simply returned an error code. It is now a strongly typed <code>enum</code> when XPCOM is built using a C++11 compiler. This causes compile-time errors to occur when improper values are returned as nsresult values, thereby making it easier to catch many bugs.</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/ns_ensure_true/index.html b/files/ja/mozilla/tech/xpcom/reference/ns_ensure_true/index.html deleted file mode 100644 index cf931e4a21..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/ns_ensure_true/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: NS ENSURE TRUE -slug: Mozilla/Tech/XPCOM/Reference/NS_ENSURE_TRUE -tags: - - XPCOM - - XPCOM_Macros -translation_of: Mozilla/Tech/XPCOM/Reference/NS_ENSURE_TRUE ---- -<h3 id="Summary" name="Summary">概要</h3> - -<p><strong>マクロ</strong></p> - -<p><em>expr</em> の評価値が <strong>false</strong> の場合に <em>return-value </em>を返す。</p> - -<h3 id="Syntax" name="Syntax">構文</h3> - -<pre>NS_ENSURE_TRUE( expr, return-value ); -</pre> - -<p> </p> - -<h3 id="Usage" name="Usage">使い方</h3> - -<pre>nsresult mozMyClass::MozStringMucking() -{ - char *foo = new char[123]; - NS_ENSURE_TRUE(foo, NS_ERROR_OUT_OF_MEMORY); - - // This is equivalent to doing: - // これは以下の式と同等です。 - if (!foo) - return NS_ERROR_OUT_OF_MEMORY; - - // Thou shalt not return NS_ERROR_FAILURE.. - // これは、NS_ERROR_FAILURE を返さない。。 - int i = 3; - NS_ENSURE_TRUE(i == 3, NS_ERROR_FAILURE); - - return NS_OK; -} - -char* mozMyClass::DoStuff() -{ - char* bar = new char[321]; - NS_ENSURE_TRUE(bar, nsnull); - - return bar; -} -</pre> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/imgiloader/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/imgiloader/index.html deleted file mode 100644 index 58a3045835..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/imgiloader/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: imgILoader -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/imgILoader -tags: - - Interfaces - - MDC Project - - NeedsContent - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/imgILoader ---- -<p>以下のコードスニペットを使用して imgLoader のインスタンスを生成することができます。</p> -<pre class="eval">var imgLoader = Components.classes["@mozilla.org/image/loader;1"] - .getService(Components.interfaces.imgILoader); -</pre> -<p>インタフェースは以下のメソッドがあります:</p> -<ul> - <li>loadImage</li> - <li>loadImageWithChanel</li> - <li>supportImageWithMimeType</li> -</ul> -<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3> -<ul> - <li>XULPlanet 上の自動生成されたドキュメント: <a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/imgILoader.html" rel="freelink">http://www.xulplanet.com/references/...mgILoader.html</a></li> -</ul> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/index.html deleted file mode 100644 index d797fde123..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: XPCOM インタフェースリファレンス -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference -tags: - - XPCOM - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface ---- -<p>これは Mozilla プラットフォームにおいて提供されている XPCOM インタフェースのリファレンスです。</p> -<div class="cols-3"> - <ul><li><a href="/ja/docs/XPCOM_Interface_Reference/NsIDOMHTMLMediaElement">NsIDOMHTMLMediaElement</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/imgILoader">imgILoader</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/mozIJSSubScriptLoader">mozIJSSubScriptLoader</a></li><li><a href="/ja/docs/mozIRegistry">mozIRegistry</a></li><li><a href="/ja/docs/mozIStorageStatementParams">mozIStorageStatementParams</a></li><li><a href="/ja/docs/nsIAccessible">nsIAccessible</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIAccessibleProvider">nsIAccessibleProvider</a></li><li><a href="/ja/docs/nsIAnnotationObserver">nsIAnnotationObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIAsyncInputStream">nsIAsyncInputStream</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIConsoleService">nsIConsoleService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIContentPrefObserver">nsIContentPrefObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIContentPrefService">nsIContentPrefService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsICryptoHash">nsICryptoHash</a></li><li><a href="/ja/docs/nsIDOMFile">nsIDOMFile</a></li><li><a href="/ja/docs/nsIDOMFileException">nsIDOMFileException</a></li><li><a href="/ja/docs/nsIDOMFileList">nsIDOMFileList</a></li><li><a href="/ja/docs/nsIDOMOfflineResourceList">nsIDOMOfflineResourceList</a></li><li><a href="/ja/docs/NsIDOMSimpleGestureEvent">nsIDOMSimpleGestureEvent</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDownload">nsIDownload</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDownloadManager">nsIDownloadManager</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDownloadManagerUI">nsIDownloadManagerUI</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDownloadProgressListener">nsIDownloadProgressListener</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDragService">nsIDragService</a></li><li><a href="/ja/docs/nsIEffectiveTLDService">nsIEffectiveTLDService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeed">nsIFeed</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedContainer">nsIFeedContainer</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedElementBase">nsIFeedElementBase</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedEntry">nsIFeedEntry</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedGenerator">nsIFeedGenerator</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedPerson">nsIFeedPerson</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedProcessor">nsIFeedProcessor</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedProgressListener">nsIFeedProgressListener</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedResult">nsIFeedResult</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedResultListener">nsIFeedResultListener</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedTextConstruct">nsIFeedTextConstruct</a></li><li><a href="/ja/docs/nsIHttpActivityDistributor">nsIHttpActivityDistributor</a></li><li><a href="/ja/docs/nsIHttpActivityObserver">nsIHttpActivityObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel">nsIHttpChannel</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIIOService">nsIIOService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIIdleService">nsIIdleService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIInputStream">nsIInputStream</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIJSCID">nsIJSCID</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIJSON">nsIJSON</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsILoginInfo">nsILoginInfo</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsILoginManager">nsILoginManager</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIObserver">nsIObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIObserverService">nsIObserverService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIOutputStream">nsIOutputStream</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIParentalControlsService">nsIParentalControlsService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIParserUtils">nsIParserUtils</a></li><li><a href="/ja/docs/nsIPassword">nsIPassword</a></li><li><a href="/ja/docs/nsIPasswordManager">nsIPasswordManager</a></li><li><a href="/ja/docs/NsIPlacesView">nsIPlacesView</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIPrefBranch">nsIPrefBranch</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnescapeHTML">nsIScriptableUnescapeHTML</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter">nsIScriptableUnicodeConverter</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsISessionStore">nsISessionStore</a></li><li><a href="/ja/docs/nsISupports_proxies">nsISupports proxies</a></li><li><a href="/ja/docs/nsITaggingService">nsITaggingService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThread">nsIThread</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadEventFilter">nsIThreadEventFilter</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadInternal">nsIThreadInternal</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadManager">nsIThreadManager</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadObserver">nsIThreadObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadPool">nsIThreadPool</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener">nsIWebProgressListener</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIWindowMediator">nsIWindowMediator</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIXMLHttpRequest">nsIXMLHttpRequest</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIZipEntry">nsIZipEntry</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIZipReader">nsIZipReader</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIZipWriter">nsIZipWriter</a></li></ul></div> -<h2 id="See_also" name="See_also">関連情報</h2> -<ul> - <li><a href="/ja/docs/XPCOM_Interface_Reference_group" title="XPCOM_Interface_Reference_group">Interfaces grouped by function</a></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozijssubscriptloader/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozijssubscriptloader/index.html deleted file mode 100644 index 5a0cb305dc..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozijssubscriptloader/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: mozIJSSubScriptLoader -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/mozIJSSubScriptLoader -tags: - - Interfaces - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM API Reference - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/mozIJSSubScriptLoader ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/idl/mozIJSSubScriptLoader.idl" rel="custom">js/src/xpconnect/idl/mozIJSSubScriptLoader.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -このインタフェースは、 実行時に与えられた URL の JavaScript コードを読み込み実行するために、特権を持つ JavaScript から使用されます。 -</span> - - <div style="height: 42px; position: relative; padding: 2px; width: auto;"> - - <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div> - -<div style="height: 8px; top: 16px; left: 0%; background: #00dd00; position: absolute; width: 100%;" title="Introduced in Gecko 1.0 "></div> - -<div style="top: 0px; font-size: 11px; position: absolute; left: 0%;">Introduced</div> -<div style="top: 22px; font-size: 11px; position: absolute; left: 0%;">Gecko 1.0</div> - - <div style="height: 8px; top: 16px; left: 10.928571428571429%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)"></div> - -</div> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)</span></div> -</div> -<p>実装元: <code>@mozilla.org/moz/jssubscript-loader;1</code>。このサービスを取得するには次のコードを使用します:</p> -<pre class="eval">var mozIJSSubScriptLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] - .getService(Components.interfaces.mozIJSSubScriptLoader); -</pre> -<div class="note"><strong>補足:</strong> もう一つの JavaScript コードをインポートする方法は、<a class="internal" href="/ja/Components.utils.import" title="ja/Components.utils.import"><code>Components.utils.import</code></a> を参照してください。</div> -<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2> -<table class="standard-table"> <tbody> <tr> <td><code>void <a href="#loadSubScript()">loadSubScript</a>(in wstring url, in targetObj <span class="inlineIndicator optional optionalInline">Optional</span>, in charset </code><code><span class="inlineIndicator optional optionalInline">Optional</span></code><code>);</code></td> </tr> </tbody> -</table> -<h2 id="Methods" name="Methods">メソッド</h2> -<h3 id="loadSubScript" name="loadSubScript()">loadSubScript()</h3> -<p>スクリプトを指定された URL から同期的に読み込み、実行します。</p> -<p>指定されたスクリプトはシステムの規則に従って実行されます。これは、スクリプトができることに、全く制限がないことを意味します。</p> -<div class="blockIndicator note"><strong>註:</strong> このメソッドは JavaScript からのみ呼び出されます!</div> -<pre class="eval">void loadSubScript( - in wstring url, - in targetObj <span class="inlineIndicator optional optionalInline">Optional</span>, - in charset <span class="inlineIndicator optional optionalInline">Optional</span>, -); -</pre> -<h6 id="Parameters" name="Parameters">引数</h6> -<dl> <dt><code>url</code></dt> <dd>読み込むスクリプトを指す URL。これは、ローカルの <code>chrome: または resource:, file:</code> URL で<strong>あるべき</strong>です (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=307686" title="jssubscript-loader does not want to load script that are not local">バグ 307686</a> および <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=418356" title="FIXED: [FIX]It's unsafe to use mozIJSSubScriptLoader.loadSubScript() with non-chrome urls or chrome urls whose scheme/host part contain uppercase characters">バグ 418356</a> を参照)。 <div class="geckoVersionNote"> <div class="geckoVersionHeading"> -Gecko 1.9 note -<div style="font-size: 9px; line-height: 1; font-style: italic;">(Firefox 3)</div> -</div> <p>Firefox 3.0 より前のバージョンでは、<code>data:</code> URL が使用できましたが、セキュリティ上の問題から許可されなくなりました。</p> </div> </dd> <dt><code>targetObj</code></dt> <dd>スクリプトが実行されるためのスコープオブジェクトとして使用されるオブジェクト。デフォルトでは、呼び出し元のグローバルオブジェクトになります。</dd> -</dl> -<dl> <dt><code>charset</code> </dt> <dd>読み込むスクリプトファイルの文字エンコーディングを指定する任意の文字列。省略すると、ファイルは ASCII 文字列として処理されます。</dd> -</dl> -<h2 id="Example" name="Example">例</h2> -<pre class="brush: js">var global = this; -var obj = {}; -var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] - .getService(Components.interfaces.mozIJSSubScriptLoader); -loader.loadSubScript("data:text/plain,var a=1", obj) -loader.loadSubScript("data:text/plain,this.b=1", obj) -loader.loadSubScript("data:text/plain,c=1", obj) -loader.loadSubScript("data:text/plain,function f(){}", obj) - -alert(obj.toSource()); // ({a:1, b:1, f:function f() {}}) -alert("a" in global); // false -alert("b" in global); // false -alert(global.c); // 1 -</pre> -<div class="noinclude"> - -</div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/moziregistry/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/moziregistry/index.html deleted file mode 100644 index 0eb074f536..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/moziregistry/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: mozIRegistry -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/mozIRegistry -tags: - - Outdated_articles -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/mozIRegistry ---- -<div class="blockIndicator warning"> - <p><strong>警告:</strong> <strong>この記事の内容は古くなっている可能性があります。</strong> これは実装されなかった機能の設計書のようです。</p> -</div> -<h3 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h3> -<p>このドキュメントのタイトルは、とても誤解を受けやすいものになっています。実は、「レジストリインタフェース」についてのドキュメントではありません。このドキュメントは、インタフェースのクライアントとインタフェースの実装を実際に提供するコードとの間の、よりダイナミックな結合を Mozilla がどのように支援しているか、ということについて述べています。</p> -<p>この目的のため、ソースコードの中の明確なある場所において (実際には) どの実装が使われるか、という情報の保存が必要になります。 そして、今までのところ、我々はその情報を「Netscape レジストリ」ファイルに格納することにしています。 以上が、この (ドキュメントの) 情報が「レジストリ」という概念とどのように関係するようになるのかということの説明です。</p> -<p>いつか (私の希望ですが) このページのタイトルが適切に付けられるはずです。そうすれば、この場所が、Mozilla ブラウザを形成する様々な XPCOM コンポーネントがどのように互いに結びつくように考えられているか、を発見するための場所であることを皆さんが理解できるようになるでしょう。以下の情報は、それがどのように行われるかについて、あなたが知るべきすべてのことを説明するためのものです。</p> -<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3> -<p>クライアントは、任意のクラスのインスタンスを作成するために、nsRepository に依存します。 CLSID のダイナミックな結合を必要とするクライアントは、使用する CLSID を解決するために、ある高水準のサービス (TBD) を使う必要があります。 そのようにする意図は、そのようなサービス自身が新しい mozIRegistry インタフェースの上層部に作られるからです。</p> -<p>我々は、新しい XPCOM インタフェース「mozIRegistry」を提案します。これは、libreg で実装されていた「Netscape レジストリ」の機能と同じレベルの機能を提供します。nsRepository は、このインタフェースを使用するように修正されるでしょう。それによって、別のレジストリの実装を実行時/リンク時に置き換えることができるようになります。2 つのレジストリインタフェースの実装が存在するでしょう。ひとつは、libreg だけに基づいたもの (互換性のため) で、もうひとつはより装飾的な RDF ベースのものです。</p> -<h3 id=".E6.9C.AA.E8.A7.A3.E6.B1.BA.E3.81.AE.E5.95.8F.E9.A1.8C" name=".E6.9C.AA.E8.A7.A3.E6.B1.BA.E3.81.AE.E5.95.8F.E9.A1.8C">未解決の問題</h3> -<p>我々は、2 つの未解決な問題を認識しています。どちらもタイムリーに解決できないほど、大変なようには見えません。</p> -<ol> - <li>もし現在の CLSID の静的な結合を取り除いた時は、要求された CLSID が存在しないリスクがあるかもしれません。 必然的結果として、新しいクラス実装へアクセスできるように、ビルド/インストールプロセスがユーザ「レジストリ」の更新をしなければならないでしょう。 我々の現在のビルド/インストールプロセスは、まだそれらの問題を解決していません。</li> - <li>起動時において、mozIRegistry インタフェースにアクセスするためのサービスマネージャの使用に関係する問題がいくつかあります。現在のところ、nsIServiceManager は、そのサービスの実装をハードコードしているサービスにアクセスするために CLSID を必要とします。この問題は、別の mozIRegistry の実装を可能にするために、または実行時に結合される他のサービスマネージャの実装を可能にするためにも解決されなければなりません。私は、単純な CLSID の「別名」の仕組み (ある意味で COM の「コンポーネントカテゴリ」と同等の仕組み)、およびサービスを「設定する」ことができるようにする (これは、サービスマネージャがサービス自身を作成するというのと対立します) ことで、解決できると思います。最悪の場合は、クライアントは mozIRegistry シングルトンを他の手段 (つまり「NSGetRegistry」関数) を通じて取得するかもしれません。</li> -</ol> -<h3 id=".E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3" name=".E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3">アーキテクチャ</h3> -<p><img alt="Image:mozIRegistry.jpg"></p> -<p>この図は、他の Mozilla コンポーネントと相互作用するために使われる、様々なコンポーネントを示しています。</p> -<p>いくつかは、説明のためのものです (図の上部付近の明るい色の箱)。これらには、(実際に) あなたが設計し、かつ実装するコンポーネントの型が入ります。 私は、それらについて説明して、あなたが他の箱をどのように使うべきかということの例を示そうと思います。</p> -<p>暗い色の箱で示されるコンポーネントは、あなたが使うサービスです。 このドキュメントで、これらのコンポーネントの設計と実装の原則について説明します。</p> -<p>最後に、(「mozRDFRegistry/nsIRDFDatabase」というラベルが付いている) ひとつのコンポーネントがあります。このコンポーネントは、mozIRegistry インタフェースのひとつの改良された実装として明らかになるかもしれません。 私は、その実装についてほんの短く論じる予定です。(その主な理由は、その実装を誰かにやって欲しいからです。)</p> -<div class="note" id="ServiceManagerNote"> - <p>コードを他の Mozilla コンポーネントに接続する時に、とても重要なコンポーネントがもうひとつあります。 それは「サービスマネージャ」です。 私は、ちょうどその役割を理解し始めたところです。まだ把握しきれていないので、今のところは(言えることは)何もありません。 将来的には、サービスマネージャについての情報を追加するつもりです。少なくとも、そのドキュメントへのリンクを張るつもりです。</p> -</div> -<h3 id=".E9.AB.98.E6.B0.B4.E6.BA.96.E3.81.AE.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88" name=".E9.AB.98.E6.B0.B4.E6.BA.96.E3.81.AE.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88">高水準のアプリケーションコンポーネント</h3> -<p>この箱は、潜在的ユーザのコアのレジストリ/リポジトリインタフェースを表しています。</p> -<p>あなたのコードは、(たぶん) この箱に収まるでしょう。</p> -<p>これらのコンポーネントは、その任務を果たすために、様々な度合で、他のコンポーネントを使う必要があるでしょう。これらの他のコンポーネントは、おそらく特定の XPCOM インタフェースを実装します。 あなたのコンポーネントが必要とするインタフェースを実装するオブジェクトを生成するにはどうすればよいでしょうか。</p> -<p>ひとつの方法は、nsRepository を使ってインタフェースを生成することです。 nsRepository は、元々 XPCOM の CLSID からクラスファクトリーへのマッピングであり、加えてそのマッピングを管理し、与えられた CLSID のインスタンスを生成する関数を含むものです。</p> -<p>nsRepository 関数は、nsRepository.h で宣言されています。 nsRepository についてのもっと多くの情報は、<a href="#nsRepository">下</a> にあります。</p> -<p>他のコンポーネントにアクセスする 2 つ目の方法は、サービスマネージャを経由することです。これについては、このドキュメントではカバーされません。<a href="#ServiceManagerNote">上の注</a> を見てください。</p> -<p>このセクションでは、多くの異なるコンポーネント、それらの他のコンポーネントへのダイナミックな結合の要求、そしてそれらがその要求を満たすためにどのようにコア XPCOM コンポーネントを利用するか、について論じるつもりです。</p> -<ul> - <li><b>i18n</b></li> - <li><b>XUL/xpToolkit</b></li> - <li><b>App Shell</b></li> -</ul> -<h3 id="CLSID_.E7.B5.90.E5.90.88.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB" name="CLSID_.E7.B5.90.E5.90.88.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB"><code>CLSID</code> 結合プロトコル</h3> -<p>ここには、レジストリーへの CLSID 情報の保存と、nsRepository を使った、コア XPCOM サービスの上層部でのインスタンス作成プロトコルを実装するための、その情報の使用の特定のイディオムの潜在的なカプセル化について書く予定です。</p> -<p>これらは、提供している基本的なサービスによって、2 つのカテゴリーに分かれると思います。</p> -<ul> - <li>与えられたインタフェースの実装を見付ける。</li> - <li>与えられた任意のプロパティに適合する適切な実装を見付ける。</li> -</ul> -<h3 id="nsRepository" name="nsRepository">nsRepository</h3> -<p>これは、基本的に今提供されているものと同じです (mozilla/xpcom/public/nsRepository.h を参照してください)。 このコンポーネントに対する主な変更は、今まで呼んでいた NSReg.h の関数ではなく、新しい mozIRegistry インタフェースを利用するようにしたことです。 加えて、あまり重要ではない、いくつかの拡張があります。</p> -<ul> - <li>Initialize() で .reg ファイル名の指定をサポートしている。</li> -</ul> -<p>このことは、(今よりは) もう少し柔軟性を増すことにつながり、その結果、XPCOM をより汎用的にすることができるでしょう。</p> -<ul> - <li>初期化担当者 (クライアントアプリケーション) が、基本的な mozIRegistry の実装を仕立てることができるようになった。</li> -</ul> -<p>そのため、より進んだ実装 (例えば RDF ベースのもの) と基本的な libreg ベースのレジストリーの実装との間で選択することができます。</p> -<p>nsRepository は CLSID だけを知っています。クライアントコンポーネント/アプリケーションは CLSID を取得する責任があります。 このテーマは、いくつかの点でもう少し説明が必要です。 基本的に、それらのサービスが mozIRegistry インタフェースに基づくべきだと想像します。 言い替えると、Rick が先週示唆したように、それらはレジストリーとリポジトリーの上層部にプロトコルを実装するでしょう。</p> -<div class="note"> - <p>私は、これは nsRepository のコードを改善するのに役立つと思います。これにより、サービスマネージャと同じように構造化されるでしょう。そうすると、nsRepository 自身をサービスとし、XPCOM モジュールを XPCOM の実装から完全に (?!) 引き離すことができるでしょう。</p> -</div> -<dl> - <dt> - mozIRegistry</dt> - <dd> - これは、新しいインタフェースで、現在 mozilla/modules/libreg/include/NSReg.h で定義されている libreg (「Netscapeレジストリー」としても知られている) が提供しているのと基本的に同じ関数を外に見せるものです。 クライアントは、このインタフェースをサービスマネージャを通じて、取得します (mozilla/xpcom/public/nsIServiceManager.h を見てください)。</dd> - <dt> - mozRegistry</dt> - <dd> - これは、とても簡単な mozIRegistry インタフェースの実装です。 NSReg.h の関数のための単純な C++ ラッパーとして作られています。 これは、現在の libreg の使用と完全に互換性のある (もう少し) 軽い実装を提供することを意図しています。</dd> - <dt> - mozRDFRegistry</dt> - <dd> - これは、付加的な能力を提供する RDF ベースの mozIRegistry 実装です。 これらの付加的な能力は、nsRepository によっては利用されないことに注意してください。 libreg の .reg ファイル、共有ライブラリのインストール、net を通じてアクセス可能な追加のコンポーネント、などに対応する基本的な RDF データソースの複数のタイプがあるでしょう。</dd> -</dl> -<p>この RDF データベースのコンテンツは、プレーンテキストの rdf/xml ファイルとして保存されます。そのため、中を見たり編集したりするのが簡単にできます。 またそれにより、人々が表示したりそのコンテンツを編集したりできるような、ブラウザーベースのアプリケーションの構築が容易になります。</p> -<div class="originaldocinfo"> - <h2 id=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1">原文書の情報</h2> - <ul> - <li>著者: <a class="link-mailto" href="mailto:law@netscape.com">Bill Law</a></li> - <li>最終更新日: January 21, 1999</li> - <li>著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a></li> - </ul> -</div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozistoragestatementparams/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozistoragestatementparams/index.html deleted file mode 100644 index 4ea6f0c619..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozistoragestatementparams/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: mozIStorageStatementParams -slug: >- - Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/mozIStorageStatementParams -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementParams ---- -<p>このインターフェースは定義済みのプロパティを1つも持ちませんが、与えられたステートメントのSQL内で見つかった名前付きパラメータに基づいたプロパティを持ちます。例えば、次のようにステートメントを構築します:</p> -<pre class="brush: js">var statement = dbConn.createStatement("SELECT * FROM table_name WHERE id = :item_id"); -</pre> -<p>このオブジェクトは <code>item_id</code> という1つのプロパティを持つことになり、次のようにして値を名前付きパラメータに束縛することができる:</p> -<pre class="brush: js">statement.params.item_id = 2; -</pre> -<p>なぜ値をハードコーディングせずに、パラメータへの束縛を行うべきかについてのより詳しい情報は、<a class="internal" href="/ja/Storage#Binding_Parameters" title="ja/Storage#Binding Parameters">overview document about binding parameters</a>をご覧ください。</p> -<h2 id="プロパティの列挙">プロパティの列挙</h2> -<p> このオブジェクトの全てのプロパティは <code><a class="internal" href="/en/Core_JavaScript_1.5_Reference/Statements/for...in" title="En/Core JavaScript 1.5 Reference/Statements/For...in">for..in</a></code> により列挙することが出来ます:</p> -<pre class="brush: js">// valuesToBind は ステートメントの実行前にバインドすべき -// key-value ペアを持つオブジェクト -for (let param in statement.params) - statement.params[param] = valuesToBind[param]; -</pre> -<h2 id="参照">参照</h2> -<ul> - <li><a href="/en/Storage" title="en/Storage">Storage</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessible/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessible/index.html deleted file mode 100644 index 32251140ee..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessible/index.html +++ /dev/null @@ -1,484 +0,0 @@ ---- -title: nsIAccessible -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIAccessible -tags: - - Accessibility - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible ---- -<p> </p> -<p><code>nsIAccessible</code> インタフェースは、MSAA や ATK のようなプラットフォーム固有のアクセシビリティ API をサポートする、クロスプラットフォームなインタフェースです。ATK の一般的な accessibility オブジェクトと同様に、<code>IAccessible</code> をサポートするのに必要なもののすべてが含まれています。</p> -<p>accessible tree 内のオブジェクトについての情報を取得するために、処理中の accessibility クライアントによって使用されます。accessible tree は DOM tree 内の (ドキュメントやフォーカス可能な要素、テキストのような) ノード のサブセットです。Mozilla は <code>nsIAccessible</code> の実装を要求があるときに生成します。</p> -<p>参照: <code><a class="external" href="http://www.mozilla.org/projects/ui/accessibility" rel="freelink">http://www.mozilla.org/projects/ui/accessibility</a></code> に詳しい情報があります。 </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/accessible/public/nsIAccessible.idl" rel="custom">accessible/public/nsIAccessible.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <a href="ja/NsISupports">nsISupports</a></p> -<p><span id="Method_overview"></span></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="ja/NsIDOMDOMStringList">nsIDOMDOMStringList</a> <a href="#getKeyBindings.28.29">getKeyBindings</a>(in PRUint8 aActionIndex);</code></td> - </tr> - <tr> - <td><code>void <a href="#getFinalState.28.29">getFinalState</a>(out unsigned long aState, out unsigned long aExtraState);</code></td> - </tr> - <tr> - <td><code>void <a href="#groupPosition.28.29">groupPosition</a>(out long aGroupLevel, out long aSimilarItemsInGroup, out long aPositionInGroup);</code></td> - </tr> - <tr> - <td><code>nsIAccessible <a href="#getChildAtPoint.28.29">getChildAtPoint</a>(in long x, in long y);</code></td> - </tr> - <tr> - <td><code>nsIAccessible <a href="#getChildAt.28.29">getChildAt</a>(in long aChildIndex);</code></td> - </tr> - <tr> - <td><code>nsIAccessible <a href="#getAccessibleToRight.28.29">getAccessibleToRight</a>();</code></td> - </tr> - <tr> - <td><code>nsIAccessible <a href="#getAccessibleToLeft.28.29">getAccessibleToLeft</a>();</code></td> - </tr> - <tr> - <td><code>nsIAccessible <a href="#getAccessibleAbove.28.29">getAccessibleAbove</a>();</code></td> - </tr> - <tr> - <td><code>nsIAccessible <a href="#getAccessibleBelow.28.29">getAccessibleBelow</a>();</code></td> - </tr> - <tr> - <td><code>nsIAccessible <a href="#getAccessibleRelated.28.29">getAccessibleRelated</a>(in unsigned long aRelationType);</code></td> - </tr> - <tr> - <td><code><a href="ja/NsIAccessibleRelation">nsIAccessibleRelation</a> <a href="#getRelation.28.29">getRelation</a>(in unsigned long index);</code></td> - </tr> - <tr> - <td><code><a href="ja/NsIArray">nsIArray</a> <a href="#getRelations.28.29">getRelations</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="#getBounds.28.29">getBounds</a>(out long x, out long y, out long width, out long height);</code></td> - </tr> - <tr> - <td><code>void <a href="#setSelected.28.29">setSelected</a>(in boolean isSelected);</code></td> - </tr> - <tr> - <td><code>void <a href="#extendSelection.28.29">extendSelection</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="#takeSelection.28.29">takeSelection</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="#takeFocus.28.29">takeFocus</a>();</code></td> - </tr> - <tr> - <td><code>AString <a href="#getActionName.28.29">getActionName</a>(in PRUint8 index);</code></td> - </tr> - <tr> - <td><code>AString <a href="#getActionDescription.28.29">getActionDescription</a>(in PRUint8 aIndex);</code></td> - </tr> - <tr> - <td><code>void <a href="#doAction.28.29">doAction</a>(in PRUint8 index);</code></td> - </tr> - </tbody> -</table> -<p><span id="Attributes"></span></p> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code id="parent">parent</code></td> - <td><code>nsIAccessible</code></td> - <td>accessible tree 内の親ノード。</td> - </tr> - <tr> - <td><code id="nextSibling">nextSibling</code></td> - <td><code>nsIAccessible</code></td> - <td>accessible tree 内の次の兄弟ノード。</td> - </tr> - <tr> - <td><code id="previousSibling">previousSibling</code></td> - <td><code>nsIAccessible</code></td> - <td>accessible tree 内の前の兄弟ノード。</td> - </tr> - <tr> - <td><code id="firstChild">firstChild</code></td> - <td><code>nsIAccessible</code></td> - <td>accessible tree 内の最初の子ノード。</td> - </tr> - <tr> - <td><code id="lastChild">lastChild</code></td> - <td><code>nsIAccessible</code></td> - <td>accessible tree 内の最後の子ノード。</td> - </tr> - <tr> - <td><code id="children">children</code></td> - <td><code><a href="ja/NsIArray">nsIArray</a></code></td> - <td>この要素の子ノードすべての配列。</td> - </tr> - <tr> - <td><code id="childCount">childCount</code></td> - <td><code>long</code></td> - <td>accessible 子ノードの数。</td> - </tr> - <tr> - <td><code id="indexInParent">indexInParent</code></td> - <td><code>long</code></td> - <td>この親に含まれる子ノードのリストの、0 を基点とした accessible の index。または、この accessible が親ノードを持たない場合は <code>-1</code> を返す。</td> - </tr> - <tr> - <td><code id="name">name</code></td> - <td><code>AString</code></td> - <td>Accessible の名前 -- このノードのメインテキストと同等。</td> - </tr> - <tr> - <td><code id="value">value</code></td> - <td><code>AString</code></td> - <td>Accessible の値 -- このノードの数量または二次テキストと同等。role 属性を使用するウィジェットは、この値に valuenow 属性の使用を強制することができます。</td> - </tr> - <tr> - <td><code id="description">description</code></td> - <td><code>AString</code></td> - <td>Accessible の説明 -- このノードに関連付けられた長いテキスト。</td> - </tr> - <tr> - <td><code id="keyboardShortcut">keyboardShortcut</code></td> - <td><code>AString</code></td> - <td>Alt+D のように accesskey 名のローカライズされた文字列を提供。修飾子はユーザおよびプラットフォームの設定に影響されます。通常は <code>alt+文字</code>、または単にアクセスキーの文字がメニュー項目に使用されます。</td> - </tr> - <tr> - <td><code id="defaultKeyBinding">defaultKeyBinding</code></td> - <td><code>AString</code></td> - <td>ファイルを開くための <code>Ctrl+O</code> など、既定の動作のためのグローバルキーボードアクセラレータのローカライズされた文字列を提供。</td> - </tr> - <tr> - <td><code id="role">role</code></td> - <td><code>unsigned long</code></td> - <td>関連付けられた要素の accessible role の数。値はプラットフォームごとに異なります。<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRole" title="">nsIAccessibleRole</a></code> 内で定義された <code>ROLE_*</code> 定数を参照してください。 - <p>これは、<code>finalRole</code> がするように role 属性を考慮に入れません。</p> - </td> - </tr> - <tr> - <td><code id="finalRole">finalRole</code></td> - <td><code>unsigned long</code></td> - <td>accessible role の数。値はプラットフォームごとに異なります。<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRole" title="">nsIAccessibleRole</a></code> 内で定義された <code>ROLE_*</code> 定数を参照してください。ウィジェットは、final role を強制するために role 属性を使用することができます。</td> - </tr> - <tr> - <td><code id="help">help</code></td> - <td><code>AString</code></td> - <td>ノードに関連付けられたヘルプテキスト。</td> - </tr> - <tr> - <td><code id="focusedChild">focusedChild</code></td> - <td><code>nsIAccessible</code></td> - <td>フォーカスされたノードの accessible 子ノード。</td> - </tr> - <tr> - <td><code id="attributes">attributes</code></td> - <td><code><a href="ja/NsIPersistentProperties">nsIPersistentProperties</a></code></td> - <td>Accessible の属性。</td> - </tr> - <tr> - <td><code id="relationsCount">relationsCount</code></td> - <td><code>unsigned long</code></td> - <td>このオブジェクトに関連する accessible の数を返す。</td> - </tr> - <tr> - <td><code id="numActions">numActions</code></td> - <td><code>PRUint8</code></td> - <td>この accessible に関連付けられた accessible action の数。</td> - </tr> - </tbody> -</table> -<p><span id="Methods"></span></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="getKeyBindings.28.29" name="getKeyBindings.28.29">getKeyBindings()</h3> -<p>このメソッドは、与えられた accessible にサポートされた action index のための、グローバルキーボードアクセラレータのローカライズされた文字列を提供します。</p> -<pre class="eval"> nsIDOMDOMStringList getKeyBindings( - in PRUint8 aActionIndex - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>aActionIndex</tt></dt> - <dd> - 与えられた action の index。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>グローバルキーボードアクセラレータのローカライズされた文字列の配列を返す。</p> -<h3 id="getFinalState.28.29" name="getFinalState.28.29">getFinalState()</h3> -<p>このメソッドは final state を回収します。Accessible state -- ノードの真偽値プロパティについて書かれたビットフィールド。多くの state は、既知の確かな role 属性がサポートする有効なものだけです。</p> -<pre class="eval"> void getFinalState( - out unsigned long aState, - out unsigned long aExtraState - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>aState</tt></dt> - <dd> - 最初のビットフィールド (参照: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleStates" title="">nsIAccessibleStates</a></code> <code>STATE_*</code> constants)。</dd> - <dt> - <tt>aExtraState</tt></dt> - <dd> - 2 番目のビットフィールド (参照: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleStates" title="">nsIAccessibleStates</a></code> <code>EXT_STATE_*</code> constants)。</dd> -</dl> -<h3 id="groupPosition.28.29" name="groupPosition.28.29">groupPosition()</h3> -<p>このメソッドはグループ化情報を返します。tree 項目、list 項目、tab パネルの label、radio ボタンなどに使用されます。また、テキストではないオブジェクトの収集にも使用されます。</p> -<pre class="eval"> void groupPosition( - out long aGroupLevel, - out long aSimilarItemsInGroup, - out long aPositionInGroup - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <tt>aGroupLevel</tt></dt> - <dd> - 1 を基点とする。ARIA <code>level</code> プロパティと同様。</dd> - <dt> - <tt>aSimilarItemsInGroup</tt></dt> - <dd> - 現在の項目を含み、1 を基点とする。ARIA <code>setsize</code> プロパティと同様。</dd> - <dt> - <tt>aPositionInGroup</tt></dt> - <dd> - 1 を基点とする。ARIA <code>posinset</code> プロパティと同様。</dd> -</dl> -<h3 id="getChildAtPoint.28.29" name="getChildAtPoint.28.29">getChildAtPoint()</h3> -<p>このメソッドは、スクリーンピクセルの (x, y) 座標を含む、accessible の子ノードを返します。</p> -<p>この点の位置が現在の accessible 内で子ノードの外にある場合は、現在の accessible が返されます。</p> -<p>この点の位置が現在の accessible または 子ノード内のどちらにもない場合は、<code>NULL</code> が返されます。</p> -<pre class="eval"> nsIAccessible getChildAtPoint( - in long x, - in long y - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <tt>x</tt></dt> - <dd> - Accessible の X 座標。</dd> - <dt> - <tt>y</tt></dt> - <dd> - Accessible の Y 座標。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>(x, y) 座標で与えられた accessible の子ノードを返す。</p> -<h3 id="getChildAt.28.29" name="getChildAt.28.29">getChildAt()</h3> -<p>このメソッドは、0 を基点とした index または 0 より小さい場合は最後の子ノードを使用して、accessible の N 番目の子ノードを返します。</p> -<pre class="eval"> nsIAccessible getChildAt( - in long aChildIndex - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<dl> - <dt> - <tt>aChildIndex</tt></dt> - <dd> - N 番目の子ノードの index。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6> -<p>0 を基点とした index または 0 より小さい場合は最後の子ノードを使用して、accessible の N 番目の子ノードを返す。</p> -<h3 id="getAccessibleToRight.28.29" name="getAccessibleToRight.28.29">getAccessibleToRight()</h3> -<p>このメソッドは、このノードの右側に配置された accessible ノードを返します。</p> -<pre class="eval"> nsIAccessible getAccessibleToRight(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6> -<p>なし。</p> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_4" name=".E6.88.BB.E3.82.8A.E5.80.A4_4">戻り値</h6> -<p>このノードの右側に配置された accessible ノードを返す。</p> -<h3 id="getAccessibleToLeft.28.29" name="getAccessibleToLeft.28.29">getAccessibleToLeft()</h3> -<p>このメソッドは、このノードの左側に配置された accessible ノードを返します。</p> -<pre class="eval"> nsIAccessible getAccessibleToLeft(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6> -<p>なし。</p> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_5" name=".E6.88.BB.E3.82.8A.E5.80.A4_5">戻り値</h6> -<p>このノードの左側に配置された accessible ノードを返す。</p> -<h3 id="getAccessibleAbove.28.29" name="getAccessibleAbove.28.29">getAccessibleAbove()</h3> -<p>このメソッドは、このノードの上側に配置された accessible ノードを返します。</p> -<pre class="eval"> nsIAccessible getAccessibleAbove(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6> -<p>なし。</p> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_6" name=".E6.88.BB.E3.82.8A.E5.80.A4_6">戻り値</h6> -<p>このノードの上側に配置された accessible ノードを返す。</p> -<h3 id="getAccessibleBelow.28.29" name="getAccessibleBelow.28.29">getAccessibleBelow()</h3> -<p>このメソッドは、このノードの下側に配置された accessible ノードを返します。</p> -<pre class="eval"> nsIAccessible getAccessibleBelow(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_9" name=".E5.BC.95.E6.95.B0_9">引数</h6> -<p>なし。</p> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_7" name=".E6.88.BB.E3.82.8A.E5.80.A4_7">戻り値</h6> -<p>このノードの下側に配置された accessible ノードを返す。</p> -<h3 id="getAccessibleRelated.28.29" name="getAccessibleRelated.28.29">getAccessibleRelated()</h3> -<p>このメソッドは、与えられた relation type (参照: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRelation" title="">nsIAccessibleRelation</a></code> で定義された定数) によって、これに関連する accessible を返します。</p> -<pre class="eval"> nsIAccessible getAccessibleRelated( - in unsigned long aRelationType - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_10" name=".E5.BC.95.E6.95.B0_10">引数</h6> -<dl> - <dt> - <tt>aRelationType</tt></dt> - <dd> - accessible 間の relation type。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_8" name=".E6.88.BB.E3.82.8A.E5.80.A4_8">戻り値</h6> -<p>与えられた relation type によって提供された accessible に関連する accessible を返す。</p> -<h3 id="getRelation.28.29" name="getRelation.28.29">getRelation()</h3> -<p>このメソッドは、このオブジェクトに対する accessible relation を一つ返します。</p> -<pre class="eval"> nsIAccessibleRelation getRelation( - in unsigned long index - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_11" name=".E5.BC.95.E6.95.B0_11">引数</h6> -<dl> - <dt> - <tt>index</tt></dt> - <dd> - 回収される relation の index。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_9" name=".E6.88.BB.E3.82.8A.E5.80.A4_9">戻り値</h6> -<p>このオブジェクトに対する accessible relation を一つ返す。</p> -<h3 id="getRelations.28.29" name="getRelations.28.29">getRelations()</h3> -<p>このメソッドは、このオブジェクトに対する複数の accessible relations を返します。</p> -<pre class="eval"> nsIArray getRelations(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_12" name=".E5.BC.95.E6.95.B0_12">引数</h6> -<p>なし。</p> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_10" name=".E6.88.BB.E3.82.8A.E5.80.A4_10">戻り値</h6> -<p>このオブジェクトに対する複数の accessible relations を返す。</p> -<h3 id="getBounds.28.29" name="getBounds.28.29">getBounds()</h3> -<p>このメソッドは、画面上の accessible の (x および y) 座標ならびに accessible の width および height を返します。</p> -<pre class="eval"> void getBounds( - out long x, - out long y, - out long width, - out long height - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_13" name=".E5.BC.95.E6.95.B0_13">引数</h6> -<dl> - <dt> - <tt>x</tt></dt> - <dd> - Accessible の X 座標。</dd> - <dt> - <tt>y</tt></dt> - <dd> - Accessible の Y 座標。</dd> - <dt> - <tt>width</tt></dt> - <dd> - Accessible の幅。</dd> - <dt> - <tt>height</tt></dt> - <dd> - Accessible の高さ。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_11" name=".E6.88.BB.E3.82.8A.E5.80.A4_11">戻り値</h6> -<p>画面上の accessible の (x および y) 座標ならびに accessible の width および height を返す。</p> -<h3 id="setSelected.28.29" name="setSelected.28.29">setSelected()</h3> -<p>このメソッドは、この accessible を現在選択されたものに追加、または削除します。</p> -<pre class="eval"> void setSelected( - in boolean isSelected - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_14" name=".E5.BC.95.E6.95.B0_14">引数</h6> -<dl> - <dt> - <tt>isSelected</tt></dt> - <dd> - 現在選択されたもの。</dd> -</dl> -<h3 id="extendSelection.28.29" name="extendSelection.28.29">extendSelection()</h3> -<p>このメソッドは、現在の accessible アンカーノードからこの accessible へ、現在選択されたものを広げます。</p> -<pre class="eval"> void extendSelection(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_15" name=".E5.BC.95.E6.95.B0_15">引数</h6> -<p>なし。</p> -<h3 id="takeSelection.28.29" name="takeSelection.28.29">takeSelection()</h3> -<p>このメソッドは、この accessible ノードのみを選択します。</p> -<pre class="eval"> void takeSelection(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_16" name=".E5.BC.95.E6.95.B0_16">引数</h6> -<p>なし。</p> -<h3 id="takeFocus.28.29" name="takeFocus.28.29">takeFocus()</h3> -<p>このメソッドは、この accessible ノードにフォーカスします。</p> -<p><code>STATE_FOCUSABLE</code> の状態は、このノードが普通にフォーカス可能かどうか示します。このノードがフォーカス可能かどうかを決めるのは、呼び出し側に責任があります。通常、フォーカス不能なノード (table など) 上の <code>accTakeFocus</code> はそのノードにフォーカスを設定していますが、通常は、ほとんどのスタイルシートで視覚的に示されません。</p> -<pre class="eval"> void takeFocus(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_17" name=".E5.BC.95.E6.95.B0_17">引数</h6> -<p>なし。</p> -<h3 id="getActionName.28.29" name="getActionName.28.29">getActionName()</h3> -<p>このメソッドは、0 を基点とした index で accessible action の name を取得します。</p> -<pre class="eval"> AString getActionName( - in PRUint8 index - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_18" name=".E5.BC.95.E6.95.B0_18">引数</h6> -<dl> - <dt> - <tt>index</tt></dt> - <dd> - 0 を基点とする index。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_12" name=".E6.88.BB.E3.82.8A.E5.80.A4_12">戻り値</h6> -<p>accessible action の name を返す。</p> -<h3 id="getActionDescription.28.29" name="getActionDescription.28.29">getActionDescription()</h3> -<p>このメソッドは、0 を基点とした index で accessible action の description を取得します。</p> -<pre class="eval"> AString getActionDescription( - in PRUint8 aIndex - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_19" name=".E5.BC.95.E6.95.B0_19">引数</h6> -<dl> - <dt> - <tt>aIndex</tt></dt> - <dd> - 0 を基点とする index。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_13" name=".E6.88.BB.E3.82.8A.E5.80.A4_13">戻り値</h6> -<p>accessible action の description を返す。</p> -<h3 id="doAction.28.29" name="doAction.28.29">doAction()</h3> -<p>このメソッドは、0 を基点とした index で accessible action を実行します。Action 番号 <code>0</code> はデフォルトの action です。</p> -<pre class="eval"> void doAction( - in PRUint8 index - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_20" name=".E5.BC.95.E6.95.B0_20">引数</h6> -<dl> - <dt> - <tt>index</tt></dt> - <dd> - 0 を基点とする index。</dd> -</dl> -<p><span id="See_also"></span></p> -<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3> -<ul> - <li><a href="ja/Accessibility">Accessibility</a></li> - <li><a href="ja/NsIPersistentProperties">nsIPersistentProperties</a></li> - <li><a href="ja/NsIDOMDOMStringList">nsIDOMDOMStringList</a></li> - <li><a href="ja/NsIAccessibleRelation">nsIAccessibleRelation</a></li> -</ul> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessibleprovider/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessibleprovider/index.html deleted file mode 100644 index 23a49f7cf2..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessibleprovider/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: nsIAccessibleProvider -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIAccessibleProvider -tags: - - Accessibility - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleProvider ---- -<p> </p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/accessible/public/nsIAccessibleProvider.idl" rel="custom">accessible/public/nsIAccessibleProvider.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <a href="ja/NsISupports">nsISupports</a></p> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>accessible</code></td> - <td><code><a href="ja/NsIAccessible">nsIAccessible</a></code></td> - <td>accessible を返す。 - <i> - 読み取り専用</i> - </td> - </tr> - </tbody> -</table> -<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3> -<ul> - <li><a href="ja/Accessibility">Accessibility</a></li> - <li><a href="ja/NsIAccessible">nsIAccessible</a></li> -</ul> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiannotationobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiannotationobserver/index.html deleted file mode 100644 index 04355548d1..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiannotationobserver/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: nsIAnnotationObserver -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIAnnotationObserver -tags: - - Developing Mozilla - - Extensions - - Interfaces - - Places - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIAnnotationObserver ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/public/nsIAnnotationService.idl" rel="custom">toolkit/components/places/public/nsIAnnotationService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - - <div style="height: 42px; position: relative; padding: 2px; width: auto;"> - - <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div> - - <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div> - - <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 5.714285714285714%;"></div> - -<div style="height: 8px; top: 16px; left: 5.714285714285714%; background: #00dd00; position: absolute; width: 94.28571428571429%;" title="Introduced in Gecko 1.8 (Firefox 1.5 / Thunderbird 1.5 / SeaMonkey 1.0)"></div> - -<div style="top: 0px; font-size: 11px; position: absolute; left: 5.714285714285714%;">Introduced</div> -<div style="top: 22px; font-size: 11px; position: absolute; left: 5.714285714285714%;">Gecko 1.8</div> - - <div style="height: 8px; top: 16px; left: 8.071428571428571%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 1.9 (Firefox 3)"></div> - -</div> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> - -<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#onItemAnnotationRemoved()">onItemAnnotationRemoved</a>(in long long aItemId, in AUTF8String aName);</code></td> - </tr> - <tr> - <td><code>void <a href="#onItemAnnotationSet()">onItemAnnotationSet</a>(in long long aItemId, in AUTF8String aName);</code></td> - </tr> - <tr> - <td><code>void <a href="#onPageAnnotationRemoved()">onPageAnnotationRemoved</a>(in nsIURI aURI, in AUTF8String aName);</code></td> - </tr> - <tr> - <td><code>void <a href="#onPageAnnotationSet()">onPageAnnotationSet</a>(in nsIURI aPage, in AUTF8String aName);</code></td> - </tr> - </tbody> -</table> - -<h2 id="Methods" name="Methods">メソッド</h2> - -<h3 id="onItemAnnotationRemoved" name="onItemAnnotationRemoved">onItemAnnotationRemoved()</h3> -<p>あるアイテムに対するアノテーションが削除された場合に呼ばれます。もし <code>aName</code> が空であれば、与えられた URI に対する全ての削除されたアノテーションを意味します。アノテーションの期限が切れている (expired) 場合はこのメソッドは呼び出されません。(通常アプリケーションが終了する場合などにこれが起こります)</p> -<pre>void onItemAnnotationRemoved( - in long long aItemId, - in aUTF8String aName -); -</pre> -<h6 id="引数">引数</h6> -<dl> - <dt>aItemId</dt> - <dd>アノテーションが削除されるアイテムの ID</dd> - <dt>aName</dt> - <dd>アノテーションの名前</dd> -</dl> - -<h3 id="onItemAnnotationSet" name="onItemAnnotationSet">onItemAnnotationSet()</h3> -<p>アノテーションの値があるアイテムにセットされたときに呼ばれます。アノテーションは新しいアノテーションであっても、既に存在するアノテーションに対する新しい値のセットであっても構いません。</p> -<pre>void onItemAnnotationSet( - in long long aItemId, - in AUTF8String aName -); -</pre> -<h6 id="引数_2">引数</h6> -<dl> - <dt>aItemId</dt> - <dd>アノテーションがセットされるアイテムの ID</dd> - <dt>aName</dt> - <dd>アノテーションの名前</dd> -</dl> - -<h3 id="onPageAnnotationRemoved" name="onPageAnnotationRemoved">onPageAnnotationRemoved()</h3> -<p>URIに対するアノテーションが削除されたときに呼ばれます。もし <code>aName</code> が空であれば、与えられたURIに対する全ての削除されたアノテーションを意味します。アノテーションの期限が切れている (expired) 場合はこのメソッドは呼び出されません。(通常アプリケーションが終了する場合などにこれが起こります)</p> -<pre>void onPageAnnotationRemoved( - in nsIURI aPage, - in AUTF8String aName -); -</pre> -<h6 id="引数_3">引数</h6> -<dl> - <dt>aURI</dt> - <dd>アノテーションが削除される URI</dd> - <dt>aName</dt> - <dd>アノテーションの名前</dd> -</dl> - -<h3 id="onPageAnnotationSet" name="onPageAnnotationSet">onPageAnnotationSet()</h3> -<p>アノテーションが URI に対してセットされたときに呼ばれます。アノテーションは新しいアノテーションであっても、既に存在するアノテーションに対する新しい値のセットであっても構いません。</p> -<pre>void onPageAnnotationSet( - in nsIURI aPage, - in AUTF8String aName -); -</pre> -<h6 id="引数_4">引数</h6> -<dl> - <dt>aURI</dt> - <dd>アノテーションがセットされる URI</dd> - <dt>aName</dt> - <dd>アノテーションの名前</dd> -</dl> - -<h2 id="See_also" name="See_also">参照</h2> -<ul> - <li><a href="/docs/Mozilla/Tech/Places" title="/Places">Places</a></li> - <li><a href="/docs/Mozilla/Tech/Places/Using_the_Places_annotation_service" title="/Using the Places annotation service">Using the Places annotation service</a></li> - <li><a href="/docs/Mozilla/Tech/Places/Using_the_Places_favicon_service" title="/Using the Places favicon service">Using the Places favicon service</a></li> - <li><a href="/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAnnotationService" title="/nsIAnnotationService">nsIAnnotationService</a></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiasyncinputstream/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiasyncinputstream/index.html deleted file mode 100644 index 9679edc1f1..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiasyncinputstream/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: nsIAsyncInputStream -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIAsyncInputStream -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIAsyncInputStream ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/io/nsIAsyncInputStream.idl" rel="custom">xpcom/io/nsIAsyncInputStream.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 1.7 </span></div> -</div> -<p> </p> -<p>ノンブロッキングな入力ストリームは、読み込みの際にNS_BASE_STREAM_WOULD_BLOCKを返すことがあります。この場合、呼び出し元では、ストリームに読み取り対象のデータが到着するまで待機する必要があります。もしもストリームがnsIAsyncInputStreamを実装していれば、呼び出し元はこのインタフェースを使って、( <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIAsyncInputStream#AsyncWait()">AsyncWait()</a></code> メソッドを介して)、ストリームが読み取り可能になるか閉じたときに、非同期で通知するよう要求できます。</p> -<div> - このインタフェースはもっぱらノンブロッキングなストリームに対して使用されますが、 <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIInputStream#isNonBlocking()">nsIInputStream.isNonBlocking()</a></code> は必ずしもtrueを返す必要はありません。ノンブロッキングな <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code> がnsIAsyncInputStreamを必ず実装している必要もありません。</div> -<div> - </div> -<h2 id="Method_overview" name="Method_overview">Method overview</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#asyncWait()">asyncWait</a>(in nsIInputStreamCallback aCallback, in unsigned long aFlags, in unsigned long aRequestedCount, in nsIEventTarget aEventTarget);</code></td> - </tr> - <tr> - <td><code>void <a href="#closeWithStatus()">closeWithStatus</a>(in nsresult aStatus);</code></td> - </tr> - </tbody> -</table> -<h2 id="Constants" name="Constants">Constants</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Constant</td> - <td class="header">Value</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>WAIT_CLOSURE_ONLY</code></td> - <td><code>(1<<0)</code></td> - <td> - <p><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIAsyncInputStream#asyncWait()">asyncWait()</a></code> に渡すと、このフラグはデフォルトの挙動を上書きし、OnInputStreamReadyによる通知がストリームが閉じるまで抑制されるようになります( closeWithStatusかcloseがストリームに対して呼ばれるか、おそらくストリーム内の何らかのエラーが原因で閉じられるまで抑制されます)。</p> - </td> - </tr> - </tbody> -</table> -<h2 id="Methods" name="Methods">Methods</h2> -<h3 id="asyncWait" name="asyncWait()">asyncWait()</h3> -<p>ストリームが読み取り可能になるか閉じられるのを、非同期に待ち受けます。通知は1度だけ、つまりasyncWaitの呼び出しごとにちょうど一度だけcallbackによる通知が行われます。OnInputStreamReady イベントが送信されると、ストリームは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStreamCallback" title="">nsIInputStreamCallback</a></code> イベントへの参照を解放します。この通知イベントのハンドラの中で再びasyncWaitを呼び出しても安全です。</p> -<div> - このメソッドは任意のタイミングで(まだ読み出しが行われていない場合ですら)呼び出される可能性があります。言い換えればこれは、ストリームに既に読み取り対象のデータがある場合に呼び出される可能性もあるということです。ストリームが閉じているときに呼び出される可能性もあります。asyncWaitが呼び出された時にストリームが既に読み取り可能または閉じていた場合、 <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIInputStreamCallback#onInputStreamReady()">nsIInputStreamCallback.onInputStreamReady()</a></code> イベントはただちに送信されます。それ以外の場合、ストリームが読み取り可能になるまたは閉じるのを待って、イベントは送信されます。</div> -<p> </p> -<pre class="eval">void asyncWait( - in nsIInputStreamCallback aCallback, - in unsigned long aFlags, - in unsigned long aRequestedCount, - in nsIEventTarget aEventTarget -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aCallback</code></dt> - <dd> - ストリームの準備が整うと呼び出されるオブジェクトです。既存のコールバックをクリアするためにnullをセットすることもできます。</dd> - <dt> - <code>aFlags</code></dt> - <dd> - このメソッドの動作を設定するために渡すフラグを、オプションで指定します。何も指定しない場合は0を渡してください。</dd> - <dt> - <code>aRequestedCount</code></dt> - <dd> - 指定されたバイト数以上データが読み込み可能になるまで待機します。このパラメータは実際のストリームに対する提案にすぎず、実際には無視されるかもしれません。特に指定が無い場合は0を渡すとよいでしょう。</dd> - <dt> - <code>aEventTarget</code></dt> - <dd> - nullを指定すると、通知を任意のスレッドで受け取ります(呼び出し元スレッド上で再帰的に受け取り、同期呼び出しになる可能性もあります)。特定のイベントターゲットを指定すると、そこに通知されるようになります。 </dd> -</dl> -<h3 id="closeWithStatus" name="closeWithStatus()">closeWithStatus()</h3> -<p>このメソッドは、ストリームを閉じて内部ステータスをセットします。ストリームが既に閉じられている場合、このメソッドの呼び出しは無視されます。いったんストリームが閉じられると、ストリームのステータスを変更することはできません。成功ステータスをこのメソッドに渡した場合は<code>NS_BASE_STREAM_CLOSEDとして扱われ、これは</code><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIInputStream#close()">nsIInputStream.close()</a></code>と同等の効果があります。</p> -<div class="blockIndicator note"><strong>註:</strong> このメソッドは、入力側と出力側を持ったパイプをサポートするために存在しているようなところがあります。パイプの入力側が閉じられると、パイプの出力側への書き込みは失敗するようになります。"壊れた"パイプに書き込もうとした時に返ってくるエラーコードが、パイプの入力側を閉じたときに渡されたステータスコードに相当します。これにより、パイプの取り扱いが非常に簡単になるケースがあります。</div> -<pre class="eval">void closeWithStatus( - in nsresult aStatus -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aStatus</code></dt> - <dd> - 閉じられたストリームがアクセスされた場合に返るエラーです。</dd> -</dl> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiconsoleservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiconsoleservice/index.html deleted file mode 100644 index 0db6957354..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiconsoleservice/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: nsIConsoleService -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIConsoleService -tags: - - Interfaces - - 'Interfaces:Scriptable' - - MDC Project - - NeedsContent - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService ---- -<p> </p> -<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3> -<p>コンソールサービスは、すべての Mozilla アプリケーションに付属する <a href="ja/JavaScript_%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab">JavaScript コンソール</a> <span style="color: darkgreen; background: #ef9;">【訳注: Firefox 2 ではエラーコンソールという名称に変更されている】</span> ツールのバックエンド部分です。色々なメッセージ、警告、エラーをロギングしたり、ロギングされたメッセージを取得したりするために使用します。</p> -<p>インタフェース定義: <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nsIConsoleService.idl" rel="custom">xpcom/base/nsIConsoleService.idl</a></code></p> -<p>Contract ID: <code>@mozilla.org/consoleservice;1</code></p> -<p>このインタフェースは未凍結で、将来的に変更される可能性があります (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=228205" title="Redesign nsIConsoleService and related APIs">バグ 228205</a>)。</p> -<h3 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB">サンプル</h3> -<h4 id=".E5.8D.98.E7.B4.94.E3.81.AA.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8.E3.82.92.E3.83.AD.E3.82.AE.E3.83.B3.E3.82.B0.E3.81.99.E3.82.8B" name=".E5.8D.98.E7.B4.94.E3.81.AA.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8.E3.82.92.E3.83.AD.E3.82.AE.E3.83.B3.E3.82.B0.E3.81.99.E3.82.8B">単純なメッセージをロギングする</h4> -<p>文字列のメッセージをコンソールへ出力するための一般的な使い方:</p> -<pre class="eval">function LOG(msg) { - var consoleService = Components.classes["@mozilla.org/consoleservice;1"] - .getService(Components.interfaces.nsIConsoleService); - consoleService.logStringMessage(msg); -} -</pre> -<p>ロギングのための代替手段となるメソッドには <a href="ja/Components.utils.reportError">Components.utils.reportError</a> と <a href="ja/DOM/window.dump">dump()</a> があります。</p> -<h4 id=".E8.BF.BD.E5.8A.A0.E6.83.85.E5.A0.B1.E3.81.A8.E3.81.A8.E3.82.82.E3.81.AB.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8.E3.82.92.E3.83.AD.E3.82.AE.E3.83.B3.E3.82.B0.E3.81.99.E3.82.8B" name=".E8.BF.BD.E5.8A.A0.E6.83.85.E5.A0.B1.E3.81.A8.E3.81.A8.E3.82.82.E3.81.AB.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8.E3.82.92.E3.83.AD.E3.82.AE.E3.83.B3.E3.82.B0.E3.81.99.E3.82.8B">追加情報とともにメッセージをロギングする</h4> -<p>ソースファイルや行番号といった他の情報を含めるためには、より複雑なコードを使う必要があります。</p> -<pre class="eval">function myLogToConsole(aMessage, aSourceName, aSourceLine, aLineNumber, - aColumnNumber, aFlags, aCategory) -{ - var consoleService = Components.classes["@mozilla.org/consoleservice;1"] - .getService(Components.interfaces.nsIConsoleService); - var scriptError = Components.classes["@mozilla.org/scripterror;1"] - .createInstance(Components.interfaces.nsIScriptError); - scriptError.init(aMessage, aSourceName, aSourceLine, aLineNumber, - aColumnNumber, aFlags, aCategory); - consoleService.logMessage(scriptError); -} -</pre> -<ul> - <li><code>aMessage</code> — ログとして出力する文字列。必ず指定する必要がある。</li> - <li><code>aSourceName</code> — エラーが発生したファイルのURL。これは JavaScript コンソールでハイパーリンクとして表示されるので、本当の URL にした方が良い。適切な URL がなければ <code>null</code> を渡すこともできる。</li> - <li><code>aSourceLine</code> — ファイル <code>aSourceName</code> 中の行番号 #<code>aLineNumber</code> である。あなたは行を指定する責任があるが、面倒であれば <code>null</code> を渡して JavaScript コンソール中にソースファイルの行を表示させないようにすることもできる。</li> - <li><code>aLineNumber</code> と <code>aColumnNumber</code> — エラーがある正確な位置を特定する。 <code>aColumnNumber</code> は問題のある文字に対して矢印を付加するために用いられる。</li> - <li><code>aFlags</code> — <code>nsIScriptError</code> で定義されたフラグ。現時点で使用可能な値: <code>nsIScriptError.errorFlag = 0</code>, <code>nsIScriptError.warningFlag = 1</code>, <code>nsIScriptError.exceptionFlag = 2</code>, <code>nsIScriptError.strictFlag = 4</code>.</li> - <li><code>aCategory</code> — メッセージ出力の原因となったコードの種類を表す文字列。かなり多くの種類の文字列があるが、それらは一箇所に集約されていなようだ。いずれは、それらがすべて <tt>nsIScriptError.idl</tt> にリストアップされることを望んでいる。</li> -</ul> -<p><span class="comment">Interwiki Languages Links</span></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefobserver/index.html deleted file mode 100644 index af2a563df5..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefobserver/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: nsIContentPrefObserver -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIContentPrefObserver -tags: - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefObserver ---- -<p> <code>nsIContentPrefObserver</code> インタフェースは、コンテンツ設定項目の値に対する変更を容易に監視できるようにします。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/contentprefs/public/nsIContentPrefService.idl" rel="custom">toolkit/components/contentprefs/public/nsIContentPrefService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#onContentPrefSet.28.29">onContentPrefSet</a>(in <a href="ja/AString">AString</a> aGroup, in AString aName, in <a href="ja/NsIVariant">nsIVariant</a> aValue);</code></td> - </tr> - <tr> - <td><code>void <a href="#onContentPrefRemoved.28.29">onContentPrefRemoved</a>(in AString aGroup, in AString aName);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="onContentPrefSet.28.29" name="onContentPrefSet.28.29">onContentPrefSet()</h3> -<p>設定項目の値が変更されたときに呼び出されます。(既存の設定項目の値が変更されたときと、新しい設定項目が作成されたときのいずれも)</p> -<pre class="eval"> void onContentPrefSet( - in AString aGroup, - in AString aName, - in nsIVariant aValue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>aGroup</tt></dt> - <dd> - 設定項目が属するグループ。これは Web サイトの URI になります。設定項目がグローバルで、すべての Web サイトに適用される場合、この値は <code>null</code> となります。</dd> - <dt> - <tt>aName</tt></dt> - <dd> - 値が変更された設定項目の名前。</dd> - <dt> - <tt>aValue</tt></dt> - <dd> - 設定項目の新しい値。</dd> -</dl> -<h3 id="onContentPrefRemoved.28.29" name="onContentPrefRemoved.28.29">onContentPrefRemoved()</h3> -<p>設定項目が削除されたときに呼び出されます。</p> -<pre class="eval"> void onContentPrefSet( - in AString aGroup, - in AString aName - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>aGroup</tt></dt> - <dd> - 設定項目が属するグループ。これは Web サイトの URI になります。設定項目がグローバルで、すべての Web サイトに適用される場合、この値は <code>null</code> となります。</dd> - <dt> - <tt>aName</tt></dt> - <dd> - 削除された設定項目の名前。</dd> -</dl> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefService" title="">nsIContentPrefService</a></code>, <a href="ja/Using_content_preferences">Using content preferences</a></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefservice/index.html deleted file mode 100644 index 15a3e9a837..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefservice/index.html +++ /dev/null @@ -1,203 +0,0 @@ ---- -title: nsIContentPrefService -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIContentPrefService -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefService ---- -<p> <code>nsIContentPrefService</code> は、拡張機能やブラウザのコードにおいて、特定の URI のための設定を保存する方法を提供します。設定項目はキーと値のペアで URI ごとに保存されます。使用例は <a href="ja/Using_content_preferences">Using content preferences</a> を参照してください。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/contentprefs/public/nsIContentPrefService.idl" rel="custom">toolkit/components/contentprefs/public/nsIContentPrefService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>実装: <code>@mozilla.org/content-pref/service;1</code>。インスタンスを作成するには、以下のように記述します。</p> -<pre class="eval">var prefService = Components.classes["@mozilla.org/content-pref/service;1"] - .getService(Components.interfaces.nsIContentPrefService); -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#addObserver.28.29">addObserver</a>(in AString aName, in <a href="ja/NsIContentPrefObserver">nsIContentPrefObserver</a> aObserver);</code></td> - </tr> - <tr> - <td><code><a href="ja/NsIVariant">nsIVariant</a> <a href="#getPref.28.29">getPref</a>(in <a href="ja/NsIURI">nsIURI</a> aURI, in <a href="ja/AString">AString</a> aName);</code></td> - </tr> - <tr> - <td><code><a href="ja/NsIPropertyBag2">nsIPropertyBag2</a> <a href="#getPrefs.28.29">getPrefs</a>(in nsIURI aURI);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#hasPref.28.29">hasPref</a>(in nsIURI aURI, in AString aName);</code></td> - </tr> - <tr> - <td><code>void <a href="#removeObserver.28.29">removeObserver</a>(in AString aName, in <a href="ja/NsIContentPrefObserver">nsIContentPrefObserver</a> aObserver);</code></td> - </tr> - <tr> - <td><code>void <a href="#removePref.28.29">removePref</a>(in nsIURI aURI, in AString aName);</code></td> - </tr> - <tr> - <td><code>void <a href="#setPref.28.29">setPref</a>(in nsIURI aURI, in AString aName, in nsIVariant aValue);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>grouper</code></td> - <td><code><a href="ja/NsIContentURIGrouper">nsIContentURIGrouper</a></code></td> - <td>URI が属するグループを判別するのにサービスが使用するコンポーネント。デフォルトでは、これは完全なホスト名で (つまりサイトごとに) URI をグループ化する「hostname grouper」になります。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="getPref.28.29" name="getPref.28.29">getPref()</h3> -<p>特定の URI のために保存された設定の値を返します。</p> -<pre class="eval"> nsIVariant getPref( - in nsIURI aURI, - in AString aName - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>aURI</tt></dt> - <dd> - 設定を取得する URI。グローバル設定空間から設定を取得する場合は <code>null</code> を指定します。グローバル設定はすべての URI に適用されます。</dd> - <dt> - <tt>aName</tt></dt> - <dd> - 値を取得する設定の名前。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>設定の値が返されます。これには、文字列、整数値、真偽値、あるいはその他の値が含まれる可能性があります。指定された名前で保存されている値がなく、設定の値が <code>null</code> (<code>nsIDataType:VTYPE_EMPTY</code>) もしくは <code>undefined</code> (<code>nsIDataType:VTYPE_VOID</code>) であった場合、結果は <code>null</code> になる場合があります。</p> -<h3 id="setPref.28.29" name="setPref.28.29">setPref()</h3> -<p>特定の URI のために設定の値を設定します。</p> -<pre class="eval"> nsIVariant setPref( - in nsIURI aURI, - in AString aName, - in nsIVariant aValue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>aURI</tt></dt> - <dd> - 設定を保存する URI。グローバル設定空間にある設定を設定する場合は <code>null</code> を指定します。グローバル設定はすべての URI に適用されます。</dd> - <dt> - <tt>aName</tt></dt> - <dd> - 値を設定する設定の名前。</dd> - <dt> - <tt>aValue</tt></dt> - <dd> - 設定に割り当てる値。</dd> -</dl> -<h3 id="hasPref.28.29" name="hasPref.28.29">hasPref()</h3> -<p>特定の設定項目が存在するかどうかを判別します。</p> -<pre class="eval"> boolean hasPref( - in nsIURI aURI, - in AString aName - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <tt>aURI</tt></dt> - <dd> - 設定項目が存在するかどうかを判別する URI。グローバル設定空間にある設定を判別する場合は <code>null</code> を指定します。</dd> - <dt> - <tt>aName</tt></dt> - <dd> - 設定項目が存在するかどうかを判別する設定の名前。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>設定が存在する場合は <code>true</code>、存在しなければ <code>false</code>。</p> -<h3 id="removePref.28.29" name="removePref.28.29">removePref()</h3> -<p>特定の設定項目を削除します。</p> -<pre class="eval"> void removePref( - in nsIURI aURI, - in AString aName - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <tt>aURI</tt></dt> - <dd> - 削除する設定の URI。グローバル設定空間にある設定を削除する場合は <code>null</code> を指定します。</dd> - <dt> - <tt>aName</tt></dt> - <dd> - 削除する設定の名前。</dd> -</dl> -<h3 id="getPrefs.28.29" name="getPrefs.28.29">getPrefs()</h3> -<p>特定の URI のための設定とそれらの値をすべて含んだ <code><a href="ja/NsIPropertyBag2">nsIPropertyBag2</a></code> を返します。</p> -<pre class="eval"> nsIPropertyBag2 getPrefs( - in nsIURI aURI, - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<dl> - <dt> - <tt>aURI</tt></dt> - <dd> - 取得したい設定の URI。グローバル設定空間にある設定を取得する場合は <code>null</code> を指定します。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6> -<p>設定とそれらの値をすべて含んだ <code><a href="ja/NsIPropertyBag2">nsIPropertyBag2</a></code>。</p> -<h3 id="addObserver.28.29" name="addObserver.28.29">addObserver()</h3> -<p>特定の設定の変更を監視するオブザーバを追加します。</p> -<pre class="eval"> void addObserver( - in AString aName, - in nsIContentPrefObserver aObserver - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6> -<dl> - <dt> - <tt>aName</tt></dt> - <dd> - 監視を行う設定の名前。すべての設定の変更を監視する包括的オブザーバを追加する場合は <code>null</code> を指定します。</dd> - <dt> - <tt>aObserver</tt></dt> - <dd> - 設定の値が変更された場合に通知を受ける <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefObserver" title="">nsIContentPrefObserver</a></code> を実装したオブジェクトの名前。</dd> -</dl> -<h3 id="removeObserver.28.29" name="removeObserver.28.29">removeObserver()</h3> -<p>特定の設定の変更を監視している既存のオブザーバを削除します。</p> -<pre class="eval"> void addObserver( - in AString aName, - in nsIContentPrefObserver aObserver - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6> -<dl> - <dt> - <tt>aName</tt></dt> - <dd> - 監視を停止する設定の名前。すべての設定の変更を監視する包括的オブザーバを削除する場合は <code>null</code> を指定します。</dd> - <dt> - <tt>aObserver</tt></dt> - <dd> - 設定の値が変更された場合に通知を受けるオブザーバの名前。</dd> -</dl> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefObserver" title="">nsIContentPrefObserver</a></code>, <a href="ja/Using_content_preferences">Using content preferences</a></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicryptohash/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicryptohash/index.html deleted file mode 100644 index bd17097a4f..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicryptohash/index.html +++ /dev/null @@ -1,265 +0,0 @@ ---- -title: nsICryptoHash -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsICryptoHash -tags: - - Add-ons - - Extensions - - Interfaces - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsICryptoHash ---- -<p> </p> - -<h3 id=".E5.B0.8E.E5.85.A5" name=".E5.B0.8E.E5.85.A5">導入</h3> - -<p><code>nsICryptoHash</code> はデータの暗号化ハッシュ関数を計算するために使用することができます。例えば、ファイルの MD5 ハッシュを計算することができます。サポートされているハッシュアルゴリズムは MD2 と MD5, SHA-1, SHA-256, SHA-384 そして SHA-512 です。このインターフェースは <a href="ja/Firefox_1.5">Firefox 1.5</a> 以上でのみ利用できます。</p> - -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/base/public/nsICryptoHash.idl" rel="custom">netwerk/base/public/nsICryptoHash.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8 (Firefox 1.5 / Thunderbird 1.5 / SeaMonkey 1.0)</span></div> -</div> - -<h3 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h3> - -<h4 id=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.A2.E3.83.AB.E3.82.B4.E3.83.AA.E3.82.BA.E3.83.A0" name=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.A2.E3.83.AB.E3.82.B4.E3.83.AA.E3.82.BA.E3.83.A0">ハッシュアルゴリズム</h4> - -<p>これらの定数はこのインターフェースでサポートされているハッシュアルゴリズムを表しています。利用可能な値は以下の通りです:</p> - -<ul> - <li><code>MD2</code></li> - <li><code>MD5</code></li> - <li><code>SHA1</code></li> - <li><code>SHA512</code></li> - <li><code>SHA256</code></li> - <li><code>SHA384</code></li> -</ul> - -<h3 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3> - -<h4 id="init" name="init">init</h4> - -<pre>void init(in unsigned long aAlgorithm); -</pre> - -<p>インタフェースで定義された定数の1つを指定してどのハッシュアルゴリズムを使用するか指示して、<code>init()</code> はオブジェクトを初期化します。どんなデータであれオブジェクトを更新する前にこのメソッドか <code><a href="#initWithString">initWithString()</a></code> を呼ばなければなりません。</p> - -<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF">パラメタ</h5> - -<p><code>aAlgorithm</code></p> - -<dl> - <dd>使用するハッシュアルゴリズム。インタフェースで定義されている定数の 1 つでなくてはなりません。</dd> -</dl> - -<h5 id=".E4.BE.8B.E5.A4.96" name=".E4.BE.8B.E5.A4.96">例外</h5> - -<p><code><span class="nowiki">NS_ERROR_INVALID_ARG</span></code></p> - -<dl> - <dd>サポートされていないアルゴリズムの種類が渡されたことを示します。</dd> -</dl> - -<h4 id="initWithString" name="initWithString">initWithString</h4> - -<pre>void initWithString(in ACString aAlgorithm); -</pre> - -<p><code>initWithString()</code> は <code>"MD5"</code> のような文字列としてアルゴリズムの名前を指定することで、どのハッシュアルゴリズムを使用するか指定し、オブジェクトを初期化します。 どんなデータであれオブジェクトを更新する前にこのメソッドか <code><a href="#init">init()</a></code> を呼ばなければなりません。</p> - -<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_2">パラメタ</h5> - -<p><code>aAlgorithm</code></p> - -<dl> - <dd>使用するハッシュアルゴリズム</dd> -</dl> - -<h5 id=".E4.BE.8B.E5.A4.96_2" name=".E4.BE.8B.E5.A4.96_2">例外</h5> - -<p><code>NS_ERROR_INVALID_ARG</code></p> - -<dl> - <dd>サポートされていないアルゴリズムの種類が渡されたことを示します。</dd> -</dl> - -<h4 id="update" name="update">update</h4> - -<pre>void update([const, array, size_is(aLen)] in octet aData, in unsigned long aLen); -</pre> - -<p><code>update()</code> はハッシュを計算されるデータの配列をオブジェクトに追加します。このメソッドのを使った例は<a href="#.E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B">文字列のハッシュを計算する</a>を参照してください。</p> - -<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_3" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_3">パラメタ</h5> - -<p><code>aData</code></p> - -<dl> - <dd>ハッシュを計算されるバッファ</dd> -</dl> - -<p><code>aLen</code></p> - -<dl> - <dd><code>aData</code> バッファの長さ</dd> -</dl> - -<h5 id=".E4.BE.8B.E5.A4.96_3" name=".E4.BE.8B.E5.A4.96_3">例外</h5> - -<p><code>NS_ERROR_NOT_INITIALIZED</code></p> - -<dl> - <dd><code><a href="#init">init()</a></code> か <code><a href="#initWithString">initWithString()</a></code> が呼び出されていないことを表します。</dd> -</dl> - -<h4 id="updateFromStream" name="updateFromStream">updateFromStream</h4> - -<pre>void updateFromStream(in nsIInputStream aStream, in unsigned long aLen); -</pre> - -<p><code>updateFromStream()</code> は <code><a href="ja/NsIInputStream">nsIInputStream</a></code> からハッシュを計算されるデータを追加します。このメソッドのを使った例は<a href="#.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B">ファイルのハッシュを計算する</a>を参照してください。</p> - -<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_4" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_4">パラメタ</h5> - -<p><code>aStream</code></p> - -<dl> - <dd>読み込まれる入力ストリーム</dd> -</dl> - -<p><code>aLen</code></p> - -<dl> - <dd>与えられた <code>aStream</code> をどれだけ読み込むか。<code>PR_UINT32_MAX</code> が渡されることは利用できる全てのデータがハッシュを更新するために使われることを示しています。</dd> -</dl> - -<h5 id=".E4.BE.8B.E5.A4.96_4" name=".E4.BE.8B.E5.A4.96_4">例外</h5> - -<p><code>NS_ERROR_NOT_INITIALIZED</code></p> - -<dl> - <dd><code><a href="#init">init()</a></code> か <code><a href="#initWithString">initWithString()</a></code> が呼び出されていないことを表します。<code>NS_ERROR_NOT_AVAILABLE</code></dd> - <dd>ハッシュを計算するための要求された量のデータのが利用できないことを示しています。</dd> -</dl> - -<h4 id="finish" name="finish">finish</h4> - -<pre>ACString finish(in PRBool aASCII); -</pre> - -<p><code>finish()</code> はハッシュオブジェクトを完成させ、実際のハッシュデータを生成します。</p> - -<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_5" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_5">パラメタ</h5> - -<p><code>aASCII</code></p> - -<dl> - <dd>もし true なら戻り値は base-64 エンコードされた文字列です。もし false なら戻り値にはバイナリデータです。</dd> -</dl> - -<h5 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h5> - -<p>このメソッドはオブジェクトから読み込まれたハッシュデータを返します。これはバイナリか base-64 エンコードされた文字列のどちらかが可能です。</p> - -<h5 id=".E4.BE.8B.E5.A4.96_5" name=".E4.BE.8B.E5.A4.96_5">例外</h5> - -<p><code>NS_ERROR_NOT_INITIALIZED</code></p> - -<dl> - <dd><code><a href="#init">init()</a></code> か <code><a href="#initWithString">initWithString()</a></code> が呼び出されていないことを表します。</dd> -</dl> - -<div class="note"><strong>注意:</strong> このメソッドは <code><a href="#init">init()</a></code> が呼ばれた後ではいつでも呼ばれるかもしれません。この呼び出しはオブジェクトを初期化する前の状態にリセットします。</div> - -<h3 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89">サンプルコード</h3> - -<div class="note"><strong>注意:</strong> 下のサンプルは Firefox 2 で実装された <a href="ja/New_in_JavaScript_1.7">JavaScript 1.7</a> の機能を使っています。この例を Firefox 1.5 で使うには、<span style="border-bottom: 1px dashed green;" title="array comprehension">配列内包</span>をループに置き換えて下さい。</div> - -<h4 id=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B" name=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B">ファイルのハッシュを計算する</h4> - -<p><code>nsICryptoHash</code> を使うと簡単にファイルのハッシュを計算することができます。<code>nsICryptoHash</code> のインスタンスを作り、ファイルから入力ストリームを開き、ファイルのハッシュを更新する必要があります。以下の例はファイルの MD5 ハッシュを計算する方法を示しています:</p> - -<pre>// 便宜上ここではハードコードしています。 -var path = "c:\\windows\\notepad.exe"; -var f = Components.classes["@mozilla.org/file/local;1"] - .createInstance(Components.interfaces.nsILocalFile); -f.initWithPath(path); -var istream = Components.classes["@mozilla.org/network/file-input-stream;1"] - .createInstance(Components.interfaces.nsIFileInputStream); -// 読み出すためにストリームを開きます。 -istream.init(f, 0x01, 0444, 0); -var ch = Components.classes["@mozilla.org/security/hash;1"] - .createInstance(Components.interfaces.nsICryptoHash); -// MD5 アルゴリズムを使います。 -ch.init(ch.MD5); -// これはファイル全体を読む込むことを updateFromStream に指示します。 -const PR_UINT32_MAX = 0xffffffff; -ch.updateFromStream(istream, PR_UINT32_MAX); -// ここで false を渡すとバイナリデータが戻ってきます -// true は base-64 文字列が戻ってきます -var hash = ch.finish(false); - -// 1 バイトに対して 2 つの 16 進数コードを返す。 -function toHexString(charCode) -{ - return ("0" + charCode.toString(16)).slice(-2); -} - -// バイナリのハッシュデータを 16 進数文字列に変換する。 -var s = Array.from(hash, (c, i) => toHexString(hash.charCodeAt(i))).join(""); -// s は今 16 進数でハッシュを保持しています。 -</pre> - -<p>私の Windows XP SP2 システムでは、これはハッシュの値として <code>5eb63bbbe01eeed093cb22bb8f5acdc3</code> を返しましたが、 あなたのマイレージは違うかもしれません。単純ですがこの例はインターフェースの大部分の機能を示しました。</p> - -<p>最初に注意すべきことは <code><a href="#init">init()</a></code> メソッドを呼んだときに、使うハッシュアルゴリズムを指定しなければならいないことです。利用可能なアルゴリズムの全てはインタフェースの<a href="#.E5.AE.9A.E6.95.B0">定数</a>として指定されています。</p> - -<p>さらに注意すべきことは <code><a href="#updateFromStream">updateFromStream()</a></code> メソッドを呼び出したとき、2 番目のパラメタは呼び出すバイト数であることがです。ここで <code>PR_UINT32_MAX</code> を渡すことでファイル全体を読み出したいことを要求します。</p> - -<p>最後に <code><a href="#finish">finish()</a></code> メソッドの呼び出しがハッシュ値を生成することに注意してください。このメソッドの 1 つのパラメタはこの例ではバイナリデータを返すために <code>false</code> です。<code>true</code> を渡すことで base 64 エンコードされた文字列としてハッシュを返します。この例ではバイナリデータを使い、ハッシュプログラムが通常出力するように結果を 16 進数文字列を生成しました。</p> - -<h4 id=".E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B" name=".E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B">文字列のハッシュを計算する</h4> - -<p>もう一つの一般的な操作は文字列のハッシュを計算することです。ハッシュ関数はバイトで計算するため、最初に文字列を <code><a href="ja/NsIScriptableUnicodeConverter">nsIScriptableUnicodeConverter</a></code> とあ指定した Unicode エンコーディングを使いバイトの並びに変換する必要があります。</p> - -<div class="note"><strong>注意:</strong> 異なるエンコーディングは異なるハッシュ値を生成します!もしあなたが結果を比較するなら、常に同じエンコーディングを使うべきです。</div> - -<p>下の例では 文字列を UTF-8 エンコーディングでバイトに変換し、その MD5 ハッシュを計算する方法を示しています。前の例と同じように結果は 16 進数文字列として計算しました。</p> - -<pre>var str = "hello world"; -var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] - .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); -// ここでは UTF-8 を使います。他のエンコーディングも選ぶこともできます。 -converter.charset = "UTF-8"; -// result は出力用パラメータです。 -// result.value は配列の長さを保持します。 -var result = {}; -// data はバイトの配列です。 -var data = converter.convertToByteArray(str, result); -var ch = Components.classes["@mozilla.org/security/hash;1"] - .createInstance(Components.interfaces.nsICryptoHash); -ch.init(ch.MD5); -ch.update(data, data.length); -var hash = ch.finish(false); - -// 1 バイトに対して 2 つの 16 進数コードを返す。 -function toHexString(charCode) -{ - return ("0" + charCode.toString(16)).slice(-2); -} - -// バイナリのハッシュデータを 16 進数文字列に変換する。 -var s = Array.from(hash, (c, i) => toHexString(hash.charCodeAt(i))).join(""); -// 今 s はハッシュを 16 進数で保持しており、以下のようになるはずです。 -// 5eb63bbbe01eeed093cb22bb8f5acdc3 -</pre> - -<p>この例では、ハッシュを計算されるバイトの配列を渡すために <code><a href="#update">update()</a></code> メソッドを使いました。先ほどの例と同じように、バイナリの結果を 16 進数文字列に変換しています。</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfile/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfile/index.html deleted file mode 100644 index 39a1336dcb..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfile/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: nsIDOMFile -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDOMFile -tags: - - DOM - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile ---- -<p> -</p><p> -<code>nsIDOMFile</code> インターフェイスは、フォーム上で input の type "file" を使ってサブミットされたファイルからデータを読み出します。これはオフラインで web アプリケーションを使っているユーザがフォームにサブミットした時に保存されるファイルを参照可能にし、そしてそのデータは読み込む事ができ、またインターネット接続が再開された時にアップロードが可能となります。 -</p><div class="blockIndicator note"><strong>註:</strong> </div> -<p><br> -</p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/content/base/public/nsIDOMFile.idl" rel="custom">content/base/public/nsIDOMFile.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>Inherits from: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -</p><p><span id="Method_overview"></span> -</p> -<h2 id="Method_overview" name="Method_overview">Method overview</h2> -<table class="standard-table"> <tbody><tr> -<td> <code>DOMString <a href="#getAsBinary.28.29">getAsBinary</a>();</code> -</td></tr> -<tr> -<td> <code>DOMString <a href="#getAsDataURL.28.29">getAsDataURL</a>();</code> -</td></tr> -<tr> -<td> <code>DOMString <a href="#getAsText.28.29">getAsText</a>(in DOMString encoding);</code> -</td></tr> -</tbody></table> -<p><span id="Attributes"></span> -</p> -<h2 id="Attributes" name="Attributes">Attributes</h2> -<table class="standard-table"> <tbody><tr> -<td class="header">Attribute -</td><td class="header">Type -</td><td class="header">Description -</td></tr> <tr> -<td><code>fileName</code> -</td><td><code>DOMString</code> -</td><td> <code>nsIDOMFile</code> オブジェクトから参照されるファイルの名前を含む読み込み専用の属性 -</td></tr> -<tr> -<td><code>fileSize</code> -</td><td><code>unsigned long long</code> -</td><td> 参照されたファイルのbyteのサイズ -</td></tr> -</tbody></table> -<p><span id="Methods"></span> -</p> -<h2 id="Methods" name="Methods">Methods</h2> -<p><span id="getAsBinary()"></span> -</p> -<h3 id="getAsBinary.28.29" name="getAsBinary.28.29">getAsBinary()</h3> -<p>ファイル上のデータの生のバイナリフォーマットを含む <code><a href="ja/DOMString">DOMString</a></code> を -返します。 -</p> -<pre class="eval"> DOMString getAsBinary(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<p>無し。 -</p> -<h6 id=".E8.BF.94.E3.82.8A.E5.80.A4" name=".E8.BF.94.E3.82.8A.E5.80.A4">返り値</h6> -<p>ファイル上の生のバイナリを含む <code>DOMString</code> 。 -</p><p><span id="getAsDataURL()"></span> -</p> -<h3 id="getAsDataURL.28.29" name="getAsDataURL.28.29">getAsDataURL()</h3> -<p>参照されたファイルのコンテンツを<code>data:</code> URL でエンコードした <code>DOMString</code>を返します。 -</p> -<pre class="eval"> DOMString getAsDataURL(); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<p>無し -</p> -<h6 id="Return_value" name="Return_value">Return value</h6> -<p><code>data:</code> URL としてエンコードされたファイルのデータを含む <code><a href="ja/DOMString">DOMString</a></code> </p><p><span id="getAsText()"></span> -</p> -<h3 id="getAsText.28.29" name="getAsText.28.29">getAsText()</h3> -<p>与えられたエンコーディングを用いたテキストとして判断されたファイルのデータを <code>DOMString</code> として含んだファイルを返します。 -</p> -<pre class="eval"> DOMString getAsText( - in DOMString encoding - ); -</pre> -<h6 id="Parameters_2" name="Parameters_2">Parameters</h6> -<dl><dt><tt>encoding</tt> -</dt><dd> 指定したエンコードの文字列を利用して返り値のデータとします。もし、文字列が空であれば、UTF-8 が代りに使われます。 -</dd></dl> -<h6 id="Return_value_2" name="Return_value_2">Return value</h6> -<p>特定の <tt>エンコーディング</tt> で解釈されたテキストとしてファイルのデータを含む<code><a href="ja/DOMString">DOMString</a></code> 。 -</p><p><span id="See_also"></span> -</p> -<h2 id="See_also" name="See_also">See also</h2> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileList" title="">nsIDOMFileList</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileException" title="">nsIDOMFileException</a></code> -</p> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfileexception/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfileexception/index.html deleted file mode 100644 index b84fee1d18..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfileexception/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: nsIDOMFileException -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDOMFileException -tags: - - DOM - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileException ---- -<p> - -<code>nsIDOMFileException</code> インタフェースは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code> インタフェース内でのメソッドの呼び出しによって発生する例外を表します。 -</p><p><br> -</p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/content/base/public/nsIDOMFileException.idl" rel="custom">content/base/public/nsIDOMFileException.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> - -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> <tbody><tr> -<td class="header">属性 -</td><td class="header">型 -</td><td class="header">説明 -</td></tr> <tr> -<td><code>code</code> -</td><td><code>unsigned short</code> -</td><td>エラーが起きた状態を表すエラーコード。詳しくは <a href="#Constants">定数一覧</a> を参照してください。 -</td></tr> -</tbody></table> -<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2> -<table class="standard-table"> <tbody><tr> -<td class="header">定数 -</td><td class="header">値 -</td><td class="header">説明 -</td></tr> <tr> -<td><code>NOT_FOUND_ERR</code> -</td><td> 0 -</td><td>指定されたファイルが見つかりませんでした。 -</td></tr> -<tr> -<td><code>NOT_READABLE_ERR</code> -</td><td> 1 -</td><td>指定されたファイルが読み取り可能ではありませんでした。 -</td></tr> -</tbody></table> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileList" title="">nsIDOMFileList</a></code> -</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfilelist/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfilelist/index.html deleted file mode 100644 index f599ddb061..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfilelist/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: nsIDOMFileList -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDOMFileList -tags: - - DOM - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileList ---- -<p> - -<code>nsIDOMFileList</code> インタフェースには、ユーザが Web フォーム上の「file」入力フィールドで選択したファイルを説明した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code> オブジェクトのリストが含まれています。 -</p><p>すべての <code><INPUT></code> 要素ノードは、このリスト内の項目へのアクセスを許可する <code>fileList</code> 配列を持っています。例えば、HTML に以下のファイル入力フィールドが含まれていた場合、 -</p> -<pre class="eval"><input id="fileItem" type=file> -</pre> -<p>以下のようなコードで、このノードのファイルリストの最初のファイルを、様々な形式で取得できます。 -</p> -<pre class="eval">// UTF-8 (既定の文字エンコーディング) でファイルのデータを取得します -document.getElementById('fileItem').fileList[0].getAsText(""); - -// 具体的に UTF-8 として解釈されたファイルのデータを取得します -document.getElementById('fileItem').fileList[0].getAsText("utf8") - -// data: URL としてファイルのデータを取得します -document.getElementById('fileItem').fileList[0].getAsDataURL() - -// 生のバイナリデータとしてファイルのデータを取得します -document.getElementById('fileItem').fileList[0].getAsBinary() -</pre> -<p><br> -</p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/content/base/public/nsIDOMFileList.idl" rel="custom">content/base/public/nsIDOMFileList.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -</p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> <tbody><tr> -<td> <code>nsIDOMFile <a href="#item.28.29">item</a>(in unsigned long index);</code> -</td></tr> -</tbody></table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> <tbody><tr> -<td class="header">属性 -</td><td class="header">型 -</td><td class="header">説明 -</td></tr> <tr> -<td><code>length</code> -</td><td><code>unsigned long</code> -</td><td>リスト内のファイル数を示す読み取り専用の属性。 -</td></tr> -</tbody></table> -<h2 id=".E5.B1.9E.E6.80.A7_2" name=".E5.B1.9E.E6.80.A7_2">属性</h2> -<h3 id="item.28.29" name="item.28.29">item()</h3> -<p>ファイルリスト内の指定されたインデックスにある <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code> を返します。 -</p> -<pre class="eval"> nsIDOMFile item( - in unsigned long index - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl><dt><tt>index</tt> -</dt><dd>リストから取得するファイルの、ゼロベースのインデックス。 -</dd></dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>リクエストされたファイルを表す <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code>。 -</p> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileException" title="">nsIDOMFileException</a></code> -</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomhtmlmediaelement/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomhtmlmediaelement/index.html deleted file mode 100644 index 736e9da5b3..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomhtmlmediaelement/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: NsIDOMHTMLMediaElement -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/NsIDOMHTMLMediaElement -tags: - - Firefox 3.5 - - Gecko 1.9.1 - - Interfaces - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/NsIDOMHTMLMediaElement ---- -<div><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/interfaces/html/nsIDOMHTMLMediaElement.idl" rel="custom">dom/interfaces/html/nsIDOMHTMLMediaElement.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> HTML5 の新要素である <a href="/ja/docs/Web/HTML/Element/audio" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code><audio></code></a> 要素と <a href="/ja/docs/Web/HTML/Element/video" title="HTML の映像要素 (<video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。"><code><video></code></a> 要素に対しぞれぞれ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLAudioElement" title="">nsIDOMHTMLAudioElement</a></code> インターフェース、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLVideoElement" title="">nsIDOMHTMLVideoElement</a></code> インターフェースを実装する為の基礎となるインターフェース </span> - - <div style="height: 42px; position: relative; padding: 2px; width: auto;"> - - <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div> - - <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">67</div> - - <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 9.389671267605634%;"></div> - -<div style="height: 8px; top: 16px; left: 9.389671267605634%; background: #00dd00; position: absolute; width: 90.61032873239436%;" title="Introduced in Gecko 1.9.1 (Firefox 3.5 / Thunderbird 3.0 / SeaMonkey 2.0)"></div> - -<div style="top: 0px; font-size: 11px; position: absolute; left: 9.389671267605634%;">Introduced</div> -<div style="top: 22px; font-size: 11px; position: absolute; left: 9.389671267605634%;">Gecko 1.9.1</div> - - <div style="height: 8px; top: 16px; left: 20.62676056338028%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 11.0 (Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)"></div> - -</div> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLElement" title="">nsIDOMHTMLElement</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 11.0 (Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)</span></div> -</div></div> - -<div><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLMediaElement">nsIDOMHTMLMediaElement</a></code>インターフェースには<a href="/ja/docs/Web/API/HTMLMediaElement"><code>HTMLMediaElement</code></a>インターフェースが実装されています。詳細については各ページを参照して下さい。</div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomofflineresourcelist/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomofflineresourcelist/index.html deleted file mode 100644 index db33da81d4..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomofflineresourcelist/index.html +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: nsIDOMOfflineResourceList -slug: >- - Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDOMOfflineResourceList -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMOfflineResourceList ---- -<p> -</p><p><code>nsIDOMOfflineResourceList</code> インタフェースは、アプリケーションキャッシュへのアクセスを提供します。これは、Web コンテンツのリソースをオフラインでも利用できるよう、ローカルにキャッシュできるようにする機能です。キャッシュにリソースを追加したり、キャッシュからリソースを削除したり、動的に管理されたリソースリストを列挙するためのメソッドが含まれます。 -</p><p><br> -</p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/public/idl/offline/nsIDOMOfflineResourceList.idl" rel="custom">dom/public/idl/offline/nsIDOMOfflineResourceList.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -</p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81"> メソッドの概要 </h2> -<table class="standard-table"> <tbody><tr> -<td> <code>void <a href="#add.28.29">add</a>(in <a href="ja/DOMString">DOMString</a> uri);</code> -</td></tr> -<tr> -<td> <code><a href="ja/DOMString">DOMString</a> <a href="#item.28.29">item</a>(in unsigned long index);</code> -</td></tr> -<tr> -<td> <code>void <a href="#remove.28.29">remove</a>(in <a href="ja/DOMString">DOMString</a> uri);</code> -</td></tr> -<tr> -<td> <code>void <a href="#swapCache.28.29">swapCache</a>();</code> -</td></tr> -<tr> -<td> <code>void <a href="#update.28.29">update</a>();</code> -</td></tr> -</tbody></table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7"> 属性 </h2> -<table class="standard-table"> <tbody><tr> -<td class="header">属性 -</td><td class="header">型 -</td><td class="header">説明 -</td></tr> <tr> -<td> <code>length</code> -</td><td> <code>unsigned long</code> -</td><td> 動的に管理されたオフラインリソースリスト内のエントリー数。<i>読み取り専用</i>。 -</td></tr> -<tr> -<td> <code>onchecking</code> -</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code> -</td><td> アプリケーションキャッシュマニフェストを取得したり、更新を確認する際に呼び出されるイベントリスナー。 -</td></tr> -<tr> -<td> <code>onerror</code> -</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code> -</td><td> キャッシュプロセスの途中でエラーが発生した場合に呼び出されるイベントリスナー。 -</td></tr> -<tr> -<td> <code>onnoupdate</code> -</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code> -</td><td> ダウンロードス売る更新がない場合に呼び出されるイベントリスナー。 -</td></tr> -<tr> -<td> <code>ondownloading</code> -</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code> -</td><td> リソースがキャッシュにダウンロードされる際に呼び出されるイベントリスナー。 -</td></tr> -<tr> -<td> <code>onprogress</code> -</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code> -</td><td> ダウンロードプロセスの途中で定期的に呼び出されるイベントリスナー。 -</td></tr> -<tr> -<td> <code>onupdateready</code> -</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code> -</td><td> リソースの更新が完了した際に呼び出されるイベントリスナー。バージョン管理されたアプリケーションキャッシュがサポートされていないため、このイベントはまだ使われていません。 -</td></tr> -<tr> -<td> <code>oncached</code> -</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code> -</td><td> キャッシュが完了した際に呼び出されるイベントリスナー。 -</td></tr> -<tr> -<td> <code>status</code> -</td><td> <code>unsigned short</code> -</td><td> アプリケーションキャッシュの状態を示す、いずれかの<a href="#constants">定数</a>。 -</td></tr> -</tbody></table> -<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0"> 定数 </h2> -<table class="standard-table"> <tbody><tr> -<td class="header">定数 -</td><td class="header">値 -</td><td class="header">説明 -</td></tr> <tr> -<td> <code>UNCACHED</code> -</td><td> 0 -</td><td> オブジェクトはアプリケーションキャッシュと関連付けられていません。 -</td></tr> -<tr> -<td> <code>IDLE</code> -</td><td> 1 -</td><td> アプリケーションキャッシュは更新プロセスの途中ではありません。 -</td></tr> -<tr> -<td> <code>CHECKING</code> -</td><td> 2 -</td><td> アプリケーションキャッシュマニフェストを取得して、更新を確認しています。 -</td></tr> -<tr> -<td> <code>DOWNLOADING</code> -</td><td> 3 -</td><td> リソースをダウンロードしてキャッシュに追加しています。 -</td></tr> -<tr> -<td> <code>UPDATEREADY</code> -</td><td> 4 -</td><td> 新しいバージョンのアプリケーションキャッシュが利用可能です。 -<div class="blockIndicator note"><strong>註:</strong> バージョン管理されたアプリケーションキャッシュはまだ実装されていません。このため、このステータス値は現時点では使われていません。</div> - -</td></tr> -</tbody></table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89"> メソッド </h2> -<h3 id="add.28.29" name="add.28.29"> add() </h3> -<p>動的に管理されたエントリーにアイテムを追加します。リソースは取得され、アプリケーションキャッシュに追加されます。 -</p> -<pre class="eval"> void add( - in DOMString uri - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl><dt> <tt>uri</tt> -</dt><dd> リストに追加するリソースの URI。 -</dd></dl> -<h3 id="item.28.29" name="item.28.29"> item() </h3> -<p>キャッシュされたリソースのリストから、特定のオフセットにあるアイテムの URI を返します。 -</p> -<pre class="eval"> DOMString item( - in unsigned long index - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl><dt> <tt>index</tt> -</dt><dd> URI を取得する、キャッシュされたアイテムのインデックス。 -</dd></dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>指定されたリソースの URI を含む <code><a href="ja/DOMString">DOMString</a></code>。 -</p> -<h3 id="remove.28.29" name="remove.28.29"> remove() </h3> -<p>動的に管理されたエントリーのリストからアイテムを削除します。アプリケーションキャッシュ内の指定された URI に対する最後の参照であった場合、キャッシュエントリーが削除されます。 -</p> -<pre class="eval"> void remove( - in DOMString uri - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl><dt> <tt>uri</tt> -</dt><dd> リストから削除するアイテムの URI。 -</dd></dl> -<h3 id="swapCache.28.29" name="swapCache.28.29"> swapCache() </h3> -<p>アプリケーションキャッシュの最新版でやりとりを行います。 -</p><div class="blockIndicator note"><strong>註:</strong> バージョン管理されたアプリケーションキャッシュはまだサポートされていないため、このメソッドは例外を投げます。</div> - -<pre class="eval"> void swapCache(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<p>なし。 -</p> -<h3 id="update.28.29" name="update.28.29"> update() </h3> -<p>アプリケーションキャッシュの更新プロセスを開始します。 -</p> -<pre class="eval"> void update(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<p>なし。 -</p> -<h2 id=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99" name=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99"> 参考資料 </h2> -<ul><li> <a href="ja/Offline_resources_in_Firefox">Offline resources in Firefox</a> -</li></ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomsimplegestureevent/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomsimplegestureevent/index.html deleted file mode 100644 index 70719d4b06..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomsimplegestureevent/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: nsIDOMSimpleGestureEvent -slug: >- - Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/NsIDOMSimpleGestureEvent -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/NsIDOMSimpleGestureEvent ---- -<p><code>nsIDOMSimpleGestureEvent</code> インターフェースはマウスやトラックパッドによるジェスチャイベントを表現します。</p> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/public/idl/events/nsIDOMSimpleGestureEvent.idl" rel="custom">dom/public/idl/events/nsIDOMSimpleGestureEvent.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9.1 (Firefox 3.5 / Thunderbird 3.0 / SeaMonkey 2.0)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMMouseEvent" title="">nsIDOMMouseEvent</a></code></p> -<h2 id="メソッドの概要">メソッドの概要</h2> -<table class="standard-table"> <tbody> <tr> <td><code>void initSimpleGestureEvent(in DOMString typeArg,<br> in boolean canBubbleArg,<br> in boolean cancelableArg,<br> in nsIDOMAbstractView viewArg,<br> in long detailArg,<br> in long screenXArg,<br> in long screenYArg,<br> in long clientXArg,<br> in long clientYArg,<br> in boolean ctrlKeyArg,<br> in boolean altKeyArg,<br> in boolean shiftKeyArg,<br> in boolean metaKeyArg,<br> in unsigned short buttonArg,<br> in nsIDOMEventTarget relatedTargetArg,<br> in unsigned long directionArg,<br> in double deltaArg);</code></td> </tr> </tbody> -</table> -<h2 id="属性">属性</h2> -<table class="standard-table"> <tbody> <tr> <td class="header">属性</td> <td class="header">型</td> <td class="header">説明</td> </tr> <tr> <td><code>direction</code></td> <td><code>unsigned long</code></td> <td>ジェスチャの移動方向。このページの <a href="#Direction_constants">Direction constants</a> と <a href="#Rotation_constants">Rotation constants</a> を参照。<strong>読み取り専用。</strong></td> </tr> <tr> <td><code>delta</code></td> <td><code>double</code></td> <td> <p>ジェスチャがどれほど移動したかを示す変化量。Update イベント (MozXxxGestureUpdate イベント) では前回の更新からの変化を示します。<code>MozRotateGesture</code> と <code>MozMagnifyGesture</code> イベントでは、これはイベントが処理されてからの総変化量を表します。</p> <p>回転イベントでは、この値は度で指定されます (正の値は時計回りの回転を表し、負の値は反時計回りの回転を表します)。拡大ジェスチャでは、単位は実装独自ですが、正の値は拡大を表し、負の値は縮小を表します。</p> <div class="note"><strong>注意:</strong> 現時点において Mac OS X では拡大ジェスチャでつかわれる単位が文書化されていません。典型的な値は 0.0 から 100.0 の範囲のようです。しかし、現在信頼できるのは、値が正になるか負になるかのみです。Windows では、今回とその直前における、2 つのタッチ点間の幅の変化をピクセル単位で表します。</div> </td> </tr> </tbody> -</table> -<h2 id="方向についての定数">方向についての定数</h2> -<table class="standard-table"> <tbody> <tr> <td class="header">定数</td> <td class="header">値</td> <td class="header">説明</td> </tr> <tr> <td><code>DIRECTION_UP</code></td> <td>1</td> <td>上向きスワイプ。</td> </tr> <tr> <td><code>DIRECTION_DOWN</code></td> <td>2</td> <td>下向きスワイプ。</td> </tr> <tr> <td><code>DIRECTION_LEFT</code></td> <td>4</td> <td>左向きスワイプ。</td> </tr> <tr> <td><code>DIRECTION_RIGHT</code></td> <td>8</td> <td>右向きスワイプ。</td> </tr> </tbody> -</table> -<h2 id="回転についての定数">回転についての定数</h2> -<table class="standard-table"> <tbody> <tr> <td class="header">定数</td> <td class="header">値</td> <td class="header">説明</td> </tr> <tr> <td><code>ROTATION_COUNTERCLOCKWISE</code></td> <td>1</td> <td>反時計回りの回転。</td> </tr> <tr> <td><code>ROTATION_CLOCKWISE</code></td> <td>2</td> <td>時計回りの回転。</td> </tr> </tbody> -</table> -<h2 id="メソッド">メソッド</h2> -<h3 id="initSimpleGestureEvent">initSimpleGestureEvent()</h3> -<p>ジェスチャイベントの初期化</p> -<pre class="eval">void initSimpleGestureEvent( - in DOMString typeArg, - in boolean canBubbleArg, - in boolean cancelableArg, - in nsIDOMAbstractView viewArg, - in long detailArg, - in long screenXArg, - in long screenYArg, - in long clientXArg, - in long clientYArg, - in boolean ctrlKeyArg, - in boolean altKeyArg, - in boolean shiftKeyArg, - in boolean metaKeyArg, - in unsigned short buttonArg, - in nsIDOMEventTarget relatedTargetArg, - in unsigned long directionArg, - in double deltaArg -); -</pre> -<h6 id="パラメータ">パラメータ</h6> -<dl> <dt><code>directionArg</code></dt> <dd><code>direction</code> 属性に代入する値。</dd> <dt><code>deltaArg</code></dt> <dd><code>delta</code> 属性に代入する値。</dd> </dl> -<h1 id="参照">参照</h1> -<ul> <li><a class="internal" href="/Ja/DOM/Mouse_gesture_events" title="Ja/DOM/Mouse gesture events">マウスジェスチャイベント</a></li> <li><a class="internal" href="/ja/DOM/event" title="Ja/DOM/Event"><code>event</code></a></li> -</ul> - -<p> </p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownload/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownload/index.html deleted file mode 100644 index 454d955e70..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownload/index.html +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: nsIDownload -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDownload -tags: - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDownload ---- -<p> <code>nsIDownload</code> インタフェースは、ダウンロードオブジェクトを表します。ダウンロードオブジェクトは、ダウンロードマネージャによって利用されています。(ダウンロード待ち、ダウンロード中、ダウンロード完了後のファイルを管理する <code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code> を参照してください)</p> -<div class="note"> - <b>注意:</b> ダウンロードが完了すると、ダウンロードマネージャは <code>nsIDownload</code> オブジェクトの更新を停止します。完了ステータスは、<code>nsIDownloadManager::DOWNLOAD_FINISHED</code>、<code>nsIDownloadManager::DOWNLOAD_FAILED</code>、<code>nsIDownloadManager::DOWNLOAD_CANCELED</code> のいずれかになります。</div> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/public/nsIDownload.idl" rel="custom">toolkit/components/downloads/public/nsIDownload.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITransfer" title="">nsITransfer</a></code></p> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>targetFile</code></td> - <td><code><a href="ja/NsILocalFile">nsILocalFile</a></code></td> - <td>ダウンロードされたファイルが保存される (あるいはダウンロードが完了している場合は保存された) 場所を示します。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>percentComplete</code></td> - <td><code><a href="ja/PRint32">PRint32</a></code></td> - <td>完了したファイル転送の割合。ファイルサイズが不明な場合は -1 となります。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>amountTransferred</code></td> - <td><code><a href="ja/PRUint64">PRUint64</a></code></td> - <td>完了したダウンロードのバイト数。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>size</code></td> - <td><code><a href="ja/PRUint64">PRUint64</a></code></td> - <td>ファイルの合計サイズ (バイト)。ファイルサイズが不明な場合は <code>LL_MAXUINT</code> となります。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>source</code></td> - <td><code><a href="ja/NsIURI">nsIURI</a></code></td> - <td>ダウンロードファイルの取得元 URI。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>cancelable</code></td> - <td><code><a href="ja/NsICancelable">nsICancelable</a></code></td> - <td>ダウンロードをキャンセルするために使用できるオブジェクト。ダウンロード完了後、この値は <code>null</code> に設定されます。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>displayName</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>ユーザが読める形での転送の説明。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>startTime</code></td> - <td><code>long long</code></td> - <td>ファイル転送が開始された時刻。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>speed</code></td> - <td><code>double</code></td> - <td>ダウンロードの転送速度 (バイト/秒)。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>MIMEInfo</code></td> - <td><code><a href="ja/NsIMIMEInfo">nsIMIMEInfo</a></code></td> - <td>この任意の属性は、MIME タイプ、ヘルパーアプリケーション、ダウンロード完了後にヘルパーアプリケーションを自動的に実行するかどうかなど、ターゲットに関連する MIME 情報を提供します。</td> - </tr> - <tr> - <td><code>id</code></td> - <td><code>unsigned long</code></td> - <td>データベース内でダウンロードを固有に識別できる ID。</td> - </tr> - <tr> - <td><code>state</code></td> - <td><code>short</code></td> - <td>ダウンロードの状況。<a href="ja/NsIDownloadManager#Constants">nsIDownloadManager の定数一覧</a> を参照してください。</td> - </tr> - <tr> - <td><code>referrer</code></td> - <td><code><a href="ja/NsIURI">nsIURI</a></code></td> - <td>ダウンロードのリファラ URI。これは HTTP ダウンロードの場合のみ使用され、<code>null</code> になる可能性もあります。</td> - </tr> - <tr> - <td><code>resumable</code></td> - <td><code>boolean</code></td> - <td>ダウンロードを中止後に再開できるかどうかを示します。これは、ダウンロードが HTTP/1.1 あるいは FTP を通じて行われていて、サーバが再開に対応している場合のみ有効になります。</td> - </tr> - </tbody> -</table> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<p><code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code>, <code><a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a></code>, <code><a href="ja/NsIXPInstallManagerUI">nsIXPInstallManagerUI</a></code></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanager/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanager/index.html deleted file mode 100644 index 813eca1337..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanager/index.html +++ /dev/null @@ -1,424 +0,0 @@ ---- -title: nsIDownloadManager -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDownloadManager -tags: - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadManager ---- -<p> <code>nsIDownloadManager</code> インタフェースは、アプリケーションや拡張機能がダウンロードマネージャとやりとりできるようにします。例えば、ダウンロードするファイルの追加や削除、ダウンロードに関する情報の取得、ダウンロード完了時の通知取得、といった機能を備えています。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/public/nsIDownloadManager.idl" rel="custom">toolkit/components/downloads/public/nsIDownloadManager.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>実装: <code>@mozilla.org/download-manager;1</code>。インスタンスを作成するには、以下のように記述します。</p> -<pre class="eval">var dm = Components.classes["@mozilla.org/download-manager;1"] - .createInstance(Components.interfaces.nsIDownloadManager); -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>nsIDownload <a href="#addDownload.28.29">addDownload</a>(in short aDownloadType, in <a href="ja/NsIURI">nsIURI</a> aSource, in nsIURI aTarget, in <a href="ja/AString">AString</a> aDisplayName, in <a href="ja/NsIMIMEInfo">nsIMIMEInfo</a> aMIMEInfo, in <a href="ja/PRTime">PRTime</a> aStartTime, in <a href="ja/NsILocalFile">nsILocalFile</a> aTempFile, in <a href="ja/NsICancelable">nsICancelable</a> aCancelable)</code></td> - </tr> - <tr> - <td><code>nsIDownload <a href="#getDownload.28.29">getDownload</a>(in unsigned long aID)</code></td> - </tr> - <tr> - <td><code>void <a href="#cancelDownload.28.29">cancelDownload</a>(in unsigned long aID)</code></td> - </tr> - <tr> - <td><code>void <a href="#removeDownload.28.29">removeDownload</a>(in unsigned long aID)</code></td> - </tr> - <tr> - <td><code>void <a href="#pauseDownload.28.29">pauseDownload</a>(in unsigned long aID)</code></td> - </tr> - <tr> - <td><code>void <a href="#resumeDownload.28.29">resumeDownload</a>(in unsigned long aID)</code></td> - </tr> - <tr> - <td><code>void <a href="#retryDownload.28.29">retryDownload</a>(in unsigned long aID)</code></td> - </tr> - <tr> - <td><code>void <a href="#cleanUp.28.29">cleanUp</a>()</code></td> - </tr> - <tr> - <td><code>void <a href="#addListener.28.29">addListener</a>(in <a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a> aListener)</code></td> - </tr> - <tr> - <td><code>void <a href="#removeListener.28.29">removeListener</a>(in <a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a> aListener)</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>DBConnection</code></td> - <td><code><a href="ja/MozIStorageConnection">mozIStorageConnection</a></code></td> - <td>ダウンロードデータベースへのデータベース接続。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>canCleanUp</code></td> - <td><code>boolean</code></td> - <td>ダウンロードが、完了時、失敗時、キャンセル時に削除可能かどうかを示します。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>activeDownloadCount</code></td> - <td><code>long</code></td> - <td>現在ダウンロード中のファイル数。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>activeDownloads</code></td> - <td><code><a href="ja/NsISimpleEnumerator">nsISimpleEnumerator</a></code></td> - <td>アクティブな nsIDownloads の列挙。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>defaultDownloadsDirectory</code></td> - <td><code><a href="ja/NsILocalFile">nsILocalFile</a></code></td> - <td>プラットフォーム標準のダウンロードディレクトリを返します。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>userDownloadsDirectory</code></td> - <td><code><a href="ja/NsILocalFile">nsILocalFile</a></code></td> - <td>ユーザが設定したダウンロードディレクトリを返します。 - <i> - 読み取り専用。</i> - <p>上記のパスは、ユーザが編集可能な 2 つの設定項目に依存します。</p> - <p><code>browser.download.folderList</code> は、標準のダウンロード場所を定義します。</p> - <ul> - <li>0: ファイルは初期設定ではデスクトップにダウンロードされます。</li> - <li>1: ファイルは初期設定ではシステム標準のダウンロードフォルダにダウンロードされます。</li> - <li>2: ファイルは <code>browser.download.dir</code> で設定されたローカルパスにダウンロードされます。この設定値が不正な場合、ダウンロードディレクトリは初期設定値にフォールバックされます。</li> - </ul> - </td> - </tr> - </tbody> -</table> -<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>DOWNLOAD_NOTSTARTED</code></td> - <td>-1</td> - <td>ダウンロードはまだ開始されていません。</td> - </tr> - <tr> - <td><code>DOWNLOAD_DOWNLOADING</code></td> - <td>0</td> - <td>ダウンロードは現在進行中です。</td> - </tr> - <tr> - <td><code>DOWNLOAD_FINISHED</code></td> - <td>1</td> - <td>ダウンロードは完了しました。</td> - </tr> - <tr> - <td><code>DOWNLOAD_FAILED</code></td> - <td>2</td> - <td>ダウンロードは失敗しました。</td> - </tr> - <tr> - <td><code>DOWNLOAD_CANCELED</code></td> - <td>3</td> - <td>ユーザがダウンロードをキャンセルしました。</td> - </tr> - <tr> - <td><code>DOWNLOAD_PAUSED</code></td> - <td>4</td> - <td>ダウンロードは中止されています。</td> - </tr> - <tr> - <td><code>DOWNLOAD_QUEUED</code></td> - <td>5</td> - <td>ダウンロードは待ち状態で、まだダウンロードは開始されていません。</td> - </tr> - <tr> - <td><code>DOWNLOAD_BLOCKED</code></td> - <td>6</td> - <td>保護者による制限 (ペアレンタルコントロール) が働いたために、あるいは、そのファイルがウイルスに感染していて駆除できないとウイルス対策ソフトによって判断されたために、ダウンロードはブロックされました。</td> - </tr> - <tr> - <td><code>DOWNLOAD_SCANNING</code></td> - <td>7</td> - <td>ダウンロードはウイルス対策ソフトによってスキャンが行われています。</td> - </tr> - <tr> - <td><code>DOWNLOAD_TYPE_DOWNLOAD</code></td> - <td>0</td> - <td> - <i> - 不明</i> - </td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="addDownload.28.29" name="addDownload.28.29">addDownload()</h3> -<p>nsIDownload を作成し、ダウンロードマネージャが管理できるように追加します。</p> -<pre class="eval">nsIDownload addDownload( - in short aDownloadType, - in nsIURI aSource, - in nsIURI aTarget, - in AString aDisplayName, - in nsIMIMEInfo aMIMEInfo, - in PRTime aStartTime, - in nsILocalFile aTempFile, - in nsICancelable aCancelable -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>aDownloadType</tt></dt> - <dd> - 転送するダウンロードの種類。 - <i> - 詳細不明</i> - </dd> -</dl> -<dl> - <dt> - <tt>aSource</tt></dt> - <dd> - ファイルの取得元 URI。<code>null</code> にはなりません。</dd> -</dl> -<dl> - <dt> - <tt>aTarget</tt></dt> - <dd> - 転送されたファイルが保存される場所を示した URI。<code>null</code> にはなりません。</dd> -</dl> -<dl> - <dt> - <tt>aDisplayName</tt></dt> - <dd> - ユーザが読める形での転送の説明。空白文字になる可能性があります。</dd> -</dl> -<dl> - <dt> - <tt>aMIMEInfo</tt></dt> - <dd> - ターゲットファイルに関連付けられた MIME 情報。これには、MIME タイプや、適切な場合にはヘルパーアプリケーションが含まれます。このパラメータはオプションです。</dd> -</dl> -<dl> - <dt> - <tt>startTime</tt></dt> - <dd> - ダウンロードの開始時刻。</dd> -</dl> -<dl> - <dt> - <tt>aTempFile</tt></dt> - <dd> - 一時ファイル (受信したデータが保存されるファイルで、ターゲットファイルとは異なります) の場所。ダウンロードが完了すると、ファイルは <tt>aTarget</tt> によって示される場所に移動されます。これは <code>null</code> になる可能性があります。</dd> -</dl> -<dl> - <dt> - <tt>aCancelable</tt></dt> - <dd> - ダウンロードをキャンセルするために使用できるオブジェクト。<code>null</code> にはなりません。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>新たに作成された、渡されたプロパティを伴ったダウンロード項目。</p> -<div class="note"> - <b>注:</b> ダウンロードを追加しても、即座に転送が開始されるわけではありません。追加した後ダウンロードを開始したい場合は、<code><a href="ja/NsIWebBrowserPersist">nsIWebBrowserPersist</a></code> オブジェクトを作成し、このメソッドを呼び出し、戻り値となるダウンロードオブジェクトのための <code>progressListener</code> を設定し、その後で <code>saveURI()</code> メソッドを呼び出す必要があります。</div> -<h3 id="getDownload.28.29" name="getDownload.28.29">getDownload()</h3> -<p>ダウロードマネージャによって管理されているダウンロードを取得します。これは、進行中、あるいは完了したダウンロードで、データベースに保存されている項目になります。</p> -<pre class="eval">nsIDownload getDownload( - in unsigned long aID -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>aID</tt></dt> - <dd> - ダウンロードの固有 ID。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>指定された ID のダウンロード。</p> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6> -<dl> - <dt> - <tt>NS_ERROR_NOT_AVAILABLE</tt></dt> - <dd> - 指定されたダウンロードはデータベース内にありません。</dd> -</dl> -<h3 id="cancelDownload.28.29" name="cancelDownload.28.29">cancelDownload()</h3> -<p>指定された ID のダウンロードが進行中であった場合、そのダウンロードをキャンセルします。これは、そのダウンロードによって提供された <code><a href="ja/NsICancelable">nsICancelable</a></code> の <code>cancel(NS_BINDING_ABORTED)</code> を呼び出します。</p> -<pre class="eval"> void cancelDownload( - in unsigned long aID - ) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <tt>aID</tt></dt> - <dd> - ダウンロードの固有 ID。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2">投げられる例外</h6> -<dl> - <dt> - <tt>NS_ERROR_FAILURE</tt></dt> - <dd> - ダウンロードが進行中ではありません。</dd> -</dl> -<h3 id="removeDownload.28.29" name="removeDownload.28.29">removeDownload()</h3> -<p>指定された ID のダウンロードが進行中でなかった場合、そのダウンロードを削除します。<code>cancelDownload()</code> が単純に転送をキャンセルしつつ関連情報を残すのに対して、<code>removeDownload()</code> は関連情報もすべて削除します。</p> -<pre class="eval"> void removeDownload( - in unsigned long aID - ) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <tt>aID</tt></dt> - <dd> - ダウンロードの固有 ID。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3">投げられる例外</h6> -<dl> - <dt> - <tt>NS_ERROR_FAILURE</tt></dt> - <dd> - ダウンロードはアクティブです。</dd> -</dl> -<h3 id="pauseDownload.28.29" name="pauseDownload.28.29">pauseDownload()</h3> -<p>指定されたダウンロードを中止します。</p> -<pre class="eval"> void pauseDownload( - in unsigned long aID - ) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<dl> - <dt> - <tt>aID</tt></dt> - <dd> - 中止するダウンロードの固有 ID。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_4" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_4">投げられる例外</h6> -<dl> - <dt> - <tt>NS_ERROR_FAILURE</tt></dt> - <dd> - ダウンロードが進行中ではありません。</dd> -</dl> -<h3 id="resumeDownload.28.29" name="resumeDownload.28.29">resumeDownload()</h3> -<p>指定されたダウンロードを再開します。</p> -<pre class="eval"> void resumeDownload( - in unsigned long aID - ) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6> -<dl> - <dt> - <tt>aID</tt></dt> - <dd> - 再開するダウンロードの固有 ID。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_5" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_5">投げられる例外</h6> -<dl> - <dt> - <tt>NS_ERROR_FAILURE</tt></dt> - <dd> - ダウンロードが進行中ではありません。</dd> -</dl> -<h3 id="retryDownload.28.29" name="retryDownload.28.29">retryDownload()</h3> -<p>失敗したダウンロードを再試行します。</p> -<pre class="eval"> void retryDownload( - in unsigned long aID - ) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6> -<dl> - <dt> - <tt>aID</tt></dt> - <dd> - ダウンロードの固有 ID。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_6" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_6">投げられる例外</h6> -<dl> - <dt> - <tt>NS_ERROR_NOT_AVAILALE</tt></dt> - <dd> - ダウンロードが不明です。</dd> -</dl> -<h3 id="cleanUp.28.29" name="cleanUp.28.29">cleanUp()</h3> -<p>完了、失敗、キャンセルされたダウンロードをリストから削除します。</p> -<pre class="eval"> void cleanUp() -</pre> -<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6> -<p>ありません。</p> -<h3 id="addListener.28.29" name="addListener.28.29">addListener()</h3> -<p>ダウンロードマネージャにリスナーを追加します。</p> -<pre class="eval"> void addListener( - in nsIDownloadProgressListener aListener - ) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_9" name=".E5.BC.95.E6.95.B0_9">引数</h6> -<dl> - <dt> - <tt>aListener</tt></dt> - <dd> - ダウンロードマネージャからステータス情報を受け取る <code><a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a></code> オブジェクト。</dd> -</dl> -<h3 id="removeListener.28.29" name="removeListener.28.29">removeListener()</h3> -<p>ダウンロードマネージャからリスナーを削除します。</p> -<pre class="eval"> void removeListener( - in nsIDownloadProgressListener aListener - ) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_10" name=".E5.BC.95.E6.95.B0_10">引数</h6> -<dl> - <dt> - <tt>aListener</tt></dt> - <dd> - ダウンロードマネージャのリスニングを中止する <code><a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a></code> オブジェクト。</dd> -</dl> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownload" title="">nsIDownload</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadManagerUI" title="">nsIDownloadManagerUI</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadProgressListener" title="">nsIDownloadProgressListener</a></code></li> - <li><a href="ja/The_Download_Manager_schema">The Download Manager schema</a></li> -</ul> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanagerui/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanagerui/index.html deleted file mode 100644 index 958b1fc5e6..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanagerui/index.html +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: nsIDownloadManagerUI -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDownloadManagerUI -tags: - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadManagerUI ---- -<p> <code>nsIDownloadManagerUI</code> インタフェースは、ダウンロードマネージャのためのユーザインタフェースを実装するために利用されます。標準のダウンロードマネージャのユーザインタフェースを置き換えたい場合は、このインタフェースを実装してください。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/public/nsIDownloadManagerUI.idl" rel="custom">toolkit/components/downloads/public/nsIDownloadManagerUI.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#getAttention.28.29">getAttention</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="#show.28.29">show</a>([optional] in <a href="ja/NsIInterfaceRequestor">nsIInterfaceRequestor</a> aWindowContext, [optional] in unsigned long aID, [optional] in short aReason);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>visible</code></td> - <td><code>boolean</code></td> - <td>読み取り専用。ダウンロードマネージャのユーザインタフェースが開かれている場合は <code>true</code>、そうでなければ <code>false</code> を返します。</td> - </tr> - </tbody> -</table> -<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>REASON_USER_INTERACTED</code></td> - <td>0</td> - <td>ダウンロードマネージャのユーザインタフェースを開く際、この値は、ユーザのリクエストによって開かれたかどうかを示します。</td> - </tr> - <tr> - <td><code>REASON_NEW_DOWNLOAD</code></td> - <td>1</td> - <td>ダウンロードマネージャのユーザインタフェースを開く際、この値は、新たなダウンロードが開始されたために開かれたどうかを示します。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="getAttention.28.29" name="getAttention.28.29">getAttention()</h3> -<p>ダウンロードマネージャのユーザインタフェースがすでに開かれている場合、そこに注意を促します。</p> -<pre class="eval"> void getAttention(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<p>None.</p> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_UNEXPECTED</code></dt> - <dd> - ユーザインタフェースが開かれていません。</dd> -</dl> -<h3 id="show.28.29" name="show.28.29">show()</h3> -<p>ダウンロードマネージャのユーザインタフェースをユーザに表示します。</p> -<pre class="eval"> void show( - [optional] in nsIInterfaceRequestor aWindowContext, - [optional] in unsigned long aID, - [optional] in short aReason - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>aWindowContext</tt></dt> - <dd> - ユーザインタフェースを表示するための親ウィンドウコンテキスト。この情報を使えば、ダウンロードマネージャを同じウィンドウのタブに、親としておくことができます。</dd> - <dt> - <tt>aID</tt></dt> - <dd> - ダウンロードマネージャのユーザインタフェースを開く際、事前に選択されるダウンロードの ID。</dd> - <dt> - <tt>aReason</tt></dt> - <dd> - ユーザインタフェースが表示された理由を示す <a href="#Constants">定数</a> のいずれか。</dd> -</dl> -<h3 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h3> -<ul> - <li><a href="ja/The_Download_Manager_schema">The Download Manager schema</a></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadprogresslistener/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadprogresslistener/index.html deleted file mode 100644 index e1878800fc..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadprogresslistener/index.html +++ /dev/null @@ -1,295 +0,0 @@ ---- -title: nsIDownloadProgressListener -slug: >- - Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDownloadProgressListener -tags: - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadProgressListener ---- -<p><code>nsIDownloadProgressListener</code> インタフェースは、アプリケーションや拡張機能が、ダウンロードマネージャによって処理されているダウンロードの状況を監視する方法を提供します。開発者は、自分のコードでこのインタフェースを実装し、<code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code> の <code><a href="ja/NsIDownloadManager#addListener.28.29">addListener()</a></code> 関数を呼び出すだけで、監視を開始できます。</p> -<p>ダウンロードマネージャの状況を監視する必要がなくなったら、<code>nsIDownloadManager</code> の <code><a href="ja/NsIDownloadManager#removeListener.28.29">removeListener()</a></code> 関数を呼び出せば監視が中止されます。</p> -<p>ダウンロードの状況に変更があると、ダウンロードマネージャによって、ここで説明されているメソッドが呼び出されるので、必要なタイミングで処理を行えます。</p> -<p>このインタフェースの挙動は、<code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インタフェースと非常に似ています。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/public/nsIDownloadProgressListener.idl" rel="custom">toolkit/components/downloads/public/nsIDownloadProgressListener.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#onDownloadStateChange.28.29">onDownloadStateChange</a>(in short aState, in nsIDownload aDownload)</code></td> - </tr> - <tr> - <td><code>void <a href="#onProgressChange.28.29">onProgressChange</a>(in <a href="ja/NsIWebProgress">nsIWebProgress</a> aWebProgress, in <a href="ja/NsIRequest">nsIRequest</a> aRequest, in long long aCurSelfProgress, in long long aMaxSelfProgress, in long long aCurTotalProgress, in long long aMaxTotalProgress, in <a href="ja/NsIDownload">nsIDownload</a> aDownload)</code></td> - </tr> - <tr> - <td><span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span> <code>void <a href="#onStatusChange.28.29">onStatusChange</a>(in <a href="ja/NsIWebProgress">nsIWebProgress</a> aWebProgress, in <a href="ja/NsIRequest">nsIRequest</a> aRequest, in <a href="ja/Nsresult">nsresult</a> aStatus, in <a href="ja/Wstring">wstring</a> aMessage, in <a href="ja/NsIDownload">nsIDownload</a> aDownload)</code></td> - </tr> - <tr> - <td><span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span> <code>void <a href="#onLocationChange.28.29">onLocationChange</a>(in <a href="ja/NsIWebProgress">nsIWebProgress</a> aWebProgress, in <a href="ja/NsIRequest">nsIRequest</a> aRequest, in <a href="ja/NsIURI">nsIURI</a> aLocation, in <a href="ja/NsIDownload">nsIDownload</a> aDownload)</code>x</td> - </tr> - <tr> - <td><code>void <a href="#onSecurityChange.28.29">onSecurityChange</a>(in <a href="ja/NsIWebProgress">nsIWebProgress</a> aWebProgress, in <a href="ja/NsIRequest">nsIRequest</a> aRequest, in unsigned long aState, in <a href="ja/NsIDownload">nsIDownload</a> aDownload)</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>document</code></td> - <td><code><a href="ja/NsIDOMDocument">nsIDOMDocument</a></code></td> - <td>ダウンロードマネージャのウィンドウを表すダウンロードドキュメント。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="onDownloadStateChange.28.29" name="onDownloadStateChange.28.29">onDownloadStateChange()</h3> -<p>特定のダウンロードの状況に変更があったときに呼び出されます。</p> -<pre class="eval"> void onDownloadStateChange( - in short aState, - in nsIDownload aDownload - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>aState</tt></dt> - <dd> - ダウンロードの変更前の状況。<a href="ja/NsIDownloadManager#Constants">取り得る値の一覧</a> は <code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code> を参照してください。</dd> -</dl> -<dl> - <dt> - <tt>aDownload</tt></dt> - <dd> - ダウンロード状況に変更があったファイルを表す <code><a href="ja/NsIDownload">nsIDownload</a></code> オブジェクト。このオブジェクトから、ダウンロードの変更後の状況を取得できます。</dd> -</dl> -<h3 id="onStateChange.28.29" name="onStateChange.28.29">onStateChange()</h3> -<p>特定のダウンロードの状況に変更があったときに呼び出されます。</p> -<pre class="eval"> void onStateChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in unsigned long aStateFlags, - in nsresult aStatus, - in nsIDownload aDownload - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>aWebProgress</tt></dt> - <dd> - ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd> -</dl> -<dl> - <dt> - <tt>aRequest</tt></dt> - <dd> - 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd> -</dl> -<dl> - <dt> - <tt>aStateFlags</tt></dt> - <dd> - ダウンロードの変更後の状況を示すフラグ。この値は、<code><a href="ja/NsIWebProgressListener">nsIWebProgressListener</a></code> の記事に書かれている <a href="ja/NsIWebProgressListener#.E7.8A.B6.E6.B3.81.E9.81.B7.E7.A7.BB.E3.83.95.E3.83.A9.E3.82.B0">状況遷移フラグ</a> のいずれかの組み合わせになります。</dd> -</dl> -<dl> - <dt> - <tt>aStatus</tt></dt> - <dd> - ダウンロードの変更後の状況に関する情報。詳しくは <code>nsIWebProgressListener</code>]] の [[nsIWebProgressListener#onStateChange|<code>onStateChange()</code> を参照してください。これは <code><a href="ja/NsIDownloadManager#Constants">nsIDownloadManager</a></code> の状況を示す定数 のいずれかになる場合もあります。</dd> -</dl> -<dl> - <dt> - <tt>aDownload</tt></dt> - <dd> - 状況が変更されたダウンロード。</dd> -</dl> -<h3 id="onProgressChange.28.29" name="onProgressChange.28.29">onProgressChange()</h3> -<p>ダウンロードの進捗レベルがダウンロードによって変更されたときに呼び出されます。</p> -<pre class="eval"> void onProgressChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in long long aCurSelfProgress, - in long long aMaxSelfProgress, - in long long aCurTotalProgress, - in long long aMaxTotalProgress, - in nsIDownload aDownload - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <tt>aWebProgress</tt></dt> - <dd> - ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd> -</dl> -<dl> - <dt> - <tt>aRequest</tt></dt> - <dd> - 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd> -</dl> -<dl> - <dt> - <tt>aCurSelfProgress</tt></dt> - <dd> - <tt>aDownload</tt> で指定されたダウンロードに対して行われた、現在の進捗の量。</dd> -</dl> -<dl> - <dt> - <tt>aMaxSelfProgress</tt></dt> - <dd> - ダウンロード完了を示すために達成しなければならない、個別進捗状況の値。</dd> -</dl> -<dl> - <dt> - <tt>aCurTotalProgress</tt></dt> - <dd> - すべてのダウンロードに対して行われた、現在の進捗の量。</dd> -</dl> -<dl> - <dt> - <tt>aMaxTotalProgress</tt></dt> - <dd> - すべてのダウンロード完了を示すために達成しなければならない、合計進捗状況の値。</dd> -</dl> -<dl> - <dt> - <tt>aDownload</tt></dt> - <dd> - 進捗状況が <tt>aCurSelfProgress</tt> と <tt>aMaxSelfProgress</tt> の引数によって表される <code><a href="ja/NsIDownload">nsIDownload</a></code> オブジェクト。</dd> -</dl> -<h3 id="onStatusChange.28.29" name="onStatusChange.28.29">onStatusChange()</h3> -<p>ダウンロードのリクエストの状況に変更があったときに呼び出されます。受け取る状況メッセージは、ユーザに直接表示することを意図したものです。</p> -<div class="warning"> - <b>警告:</b> このメソッドは Firefox 3 (Gecko 1.9) で削除されました。それ以前のバージョンでも、このメソッドが呼び出されているコードはありません。</div> -<pre class="eval"> void onStatusChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in nsresult aStatus, - in wstring aMessage, - in nsIDownload aDownload - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <tt>aWebProgress</tt></dt> - <dd> - ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd> -</dl> -<dl> - <dt> - <tt>nsIChannel</tt></dt> - <dd> - 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd> -</dl> -<dl> - <dt> - <tt>aStatus</tt></dt> - <dd> - ダウンロードの変更後の状況に関する情報。詳しくは <code>nsIWebProgressListener</code>]] の [[nsIWebProgressListener#onStateChange|<code>onStateChange()</code> を参照してください。</dd> -</dl> -<dl> - <dt> - <tt>aMessage</tt></dt> - <dd> - 画面上に表示されることを意図した、ユーザが読める形での状況メッセージ</dd> -</dl> -<dl> - <dt> - <tt>aDownload</tt></dt> - <dd> - 状況が変更されたダウンロード。</dd> -</dl> -<h3 id="onLocationChange.28.29" name="onLocationChange.28.29">onLocationChange()</h3> -<div class="warning"> - <b>警告:</b> このメソッドは Firefox 3 (Gecko 1.9) で削除されました。それ以前のバージョンでも、このメソッドが呼び出されているコードはありません。</div> -<pre class="eval"> void onLocationChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in nsIURI aLocation, - in nsIDownload aDownload - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<dl> - <dt> - <tt>aWebProgress</tt></dt> - <dd> - ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd> -</dl> -<dl> - <dt> - <tt>aRequest</tt></dt> - <dd> - 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd> -</dl> -<dl> - <dt> - <tt>aLocation</tt></dt> - <dd> - ダウンロード中のファイルの URI。</dd> -</dl> -<dl> - <dt> - <tt>aDownload</tt></dt> - <dd> - ダウンロード中のファイルを表す <code><a href="ja/NsIDownload">nsIDownload</a></code> オブジェクト。</dd> -</dl> -<h3 id="onSecurityChange.28.29" name="onSecurityChange.28.29">onSecurityChange()</h3> -<p>ダウンロード中に使われるセキュリティレベルが変更されたときに呼び出されます。例えば、最初のリクエストが HTTPS を通じて行われ、その後ダウンロードが HTTP に変わった場合、この関数が呼び出され、その遷移を通知します。</p> -<pre class="eval"> void onSecurityChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in unsigned long aState, - in nsIDownload aDownload - ); - -</pre> -<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6> -<dl> - <dt> - <tt>aWebProgress</tt></dt> - <dd> - ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd> -</dl> -<dl> - <dt> - <tt>aRequest</tt></dt> - <dd> - 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd> -</dl> -<dl> - <dt> - <tt>aState</tt></dt> - <dd> - ダウンロードの変更後の状況。<a href="ja/NsIDownloadManager#Constants">取り得る値の一覧</a> は <code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code> を参照してください。</dd> -</dl> -<dl> - <dt> - <tt>aDownload</tt></dt> - <dd> - セキュリティレベルが変更されたダウンロード。</dd> -</dl> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<p><code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code>, <code><a href="ja/NsIDownload">nsIDownload</a></code>, <code><a href="ja/NsIWebProgressListener">nsIWebProgressListener</a></code></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidragservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidragservice/index.html deleted file mode 100644 index 66878aa9ec..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidragservice/index.html +++ /dev/null @@ -1,227 +0,0 @@ ---- -title: nsIDragService -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDragService -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDragService ---- -<div class="blockIndicator draft"> - <p><strong>草案</strong><br> - このページは完成していません。</p> - -</div> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/public/nsIDragService.idl" rel="custom">widget/public/nsIDragService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <a href="ja/NsISupports">nsISupports</a></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#invokeDragSession.28.29">invokeDragSession</a>(in <a href="ja/NsIDOMNode">nsIDOMNode</a> aDOMNode, in <a href="ja/NsISupportsArray">nsISupportsArray</a> aTransferables, in <a href="ja/NsIScriptableRegion">nsIScriptableRegion</a> aRegion, in unsigned long aActionType);</code></td> - </tr> - <tr> - <td><code>void <a href="#invokeDragSessionWithImage.28.29">invokeDragSessionWithImage</a>(in <a href="ja/NsIDOMNode">nsIDOMNode</a> aDOMNode, in <a href="ja/NsISupportsArray">nsISupportsArray</a> aTransferableArray, in <a href="ja/NsIScriptableRegion">nsIScriptableRegion</a> aRegion, in unsigned long aActionType,in <a href="ja/NsIDOMNode">nsIDOMNode</a> aImage, in long aImageX, in long aImageY, in <a href="ja/NsIDOMMouseEvent">nsIDOMMouseEvent</a> aDragEvent);</code></td> - </tr> - <tr> - <td><code>void <a href="#invokeDragSessionWithSelection.28.29">invokeDragSessionWithSelection</a>(in <a href="ja/NsISelection">nsISelection</a> aSelection, in <a href="ja/NsISupportsArray">nsISupportsArray</a> aTransferableArray, in unsigned long aActionType, in <a href="ja/NsIDOMMouseEvent">nsIDOMMouseEvent</a> aDragEvent);</code></td> - </tr> - <tr> - <td><code>nsIDragSession <a href="#getCurrentSession.28.29">getCurrentSession</a>();</code></td> - </tr> - <tr> - <td><code>void<a href="#startDragSession.28.29">startDragSession</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="#endDragSession.28.29">endDragSession</a>(in <a href="ja/PRBool">PRBool</a> aDoneDrag);</code></td> - </tr> - <tr> - <td><code>void <a href="#fireDragEventAtSource.28.29">fireDragEventAtSource</a>(in unsigned long aMsg);</code> </td> - </tr> - </tbody> -</table> -<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>DRAGDROP_ACTION_NONE</code></td> - <td>0</td> - <td><code>LONG</code> データ形式。</td> - </tr> - <tr> - <td><code>DRAGDROP_ACTION_COPY</code></td> - <td>1</td> - <td><code>LONG</code> データ形式。</td> - </tr> - <tr> - <td><code>DRAGDROP_ACTION_MOVE</code></td> - <td>2</td> - <td><code>LONG</code> データ形式。</td> - </tr> - <tr> - <td><code>DRAGDROP_ACTION_LINK</code></td> - <td>3</td> - <td><code>LONG</code> データ形式。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="invokeDragSession.28.29" name="invokeDragSession.28.29">invokeDragSession()</h3> -<p>移転可能なオブジェクトの配列を伴った、モーダルなドラッグセッションを開始します。</p> -<pre class="eval"> void invokeDragSession ( - in nsIDOMNode aDOMNode, - in nsISupportsArray aTransferables, - in nsIScriptableRegion aRegion, - in unsigned long aActionType - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>aDOMNode</tt></dt> - <dd> - </dd> -</dl> -<dl> - <dt> - <tt>aTransferables</tt></dt> - <dd> - ドラッグされる移転可能なオブジェクトの配列。</dd> -</dl> -<dl> - <dt> - <tt>aRegion</tt></dt> - <dd> - カーソルフィードバックの矩形を含む範囲。ウィンドウ座標で指定。</dd> -</dl> -<dl> - <dt> - <tt>aActionType</tt></dt> - <dd> - コピー、移動、リンクのうち、いずれが可能かを指定。</dd> -</dl> -<h3 id="invokeDragSessionWithImage.28.29" name="invokeDragSessionWithImage.28.29">invokeDragSessionWithImage()</h3> -<p>画像を利用して、モーダルなドラッグセッションを開始します。最初 4 つの引数は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/invokeDragSession" title="">invokeDragSession</a></code> と同じです。</p> -<p><code>aImage</code> 引数を使って独自の画像を指定することができます。画像が指定された場合、<code>aImageX</code> と <code>aImageY</code> 引数で、その画像の中でカーソルが位置するオフセットを指定できます。つまり、画像が表示されたときに、指定された量だけ左上に画像がずらされて、画像内のその位置にカーソルが現れます。<code>aImage</code> が <code>null</code> の場合、<code>aImageX</code> と <code>aImageY</code> は使われず、代わりにソースノードである <code>aDOMNode</code> から画像が判別され、オフセットは自動計算されます。このため、画像の初期位置は、要素が位置するのと同じ画面上の位置になります。ノードはドキュメント内になくてはなりません。</p> -<p>今のところ、サポートされている画像はすべて DOM ノードです。これが HTML <code><image></code> あるいは <code><canvas></code> 要素の場合、ドラッグに付随する画像はその画像データから取得されます。要素がドキュメント上にある場合は、画像は表示されているサイズで表示されます。ドキュメント上にない場合は、実際のサイズで表示されます。他の種類の要素については、現在表示されているのと同じ方法で、画面外のバッファとして表示されます。ドキュメント上の選択範囲はドラッグ中非表示となります。画像の位置を計算するのに、イベントの現在の画面座標が必要となるため、<code>aDragEvent</code> は必ず指定する必要があります。</p> -<pre class="eval"> void invokeDragSessionWithImage(in nsIDOMNode aDOMNode, - in nsISupportsArray aTransferableArray, - in nsIScriptableRegion aRegion, - in unsigned long aActionType, - in nsIDOMNode aImage, - in long aImageX, - in long aImageY, - in nsIDOMMouseEvent aDragEvent - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>aImage</tt></dt> - <dd> - 画像オブジェクト</dd> -</dl> -<dl> - <dt> - <tt>aImageX</tt></dt> - <dd> - 画像の X 座標</dd> -</dl> -<dl> - <dt> - <tt>aImageY</tt></dt> - <dd> - 画像の Y 座標</dd> -</dl> -<dl> - <dt> - <tt>aDragEvent</tt></dt> - <dd> - </dd> -</dl> -<h3 id="invokeDragSessionWithSelection.28.29" name="invokeDragSessionWithSelection.28.29">invokeDragSessionWithSelection()</h3> -<p>選択範囲をドラッグ画像として利用して、モーダルなドラッグセッションを開始します。画像の位置を計算するのに、イベントの現在の画面座標が必要となるため、<code>aDragEvent</code> は必ず指定する必要があります。</p> -<pre class="eval"> void invokeDragSessionWithSelection( - in nsISelection aSelection, - in nsISupportsArray aTransferableArray, - in unsigned long aActionType, - in nsIDOMMouseEvent aDragEvent - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <tt>aSelection</tt></dt> - <dd> - </dd> -</dl> -<dl> - <dt> - <tt>aTransferableArray</tt></dt> - <dd> - </dd> -</dl> -<dl> - <dt> - <tt>aActionType</tt></dt> - <dd> - コピー、移動、リンクのうち、いずれが可能かを指定。</dd> -</dl> -<dl> - <dt> - <tt>aDragEvent</tt></dt> - <dd> - </dd> -</dl> -<h3 id="getCurrentSession.28.29" name="getCurrentSession.28.29">getCurrentSession()</h3> -<p>現在のドラッグセッションを返します。</p> -<pre class="eval"> nsIDragSession getCurrentSession ( ) ; -</pre> -<h3 id="startDragSession.28.29" name="startDragSession.28.29">startDragSession()</h3> -<p>ドラッグサービスにドラッグセッションを開始するよう伝えます。これは外部でドラッグが発生したときに呼び出されます。</p> -<pre class="eval"> void startDragSession ( ) ; -</pre> -<h3 id="endDragSession.28.29" name="endDragSession.28.29">endDragSession()</h3> -<p>ドラッグサービスにドラッグセッションを終了するよう伝えます。これは外部でドラッグが発生したときに呼び出されます。</p> -<pre class="eval"> void endDragSession ( - in PRBool aDoneDrag - ) ; -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <tt>aDoneDrag </tt> </dt> - <dd> - <code>aDoneDrag</code> が <code>true</code> の場合、ドラッグはすでに終了しています。そうでない場合、ドラッグはウィンドウを離れたところです。この引数は Firefox 3 以前のバージョンには存在しません。</dd> -</dl> -<h3 id="fireDragEventAtSource.28.29" name="fireDragEventAtSource.28.29">fireDragEventAtSource()</h3> -<p>ドラッグのソースに対してドラッグイベントを発生させます。このメソッドは Firefox 3 以降で利用可能です。</p> -<pre class="eval"> void fireDragEventAtSource ( - in unsigned long aMsg - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<dl> - <dt> - <tt>aMsg </tt></dt> - <dd> - </dd> -</dl> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsieffectivetldservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsieffectivetldservice/index.html deleted file mode 100644 index 3e4a0adab5..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsieffectivetldservice/index.html +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: nsIEffectiveTLDService -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIEffectiveTLDService -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIEffectiveTLDService ---- -<p><code>nsIEffectiveTLDService</code>はホスト名を検証し、それがTLDであるように見えるもっとも長い部分を決定します。URIのベースドメインを決定する役割も持ちます。</p> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/dns/public/nsIEffectiveTLDService.idl" rel="custom">netwerk/dns/public/nsIEffectiveTLDService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>実装: @mozilla.org/network/effective-tld-service;1</p> -<p>このサービスを使うには:</p> -<pre>var eTLDService = Components.classes["@mozilla.org/network/effective-tld-service;1"] - .getService(Components.interfaces.nsIEffectiveTLDService); -</pre> -<h2 id="メソッドの概要">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="/ja/ACString" title="ja/ACString">ACString</a> <a href="#getPublicSuffix.28.29">getPublicSuffix</a>(in <a href="/en/XPCOM_Interface_Reference/nsIURI" title="en/XPCOM Interface Reference/nsIURI">nsIURI</a> aURI);</code></td> - </tr> - <tr> - <td><code><a href="/ja/ACString" title="ja/ACString">ACString</a> <a href="#getBaseDomain.28.29">getBaseDomain</a>(in <a href="/en/XPCOM_Interface_Reference/nsIURI" title="en/XPCOM Interface Reference/nsIURI">nsIURI</a> aURI, [optional] in <a href="/en/PRUint32" title="en/PRUint32">PRUint32</a> aAdditionalParts);</code></td> - </tr> - <tr> - <td><code><a href="/ja/ACString" title="ja/ACString">ACString</a> <a href="#getPublicSuffixFromHost.28.29">getPublicSuffixFromHost</a>(in <a href="/en/AUTF8String" title="en/AUTF8String">AUTF8String</a> aHost);</code></td> - </tr> - <tr> - <td><code><a href="/ja/ACString" title="ja/ACString ">ACString</a> <a href="#getBaseDomainFromHost.28.29">getBaseDomainFromHost</a>(in <a href="/en/AUTF8String" title="en/AUTF8String">AUTF8String</a> aHost, [optional] in <a href="/en/PRUint32" title="en/PRUint32">PRUint32</a> aAdditionalParts);</code></td> - </tr> - </tbody> -</table> -<h2 id="メソッド">メソッド</h2> -<h3 id="getPublicSuffix.28.29" name="getPublicSuffix.28.29">getPublicSuffix()</h3> -<p>URIのパブリック接尾辞を返します。パブリック接尾辞はその下に個々のドメインが登録される最高位レベルのドメインです。パブリック接尾辞はひとつまたはそれ以上のドットを含みます。例えば、<code>www.bbc.co.uk</code>のパブリック接尾辞は<code>co.uk</code>になります、なぜならば<code>.uk</code> TLDはその下にドメインを登録することを許していないからです。その他の例として、<code>developer.mozilla.org</code>では<code>org</code>になります。</p> -<pre>ACString getPublicSuffix( - in nsIURI aURI -); -</pre> -<h6 id="引数">引数</h6> -<dl> - <dt> - aURI</dt> - <dd> - 解析するURI</dd> -</dl> -<p>戻り値</p> -<p>パブリック接尾辞を含む<a href="/ja/ACString" title="ja/ACString">ACString</a>オブジェクト</p> -<h6 id="例外">例外</h6> -<dl> - <dt> - NS_ERROR_INVALID_ARG</dt> - <dd> - この例外は<code>aURI</code>に含まれるホスト名が空であった場合に発生します。</dd> - <dt> - NS_ERROR_HOST_IS_IP_ADDRESS</dt> - <dd> - この例外は<code>aURI</code>が数値、IPv4アドレス、IPv6アドレスのいずれかであった場合に発生します。</dd> -</dl> -<h3 id="getBaseDomain.28.29" name="getBaseDomain.28.29">getBaseDomain()</h3> -<p>URIのベースドメインを返します。ベースドメインは、パブリック接尾辞に指定された数の追加ドメイン名を追加したものです。</p> -<pre>ACString getBaseDomain( - in <a>nsIURI</a> aURI - [optional] in <a title="en/PRUint32">PRUint32</a> aAdditionalParts -); -</pre> -<h6 id="引数_2">引数</h6> -<dl> - <dt> - aURI</dt> - <dd> - 解析するURI</dd> - <dt> - aAdditionalParts</dt> - <dd> - パブリック接尾辞に追加するドメイン名の数</dd> -</dl> -<h6 id="戻り値">戻り値</h6> -<p>ベースドメインを含む<a href="/en/ACString" title="en/ACString">ACString</a>オブジェクト(パブリック接尾辞に、追加パート部分を足したもの)</p> -<h6 id="例外_2">例外</h6> -<dl> - <dt> - NS_ERROR_INVALID_ARG</dt> - <dd> - この例外は<code>aURI</code>が空であった場合に発生します。</dd> - <dt> - NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS</dt> - <dd> - この例外は<code>aAdditionalParts</code>で指定された値に対してサブドメインが不足する場合に発生します。</dd> - <dt> - NS_ERROR_HOST_IS_IP_ADDRESS</dt> - <dd> - この例外は<code>aURI</code>が数値、IPv4アドレス、IPv6アドレスのいずれかであった場合に発生します。</dd> -</dl> -<h3 id="getPublicSuffixFromHost.28.29" name="getPublicSuffixFromHost.28.29">getPublicSuffixFromHost()</h3> -<p>ホスト文字列のパブリック接尾辞を返します。さもなくば機能的には<a href="#getPublicSuffix()">getPublicSuffix()</a>と同じです。</p> -<pre>ACString getPublicSuffixFromHost( - in AUTF8String aHost -); -</pre> -<h6 id="引数_3">引数</h6> -<dl> - <dt> - aHost</dt> - <dd> - 解析されるホスト名</dd> -</dl> -<h6 id="戻り値_2">戻り値</h6> -<p>パブリック接尾辞を含む<a href="/en/ACString" title="en/ACString">ACString</a>オブジェクト</p> -<h6 id="例外_3">例外</h6> -<dl> - <dt> - NS_ERROR_INVALID_ARG</dt> - <dd> - この例外は<code>aHost</code>が空であった場合に発生します。</dd> - <dt> - NS_ERROR_UNEXPECTED</dt> - <dd> - この例外は<code>aHost</code>がURI中に含まれることを許可されない文字を含む場合に<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIIDNService" title="">nsIIDNService</a></code>内のNormalize()メソッドにより発生します。</dd> -</dl> -<h3 id="getBaseDomainFromHost.28.29" name="getBaseDomainFromHost.28.29">getBaseDomainFromHost()</h3> -<p>ホスト名のベースドメイン部分を返します。さもなくば機能的には<a href="#getBaseDomain()">getBaseDomain()</a>と同じです。</p> -<pre>ACString getBaseDomainFromHost( - in AUTF8String aHost, - [optional] in PRUint32 aAdditionalParts -); -</pre> -<h6 id="引数_4">引数</h6> -<dl> - <dt> - aHost</dt> - <dd> - 解析されるホスト名</dd> - <dt> - aAdditionalParts</dt> - <dd> - パブリック接尾辞に追加するドメイン名の数</dd> -</dl> -<h6 id="戻り値_3">戻り値</h6> -<p>ベースドメインを含む<a href="/en/ACString" title="en/ACString">ACString</a>オブジェクト(パブリック接尾辞に、追加パート部分を足したもの)</p> -<h6 id="例外_4">例外</h6> -<dl> - <dt> - NS_ERROR_INVALID_ARG</dt> - <dd> - aHostが空であった場合に発生します。</dd> - <dt> - NS_ERROR_UNEXPECTED</dt> - <dd> - この例外は<code>aHost</code>がURI中に含まれることを許可されない文字を含む場合に<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIIDNService" title="">nsIIDNService</a></code>内のNormalize()メソッドにより発生します。</dd> - <dt> - NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS</dt> - <dd> - この例外は<code>aAdditionalParts</code>で指定された値に対してサブドメインが不足する場合に発生します。</dd> - <dt> - NS_ERROR_HOST_IS_IP_ADDRESS</dt> - <dd> - この例外は<code>aHost</code>が数値、IPv4アドレス、IPv6アドレスのいずれかであった場合に発生します。</dd> -</dl> -<h3 id="言及">言及</h3> -<p>全ての戻り値はASCII/ACEでエンコーディングされ、<a class="external" href="http://tools.ietf.org/html/rfc3454" title="http://tools.ietf.org/html/rfc3454">RFC 3454</a>に沿っています。</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsienumerator/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsienumerator/index.html deleted file mode 100644 index f90f1ef647..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsienumerator/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: nsIEnumerator -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIEnumerator -tags: - - Interfaces - - XPCOM - - XPCOM API Reference - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIEnumerator ---- -<div> -<div class="blockIndicator obsolete obsoleteHeader"> -<p><strong>廃止</strong><br> - この機能は廃止されました。一部のブラウザーでは引き続き機能する可能性がありますが、いつでも削除できるため使用は推奨されません。使用しないようにして下さい。</p> -</div> -</div> - -<p><a href="http://lxr.mozilla.org/mozilla/source/xpcom/ds/nsIEnumerator.idl">nsIEnumerator.idl</a></p> - -<div class="warning"><strong>警告:これは壊れたインターフェイスです</strong>;<strong>必要がない限り使用しないでください。列挙子に一般的に使用されるインターフェイスは</strong> <a href="/en-US/docs/XPCOM_Interface_Reference/nsISimpleEnumerator" title="nsISimpleEnumerator">nsISimpleEnumerator</a> です。</div> - -<h2 id="使用例">使用例</h2> - -<pre class="brush:js notranslate">var iter = --------(); -try { - iter.first(); - do { - var data = iter.currentItem(); - if( data instanceof Ci.nsI------ ) { - ... - ... - } - iter.next(); - } while( Components.lastResult == 0 ); -} catch(e) {} -</pre> - -<p><a href="http://www.google.com/search?&q=warren%20harris%2004/21/1999%2016:11:03">この件に関するいくつかのメモについては、1999-04-21 16:11:03の "Warren Harris" からのEメールを検索して下さい。</a></p> - -<p><a href="http://www.geocrawler.com/archives/3/137/1999/4/150">このバージョン</a> は上手く機能していない様なので、 Google キャッシュを使用する必要があるかもしれません。</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeed/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeed/index.html deleted file mode 100644 index 639be1b844..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeed/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: nsIFeed -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeed -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeed ---- -<p><code>nsIFeed</code> インターフェースは単一の Atom か RSS(Really Simple Syndication) ニュースフィードに相当します。アイテムかフィードのエントリにアクセスするのと同じように、フィードに関する情報を提供する属性を含んでいます。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeed.idl" rel="custom">toolkit/components/feeds/public/nsIFeed.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="ja/NsIFeedContainer">nsIFeedContainer</a></code></p> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>cloud</code></td> - <td><code><a href="ja/NsIWritablePropertyBag2">nsIWritablePropertyBag2</a></code></td> - <td>フィードの <code>cloud</code> 属性が何なのか確証を持っている人は誰もいません。XML-RPC か SOAP サービスと関係があるように推測されます。</td> - </tr> - <tr> - <td><code>enclosureCount</code></td> - <td><code>long</code></td> - <td>フィードに関連づけられたエンクロージャの数を表します。</td> - </tr> - <tr> - <td><code>generator</code></td> - <td><code><a href="ja/NsIFeedGenerator">nsIFeedGenerator</a></code></td> - <td>フィードを生成したソフトウェアを記述します。</td> - </tr> - <tr> - <td><code>image</code></td> - <td><code><a href="ja/NsIWritablePropertyBag2">nsIWritablePropertyBag2</a></code></td> - <td>RSS 2 で定義された画像の URL とメターデータを提供します。</td> - </tr> - <tr> - <td><code>items</code></td> - <td><code><a href="ja/NsIArray">nsIArray</a></code></td> - <td><code><a href="ja/NsIFeedEntry">nsIFeedEntry</a></code> オブジェクトの配列として、アイテムの配列かフィードのエントリを定義します。</td> - </tr> - <tr> - <td><code>skipDays</code></td> - <td><code><a href="ja/NsIArray">nsIArray</a></code></td> - <td>一週間の中でフィードがフェッチされたくない曜日の配列です。配列のそれぞれのエントリは、週のスキップする曜日の名前です。例えば、月曜日にフェッチをスキップする、フィードが月曜日にフェッチされたくないならこの配列の中に "Monday" と指定します。 - <div class="note"> - <b>注意:</b> このフィールドはまれにしか実装されていません</div> - </td> - </tr> - <tr> - <td><code>skipHours</code></td> - <td><code><a href="ja/NsIArray">nsIArray</a></code></td> - <td>一日の中でフェッチすべきでない時間の配列です。時間は、0(真夜中)から 23 (午後11:00)までの整数値で表され、常に UTC を使って表されます。 - <div class="note"> - <b>注意:</b> このフィールドはまれにしか実装されていません</div> - </td> - </tr> - <tr> - <td><code>subtitle</code></td> - <td><code><a href="ja/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code></td> - <td>フィードの description と subtitle, 及び適切な拡張に基づいてフィードのサブタイトルを返します。</td> - </tr> - <tr> - <td><code>textInput</code></td> - <td><code><a href="ja/NsIWritablePropertyBag2">nsIWritablePropertyBag2</a></code></td> - <td>フィードのソースに読者が返信を送ることを可能にするテキストボックスに関する情報。サポートしているアグリゲータはフィードと一緒に表示することができる - <div class="note"> - <b>注意:</b> このフィールドは滅多に使われておらず、多くのアグリゲータと非互換です。</div> - </td> - </tr> - <tr> - <td><code>type</code></td> - <td><code>long</code></td> - <td>フィードが提供するコンテントの種類を表します。取りうる種類の型は: - <dl> - <dt> - <code>TYPE_FEED</code></dt> - <dd> - 標準のテキストベースのフィード。</dd> - </dl> - <dl> - <dt> - <code>TYPE_AUDIO</code></dt> - <dd> - Podcast のような音声フィード</dd> - </dl> - <dl> - <dt> - <code>TYPE_IMAGE</code></dt> - <dd> - Photocast のような画像フィード</dd> - </dl> - <dl> - <dt> - <code>TYPE_VIDEO</code></dt> - <dd> - Videocast のようなビデオフィード</dd> - </dl> - <p> - <i> - この属性は読み込み専用です。</i> - </p> - <div class="note"> - <b>注意:</b> これを値のビットマスクと考えるべきです。ある時には、type は一緒に OR された一つ以上の値を含みます。これが Firefox 2 の前または後で起こるかどうかは明確ではありません。</div> - </td> - </tr> - </tbody> -</table> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<p><a href="ja/NsIFeedContainer">nsIFeedContainer</a></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedcontainer/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedcontainer/index.html deleted file mode 100644 index 2450d88d63..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedcontainer/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: nsIFeedContainer -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedContainer -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedContainer ---- -<p><code>nsIFeedContainer</code> インタフェースはフィード(<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeed" title="">nsIFeed</a></code>) とフィードエントリ(<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedEntry" title="">nsIFeedEntry</a></code>) の両方で使われる標準的なフィールドを提供します。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedContainer.idl" rel="custom">toolkit/components/feeds/public/nsIFeedContainer.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedElementBase" title="">nsIFeedElementBase</a></code></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="#normalize.28.29">normalize</a>();</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>authors</code></td> - <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIArray" title="">nsIArray</a></code></td> - <td>フィードあるいはエントリの著者を記述する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedPerson" title="">nsIFeedPerson</a></code> オブジェクトの配列。</td> - </tr> - <tr> - <td><code>categories</code></td> - <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIArray" title="">nsIArray</a></code></td> - <td>フィードあるいはエントリで見付かったカテゴリの配列。 - <div class="note"> - <b>注意:</b> 返される配列は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedCategory" title="">nsIFeedCategory</a></code> オブジェクトを含むでしょう。ただしそのインタフェースはまだ実装されていません。</div> - </td> - </tr> - <tr> - <td><code>contributors</code></td> - <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIArray" title="">nsIArray</a></code></td> - <td>フィードあるいはエントリの貢献者を記述する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedPerson" title="">nsIFeedPerson</a></code> オブジェクトの配列。</td> - </tr> - <tr> - <td><code>fields</code></td> - <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWritablePropertyBag2" title="">nsIWritablePropertyBag2</a></code></td> - <td>ドキュメントで見つかったすべてのフィールドへのアクセスを提供します。一般的な Atom 及び RSS フィールドは "dc:subject" や "content:encoded" のようないくつかの名前空間づけられた拡張を含めてノーマライズされます。フィードの種類をチェックし特定のフィールドにアクセスすることによって消費者はノーマライズを避けることができます。 - <p>一般的な名前空間は接頭辞を使うことで <code>get("dc:subject");</code> のようにアクセスできます。接頭辞に関する更なる情報は <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIFeedResult#registerExtensionPrefix()">nsIFeedResult.registerExtensionPrefix()</a></code> を参照してください。</p> - </td> - </tr> - <tr> - <td><code>id</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>フィードあるいはエントリの識別する文字列。フィード全てがこれらを持つわけでは無いですがメジャーなフィードフォーマットはそれぞれのエントリに ID を持っています。</td> - </tr> - <tr> - <td><code>link</code></td> - <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code></td> - <td>フィードあるいはエントリの第一のリンクを含む URI。</td> - </tr> - <tr> - <td><code>rights</code></td> - <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedTextConstruct" title="">nsIFeedTextConstruct</a></code></td> - <td>フィードあるいはエントリの権利あるいはライセンスのテキスト。</td> - </tr> - <tr> - <td><code>title</code></td> - <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedTextConstruct" title="">nsIFeedTextConstruct</a></code></td> - <td>フィードあるいはエントリのタイトルいくつかのフィードはタイトルがないことに覚えておいてください。またいくつかはタイトルにマークアップを使っており、この属性をデコードするときには注意してください。</td> - </tr> - <tr> - <td><code>updated</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td><a class="external" href="http://www.ietf.org/rfc/rfc0822.txt">RFC822</a> フォーマットでのフィードあるいはエントリが最後に更新された日付を含む文字列。この文字列は JavaScript と mail コードでパース可能です。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="normalize.28.29" name="normalize.28.29">normalize()</h3> -<p>コンテナのフィールドを便利な属性とを同期させます。</p> -<pre class="eval"> void normalize(); -</pre> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<p><a href="ja/NsIURI">nsIURI</a>, <a href="ja/NsIFeedTextConstruct">nsIFeedTextConstruct</a></p> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedelementbase/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedelementbase/index.html deleted file mode 100644 index fe7d1a107f..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedelementbase/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: nsIFeedElementBase -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedElementBase -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedElementBase ---- -<p><code>nsIFeedElementBase</code> インタフェースは基本となるインタフェースです。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedElementBase.idl" rel="custom">toolkit/components/feeds/public/nsIFeedElementBase.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="ja/NsISupports">nsISupports</a></code></p> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>attributes</code></td> - <td><code><a href="ja/NsISAXAttributes">nsISAXAttributes</a></code></td> - <td>その要素で見つかったすべての属性。ほとんどの派生インタフェースが標準のフィールドに便利なアクセサを提供するので、標準的でないフィールドを探すときにのみ役に立ちます。</td> - </tr> - <tr> - <td><code>baseURI</code></td> - <td><code><a href="ja/NsIURI">nsIURI</a></code></td> - <td>フィードまたはエントリの base URI。</td> - </tr> - </tbody> -</table> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedentry/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedentry/index.html deleted file mode 100644 index ee585a4147..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedentry/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: nsIFeedEntry -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedEntry -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedEntry ---- -<p><code>nsIFeedEntry</code> インタフェースは RSS か Atom ニュースフィードの単一のエントリを記述し、エントリのデータにアクセスできる属性を提供します。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedEntry.idl" rel="custom">toolkit/components/feeds/public/nsIFeedEntry.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="ja/NsIFeedContainer">nsIFeedContainer</a></code></p> -<h3 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h3> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>content</code></td> - <td><code><a href="ja/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code></td> - <td>エントリのコンテントの完全なテキスト。これは <code>atom:content</code> 及び/または <code>content:encoded</code> フィールドに由来します。</td> - </tr> - <tr> - <td><code>enclosures</code></td> - <td><code><a href="ja/NsIArray">nsIArray</a></code></td> - <td>エントリに含まれている全てのエンクロージャの配列。これらは podcast や photocast 等で使われます。</td> - </tr> - <tr> - <td><code>mediaContent</code></td> - <td><code><a href="ja/NsIArray">nsIArray</a></code></td> - <td>エンクロージャまたはエントリ内でインライン表示されるその他のメディアの全ての配列。</td> - </tr> - <tr> - <td><code>parent</code></td> - <td><code><a href="ja/NsIFeedContainer">nsIFeedContainer</a></code></td> - <td>エントリの親への参照。フィード (<code><a href="ja/NsIFeed">nsIFeed</a></code>) かもう一つのエントリのどちらかです。</td> - </tr> - <tr> - <td><code>published</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td><a class="external" href="http://www.ietf.org/rfc/rfc0822.txt">RFC822</a> フォーマットでのエントリが配信された日付を表す文字列。この日付は JavaScript と mail コードの両方でパース可能です。</td> - </tr> - <tr> - <td><code>summary</code></td> - <td><code><a href="ja/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code></td> - <td>フィードエントリのコンテントの要約。これはエントリの description と subtitle, summary, content および適切な拡張を使って生成されます。</td> - </tr> - </tbody> -</table> -<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3> -<p><a href="ja/NsIFeedContainer">nsIFeedContainer</a></p> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedgenerator/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedgenerator/index.html deleted file mode 100644 index 02e51e7ced..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedgenerator/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: nsIFeedGenerator -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedGenerator -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedGenerator ---- -<p><code>nsIFeedGenerator</code> インタフェースは RSS か Atom ニュースフィードを生成したソフトウェアを記述します。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedGenerator.idl" rel="custom">toolkit/components/feeds/public/nsIFeedGenerator.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="ja/NsIFeedElementBase">nsIFeedElementBase</a></code></p> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>agent</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>フィードを作成したソフトウェアの名前。</td> - </tr> - <tr> - <td><code>uri</code></td> - <td><code><a href="ja/NsIURI">nsIURI</a></code></td> - <td>ジェネレータソフトウェアに関連づけられた URI。</td> - </tr> - <tr> - <td><code>version</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>フィードを作成したジェネレータソフトウェアのバージョンを表す文字列。</td> - </tr> - </tbody> -</table> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedperson/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedperson/index.html deleted file mode 100644 index bb0efa8e92..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedperson/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: nsIFeedPerson -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedPerson -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedPerson ---- -<p><code>nsIFeedPerson</code> インタフェースは RSS または Atom フィードの著者か貢献者を記述します。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedPerson.idl" rel="custom">toolkit/components/feeds/public/nsIFeedPerson.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <a href="ja/NsIFeedElementBase">nsIFeedElementBase</a></p> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>email</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>その人の email アドレス。</td> - </tr> - <tr> - <td><code>name</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>その人の名前。</td> - </tr> - <tr> - <td><code>uri</code></td> - <td><code><a href="ja/NsIURI">nsIURI</a></code></td> - <td>その人に関連づけられた URI。ほとんどの場合、これはその人のホームページです。</td> - </tr> - </tbody> -</table> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<p><a href="ja/NsIFeedElementBase">nsIFeedElementBase</a></p> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprocessor/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprocessor/index.html deleted file mode 100644 index c7b4cb306a..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprocessor/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: nsIFeedProcessor -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedProcessor -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedProcessor ---- -<p><code>nsIFeedProcessor</code> インタフェースは RSS または Atom フィードをパースします。これは処理中と処理後にそれらのコンテンツに基づいてコールバックを引き起こします。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedProcessor.idl" rel="custom">toolkit/components/feeds/public/nsIFeedProcessor.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIStreamListener" title="">nsIStreamListener</a></code></p> -<p>実装元: <code>@mozilla.org/feed-processor;1</code>。インスタンスを作成するには次のコードを使用します:</p> -<pre class="eval">var fp = Components.classes["@mozilla.org/feed-processor;1"] - .createInstance(Components.interfaces.nsIFeedProcessor); -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#parseAsync.28.29">parseAsync</a>(in nsIRequestObserver requestObserver, in nsIURI uri);</code></td> - </tr> - <tr> - <td><code>void <a href="#parseFromStream.28.29">parseFromStream</a>(in nsIInputStream stream, in nsIURI uri);</code></td> - </tr> - <tr> - <td><code>void <a href="#parseFromString.28.29">parseFromString</a>(in AString str, in nsIURI uri);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>listener</code></td> - <td><code><a href="ja/NsIFeedResultListener">nsIFeedResultListener</a></code></td> - <td>feed result listener はフィードイベントに反応します。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="parseAsync.28.29" name="parseAsync.28.29">parseAsync()</h3> -<p>非同期にフィードをパースします。そして、呼び出し元はパース処理を開始するためにプロセッサの <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIStreamListener" title="">nsIStreamListener</a></code> メソッドを呼び出さなくてはなりません。非同期パース中に <code>nsIFeedProcessor</code> インタフェースの他のパースメソッドを呼び出してはなりません。</p> -<pre class="eval"> void parseAsync( - in nsIRequestObserver requestObserver, - in nsIURI uri - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6> -<dl> - <dt> - <tt>requestObserver</tt></dt> - <dd> - パースが始まったときと終わりにオブザーバは通知されます。これは <code>null</code> が可能です。</dd> - <dt> - <tt>uri</tt></dt> - <dd> - フィードの中の URI を解決するための base URI。</dd> -</dl> -<h3 id="parseFromStream.28.29" name="parseFromStream.28.29">parseFromStream()</h3> -<p><code><a href="ja/NsInputStream">nsInputStream</a></code> からフィードをパースします。</p> -<pre class="eval"> void parseFromStream( - in nsIInputStream stream, - in nsIURI uri - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2">パラメータ</h6> -<dl> - <dt> - <tt>stream</tt></dt> - <dd> - フィードを読み込んでパースする <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsInputStream" title="">nsInputStream</a></code> へのポインタ。</dd> - <dt> - <tt>uri</tt></dt> - <dd> - フィードの中の URI を解決するための base URI。</dd> -</dl> -<h3 id="parseFromString.28.29" name="parseFromString.28.29">parseFromString()</h3> -<p><code><a href="ja/AString">AString</a></code> からフィードをパースをします。</p> -<pre class="eval"> void parseFromString( - in AString str, - in nsIURI uri - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_3" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_3">パラメータ</h6> -<dl> - <dt> - <tt>str</tt></dt> - <dd> - フィードとして処理される文字列。</dd> - <dt> - <tt>uri</tt></dt> - <dd> - フィードの中の URI を解決するための base URI。</dd> -</dl> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIStreamListener" title="">nsIStreamListener</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedResultListener" title="">nsIFeedResultListener</a></code></p> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprogresslistener/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprogresslistener/index.html deleted file mode 100644 index e655256058..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprogresslistener/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: nsIFeedProgressListener -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedProgressListener -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedProgressListener ---- -<p><code>nsIFeedProgressListener</code> インタフェースは、RSS あるいは Atom フィードの処理中に使われるコールバックを定義します。フィードコンテントアクセス API を使うプログラムはこれらのコールバックのいずれも実装する必要はありません。それらは任意ですが、パース処理中にフィードバックを提供することができます。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsiFeedListener.idl" rel="custom">toolkit/components/feeds/public/nsiFeedListener.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="ja/NsIFeedResultListener">nsIFeedResultListener</a></code></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#handleEntry.28.29">handleEntry</a>(in nsIFeedEntry entry, in nsIFeedResult result);</code></td> - </tr> - <tr> - <td><code>void <a href="#handleFeedAtFirstEntry.28.29">handleFeedAtFirstEntry</a>(in nsIFeedResult result);</code></td> - </tr> - <tr> - <td><code>void <a href="#handleStartFeed.28.29">handleStartFeed</a>(in nsIFeedResult result);</code></td> - </tr> - <tr> - <td><code>void <a href="#reportError.28.29">reportError</a>(in AString errorText, in long lineNumber, in boolean bozo);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="handleEntry.28.29" name="handleEntry.28.29">handleEntry()</h3> -<p>エントリあるいはアイテムが処理された後に呼ばれます。もしドキュメントが単独のアイテムあるいはエントリなら、 <code><a href="#handleFeedAtFirstEntry.28.29">handleFeedAtFirstEntry()</a></code> メソッドが呼ばれることなく、<code><a href="ja/NsIFeedEntry">nsIFeedEntry</a></code> が <code>parent</code> の値に <code>null</code> を持つでしょう。</p> -<pre class="eval"> void handleEntry( - in nsIFeedEntry entry, - in nsIFeedResult result - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6> -<dl> - <dt> - <tt>entry</tt></dt> - <dd> - ちょうど処理されたエントリに関する情報を含んでいる <code><a href="ja/NsIFeedEntry">nsIFeedEntry</a></code> のポインタ。</dd> - <dt> - <tt>result</tt></dt> - <dd> - 処理されているフィードに関する現在の情報を含む <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code> のポインタ。</dd> -</dl> -<h3 id="handleFeedAtFirstEntry.28.29" name="handleFeedAtFirstEntry.28.29">handleFeedAtFirstEntry()</h3> -<p>そのフィードで最初にエントリあるいはアイテムに出会った時に呼ばれます。Atomでは全てのフィードデータがエントリーに先行する必要があります; RSSではこれは必要ではありませんが通常はそうです。言い替えるとこのメソッドが呼ばれるとき、十中八九、ほとんどあるいは全てのフィードレベルのメタデータが処理され、受け取った <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code> オブジェクトで利用できるでしょう。</p> -<pre class="eval"> void handleFeedAtFirstEntry( - in nsIFeedResult result - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2">パラメータ</h6> -<dl> - <dt> - <tt>result</tt></dt> - <dd> - 最初のエントリが見付かったが、処理される前の時点のフィードを表す <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code>。</dd> -</dl> -<div class="note"> - <b>注意:</b> もしフィードのタイプがエントリのみあるいはアイテムのみのタイプの場合、このイベントが呼ばれることはありません。</div> -<h3 id="handleStartFeed.28.29" name="handleStartFeed.28.29">handleStartFeed()</h3> -<p>フィードで妥当な先頭部分が検出されるとただちに呼ばれます; これはあなたのコードにそのフィードが他の種類のドキュメントではなく実際のフィードであるように見えることを知らせてくれます。</p> -<p> </p> -<pre class="eval"> void handleStartFeed( - in nsIFeedResult result - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_3" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_3">パラメータ</h6> -<dl> - <dt> - <tt>result</tt></dt> - <dd> - フィードがパースされ始めた時点での状態を表す <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code>。</dd> -</dl> -<h3 id="reportError.28.29" name="reportError.28.29">reportError()</h3> -<p>致命的な XML パースエラーが発生したときや、ドキュメントがフィードではなかったときにフィードプロセッサによって呼ばれます。</p> -<pre class="eval"> void reportError( - in AString errorText, - in long lineNumber, - in boolean bozo - ); -</pre> -<p>それぞれのメソッドは少なくとも処理の時点での状態を表す <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code> を入力として受け取ります。</p> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<p><a href="ja/NsIFeedResultListener">nsIFeedResultListener</a></p> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresult/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresult/index.html deleted file mode 100644 index cca291098e..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresult/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: nsIFeedResult -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedResult -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedResult ---- -<p><code>nsIFeedResult</code> インタフェースは HTTP へのアクセスと、フィードあるいはエントリのメタデータのパースを提供します。</p> - -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedResult.idl" rel="custom">toolkit/components/feeds/public/nsIFeedResult.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> - -<p>継承元: <code><a href="ja/NsISupports">nsISupports</a></code></p> - -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#registerExtensionPrefix.28.29">registerExtensionPrefix</a>(in AString namespace, in AString prefix);</code></td> - </tr> - </tbody> -</table> - -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>bozo</code></td> - <td><code>boolean</code></td> - <td>フィードが XML パース中に深刻なエラーを引き起こすと、フィードプロセッサは <code>bozo</code> ビットを設定します。エラーが発生する前にパースされたフィードのメタデータとエントリがあるかもしれません。</td> - </tr> - <tr> - <td><code>doc</code></td> - <td><code><a href="ja/NsIFeedContainer">nsIFeedContainer</a></code></td> - <td>パースされたフィードあるいはエントリ。フィードでないものが処理された場合は <code>null</code> です。</td> - </tr> - <tr> - <td><code>headers</code></td> - <td><code><a href="ja/NsIProperties">nsIProperties</a></code></td> - <td>フィードに伴って発生する HTTP レスポンスヘッダ。</td> - </tr> - <tr> - <td><code>stylesheet</code></td> - <td><code><a href="ja/NsIURI">nsIURI</a></code></td> - <td>フィードのソースを変換するために利用可能な <a href="ja/XSLT">XSLT</a> スタイルシート。いくつかのフィードは処理命令 (processing instruction)にこの情報を含んでいます。それは一般に特定のフィードで動作するように設計されたクライアントで使うことが意図されています。</td> - </tr> - <tr> - <td><code>uri</code></td> - <td><code><a href="ja/NsIURI">nsIURI</a></code></td> - <td>取り込んだフィードのアドレス。</td> - </tr> - <tr> - <td><code>version</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>フィードのバージョン; フィードでないものが処理された場合は <code>null</code> です。値は以下のどれか一つになります: - <blockquote>atom, rss2, rss09, rss091, rss091userland, rss092, rss1, atom03, atomEntry, rssItem</blockquote> - </td> - </tr> - </tbody> -</table> - -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> - -<h3 id="registerExtensionPrefix.28.29" name="registerExtensionPrefix.28.29">registerExtensionPrefix()</h3> - -<p>フィードあるいはエントリの<span style="color: darkgreen; background: #ef9;">【訳注: RSS また Atom の】</span>拡張にアクセスするために使われる名前空間の接頭辞を登録する。</p> - -<div class="warning"><strong>警告:</strong> このメソッドは現時点では実装されていません。</div> - -<pre class="eval"> void registerExtensionPrefix( - in AString namespace, - in AString prefix - ); -</pre> - -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6> - -<dl> - <dt>namespace</dt> - <dd>拡張の名前空間;prefix</dd> - <dd>拡張にアクセスするために使われる接頭辞</dd> -</dl> - -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> - -<p><a href="ja/NsISupports">nsISupports</a>, <a href="ja/NsIFeedContainer">nsIFeedContainer</a>, <a href="ja/NsIURI">nsIURI</a>, <a href="ja/NsIProperties">nsIProperties</a></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresultlistener/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresultlistener/index.html deleted file mode 100644 index 72dd667210..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresultlistener/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: nsIFeedResultListener -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedResultListener -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedResultListener ---- -<p><code>nsIFeedResultListener</code> インタフェースは、パース処理中のフィードパーサからイベントを受け取るためのプログラムによって実装されるべきです。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedListener.idl" rel="custom">toolkit/components/feeds/public/nsIFeedListener.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="ja/NsISupports">nsISupports</a></code></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#handleResult.28.29">handleResult</a>(in nsIFeedResult result);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="handleResult.28.29" name="handleResult.28.29">handleResult()</h3> -<p>フィードの処理が完了したときに呼ばれます。処理中にエラーが発生しても、エラーが発生する前に処理された、フィードレベルのデータやエントリの妥当な (<span style="color: green;">valid</span>)データが利用できるかもしれません。進歩状況の表示などをしないなら、パースされたフィードを受け取るための実装に必要なものは、これがすべてです。</p> -<pre class="eval"> void handleResult( - in nsIFeedResult result - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6> -<dl> - <dt> - <tt>result</tt></dt> - <dd> - パースされたフィードを表す <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code>。</dd> -</dl> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<p><a href="ja/NsIFeedProgressListener">nsIFeedProgressListener</a>, <a href="ja/NsISupports">nsISupports</a></p> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedtextconstruct/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedtextconstruct/index.html deleted file mode 100644 index 93ee41b0b8..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedtextconstruct/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: nsIFeedTextConstruct -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedTextConstruct -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedTextConstruct ---- -<p><code>nsIFeedTextConstruct</code> インタフェースはプレーンテキストや HTML あるいは XHTML を含む RSS, Atom フィードのテキストフィールドを記述します。いくつかの拡張要素は "type" パラメータも含んでおり、このインタフェースはそれらも同様に記述します。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedTextConstruct.idl" rel="custom">toolkit/components/feeds/public/nsIFeedTextConstruct.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>実装元: <code>@mozilla.org/feed-textconstruct;1</code>。ユーザは通常、このインスタンスを直接作成する必要はありません。他の <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeed" title="">nsIFeed</a></code> や <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedEntry" title="">nsIFeedEntry</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedContainer" title="">nsIFeedContainer</a></code> などのフィード関連のインタフェースは、<code>nsIFeedTextConstruct</code> を実装するオブジェクトを返す属性を持っています。</p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>nsIDOMDocumentFragment <a href="#createDocumentFragment.28.29"> createDocumentFragment</a>(in nsIDOMElement element);</code></td> - </tr> - <tr> - <td><code>AString <a href="#plainText.28.29">plainText</a>();</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>base</code></td> - <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code></td> - <td>テキスト構造物が HTML あるいは XHTML を含んでいた場合、コンテントの相対参照はこの base URI を使って解決されるべきです。</td> - </tr> - <tr> - <td><code>lang</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>テキストの言語(アメリカ英語では "en-US")。</td> - </tr> - <tr> - <td><code>text</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>実際のテキストコンテント。<code>type</code> が "html" か "xhtml" のどちらかではこの文字列はマークアップを含みます。</td> - </tr> - <tr> - <td><code>type</code></td> - <td><code><a href="ja/AString">AString</a></code></td> - <td>記述されているコンテントの種類; "text" か "html" あるいは "xhtml" のどれか一つ。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="createDocumentFragment.28.29" name="createDocumentFragment.28.29">createDocumentFragment()</h3> -<p>与えられた DOM 要素の上に新しい document fragment を作ります。それはテキストと(もしテキストが HTML あるいは XHTML を構成しているなら)マークアップを含みます。</p> -<pre class="eval"> nsIDOMDocumentFragment createDocumentFragment( - in nsIDOMElement element - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6> -<dl> - <dt> - <tt>element</tt></dt> - <dd> - 新しい document fragment を作る要素。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentFragment" title="">nsIDocumentFragment</a></code> はテキストとマークアップを含みます。</p> -<h3 id="plainText.28.29" name="plainText.28.29">plainText()</h3> -<p>テキストを全てのマークアップを取り除き全てのエンティティをデコードしてプレーンテキストとして返します。</p> -<pre class="eval"> AString plainText(); -</pre> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>テキスト構造物のコンテントのプレーンテキスト版。もし <code>type</code> 属性が "text" の場合、このメソッドは <code>text</code> 属性の変更されていない値を返します。</p> -<h2 id=".E5.82.99.E8.80.83" name=".E5.82.99.E8.80.83">備考</h2> -<p>もし ドキュメントの <code>type</code> が "html" あるいは "xhtml" の場合、"<" 文字はマークアップを意味します。その文字を表示するためには、"<code>&lt;</code>" のようなエスケープが使われなくてはなりません。type が "text" の場合、"<" 文字はそれ自身を表します。</p> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMElement" title="">nsIDOMElement</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentFragment" title="">nsIDocumentFragment</a></code></p> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivitydistributor/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivitydistributor/index.html deleted file mode 100644 index dab28ff668..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivitydistributor/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: nsIHttpActivityDistributor -slug: >- - Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIHttpActivityDistributor -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityDistributor ---- -<p><code>nsIHttpActivityDistributor</code> インターフェースはHTTPの転送アクティビティを観察するクライアントを登録、あるいは登録解除するために使用されます。これは、特にデバッガーやトラフィックをモニタする目的に便利です。</p> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/public/nsIHttpActivityObserver.idl" rel="custom">netwerk/protocol/http/public/nsIHttpActivityObserver.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code></p> -<p>実装: <code>@mozilla.org/network/http-activity-distributor;1</code>. サービスにアクセスするには以下のようにします:</p> -<pre class="eval">var httpDistrib = Components.classes["@mozilla.org/network/http-activity-distributor;1"] - .getService(Components.interfaces.nsIHttpActivityDistributor); -</pre> -<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="/#addObserver()" title="#addObserver()">addObserver</a>(in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> aObserver);</code></td> - </tr> - <tr> - <td><code>void <a href="/#removeObserver()" title="#removeObserver()">removeObserver</a>(in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> aObserver);</code></td> - </tr> - </tbody> -</table> -<h2 id="メソッド">メソッド</h2> -<h3 id="eatCookie.28.29" name="eatCookie.28.29">addObserver()</h3> -<p>HTTPの転送アクティビティの通知を開始する。</p> -<pre class="eval">void addObserver( - in nsIHttpActivityObserver aObserver -); -</pre> -<h6 id="Parameters" name="Parameters">値</h6> -<dl> - <dt> - <code>aObserver</code></dt> - <dd> - HTTPの転送アクティビティの通知を受ける <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> 。 このオブジェクトの{ifmethod("nsIHttpActivityObserver", "observeActivity")}} メソッドが活動が起こる度に呼び出されます。</dd> -</dl> -<h3 id="eatCookie.28.29" name="eatCookie.28.29">removeObserver()</h3> -<p>HTTPの転送アクティビティの通知を停止する。</p> -<pre class="eval">void removeObserver( - in nsIHttpActivityObserver aObserver -); -</pre> -<h6 id="Parameters" name="Parameters">値</h6> -<dl> - <dt> - <code>aObserver</code></dt> - <dd> - HTTPの転送アクティビティの通知を中止する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> 。</dd> - <dt> - </dt> -</dl> -<h2 id="参照">参照</h2> -<ul> - <li><a href="/ja/Monitoring_HTTP_activity" title="ja/Monitoring HTTP activity">HTTP アクティビティのモニタリング</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivityobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivityobserver/index.html deleted file mode 100644 index 782caa9682..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivityobserver/index.html +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: nsIHttpActivityObserver -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIHttpActivityObserver -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver ---- -<p><code>nsIHttpActivityObserver</code> はデバッガーやトラフィックモニターのようなHTTPの転送アクティビティの通知を要求するクライアントにより実装されるインターフェースです。</p> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/public/nsIHttpActivityObserver.idl" rel="custom">netwerk/protocol/http/public/nsIHttpActivityObserver.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void observeActivity(in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> aHttpChannel, in PRUint32 aActivityType, in PRUint32 aActivitySubtype,<br> - in PRTime aTimestamp, in PRUint64 aExtraSizeData, in ACString aExtraStringSize);</code></td> - </tr> - </tbody> -</table> -<h2 id="属性"> 属性</h2> -<table class="standard-table" style="width: auto;"> - <tbody> - <tr> - <td class="header">Attribute</td> - <td class="header">Type</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>isActive</code></td> - <td><code>boolean</code></td> - <td> - <p>インターフェースがアクティブで、HTTPの活動を通知されたい場合は<code> true、</code> それ以外の場合は <code>false。</code> もし <code>false </code>の場合, <code><a href="https://developer.mozilla.org/ja/docs/nsIHttpActivityObserver#observeActivity()">observeActivity()</a></code> メソッドは呼び出されない。</p> - <div class="note"> - <strong>注意:</strong> この属性は互換性のためだけに存在するもので、使用されるべきではありません。</div> - </td> - </tr> - </tbody> -</table> -<h2 id="Activity_type_constants" name="Activity type constants">アクティビティタイプ定数</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>ACTIVITY_TYPE_SOCKET_TRANSPORT</code></td> - <td>0x0001</td> - <td>Socket の転送活動が発生した。</td> - </tr> - <tr> - <td><code>ACTIVITY_TYPE_HTTP_TRANSPORT</code></td> - <td>0x0002</td> - <td>HTTP の転送活動が発生した。</td> - </tr> - </tbody> -</table> -<h2 id="Activity_subtype_constants" name="Activity subtype constants">アクティビティサブタイプ定数</h2> -<table class="standard-table" style="width: 914px; height: 194px;"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">説明</td> - </tr> - <tr> - <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_REQUEST_</span><code>HEADER</code></td> - <td>0x5001</td> - <td> - <p>HTTP リクエストが送信キューにキューイングされた。Observer は <code>aExtraStringData </code>からリクエストヘッダを<span style="font-family: monospace;">参照できる。</span></p> - </td> - </tr> - <tr> - <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_REQUEST_BODY_SENT</span></td> - <td>0x5002</td> - <td>HTTP リクエストのボディが送信された。</td> - </tr> - <tr> - <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_RESPONSE_</span><code>START</code></td> - <td>0x5003</td> - <td>HTTP レスポンスを受信し始めた。</td> - </tr> - <tr> - <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_RESPONSE_HEADER</span></td> - <td>0x5004</td> - <td>HTTPのレスポンスヘッダを受信した。</td> - </tr> - <tr> - <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_RESPONSE_COMPLETE</span></td> - <td>0x5005</td> - <td>HTTPのレスポンスを完全に受信し終えた。</td> - </tr> - <tr> - <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_TRANSACTION_CLOSE</span></td> - <td>0x5006</td> - <td>HTTPのトランザクションが閉じられた。</td> - </tr> - </tbody> -</table> -<h2 id="Methods" name="Methods">メソッド</h2> -<h3 id="eatCookie.28.29" name="eatCookie.28.29">observeActivity()</h3> -<p>HTTPの転送アクティビティが発生した際に呼び出されます。HTTPの活動が発生した際に行うべき処理はこのメソッドに定義します。</p> -<pre class="eval">void observeActivity( - in nsISupports aHttpChannel, - in PRUint32 aActivityType, - in PRUint32 aActivitySubtype, - in PRTime aTimestamp, - in PRUint64 aExtraSizeData, - in ACString aExtraStringData -); -</pre> -<h6 id="Parameters" name="Parameters">値</h6> -<dl> - <dt> - <code>aHttpChannel</code></dt> - <dd> - 活動が発生した <a href="/NsIHttpChannel" title="NsIHttpChannel">HTTP チャンネル</a>。</dd> - <dt> - <code>aActivityType</code></dt> - <dd> - 発生したアクティビティのタイプ; <a href="/ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.82.bf.e3.82.a4.e3.83.97.e5.ae.9a.e6.95.b0" title="ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.82.bf.e3.82.a4.e3.83.97.e5.ae.9a.e6.95.b0">アクティビティタイプ定数</a>で定義された値のうちの1つ。</dd> - <dt> - <code>aActivitySubtype</code></dt> - <dd> - 発生したアクティビティのタイプをさらに細かく分類したサブタイプ。アクティビティのタイプが <code>ACTIVITY_TYPE_SOCKET_TRANSPORT</code> の場合、 この値は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISocketTransport" title="">nsISocketTransport</a></code> で定義された <code>STATUS_*</code> 定数のどれかになります。もしアクティビティのタイプが <code>ACTIVITY_TYPE_HTTP_TRANSACTION</code> の場合、この値は前述の<a href="/ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.82.b5.e3.83.96.e3.82.bf.e3.82.a4.e3.83.97.e5.ae.9a.e6.95.b0" title="ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.82.b5.e3.83.96.e3.82.bf.e3.82.a4.e3.83.97.e5.ae.9a.e6.95.b0">アクティビティサブタイプ定数</a>で定義された定数のどれかになります。</dd> - <dt> - <code>aTimestamp</code></dt> - <dd> - 活動が発生した時刻です。1970年1月1日午前零時<span class="kana">を基準とした経過時刻がマイクロ秒で表されます。</span></dd> - <dt> - <code>aExtraSizeData</code></dt> - <dd> - 追加のサイズデータが利用できる場合にその値が渡されます。後述の<a href="/ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.83.87.e3.83.bc.e3.82.bf.e3.82.92.e6.89.b1.e3.81.86" title="ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.83.87.e3.83.bc.e3.82.bf.e3.82.92.e6.89.b1.e3.81.86">アクティビティデータを扱う</a>もご覧ください。</dd> - <dt> - <code>aExtraStringData</code></dt> - <dd> - 追加の文字列データが利用できる場合にその値が渡されます。後述の<a href="/ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.83.87.e3.83.bc.e3.82.bf.e3.82.92.e6.89.b1.e3.81.86" title="ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.83.87.e3.83.bc.e3.82.bf.e3.82.92.e6.89.b1.e3.81.86">アクティビティデータを扱う</a>もご覧ください。</dd> -</dl> -<h2 id="Interpreting_activity_data" name="Interpreting activity data">アクティビティデータを扱う</h2> -<p><code>aActivityType</code> および <code>aActivitySubtype</code> フィールドの値によって, <code>aExtraSizeData</code> と <code>aExtraStringData</code> パラメータは違う意味を持ちます。</p> -<h3 id="ソケット転送アクティビティ">ソケット転送アクティビティ</h3> -<p>もしアクティビティのタイプが <code>ACTIVITY_TYPE_SOCKET_TRANSPORT</code> かつサブタイプが <code>STATUS_SENDING_TO</code> であれば、 <code>aExtraSizeData</code> パラメータは送信されたバイト数を含むことになります。1つの HTTP トランザクションは分割されたソケットの書き出しによって、複数のチャンクから構成される事があるため、それぞれのソケットアクティビティで通知されるのはそのチャンクで転送されたバイト数のみとなります。</p> -<h3 id="HTTP_トランザクションアクティビティ">HTTP トランザクションアクティビティ</h3> -<p>通知されたアクティビティのタイプが <code>ACTIVITY_TYPE_HTTP_TRANSACTION</code> の場合、 追加のデータを含むものは3種類あります:</p> -<dl> - <dt> - <code>ACTIVITY_SUBTYPE_REQUEST_HEADER</code></dt> - <dd> - <code>aExtraStringData</code> はヘッダの文字列を含みます。</dd> - <dt> - <code>ACTIVITY_SUBTYPE_RESPONSE_HEADER</code></dt> - <dd> - <code>aExtraStringData</code> はレスポンスヘッダの文字列を含みます。</dd> - <dt> - <code>ACTIVITY_SUBTYPE_RESPONSE_COMPLETE</code></dt> - <dd> - <code>aExtraSizeData</code> はトータルで受信したバイト数を含みます。</dd> -</dl> -<h2 id="参照">参照</h2> -<ul> - <li><a href="/en/Monitoring_HTTP_activity" title="en/Monitoring HTTP activity">HTTP アクティビティのモニタリング</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityDistributor" title="">nsIHttpActivityDistributor</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpchannel/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpchannel/index.html deleted file mode 100644 index 6a67b2c570..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpchannel/index.html +++ /dev/null @@ -1,569 +0,0 @@ ---- -title: nsIHttpChannel -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIHttpChannel -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpChannel ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/nsIHttpChannel.idl" rel="custom">netwerk/protocol/http/nsIHttpChannel.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -このインターフェイスでは、HTTPリクエストパラメータの変更、および結果として得られるHTTPレスポンスステータスとヘッダーが使用可能になった時点での検査が可能です。 -</span> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 1.3 </span></div> -</div> - -<p>To create an HTTP channel, use <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIIOService" title="">nsIIOService</a></code> with a HTTP URI, for example:</p> - -<pre class="brush:js">var ios = Components.classes["@mozilla.org/network/io-service;1"] - .getService(Components.interfaces.nsIIOService); -var ch = ios.newChannel("https://www.example.com/", null, null); -</pre> - -<h2 id="メソッド概要">メソッド概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#getOriginalResponseHeader()">getOriginalResponseHeader</a>(in ACString aHeader, in nsIHttpHeaderVisitor aVisitor);</code> </td> - </tr> - <tr> - <td><code>ACString <a href="#getRequestHeader()">getRequestHeader</a>(in ACString aHeader);</code></td> - </tr> - <tr> - <td><code>ACString <a href="#getResponseHeader()">getResponseHeader</a>(in ACString header);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#isNoCacheResponse()">isNoCacheResponse</a>();</code></td> - </tr> - <tr> - <td><code>boolean <a href="#isNoStoreResponse()">isNoStoreResponse</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="#redirectTo()">redirectTo</a>(in nsIURI aNewURI);</code> </td> - </tr> - <tr> - <td><code>void <a href="#setEmptyRequestHeader()">setEmptyRequestHeader</a>(in ACString aHeader);</code> </td> - </tr> - <tr> - <td><code>void <a href="#setReferrerWithPolicy()">setReferrerWithPolicy</a>(in nsIURI referrer, in unsigned long referrerPolicy);</code> </td> - </tr> - <tr> - <td><code>void <a href="#setRequestHeader()">setRequestHeader</a>(in ACString aHeader, in ACString aValue, in boolean aMerge);</code></td> - </tr> - <tr> - <td><code>void <a href="#setResponseHeader()">setResponseHeader</a>(in ACString header, in ACString value, in boolean merge);</code></td> - </tr> - <tr> - <td><code>void <a href="#visitOriginalResponseHeaders()">visitOriginalResponseHeaders</a>(in nsIHttpHeaderVisitor aVisitor);</code> </td> - </tr> - <tr> - <td><code>void <a href="#visitRequestHeaders()">visitRequestHeaders</a>(in nsIHttpHeaderVisitor aVisitor);</code></td> - </tr> - <tr> - <td><code>void <a href="#visitResponseHeaders()">visitResponseHeaders</a>(in nsIHttpHeaderVisitor aVisitor);</code></td> - </tr> - </tbody> -</table> - -<h2 id="Constants">Constants</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Constant</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE</code></td> - <td>Default; indicates not to pass on the referrer when downgrading from https to http</td> - </tr> - <tr> - <td><code>REFERRER_POLICY_NO_REFERRER</code></td> - <td>Indicates no referrer will be sent</td> - </tr> - <tr> - <td><code>REFERRER_POLICY_ORIGIN</code></td> - <td>Only send the origin of the referring URI</td> - </tr> - <tr> - <td><code>REFERRER_POLICY_ORIGIN_WHEN_XORIGIN</code></td> - <td>Same as the default; Only send the origin of the referring URI for cross-origin requests</td> - </tr> - <tr> - <td><code>REFERRER_POLICY_UNSAFE_URL</code></td> - <td>Always send the referrer, even when downgrading from https to http</td> - </tr> - </tbody> -</table> - -<h2 id="Attributes">Attributes</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Attribute</td> - <td class="header">Type</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>allowPipelining</code></td> - <td><code>boolean</code></td> - <td> - <p>This attribute is a hint to the channel to indicate whether or not the underlying HTTP transaction should be allowed to be pipelined with other transactions. This should be set to <code>false</code>, for example, if the application knows that the corresponding document is likely to be very large.</p> - - <p>This attribute is <code>true</code> by default, though other factors may prevent pipelining.</p> - This attribute may only be set before the channel is opened. - - <h4 id="Exceptions_thrown">Exceptions thrown</h4> - - <dl> - <dt><code>NS_ERROR_FAILURE</code></dt> - <dd>If set after the channel has been opened.</dd> - </dl> - </td> - </tr> - <tr> - <td><code>redirectionLimit</code></td> - <td><code>unsigned long</code></td> - <td> - <p>This attribute specifies the number of redirects this channel is allowed to make. If zero, the channel will fail to redirect and will generate a <code>NS_ERROR_REDIRECT_LOOP</code> failure status.</p> - - <div class="note"> - <p><strong>Note:</strong> An HTTP redirect results in a new channel being created. If the new channel supports <code>nsIHttpChannel</code>, then it will be assigned a value to its <code>redirectionLimit</code> attribute one less than the value of the redirected channel's <code>redirectionLimit</code> attribute. The initial value for this attribute may be a configurable preference (depending on the implementation).</p> - </div> - </td> - </tr> - <tr> - <td><code>referrer</code></td> - <td><code><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code></code></td> - <td> - <p>Get or set the URI of the HTTP <code>Referer:</code> header. This is the address (URI) of the resource from which this channel's URI was obtained (see RFC2616 section 14.36).</p> - - <p>This attribute may only be set before the channel is opened.</p> - - <div class="note"> - <p><strong>Note:</strong> The channel may silently refuse to set the Referer: header if the URI does not pass certain security checks (e.g., a "https://" URL will never be sent as the <code>referrer</code> for a plaintext HTTP request). The implementation is not required to throw an exception when the <code>referrer</code> URI is rejected.</p> - </div> - - <h4 id="Exceptions_thrown_2">Exceptions thrown</h4> - - <dl> - <dt><code>NS_ERROR_IN_PROGRESS</code></dt> - <dd>If set after the channel has been opened.</dd> - <dt><code>NS_ERROR_FAILURE</code> </dt> - <dd>If used for setting referrer during <a href="#visitRequestHeaders()"><code>visitRequestHeaders()</code></a>. Getting the value will not throw.</dd> - </dl> - </td> - </tr> - <tr> - <td><code>requestMethod</code></td> - <td><code>ACString</code></td> - <td> - <p>Set or get the HTTP request method (default is "GET"). Setter is case insensitive; getter returns an uppercase string.</p> - - <p>This attribute may only be set before the channel is opened.</p> - - <div class="note"> - <p><strong>Note:</strong> The data for a "POST" or "PUT" request can be configured via <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIUploadChannel" title="">nsIUploadChannel</a></code>. However, after setting the upload data, it may be necessary to set the request method explicitly. The documentation for <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIUploadChannel" title="">nsIUploadChannel</a></code> has further details.</p> - </div> - - <h4 id="Exceptions_thrown_3">Exceptions thrown</h4> - - <dl> - <dt><code>NS_ERROR_IN_PROGRESS</code></dt> - <dd>If set after the channel has been opened.</dd> - </dl> - </td> - </tr> - <tr> - <td><code>requestSucceeded</code></td> - <td><code>boolean</code></td> - <td> - <p>Returns <code>true</code> if the HTTP response code indicates success. The value of <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIRequest#status()">nsIRequest.status()</a></code> will be NS_OK even when processing a <code><a href="/en-US/docs/Web/HTTP/Response_codes#404">404 File Not Found</a></code> response because such a response may include a message body that (in some cases) should be shown to the user. Use this attribute to distinguish server error pages from normal pages, instead of comparing the response status manually against the set of valid response codes, if that is required by your application. <strong>Read only.</strong></p> - - <h4 id="Exceptions_thrown_4">Exceptions thrown</h4> - - <dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd> - </dl> - </td> - </tr> - <tr> - <td><code>responseStatus</code></td> - <td><code>unsigned long</code></td> - <td>Get the HTTP response code (For example 200). <strong>Read only.</strong> - <h4 id="Exceptions_thrown_5">Exceptions thrown</h4> - - <dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd> - </dl> - </td> - </tr> - <tr> - <td><code>responseStatusText</code></td> - <td><code>ACString</code></td> - <td> - <p>Get the HTTP response status text (For example "OK").</p> - - <div class="note"> - <p><strong>Note:</strong> This returns the raw (possibly 8-bit) text from the server. There are no assumptions made about the charset of the returned text. You have been warned!</p> - </div> - - <p><strong>Read only.</strong></p> - - <h4 id="Exceptions_thrown_6">Exceptions thrown</h4> - - <dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd> - </dl> - </td> - </tr> - <tr> - <td><code>referrerPolicy </code> <span class="inlineIndicator readOnly readOnlyInline" title="This value may not be changed.">読取専用 </span></td> - <td><code>unsigned long</code></td> - <td>The referrer policy in use for this channel, indicated by one of the constants listed above</td> - </tr> - </tbody> -</table> - -<h2 id="Methods">Methods</h2> - -<h3 id="sect1"></h3><h3 id="getOriginalResponseHeader">getOriginalResponseHeader()</h3> - -<p>Get the value of a particular original response header, that is, in the same form as it came from the network. I.e. empty headers will have an empty string as value and multiple headers will not be merged as opposed to <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#getResponseHeader()">getResponseHeader()</a></code>.</p> - -<pre class="syntaxbox">void getOriginalResponseHeader( - in ACString aHeader, - in nsIHttpHeaderVisitor aVisitor -);</pre> - -<h4 id="Parameters">Parameters</h4> - -<dl> - <dt><code>aHeader</code></dt> - <dd>The case-insensitive name of the response header to query (For example "Set-Cookie").</dd> -</dl> - -<dl> - <dt><code>aVisitor</code></dt> - <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpHeaderVisitor" title="">nsIHttpHeaderVisitor</a></code> instance allowing to visit all equally named response headers.</dd> -</dl> - -<h4 id="Exceptions_thrown_7">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>) or if no header with that name is set in the response.</dd> -</dl> - -<h3 id="getRequestHeader">getRequestHeader()</h3> - -<p>Get the value of a particular request header.</p> - -<pre class="syntaxbox">ACString getRequestHeader( - in ACString aHeader -); -</pre> - -<h4 id="Parameters_2">Parameters</h4> - -<dl> - <dt><code>aHeader</code></dt> - <dd>The case-insensitive name of the request header to query (For example "Cache-Control").</dd> -</dl> - -<h4 id="Return_value">Return value</h4> - -<p>The value of the request header.</p> - -<h4 id="Exceptions_thrown_8">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If the header is not set.</dd> -</dl> - -<h3 id="getResponseHeader">getResponseHeader()</h3> - -<p>Get the value of a particular response header.</p> - -<pre class="syntaxbox">ACString getResponseHeader( - in ACString header -); -</pre> - -<h4 id="Parameters_3">Parameters</h4> - -<dl> - <dt><code>header</code></dt> - <dd>The case-insensitive name of the response header to query (For example "Set-Cookie").</dd> -</dl> - -<h4 id="Return_value_2">Return value</h4> - -<p>The value of the response header.</p> - -<h4 id="Exceptions_thrown_9">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>) or if the header is not set in the response.</dd> -</dl> - -<h3 id="isNoCacheResponse">isNoCacheResponse()</h3> - -<p>Returns <code>true</code> if the server sent the equivalent of a "Cache-control: no-cache" response header. Equivalent response headers include: "Pragma: no-cache", "Expires: 0", and "Expires" with a date value in the past relative to the value of the "Date" header.</p> - -<pre class="syntaxbox">boolean isNoCacheResponse(); -</pre> - -<h4 id="Parameters_4">Parameters</h4> - -<p>None.</p> - -<h4 id="Return_value_3">Return value</h4> - -<p>Returns <code>true</code> if the server sent the equivalent of a "Cache-control: no-cache" response header, otherwise <code>false</code>.</p> - -<h4 id="Exceptions_thrown_10">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd> -</dl> - -<h3 id="isNoStoreResponse">isNoStoreResponse()</h3> - -<pre class="syntaxbox">boolean isNoStoreResponse(); -</pre> - -<h4 id="Parameters_5">Parameters</h4> - -<p>None.</p> - -<h4 id="Return_value_4">Return value</h4> - -<p><code>true</code> if the server sent a "Cache-Control: no-store" response header.</p> - -<h4 id="Exceptions_thrown_11">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd> -</dl> - -<h3 id="sect2"></h3><h3 id="redirectTo">redirectTo()</h3> - -<p>Instructs the channel to immediately redirect to a new destination. Can only be called on channels not yet opened.</p> - -<p>This method provides no explicit conflict resolution. The last caller to call it wins.</p> - -<pre class="syntaxbox">void redirectTo( - in nsIURI aNewURI -); -</pre> - -<h4 id="Parameters_6">Parameters</h4> - -<dl> - <dt><code>aNewURI</code></dt> - <dd>The new URI to which we should redirect.</dd> -</dl> - -<h4 id="Exceptions_thrown_12">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_ALREADY_OPENED</code></dt> - <dd>If called after the channel has been opened.</dd> -</dl> - -<h3 id="sect3"></h3><h3 id="setEmptyRequestHeader">setEmptyRequestHeader()</h3> - -<p>This method is called to set an empty value for a particular request header. This should be used with caution in the cases where the behavior of <a href="#setRequestHeader()"><code>setRequestHeader()</code></a> ignoring empty header values is undesirable. This method may only be called before the channel is opened.</p> - -<pre class="syntaxbox">void setEmptyRequestHeader( - in ACString aHeader -); -</pre> - -<h4 id="Parameters_7">Parameters</h4> - -<dl> - <dt><code>aHeader</code></dt> - <dd>The case-insensitive name of the request header to set (For example "Cookie").</dd> -</dl> - -<h4 id="Exceptions_thrown_13">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_IN_PROGRESS</code></dt> - <dd>If called after the channel has been opened.</dd> - <dt><code>NS_ERROR_FAILURE</code> </dt> - <dd>If called during <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#visitRequestHeaders()">visitRequestHeaders()</a></code>.</dd> -</dl> - -<h3 id="sect4"></h3><h3 id="setReferrerWithPolicy">setReferrerWithPolicy()</h3> - -<p>Call this method to set the channel's referrer using the referrer policy indicated with one of the predefined constants.</p> - -<pre class="syntaxbox">void setReferrerWithPolicy( - in nsIURI aReferrer, - in unsigned long aReferrerPolicy -);</pre> - -<h4 id="Parameters_8">Parameters</h4> - -<dl> - <dt><code>aReferrer</code></dt> - <dd>The URI to base the referrer on.</dd> - <dt><code>aReferrerPolicy</code></dt> - <dd>The referrer policy to use when determining the referrer to use.</dd> -</dl> - -<h4 id="Exceptions_thrown_14">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_FAILURE</code> </dt> - <dd>If called during <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#visitRequestHeaders()">visitRequestHeaders()</a></code>.</dd> -</dl> - -<h3 id="setRequestHeader">setRequestHeader()</h3> - -<p>This method is called to set the value of a particular request header. This method allows, for example, the cookies module to add "Cookie" headers to the outgoing HTTP request. This method may only be called before the channel is opened. If aValue is empty and aMerge is <code>false</code>, the header will be cleared.</p> - -<pre class="syntaxbox">void setRequestHeader( - in ACString aHeader, - in ACString aValue, - in boolean aMerge -); -</pre> - -<h4 id="Parameters_9">Parameters</h4> - -<dl> - <dt><code>aHeader</code></dt> - <dd>The case-insensitive name of the request header to query (For example "Cookie").</dd> - <dt><code>aValue</code></dt> - <dd>The request header value to set (For example "X=1").</dd> - <dt><code>aMerge</code></dt> - <dd>If <code>true</code>, the new header value will be merged with any existing values for the specified header. This flag is ignored if the specified header does not support merging (For example the "Content-Type" header can only have one value). The list of headers for which this flag is ignored is an implementation detail. If this flag is <code>false</code>, then the header value will be replaced with the contents of <code>aValue</code>.</dd> -</dl> - -<h4 id="Exceptions_thrown_15">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_IN_PROGRESS</code></dt> - <dd>If called after the channel has been opened.</dd> - <dt><code>NS_ERROR_FAILURE</code> </dt> - <dd>If called during <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#visitRequestHeaders()">visitRequestHeaders()</a></code>.</dd> -</dl> - -<h3 id="setResponseHeader">setResponseHeader()</h3> - -<p>Set the value of a particular response header. This method allows, for example, the HTML content sink to inform the HTTP channel about HTTP-EQUIV headers found in HTML <META> tags. If value is empty and merge is <code>false</code>, the header will be cleared.</p> - -<pre class="syntaxbox">void setResponseHeader( - in ACString header, - in ACString value, - in boolean merge -); -</pre> - -<h4 id="Parameters_10">Parameters</h4> - -<dl> - <dt><code>header</code></dt> - <dd>The case-insensitive name of the response header to set(For example "Cache-Cookie").</dd> - <dt><code>value</code></dt> - <dd>The response header value to set (For example "no-cache").</dd> - <dt><code>merge</code></dt> - <dd>If <code>true</code>, the new header value will be merged with any existing values for the specified header. This flag is ignored if the specified header does not support merging (For example the "Content-Type" header can only have one value). The list of headers for which this flag is ignored is an implementation detail. If this flag is false, then the header value will be replaced with the contents of <code>value</code>.</dd> -</dl> - -<h4 id="Exceptions_thrown_16">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd> - <dt><code>NS_ERROR_ILLEGAL_VALUE</code></dt> - <dd>If changing the value of this response header is not allowed.</dd> - <dt><code>NS_ERROR_FAILURE</code> </dt> - <dd>If called during <a href="#visitResponseHeaders()"><code>visitResponseHeaders()</code></a>, <a href="#visitOriginalResponseHeaders()"><code>visitOriginalResponseHeaders()</code></a> or <a href="#getOriginalResponseHeader()"><code>getOriginalResponseHeader()</code></a>.</dd> -</dl> - -<h3 id="sect5"></h3><h3 id="visitOriginalResponseHeaders">visitOriginalResponseHeaders()</h3> - -<p>Call this method to visit all original response headers, that is, in the same form as they came from the network. I.e. empty headers will be have an empty string as value and multiple headers will not be merged as opposed to <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#visitResponseHeaders()">visitResponseHeaders()</a></code>.</p> - -<div class="warning"> -<p><strong>Warning:</strong> Calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setResponseHeader()">setResponseHeader()</a></code> while visiting response headers will return a <code>NS_ERROR_FAILURE</code>.</p> -</div> - -<pre class="syntaxbox">void visitOriginalResponseHeaders( - in nsIHttpHeaderVisitor aVisitor -); -</pre> - -<h4 id="Parameters_11">Parameters</h4> - -<dl> - <dt><code>aVisitor</code></dt> - <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpHeaderVisitor" title="">nsIHttpHeaderVisitor</a></code> instance allowing to visit all original response headers.</dd> -</dl> - -<h3 id="visitRequestHeaders">visitRequestHeaders()</h3> - -<p>Call this method to visit all request headers.</p> - -<div class="warning"> -<p><strong>Warning:</strong> Calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setRequestHeader()">setRequestHeader()</a></code>, <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setReferrerWithPolicy()">setReferrerWithPolicy()</a></code> or <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setEmptyRequestHeader()">setEmptyRequestHeader()</a></code> while visiting request headers has undefined behavior until Gecko 47 (Firefox 47.0 / Thunderbird 47.0 / SeaMonkey 2.44). Starting from Gecko 48 (Firefox 48.0 / Thunderbird 48.0 / SeaMonkey 2.45) they will return a <code>NS_ERROR_FAILURE</code>.</p> -</div> - -<pre class="syntaxbox">void visitRequestHeaders( - in nsIHttpHeaderVisitor aVisitor -); -</pre> - -<h4 id="Parameters_12">Parameters</h4> - -<dl> - <dt><code>aVisitor</code></dt> - <dd>The header visitor instance.</dd> -</dl> - -<h3 id="visitResponseHeaders">visitResponseHeaders()</h3> - -<p>Call this method to visit all response headers.</p> - -<div class="warning"> -<p><strong>Warning:</strong> Calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setResponseHeader()">setResponseHeader()</a></code> while visiting response headers has undefined behavior until Gecko 48 (Firefox 48.0 / Thunderbird 48.0 / SeaMonkey 2.45). Starting from Gecko 49 (Firefox 49.0 / Thunderbird 49.0 / SeaMonkey 2.46) it will return a <code>NS_ERROR_FAILURE</code>.</p> -</div> - -<pre class="syntaxbox">void visitResponseHeaders( - in nsIHttpHeaderVisitor aVisitor -); -</pre> - -<h4 id="Parameters_13">Parameters</h4> - -<dl> - <dt><code>aVisitor</code></dt> - <dd>The header visitor instance.</dd> -</dl> - -<h4 id="Exceptions_thrown_17">Exceptions thrown</h4> - -<dl> - <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt> - <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd> -</dl> - -<div class="note"> -<p><strong>Note:</strong> Starting from Firefox 49, empty headers will be returned in case the preference <code>network.http.keep_empty_response_headers_as_empty_string</code> is set to <code>true</code>. Since Firefox 50 the preference defaults to <code>true</code>.</p> -</div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiidleservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiidleservice/index.html deleted file mode 100644 index 5118321489..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiidleservice/index.html +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: nsIIdleService -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIIdleService -tags: - - Interfaces - - MDC Project - - NeedsContent - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIIdleService ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a> </p> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/public/nsIIdleService.idl" rel="custom">widget/public/nsIIdleService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9a </span></div> -</div> -<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2> -<p>アイドルサービスは、ユーザがどのくらいの時間「アイドル状態」であるか、つまり、マウスやキーボードなどを使っていない時間を監視できるようにするサービスです。アイドル時間を直接取得することも可能ですが、所定の間隔でオブザーバを登録する使い方が一般的でしょう。</p> -<p>現在のところ、<code>nsIIdleService</code> の実装は、Windows、Mac OS X、Linux (XScreenSaver を通じて) に対応しています。</p> -<p>実装は <code>@mozilla.org/widget/idleservice;1</code> で行われています。インスタンスを作成するには、以下のように記述します。</p> -<pre class="eval">var idleService = Components.classes["@mozilla.org/widget/idleservice;1"] - .getService(Components.interfaces.nsIIdleService) -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#addIdleObserver.28.29">addIdleObserver</a>(in <a href="ja/NsIObserver">nsIObserver</a> observer, in unsigned long time)</code></td> - </tr> - <tr> - <td><code>void <a href="#removeIdleObserver.28.29">removeIdleObserver</a>(in <a href="ja/NsIObserver">nsIObserver</a> observer, in unsigned long time)</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>idleTime</code></td> - <td><code>long</code></td> - <td>ユーザが最後に操作を行ってから経過したミリ秒単位での時間。 - <i> - 読み取り専用</i> - </td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="addIdleObserver.28.29" name="addIdleObserver.28.29">addIdleObserver()</h3> -<p>ユーザの操作が一定時間アイドル状態になった場合や、アイドル状態から復帰した際に通知を受けるオブザーバを追加します。</p> -<pre class="eval">void addIdleObserver( - in nsIObserver observer, - in unsigned long time -) -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6> -<dl> - <dt> - <tt>observer</tt></dt> - <dd> - 通知を受ける <a href="ja/NsIObserver">オブザーバ</a></dd> -</dl> -<dl> - <dt> - <tt>time</tt></dt> - <dd> - オブザーバに通知が行われるまでのユーザのアイドル時間 (秒)</dd> -</dl> -<h6 id=".E5.82.99.E8.80.83" name=".E5.82.99.E8.80.83">備考</h6> -<ul> - <li>オブザーバが受け取る通知のサブジェクトは、常に <code>nsIIdleService</code> そのものです。ユーザがアイドル状態になった時、オブザーバのトピックは「idle」となり、復帰時には「back」となります。通知のデータパラメータには現在のユーザのアイドル時間が含まれます。</li> -</ul> -<ul> - <li>同じオブザーバを 2 回追加することができます。</li> -</ul> -<ul> - <li>大半の実装は、アイドル情報を取得するために OS に問い合わせを行う必要があります。これは、その実装の問い合わせ間隔によって、通知に遅延が生じる可能性があるということです。この間隔は、現在の実装では 5 秒となっています。</li> -</ul> -<h3 id="removeIdleObserver.28.29" name="removeIdleObserver.28.29">removeIdleObserver()</h3> -<p>addIdleObserver で登録されたオブザーバを削除します。</p> -<pre class="eval">void removeIdleObserver( - in nsIObserver observer, - in unsigned long time -) -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2">パラメータ</h6> -<dl> - <dt> - <tt>observer</tt></dt> - <dd> - 削除する <a href="ja/NsIObserver">オブザーバ</a></dd> -</dl> -<dl> - <dt> - <tt>time</tt></dt> - <dd> - オブザーバに通知が行われるまでのユーザのアイドル時間 (秒)</dd> -</dl> -<h6 id=".E5.82.99.E8.80.83_2" name=".E5.82.99.E8.80.83_2">備考</h6> -<p>オブザーバの削除は、指定したアイドル時間のオブザーバについて 1 回だけ行われます。オブザーバを複数追加した場合は、個別に削除する必要があります。</p> -<h2 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89">サンプルコード</h2> -<p>例 1:</p> -<pre class="eval">var idleService = Components.classes["@mozilla.org/widget/idleservice;1"] - .getService(Components.interfaces.nsIIdleService) -setTimeout(function() { alert(idleService.idleTime) }, 1000) -// このコードを追加した後、マウスやキーボードを操作しないと、 -// 1000 前後の数字が警告ダイアログで表示されます。 -</pre> -<p>例 2:</p> -<pre class="eval">var idleService = Components.classes["@mozilla.org/widget/idleservice;1"] - .getService(Components.interfaces.nsIIdleService) -var idleObserver = { - observe: function(subject, topic, data) { - alert("topic: " + topic + "\ndata: " + data); - } -}; -idleService.addIdleObserver(idleObserver, 60); // 1 分 -// ... -// removeIdleObserver を使ってオブザーバを削除するのを忘れずに! -idleService.removeIdleObserver(idleObserver, 60); -</pre> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiinputstream/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiinputstream/index.html deleted file mode 100644 index 46174421ec..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiinputstream/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: nsIInputStream -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIInputStream -tags: - - Interfaces - - 'Interfaces:Frozen' - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> -<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3> -<p><code>nsIInputStream</code> インターフェースは、読み込み可能なデータソースを表します。</p> -<pre> #include "nsIInputStream.h" - - [scriptable, uuid=(fa9c7f6c-61b3-11d4-9877-00c04fa0cf4a)] - interface nsIInputStream : nsISupports { ... }; -</pre> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/io/nsIInputStream.idl" rel="custom">xpcom/io/nsIInputStream.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.0 </span></div> -</div> -<h3 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3> -<dl> - <dt> - <code><a href="ja/NsIInputStream/close">close</a></code></dt> - <dd> - このメソッドは、入力ストリームを閉じます。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIInputStream/available">available</a></code></dt> - <dd> - このメソッドは、現在ストリームから読み込み可能なバイトサイズを返します。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIInputStream/read">read</a></code></dt> - <dd> - このメソッドは、データをストリームからバッファにコピーします。scriptable ではありません。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIInputStream/readSegments">readSegments</a></code></dt> - <dd> - このメソッドは、ストリームの内部バッファへのダイレクトアクセスを提供します。scriptable ではありません。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIInputStream/isNonBlocking">isNonBlocking</a></code></dt> - <dd> - このメソッドは、ストリームが非ブロッキングならtrueを返します。</dd> -</dl> -<h3 id=".E5.B1.A5.E6.AD.B4" name=".E5.B1.A5.E6.AD.B4">履歴</h3> -<p>このインターフェースは Mozilla 1.0で凍結されました。詳細は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=124465" title="FIXED: [meta] freeze specific necko APIs for mozilla 1.0">バグ 124465</a> を見てください。</p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiioservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiioservice/index.html deleted file mode 100644 index ef8ffd9671..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiioservice/index.html +++ /dev/null @@ -1,456 +0,0 @@ ---- -title: nsIIOService -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIIOService -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIIOService ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/base/public/nsIIOService.idl" rel="custom">netwerk/base/public/nsIIOService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -This interface provides a set of URL parsing utility functions. These are provided as a convenience to the programmer and in some cases to improve performance by eliminating intermediate data structures and interfaces. -</span> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 1.2 </span></div> -</div> - -<p>This interface duplicates many of the <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProtocolHandler" title="">nsIProtocolHandler</a></code> methods in a protocol handler independent way (For example <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newURI()">newURI()</a></code> inspects the scheme in order to delegate creation of the new URI to the appropriate protocol handler).</p> - -<div class="blockIndicator note"><strong>註:</strong> <code>nsIIOService</code> may only be used from the main thread.</div> - -<p>Implemented by <code>@mozilla.org/network/io-service;1</code> as a service:</p> - -<pre class="eval">var iOService = Components.classes["@mozilla.org/network/io-service;1"] - .getService(Components.interfaces.nsIIOService); -</pre> - -<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>boolean <a href="#allowPort()">allowPort</a>(in long aPort, in string aScheme);</code></td> - </tr> - <tr> - <td><code>ACString <a href="#extractScheme()">extractScheme</a>(in AUTF8String urlString);</code></td> - </tr> - <tr> - <td><code>unsigned long <a href="#getProtocolFlags()">getProtocolFlags</a>(in string aScheme);</code></td> - </tr> - <tr> - <td><code>nsIProtocolHandler <a href="#getProtocolHandler()">getProtocolHandler</a>(in string aScheme);</code></td> - </tr> - <tr> - <td><code>nsIChannel <a href="#newChannel()">newChannel</a>(in AUTF8String aSpec, in string aOriginCharset, in nsIURI aBaseURI); </code><span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 48 / Thunderbird 48 / SeaMonkey 2.45)">Gecko 48 で廃止</span></td> - </tr> - <tr> - <td><code>nsIChannel <a href="#newChannel2()">newChannel2</a>(in AUTF8String aSpec, in string aOriginCharset, in nsIURI aBaseURI, in nsIDOMNode aLoadingNode, in nsIPrincipal aLoadingPrincipal, in nsIPrincipal aTriggeringPrincipal, in uint32_t aSecurityFlags, in uint32_t aContentPolicyType);</code></td> - </tr> - <tr> - <td><code>nsIChannel <a href="#newChannelFromURI()">newChannelFromURI</a>(in nsIURI aURI); </code> <span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 48 / Thunderbird 48 / SeaMonkey 2.45)">Gecko 48 で廃止</span></td> - </tr> - <tr> - <td><code>nsIChannel <a href="#newChannelFromURI2()">newChannelFromURI2</a>(in nsIURI aURI, in nsIDOMNode aLoadingNode, in nsIPrincipal aLoadingPrincipal, in nsIPrincipal aTriggeringPrincipal, in unsigned long aSecurityFlags, in unsigned long aContentPolicyType);</code></td> - </tr> - <tr> - <td><code>nsIChannel <a href="#newChannelFromURIWithLoadInfo()">newChannelFromURIWithLoadInfo</a>(in nsIURI aURI, in nsILoadInfo aLoadInfo);</code></td> - </tr> - <tr> - <td><code>nsIChannel <a href="#newChannelFromURIWithProxyFlags2()">newChannelFromURIWithProxyFlags2</a>(in nsIURI aURI, in nsIURI aProxyURI, in uint32_t aProxyFlags,in nsIDOMNode aLoadingNode, in nsIPrincipal aLoadingPrincipal, in nsIPrincipal aTriggeringPrincipal, in uint32_t aSecurityFlags, in uint32_t aContentPolicyType); </code></td> - </tr> - <tr> - <td><code>nsIURI <a href="#newFileURI()">newFileURI</a>(in nsIFile aFile);</code></td> - </tr> - <tr> - <td><code>nsIURI <a href="#newURI()">newURI</a>(in AUTF8String aSpec, in string aOriginCharset, in nsIURI aBaseURI);</code></td> - </tr> - </tbody> -</table> - -<h2 id="Attributes" name="Attributes">属性</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Attribute</td> - <td class="header">Type</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>offline</code></td> - <td><code><a href="/en/boolean" title="en/boolean">boolean</a></code></td> - <td>Returns <code>true</code> if networking is in "<code>offline</code>" mode. When in <code>offline</code> mode, attempts to access the network will fail (although this does not necessarily correlate with whether there is actually a network available -- that's hard to detect without causing the dialer to come up). Observers will be notified of changes to this attribute.</td> - </tr> - </tbody> -</table> - -<h2 id="Methods" name="Methods">メソッド</h2> - -<h3 id="allowPort" name="allowPort()">allowPort()</h3> - -<p>Checks if a port number is banned. This involves consulting a list of unsafe ports, corresponding to network services that may be easily exploitable. If the given port is considered unsafe, then the protocol handler (corresponding to aScheme) will be asked whether it wishes to override the IO service's decision to block the port. This gives the protocol handler ultimate control over its own security policy while ensuring reasonable, default protection.</p> - -<p>Is similar to <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIProtocolHandler#allowPort()">nsIProtocolHandler.allowPort()</a></code>.</p> - -<pre class="eval">boolean allowPort( - in long aPort, - in string aScheme -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aPort</code></dt> - <dd>The port to check</dd> - <dt><code>aScheme</code></dt> - <dd>The scheme for the protocol handler that could override the IOService's decision.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p><code>true</code> if the port is allowed, <code>false</code> otherwise.</p> - -<h3 id="extractScheme" name="extractScheme()">extractScheme()</h3> - -<p>Utility to extract the scheme from a URL string, consistently and according to spec (see <a class="external" href="http://tools.ietf.org/html/rfc3986" title="http://tools.ietf.org/html/rfc3986">RFC 3986</a>).</p> - -<div class="blockIndicator note"><strong>註:</strong> Most URL parsing is done via <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>, and in fact the scheme can also be extracted from a URL string via <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>. This method is provided purely as an optimization. </div> - -<pre class="eval">ACString extractScheme( - in AUTF8String urlString -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>urlString</code></dt> - <dd>The string for the URL to extract the scheme from.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>A string corresponding to the scheme.</p> - -<h6 id="Exceptions_thrown" name="Exceptions_thrown">Exceptions thrown</h6> - -<dl> - <dt><code>NS_ERROR_MALFORMED_URI</code></dt> - <dd>If URL string is not of the right form.</dd> -</dl> - -<h3 id="getProtocolFlags" name="getProtocolFlags()">getProtocolFlags()</h3> - -<p>Returns the protocol flags for a given scheme.</p> - -<pre class="eval">unsigned long getProtocolFlags( - in string aScheme -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aScheme</code></dt> - <dd>The scheme for which to get the protocol flags.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>The value of the <code>protocolFlags</code> attribute for the corresponding <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProtocolHandler" title="">nsIProtocolHandler</a></code>.</p> - -<h3 id="getProtocolHandler" name="getProtocolHandler()">getProtocolHandler()</h3> - -<p>Returns a protocol handler for a given URI scheme.</p> - -<pre class="eval">nsIProtocolHandler getProtocolHandler( - in string aScheme -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aScheme</code></dt> - <dd>The URI scheme for which to get a protocol handler.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProtocolHandler" title="">nsIProtocolHandler</a></code> for the scheme.</p> - -<h3 id="newChannel" name="newChannel()">newChannel()</h3> - -<p><span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 48 / Thunderbird 48 / SeaMonkey 2.45)">Gecko 48 で廃止</span><br> - <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newURI()">newURI()</a></code> や <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newChannelFromURI()">newChannelFromURI()</a></code> の重複した呼び出しを避けるショートカットメソッドです。</p> - -<pre class="eval">nsIChannel newChannel( - in AUTF8String aSpec, - in string aOriginCharset, - in nsIURI aBaseURI -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aSpec</code></dt> - <dd>希望するuriのためのスペックです。</dd> - <dt><code>aOriginCharset</code></dt> - <dd>uriのためのキャラクタセットです。たぶんnullになるでしょう。</dd> - <dt><code>aBaseURI</code></dt> - <dd>スペックのためベースURLです。たぶんnullになるでしょう。もしaSpecが相対パスだった時このパラメーターは無視されます。</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>Returns an <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> based on <code>aSpec</code> and <code>aBaseURI</code>.</p> - -<h3 id="newChannel2" name="newChannel2()">newChannel2()</h3> - -<p><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newURI()">newURI()</a></code> や <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newChannelFromURI()">newChannelFromURI()</a></code>の再呼び出しを避けるためのショートカットメソッドです。</p> - -<pre class="eval">nsIChannel newChannel2( - <code>in AUTF8String aSpec, - in string aOriginCharset, - in nsIURI aBaseURI, - in nsIDOMNode aLoadingNode, - in nsIPrincipal aLoadingPrincipal, - in nsIPrincipal aTriggeringPrincipal, - in uint32_t aSecurityFlags, - in uint32_t aContentPolicyType, -</code> -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aSpec</code></dt> - <dd> - <p>希望するuriのためのスペックです。</p> - </dd> - <dt><code>aOriginCharset</code></dt> - <dd>uriのためのキャラクタセットです。たぶんnullになるでしょう。</dd> - <dt><code>aBaseURI</code></dt> - <dd>スペックのためベースURLです。たぶんnullになるでしょう。もしaSpecが相対パスだった時このパラメーターは無視されます。</dd> - <dt><code>aLoadingNode</code></dt> - <dd><code>チャンネルのloadingDocumentです。この要素やドキュメントがリクエストの結果として使われるでしょう。これはこのリクエストへの結果としてアクセスされる要素やドキュメントです。例として画像をロードする場合、これはイメージがロードされるドキュメントになります。そしてCSSの場合、</code> <code>レンダリングがこのスタイルシートに影響を与えられる</code>ド<code>キュメントになります。もし可能なら、ロードが実行される要素を渡します。</code>しかしもしロードが XMLHttpRequestなどのJS API やforなどで複数の要素に渡って合体される場合は代わりにDocumentノードに渡します。ロードがアドオンや内部のブラウザ機能から来るようにロードがどんなドキュメントにも関連していない場合、nullを使います。</dd> - <dt><code>aLoadingPrincipal</code></dt> - <dd>チャンネルにロードするもののPrincipalです。 リクエストの結果としてこのドキュメントのprincipalが使用されます。 この値のデフォルトは aLoadingNode のprincipalです。そのため、もし aLoadingNode が渡された場合は、nullとして残すことができます。 しかし、aLoadingNode が null としてロードされている場合は、値を渡す必要があります。 例としてWebWorkerからロードする場合を考えてみます。この場合はworkerのprincipalを渡します。アドオンやブラウザ内部からロードする場合は、 system principalを渡します。This principal should almost always be the system principal if aLoadingNode is null. The only exception to this is for loads from WebWorkers since they don't have any nodes to be passed as aLoadingNode. Please note, aLoadingPrincipal is *not* the principal of the resource being loaded. But rather the principal of the context where the resource will be used.</dd> - <dt><code>aTriggeringPrincipal</code></dt> - <dd>The triggeringPrincipal of the load. The triggeringPrincipal is the principal of the resource that caused this particular URL to be loaded. Most likely the triggeringPrincipal and the loadingPrincipal are identical, in which case the triggeringPrincipal can be left out. In some cases the loadingPrincipal and the triggeringPrincipal are different however, e.g. a stylesheet may import a subresource. In that case the principal of the stylesheet which contains the import command is the triggeringPrincipal, and the principal of the document whose rendering is affected is the loadingPrincipal.</dd> - <dt><code>aSecurityFlags</code></dt> - <dd>このchannelのsecurityFlagsです。すべてのsecurityFlagsはnsILoadInfoで定義されています。</dd> - <dt><code>aContentPolicyType</code></dt> - <dd>このchannelのcontentPolicyTypeです。すべてのcontentPolicytypeはnsIContentPolicyで定義されています。</dd> - <dt><span style="color: darkgreen; background: #ef9;">【訳注: アドオン開発者が暫定的に使う場合はTYPE_OTHERを使う。firefox開発者はTYPE_OTHERを使うのは避けるべきです】</span></dt> - <dt><span style="color: darkgreen; background: #ef9;">【訳注: nsIContentPolicyがincludeしている nsIContentPolicyBase.idl に書いてあるっぽいです】</span></dt> -</dl> - -<h6 id="Return_value" name="Return_value"> </h6> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>aSpecやaBaseURIに基づいた <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> を返します<code>。</code></p> - -<h3 id="newChannelFromURI" name="newChannelFromURI()">newChannelFromURI()</h3> - -<p><span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 48 / Thunderbird 48 / SeaMonkey 2.45)">Gecko 48 で廃止</span></p> - -<p>与えられたURIのチャンネルを作成します</p> - -<pre class="eval">nsIChannel newChannelFromURI( - in nsIURI aURI -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aURI</code></dt> - <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> from which to make a channel.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> for the uri.</p> - -<h3 id="newChannelFromURI2" name="newChannelFromURI2()">newChannelFromURI2()</h3> - -<p>Creates a channel for a given URI.</p> - -<pre>nsIChannel newChannelFromURI2( - in nsIURI aURI, - in nsIDOMNode aLoadingNode, - in nsIPrincipal aLoadingPrincipal, - in nsIPrincipal aTriggeringPrincipal, - in unsigned long aSecurityFlags, - in unsigned long aContentPolicyType -);</pre> - -<p>Please note, if you provide both a loadingNode and a loadingPrincipal, then loadingPrincipal must be equal to loadingNode->NodePrincipal(). But less error prone is to just supply a loadingNode.</p> - -<p>Keep in mind that URIs coming from a webpage should <em>never</em> use the systemPrincipal as the loadingPrincipal.</p> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aURI</code></dt> - <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> from which to make a channel.</dd> - <dt>aLoadingNode</dt> - <dd>The loadingDocument of the channel.<br> - The element or document where the result of this request will be used. This is the document/element that will get access to the result of this request. For example for an image load, it's the document in which the image will be loaded. And for a CSS stylesheet it's the document whose rendering will be affected by the stylesheet. If possible, pass in the element which is performing the load. But if the load is coming from a JS API (such as XMLHttpRequest) or if the load might be coalesced across multiple elements (such as for <img>) then pass in the Document node instead.<br> - <br> - For loads that are not related to any document, such as loads coming from addons or internal browser features, use null here.</dd> - <dt>aLoadingPrincipal </dt> - <dd>The loadingPrincipal of the channel.<br> - <br> - The principal of the document where the result of this request will be used.<br> - <br> - This defaults to the principal of aLoadingNode, so when aLoadingNode is passed this can be left as null. However for loads where aLoadingNode is null this argument must be passed. For example for loads from a WebWorker, pass the principal of that worker. For loads from an addon or from internal browser features, pass the system principal. This principal should almost always be the system principal if aLoadingNode is null. The only exception to this is for loads from WebWorkers since they don't have any nodes to be passed as aLoadingNode. Please note, aLoadingPrincipal is *not* the principal of the resource being loaded. But rather the principal of the context here the resource will be used.</dd> - <dt>aTriggeringPrincipal </dt> - <dd>The triggeringPrincipal of the load.<br> - <br> - The triggeringPrincipal is the principal of the resource that caused this particular URL to be loaded. Most likely the triggeringPrincipal and the loadingPrincipal are identical, in which case the triggeringPrincipal can be left out. In some cases the loadingPrincipal and the triggeringPrincipal are different however, e.g. a stylesheet may import a subresource. In that case the principal of the stylesheet which contains the import command is the triggeringPrincipal, and the principal of the document whose rendering is affected is the loadingPrincipal.</dd> - <dt>aSecurityFlags </dt> - <dd>The securityFlags of the channel. Any of the securityflags defined in nsILoadInfo.idl</dd> - <dt>aContentPolicyType </dt> - <dd>The contentPolicyType of the channel. Any of the content types defined in nsIContentPolicy.idl </dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> for the uri.</p> - -<h3 id="newChannelFromURIWithLoadInfo" name="newChannelFromURIWithLoadInfo()">newChannelFromURIWithLoadInfo()</h3> - -<p>Creates a channel for a given URI. Equivalent to <code>newChannelFromURI2(aURI, aLoadingNode, ...)</code></p> - -<pre>nsIChannel newChannelFromURIWithLoadInfo( - in nsIURI aURI, - in nsILoadInfo aLoadInfo -);</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aURI</code></dt> - <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> from which to make a channel.</dd> - <dt>aLoadInfo</dt> - <dd>A load info object.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> for the uri.</p> - -<h3 id="newChannelFromURIWithProxyFlags2" name="newChannelFromURIWithProxyFlags2()">newChannelFromURIWithProxyFlags2()</h3> - -<p><br> - Creates a channel for a given URI. Equivalent to <code>newChannelFromURI2(aURI, aLoadingNode, ...)</code></p> - -<pre>nsIChannel newChannelFromURIWithProxyFlags2( - in nsIURI aURI, - in nsIURI aProxyURI, - in uint32_t aProxyFlags, - in nsIDOMNode aLoadingNode, - in nsIPrincipal aLoadingPrincipal, - in nsIPrincipal aTriggeringPrincipal, - in uint32_t aSecurityFlags, - in uint32_t aContentPolicyType -);</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aURI</code></dt> - <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> from which to make a channel.</dd> - <dt>aProxyURI</dt> - <dd>nsIURI to use for proxy resolution. Can be null in which case aURI is used.</dd> - <dt>aPorxyFlags</dt> - <dd>Flags from nsIProtocolProxyService to use when resolving proxies for this new channel.</dd> - <dt>aLoadingNode</dt> - <dd>The loadingDocument of the channel. The element or document where the result of this request will be used. This is the document/element that will get access to the result of this request. For example for an image load, it's the document in which the image will be loaded. And for a CSS stylesheet it's the document whose rendering will be affected by the stylesheet. If possible, pass in the element which is performing the load. But if the load is coming from a JS API (such as XMLHttpRequest) or if the load might be coalesced across multiple elements (such as for ) then pass in the Document node instead. For loads that are not related to any document, such as loads coming from addons or internal browser features, use null here.</dd> - <dt>aLoadingPrincipal</dt> - <dd>The loadingPrincipal of the channel. The principal of the document where the result of this request will be used. This defaults to the principal of aLoadingNode, so when aLoadingNode is passed this can be left as null. However for loads where aLoadingNode is null this argument must be passed. For example for loads from a WebWorker, pass the principal of that worker. For loads from an addon or from internal browser features, pass the system principal. This principal should almost always be the system principal if aLoadingNode is null. The only exception to this is for loads from WebWorkers since they don't have any nodes to be passed as aLoadingNode. Please note, aLoadingPrincipal is *not* the principal of the resource being loaded. But rather the principal of the context where the resource will be used.</dd> - <dt>aTriggeringPrincipal</dt> - <dd>The triggeringPrincipal of the load. The triggeringPrincipal is the principal of the resource that caused this particular URL to be loaded. Most likely the triggeringPrincipal and the loadingPrincipal are identical, in which case the triggeringPrincipal can be left out. In some cases the loadingPrincipal and the triggeringPrincipal are different however, e.g. a stylesheet may import a subresource. In that case the principal of the stylesheet which contains the import command is the triggeringPrincipal, and the principal of the document whose rendering is affected is the loadingPrincipal.</dd> - <dt>aSecurityFlags</dt> - <dd>The securityFlags of the channel. Any of the securityflags defined in nsILoadInfo.</dd> - <dt>aContentPolicyType</dt> - <dd>The contentPolicyType of the channel. Any of the content types defined in nsIContentPolicy.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> for the uri.</p> - -<h3 id="newFileURI" name="newFileURI()">newFileURI()</h3> - -<p>This method constructs a new URI from a <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code>.</p> - -<pre class="eval">nsIURI newFileURI( - in nsIFile aFile -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aFile</code></dt> - <dd>The <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code> whose URI is desired.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> corresponding to the file.</p> - -<h3 id="newURI" name="newURI()">newURI()</h3> - -<p>This method constructs a new URI by determining the scheme of the URI spec, and then delegating the construction of the URI to the protocol handler for that scheme. QueryInterface can be used on the resulting URI object to obtain a more specific type of URI.</p> - -<pre class="eval">nsIURI newURI( - in AUTF8String aSpec, - in string aOriginCharset, - in nsIURI aBaseURI -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aSpec</code></dt> - <dd>The spec for the desired uri.</dd> - <dt><code>aOriginCharset</code></dt> - <dd>The charset for the uri. May be null.</dd> - <dt><code>aBaseURI</code></dt> - <dd>The base URI for the spec. May be null. If <code>aSpec</code> is an absolute URL, this parameter is ignored.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> object corresponding to <code>aSpec</code> and <code>aBaseURI</code>.</p> - -<h6 id="Exceptions_thrown" name="Exceptions_thrown">Exceptions thrown</h6> - -<dl> - <dt><code>NS_ERROR_MALFORMED_URI</code></dt> - <dd>If URI does not begin with a valid scheme (as defined by <a href="https://tools.ietf.org/html/rfc3986">RFC 3986</a>) followed by a colon.</dd> -</dl> - -<h2 id="Remarks" name="Remarks">備考</h2> - -<div class="blockIndicator note"><strong>註:</strong> The proper way to create a new <code>nsIURI</code> is with <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newURI()">newURI()</a></code> method defined above. Do NOT create a new <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> with <code>createInstance()</code>. </div> - -<p>This was a frozen interface see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=157131" title="FIXED: [meta] nsIIOService need to be frozen">バグ 157131</a> for details. From <span title="(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)">Gecko 2.0</span> interfaces are no longer frozen.</p> - -<h2 id="See_also" name="See_also">関連項目</h2> - -<ul> - <li><a class="external" href="http://tools.ietf.org/html/rfc3986" title="http://tools.ietf.org/html/rfc3986">RFC 3986</a></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijscid/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijscid/index.html deleted file mode 100644 index 0b472eba03..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijscid/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: nsIJSCID -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIJSCID -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIJSCID ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> -<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2> -<p>コンポーネントのインスタンス化とサービスコンポーネントの利用を可能にするための機能を、<code>nsIJSCID</code>インターフェイスは提供します。</p> -<pre class="eval">[scriptable, uuid(e3a24a60-d651-11d2-9843-006008962422)] -interface nsIJSCID : <a href="ja/NsIJSID">nsIJSID</a> { ... }; -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="createInstance" name="createInstance"><code>createInstance</code></h3> -<pre class="eval">nsISupports createInstance(); -</pre> -<h3 id="getService" name="getService"><code>getService</code></h3> -<pre class="eval">nsISupports getService(); -</pre> -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> -<p><code>createInstance()</code>メソッドと<code>getService()</code>メソッドの使い方は、<code><a href="ja/Components.classes">Components.classes</a></code>を参照してください。</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijson/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijson/index.html deleted file mode 100644 index 2e8d1beca3..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijson/index.html +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: nsIJSON -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIJSON -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIJSON ---- -<p> </p><div class="blockIndicator draft"> - <p><strong>草案</strong><br> - このページは完成していません。</p> - -</div> <code>nsIJSON</code> インタフェースは、JavaScript コードから <a href="ja/JSON">JSON</a> 文字列をエンコード、デコードする便利な方法を提供します。 -<div class="note"> - <b>注:</b> このインタフェースは JavaScript コードからのみ利用されます。</div> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/public/idl/json/nsIJSON.idl" rel="custom">dom/public/idl/json/nsIJSON.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>実装: <code>@mozilla.org/dom/json;1</code> インスタンスを作成するには、以下のように記述します。</p> -<pre class="eval">var nativeJSON = Components.classes["@mozilla.org/dom/json;1"] - .createInstance(Components.interfaces.nsIJSON); -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<div class="blockIndicator note"><strong>註:</strong> IDL ファイルには、コメントアウトされた IDL が一部含まれています。これは、その部分が IDL で適切に記述できないことを表現しているのが原因です。ただし、この記事の目的に照らし合わせて、実在するかのように説明し、この問題を意図的に無視しています。</div> -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="ja/JSObject">JSObject</a> <a href="#decode.28.29">decode</a>(in <a href="ja/AString">AString</a> str, [optional] in JSObject whitelist);</code></td> - </tr> - <tr> - <td><code>JSObject <a href="#decodeFromStream.28.29">decodeFromStream</a>(in <a href="ja/NsIInputStream">nsIInputStream</a> stream, in long contentLength, [optional] in JSObject optFilter);</code></td> - </tr> - <tr> - <td><code><a href="ja/AString">AString</a> <a href="#encode.28.29">encode</a>(in <a href="ja/JSObject">JSObject</a> value, [optional] in JSObject whitelist);</code></td> - </tr> - <tr> - <td><code>void <a href="#encodeToStream.28.29">encodeToStream</a>(in <a href="ja/NsIOutputStream">nsIOutputStream</a> stream, in string charset, in boolean writeBOM, in JSObject value, [optional] in JSObject optFilter);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="decode.28.29" name="decode.28.29">decode()</h3> -<p>JSON 文字列をデコードします。JavaScript オブジェクトが存在する場合はそのオブジェクトを返します。</p> -<pre class="eval"> JSObject decode( - in AString str, - [optional] in JSObject whitelist - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>str</tt></dt> - <dd> - デコードする JSON 文字列。</dd> - <dt> - <tt>whitelist</tt></dt> - <dd> - ?</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>JSON 文字列から再構築された、元の JavaScript オブジェクト。</p> -<h3 id="decodeFromStream.28.29" name="decodeFromStream.28.29">decodeFromStream()</h3> -<p>入力ストリームから読み出した JSON 文字列をデコードします。JavaScript オブジェクトが存在する場合はそのオブジェクトを返します。</p> -<pre class="eval"> JSObject decodeFromStream( - in nsIInputStream stream, - in long contentLength, - [optional] in JSObject optFilter - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>stream</tt></dt> - <dd> - JSON 文字列を読み出す <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code>。</dd> - <dt> - <tt>contentLength</tt></dt> - <dd> - 読み出す JSON 文字列の長さ。</dd> - <dt> - <tt>optFilter</tt></dt> - <dd> - ?</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>JSON 文字列から再構築された、元の JavaScript オブジェクトを表す <code><a href="ja/JSObject">JSObject</a></code>。</p> -<h3 id="encode.28.29" name="encode.28.29">encode()</h3> -<p>JavaScript オブジェクトを JSON 文字列へエンコードします。</p> -<pre class="eval"> AString encode( - in JSObject value, - [optional] in JSObject whitelist - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <tt>value</tt></dt> - <dd> - エンコードする JavaScript オブジェクト。</dd> - <dt> - <tt>whitelist</tt></dt> - <dd> - ?</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6> -<p>オブジェクトを表す JSON 文字列。</p> -<h3 id="encodeToStream.28.29" name="encodeToStream.28.29">encodeToStream()</h3> -<p>JavaScript オブジェクトを JSON 文字列へエンコードし、ストリームに書き込みます。</p> -<pre class="eval"> void encodeToStream( - in nsIOutputStream stream, - in string charset, - in boolean writeBOM - in JSObject value, - [optional] in JSObject optFilter - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <tt>stream</tt></dt> - <dd> - JSON 文字列を書き込む <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIOutputStream" title="">nsIOutputStream</a></code>。</dd> - <dt> - <tt>charset</tt></dt> - <dd> - 使用する文字エンコーディング。「UTF-8」「UTF-16LE」「UTF-16BE」など。</dd> - <dt> - <tt>writeBOM</tt></dt> - <dd> - ストリームにバイトオーダーマーク (BOM) を書き込む場合は <code>true</code>、書き込まない場合は <code>false</code> を指定します。</dd> - <dt> - <tt>value</tt></dt> - <dd> - エンコードする JavaScript オブジェクト。</dd> - <dt> - <tt>optFilter</tt></dt> - <dd> - ?</dd> -</dl> -<h2 id=".E4.BE.8B" name=".E4.BE.8B">例</h2> -<h3 id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.89.E3.81.99.E3.82.8B" name=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.89.E3.81.99.E3.82.8B">オブジェクトをエンコードする</h3> -<pre class="eval">var myObj = {"foo":"bar"}; - -var myJSONString = nativeJSON.encode(myObj); -</pre> -<p>返される文字列は「{"foo":"bar"}」になります。</p> -<h3 id="JSON_.E6.96.87.E5.AD.97.E5.88.97.E3.82.92.E3.83.87.E3.82.B3.E3.83.BC.E3.83.89.E3.81.99.E3.82.8B" name="JSON_.E6.96.87.E5.AD.97.E5.88.97.E3.82.92.E3.83.87.E3.82.B3.E3.83.BC.E3.83.89.E3.81.99.E3.82.8B">JSON 文字列をデコードする</h3> -<p>上記の文字列は、<code>decode()</code> に渡して、元のオブジェクトに戻すことができます。</p> -<pre class="eval">var myObj2 = nativeJSON.decode(myJSONString); -</pre> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><a href="ja/JSON">JSON</a></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsilogininfo/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsilogininfo/index.html deleted file mode 100644 index 9efe8fb32d..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsilogininfo/index.html +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: nsILoginInfo -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsILoginInfo -tags: - - Firefox 3 - - MDC Project - - NeedsEditorialReview -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginInfo ---- -<p> -<code>nsILoginInfo</code>はFirefox 3のログインマネージャにて格納されるログインのための情報を保持するオブジェクトです。 -</p><p>ログインを作成し、管理するには<a href="ja/NsILoginManager">nsILoginManager</a>を使用する必要があります。<a href="ja/Using_nsILoginManager">Using nsILoginManager</a>の例をご覧ください。 -</p><p><br> -</p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/passwordmgr/public/nsILoginInfo.idl" rel="custom">toolkit/components/passwordmgr/public/nsILoginInfo.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>Inherits from: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -</p><p>Implemented by: <code>@mozilla.org/login-manager/loginInfo;1</code>. インスタンスを作成するためには次の例を使用してください。 -</p> -<pre class="eval">var myLoginInfo = Components.classes["@mozilla.org/login-manager/loginInfo;1"] - .createInstance(Components.interfaces.nsILoginInfo); -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> <tbody><tr> -<td> <code>void <a href="#init.28.29">init</a>(in AString aHostname, in AString aFormSubmitURL, in AString aHttpRealm, in AString aUsername, in AString aPassword, in AString aUsernameField, in AString aPasswordField);</code> -</td></tr> -<tr> -<td> <code>boolean <a href="#equals.28.29">equals</a>(in nsILoginInfo aLoginInfo);</code> -</td></tr> -<tr> -<td> <code>boolean <a href="#equalsIgnorePassword.28.29">equalsIgnorePassword</a>(in nsILoginInfo aLoginInfo);</code> -</td></tr> -</tbody></table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> <tbody><tr> -<td class="header">属性 -</td><td class="header">型 -</td><td class="header">記述 -</td></tr> <tr> -<td><code>hostname</code> -</td><td><code><a href="ja/AString">AString</a></code> -</td><td> ログインが実行されるホストの名前。URLとしてフォーマットされます。(例として、"<a class=" external" href="http://www.wite.com" rel="freelink">http://www.wite.com</a>")。ポート番号(":123")が追加されることもあるでしょう。 -</td></tr> -<tr> -<td><code>formSubmitURL</code> -</td><td><code><a href="ja/AString">AString</a></code> -</td><td> フォームベースのログインがサブミットされるURL。HTMLフォームから獲得されるログイン向けにはこのフィールドは<code>form</code>要素の<code>action</code>属性になり、パスは削除されます(例として、"<a class=" external" href="http://www.site.com" rel="freelink">http://www.site.com</a>")。<code>action</code>属性のないフォームはデフォルトとしてフォームの元のURLにサブミットされます。そのためにそれはここに格納されます。このフィールドはログインがプロトコル認証から得られた場合には<code>NULL</code>です。 -</td></tr> -<tr> -<td><code>httpRealm</code> -</td><td><code><a href="ja/AString">AString</a></code> -</td><td> ログインが要求されたHTTP Realm。HTTPサーバが401の結果を返した時、WWW-Authenticateヘッダは"保護空間"を特定するRealmを含みます。<a class="external" href="http://www.ietf.org/rfc/rfc2617.txt"></a><a class="external" href="http://tools.ietf.org/html/rfc2617" title="http://tools.ietf.org/html/rfc2617">RFC 2617</a>を参照してください。結果に realm が含まれていなかった場合、あるいは空白だった場合は、代わりにホスト名が使われます。HTMLフォームから獲得されたログインに関してはこのフィールドは<code>NULL</code>です。 -</td></tr> -<tr> -<td><code>username</code> -</td><td><code><a href="ja/AString">AString</a></code> -</td><td> ログインのユーザ名 -</td></tr> -<tr> -<td><code>usernameField</code> -</td><td><code><a href="ja/AString">AString</a></code> -</td><td> フォーム内のユーザ名入力フィールドの<code>name</code>属性。フォームを利用しないログインでは、空白の文字列 ("") を指定する必要があります。 -</td></tr> -<tr> -<td><code>password</code> -</td><td><code><a href="ja/AString">AString</a></code> -</td><td> ログインのパスワード。 -</td></tr> -<tr> -<td><code>passwordField</code> -</td><td><code><a href="ja/AString">AString</a></code> -</td><td> パスワード入力フィールドの<code>name</code>属性。プロトコル認証から獲得されたログインではこのフィールドは<code>NULL</code>になります。 -</td></tr> -</tbody></table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="init.28.29" name="init.28.29">init()</h3> -<p>新しく作成されたnsILoginInfoオブジェクトを初期化します。 -</p> -<pre class="eval"> void init(in AString aHostname, - in AString aFormSubmitURL, - in AString aHttpRealm, - in AString aUsername, - in AString aPassword, - in AString aUsernameField, - in AString aPasswordField - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl><dt><tt>aHostname</tt> -</dt><dd><code>hostname</code>フィールドに割り当てられる値 -</dd><dt><tt>aFormSubmitURL</tt> -</dt><dd><code>formSubmitURL</code>フィールドに割り当てられる値 -</dd><dt><tt>aHttpRealm</tt> -</dt><dd><code>httpRealm</code>フィールドに割り当てられる値 -</dd><dt><tt>aUsername</tt> -</dt><dd><code>username</code>フィールドに割り当てられる値 -</dd><dt><tt>aPassword</tt> -</dt><dd><code>password</code>フィールドに割り当てられる値 -</dd><dt><tt>aUsernameField</tt> -</dt><dd><code>usernameField</code>フィールドに割り当てられる値 -</dd><dt><tt>aPasswordField</tt> -</dt><dd><code>passwordField</code>フィールドに割り当てられる値 -</dd></dl> -<h3 id="equals.28.29" name="equals.28.29">equals()</h3> -<p>このログインが別の<code>nsILoginInfo</code>オブジェクトと完全に等しいかどうか確定する -</p> -<pre class="eval"> boolean equals( - in nsILoginInfo aLoginInfo - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl><dt><tt>aLoginInfo</tt> -</dt><dd>等しさを比較するログイン -</dd></dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>もし二つのログインが完全に等しければ<code>true</code>、そうでなければ<code>false</code>。 -</p> -<h3 id="matches.28.29" name="matches.28.29">matches()</h3> -<p>このログインが他の <code>nsILoginInfo</code> オブジェクトとほぼ等しいかどうかを判別するテストを行います。<code>passwordField</code> と <code>usernameField</code> の値は無視され、<code>password</code> の値も任意で無視できます。このログインの <code>formSubmitURL</code> が空白の文字列である (かつ null でない) 場合は、ワイルドカードと同等に扱われます。 -</p> -<pre class="eval"> boolean matches( - in nsILoginInfo aLoginInfo, - in boolean ignorePassword - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl><dt><tt>aLoginInfo</tt> -</dt><dd>等しさを比較するログイン -</dd></dl> -<dl><dt><tt>ignorePassword</tt> -</dt><dd>true の場合、判別時にパスワードの値を検査しません。 -</dd></dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>2つのログインが同等ならば<code>true</code>、等しくなければ<code>false</code>。 -</p> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<h2 id="See_also" name="See_also">See also</h2> -<p><a href="ja/NsILoginManager">nsILoginManager</a>, <a href="ja/Using_nsILoginManager">Using nsILoginManager</a> -</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiloginmanager/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiloginmanager/index.html deleted file mode 100644 index ca03e05897..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiloginmanager/index.html +++ /dev/null @@ -1,306 +0,0 @@ ---- -title: nsILoginManager -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsILoginManager -tags: - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager ---- -<p> <a href="/ja/nsIPasswordManager" title="ja/nsIPasswordManager">nsIPasswordManager</a> に替わり Firefox 3 では <code>nsILoginManager</code> がパスワードマネージャーのインターフェイスとして使われます。</p> - -<p>使用例については <a href="/ja/Using_nsILoginManager" title="ja/Using_nsILoginManager">Using nsILoginManager</a> をご覧ください。</p> - -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/passwordmgr/public/nsILoginManager.idl" rel="custom">toolkit/components/passwordmgr/public/nsILoginManager.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> - -<p>Inherits from: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager" title="">nsILoginManager</a></code></p> - -<p>Implemented by: <code>@mozilla.org/login-manager;1</code>. To create an instance, use:</p> - -<pre class="eval">var loginManager = Components.classes["@mozilla.org/login-manager;1"] - .getService(Components.interfaces.nsILoginManager); -</pre> - -<h2 id="Method_overview" name="Method_overview">Method overview</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#addLogin.28.29">addLogin</a>(in <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> aLogin);</code></td> - </tr> - <tr> - <td><code>void <a href="#removeLogin.28.29">removeLogin</a>(in <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> aLogin);</code></td> - </tr> - <tr> - <td><code>void <a href="#modifyLogin.28.29">modifyLogin</a>(in <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> oldLogin, in <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> newLogin);</code></td> - </tr> - <tr> - <td><code>void <a href="#removeAllLogins.28.29">removeAllLogins</a>();</code></td> - </tr> - <tr> - <td><code>void <a href="#getAllLogins.28.29">getAllLogins</a>(out unsigned long count, [retval, array, size_is(count)] out <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> logins);</code></td> - </tr> - <tr> - <td><code>void <a href="#getAllDisabledHosts.28.29">getAllDisabledHosts</a>(out unsigned long count, [retval, array, size_is(count)] out wstring hostnames);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#getLoginSavingEnabled.28.29">getLoginSavingEnabled</a>(in <a href="/ja/AString" title="ja/AString">AString</a> aHost);</code></td> - </tr> - <tr> - <td><code>void <a href="#setLoginSavingEnabled.28.29">setLoginSavingEnabled</a>(in <a href="/ja/AString" title="ja/AString">AString</a> aHost, in boolean isEnabled);</code></td> - </tr> - <tr> - <td><code>void <a href="#findLogins.28.29">findLogins</a>(out unsigned long count, in <a href="/ja/AString" title="ja/AString">AString</a> aHostname, in AString aActionURL, in AString aHttpRealm, [retval, array, size_is(count)] out <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> logins);</code></td> - </tr> - <tr> - <td><code>unsigned long <a href="#countLogins.28.29">countLogins</a>(in <a href="/ja/AString" title="ja/AString">AString</a> aHostName, in <a href="/ja/AString" title="ja/AString">AString</a> aActionURL, in <a href="/ja/AString" title="ja/AString">AString</a> aHttpRealm,);</code></td> - </tr> - <tr> - <td><code><a href="/ja/NsIAutoCompleteResult" title="ja/NsIAutoCompleteResult">nsIAutoCompleteResult</a> <a href="#autoCompleteSearch.28.29">autoCompleteSearch</a>(in <a href="/ja/AString" title="ja/AString">AString</a> aSearchString, in nsIAutoCompleteResult aPreviousResult, in <a href="/ja/NsIDOMHTMLInputElement" title="ja/NsIDOMHTMLInputElement">nsIDOMHTMLInputElement</a> aElement);</code></td> - </tr> - </tbody> -</table> - -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> - -<h3 id="addLogin.28.29" name="addLogin.28.29">addLogin()</h3> - -<p>新しいログイン情報をログインマネージャーに保存します。</p> - -<pre class="eval"> void addLogin( - in nsILoginInfo aLogin - ); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>aLogin</code></dt> - <dd>The login to store.</dd> -</dl> - -<h3 id="removeLogin.28.29" name="removeLogin.28.29">removeLogin()</h3> - -<p>ログインマネージャーからログイン情報を削除します。</p> - -<pre class="eval"> void removeLogin( - in nsILoginInfo aLogin - ); -</pre> - -<h6 id="Parameters_2" name="Parameters_2">Parameters</h6> - -<dl> - <dt><code>aLogin</code></dt> - <dd>The login to remove from the Login Manager.</dd> -</dl> - -<h3 id="modifyLogin.28.29" name="modifyLogin.28.29">modifyLogin()</h3> - -<p>既存のログイン情報を修正し上書きします。</p> - -<pre class="eval"> void modifyLogin( - in nsILoginInfo oldLogin, - in nsILoginInfo newLogin - ); -</pre> - -<h6 id="Parameters_3" name="Parameters_3">Parameters</h6> - -<dl> - <dt><code>oldLogin</code></dt> - <dd>The login to be updated.</dd> - <dt><code>newLogin</code></dt> - <dd>The login information to replace the <code>oldLogin</code> with.</dd> -</dl> - -<h3 id="removeAllLogins.28.29" name="removeAllLogins.28.29">removeAllLogins()</h3> - -<p>ログインマネージャーに保存されているすべてのログイン情報を削除します。この動作はマスターパスワードによる保護を無視します。</p> - -<pre class="eval"> void removeAllLogins(); -</pre> - -<h6 id="Parameters_4" name="Parameters_4">Parameters</h6> - -<p>None.</p> - -<h3 id="getAllLogins.28.29" name="getAllLogins.28.29">getAllLogins()</h3> - -<p>ログインマネージャーに保存されているすべてのログイン情報を配列として返します。</p> - -<pre class="eval"> void getAllLogins( - out unsigned long count, - [retval, array, size_is(count)] out nsILoginInfo logins - ); -</pre> - -<h6 id="Parameters_5" name="Parameters_5">Parameters</h6> - -<dl> - <dt><code>count</code></dt> - <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd> - <dt><code>logins</code></dt> - <dd>An array of <code><a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a></code> objects containing all the logins the Login Manager has on record.</dd> -</dl> - -<h6 id="Remarks" name="Remarks">Remarks</h6> - -<p>このメソッドは JavaScript から次のように呼ぶことができます:</p> - -<pre class="eval"> var logins = myLoginMgr.getAllLogins({}); -</pre> - -<p><code>logins</code> にはログイン情報が配列形式で戻されます。</p> - -<h3 id="getAllDisabledHosts.28.29" name="getAllDisabledHosts.28.29">getAllDisabledHosts()</h3> - -<p>ログイン情報の保存が無効に設定されているホストの一覧を返します。</p> - -<pre class="eval"> void getAllDisabledHosts( - out unsigned long count, - [retval, array, size_is(count)] out wstring hostnames - ); -</pre> - -<h6 id="Parameters_6" name="Parameters_6">Parameters</h6> - -<dl> - <dt><code>count</code></dt> - <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd> - <dt><code>hostnames</code></dt> - <dd>An array of hostname strings in URL format without a pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd> -</dl> - -<h6 id="Remarks_2" name="Remarks_2">Remarks</h6> - -<p>You can call this method from JavaScript like this:</p> - -<pre class="eval"> var disabledHosts = myLoginMgr.getAllDisabledHosts({}); -</pre> - -<h3 id="getLoginSavingEnabled.28.29" name="getLoginSavingEnabled.28.29">getLoginSavingEnabled()</h3> - -<p>指定されたホストでログイン情報を保存可能かどうかを返します。</p> - -<pre class="eval"> boolean getLoginSavingEnabled( - in AString aHost - ); -</pre> - -<h6 id="Parameters_7" name="Parameters_7">Parameters</h6> - -<dl> - <dt><code>aHost</code></dt> - <dd>The hostname to check. This argument should be in the origin URL format, with no pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd> -</dl> - -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> - -<p>ホストがログイン情報を保存できる場合は <code>treu</code> を、そうでない場合は <code>false</code> を返します。</p> - -<h3 id="setLoginSavingEnabled.28.29" name="setLoginSavingEnabled.28.29">setLoginSavingEnabled()</h3> - -<p>Enables or disables storing logins for a specified host. When login storing is disabled, the Login Manager won't prompt the user to store logins for that host. Existing logins are not affected.</p> - -<pre class="eval"> void setLoginSavingEnabled( - in AString aHost, - in boolean isEnabled - ); -</pre> - -<h6 id="Parameters_8" name="Parameters_8">Parameters</h6> - -<dl> - <dt><code>aHost</code></dt> - <dd>The hostname to adjust the setting for. This argument should be in the origin URL format, with no pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd> - <dt><code>isEnabled</code></dt> - <dd>If <code>true</code>, login saving is enabled for the specified host. If <code>false</code>, login saving is disabled.</dd> -</dl> - -<h3 id="findLogins.28.29" name="findLogins.28.29">findLogins()</h3> - -<p>Searches for logins matching the specified criteria. Called when looking for logins that might be applicable to a given form or authentication request.</p> - -<pre class="eval"> void findLogins( - out unsigned long count, - in AString aHostname, - in AString aActionURL, - in AString aHttpRealm, - [retval, array, size_is(count)] out nsILoginInfo logins - ); -</pre> - -<h6 id="Parameters_9" name="Parameters_9">Parameters</h6> - -<dl> - <dt><code>count</code></dt> - <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd> - <dt><code>aHostname</code></dt> - <dd>The hostname to which to restrict searches. When looking for form logins, this argument should be in origin HTML format, with no pathname. For protocol logins, such as http or ftp, it should be the hostname with the port number appended, such as "www.bar.com:443".</dd> - <dt><code>aActionURL</code></dt> - <dd>For form logins, this parameter should specify the URL to which the form will be submitted. For protocol logins, specify <code>null</code>.</dd> - <dt><code>aHttpRealm</code></dt> - <dd>For protocol logins, specify the HTTP Realm for which the login applies; this is obtained from the WWW-Authenticate header (see <a class="external" href="http://tools.ietf.org/html/rfc2617" title="http://tools.ietf.org/html/rfc2617">RFC 2617</a>). For form logins, this parameter should be <code>null</code>.</dd> - <dt><code>logins</code></dt> - <dd>An array of <code><a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a></code> objects.</dd> -</dl> - -<h6 id="Remarks_3" name="Remarks_3">Remarks</h6> - -<p>This method can be called from JavaScript like this:</p> - -<pre class="eval"> var logins = myLoginMgr.findLogins({}, hostname, ...); -</pre> - -<h3 id="countLogins.28.29" name="countLogins.28.29">countLogins()</h3> - -<p>Returns the number of logins matching the specified criteria. Called when only the number of logins is needed, and not the actual logins (which avoids prompting the user for a Master Password, as the logins don't need to be decrypted).</p> - -<pre class="eval"> unsigned login countLogins( - in AString aHostname, - in AString aActionURL, - in AString aHttpRealm, - ); -</pre> - -<h6 id="Parameters_10" name="Parameters_10">Parameters</h6> - -<dl> - <dt><code>aHostname</code></dt> - <dd>The hostname to which to restrict searches. When looking for form logins, this argument should be in origin HTML format, with no pathname. For protocol logins, such as http or ftp, it should be the hostname with the port number appended, such as "www.bar.com:443".</dd> - <dt><code>aActionURL</code></dt> - <dd>For form logins, this parameter should specify the URL to which the form will be submitted. To match any form login, specify <code>""</code> (empty string). To not match any form logins (eg, when interested in protocol logins only), specify <code>null</code>.</dd> - <dt><code>aHttpRealm</code></dt> - <dd>For protocol logins, specify the HTTP Realm for which the login applies; this is obtained from the WWW-Authenticate header (see <a class="external" href="http://tools.ietf.org/html/rfc2617" title="http://tools.ietf.org/html/rfc2617">RFC 2617</a>). To match any protocol login, specify <code>""</code> (empty string). To not match any protocol logins (eg, when interested in form logins only), specify <code>null</code>.</dd> -</dl> - -<p> </p> - -<h3 id="autoCompleteSearch.28.29" name="autoCompleteSearch.28.29">autoCompleteSearch()</h3> - -<p>Generates results for a user field autocomplete menu.</p> - -<div class="note"> -<p>This method is provided for use only by the FormFillController, which calls it directly. It should not be used for any other purpose, so no specific usage documentation is provided here.</p> -</div> - -<h2 id="Remarks_4" name="Remarks_4">Remarks</h2> - -<p>Fill this out.</p> - -<h2 id="See_also" name="See_also">See also</h2> - -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILoginInfo" title="">nsILoginInfo</a></code>, <a href="/ja/Using_nsILoginManager" title="ja/Using_nsILoginManager">Using nsILoginManager</a></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserver/index.html deleted file mode 100644 index 2c50f02fa8..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserver/index.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: nsIObserver -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIObserver -tags: - - Interfaces - - 'Interfaces:Frozen' - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> -<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3> -<p><code>nsIObserver</code> は、オブジェクトが通知を監視するために使われます。 これらの通知は、いつもではなく時々、<a href="ja/NsIObserverService">nsIObserverService</a>を通してブロードキャストされます。</p> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsIObserver.idl" rel="custom">xpcom/ds/nsIObserver.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 0.9.6 </span></div> -</div> -<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.BB.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.BB.E3.82.B3.E3.83.BC.E3.83.89">インターフェース・コード</h3> -<pre>[scriptable, uuid(DB242E01-E4D9-11d2-9DDE-000064657374)] -interface nsIObserver : nsISupports { - void observe( in nsISupports aSubject, - in string aTopic, - in wstring aData ); -}; -</pre> -<h3 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3> -<h4 id="observe" name="observe">observe</h4> -<pre> void observe( in nsISupports aSubject, - in string aTopic, - in wstring aData ); -</pre> -<p><code>observe</code> will be called when there is a notification for the topic that the observer has been registered for.</p> -<p>In general, <code>aSubject</code> reflects the object whose change or action is being observed, <code>aTopic</code> indicates the specific change or action, and <code>aData</code> is an optional parameter or other auxiliary data further describing the change or action.</p> -<p>The specific values and meanings of the parameters provided varies widely, though, according to where the observer was registered, and what topic is being observed.</p> -<p>A single <code>nsIObserver</code> implementation can observe multiple types of notification, and is responsible for dispatching its own behaviour on the basis of the parameters for a given callback. In general, <code>aTopic</code> is the primary criterion for such dispatch; <code>nsIObserver</code> implementations should take care that they can handle being called with unknown values for <code>aTopic</code>.</p> -<p>While some observer-registration systems may make this safe in specific contexts, it is generally recommended that <code>observe</code> implementations not add or remove observers while they are being notified.</p> -<h3 id=".E9.96.A2.E9.80.A3.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E9.96.A2.E9.80.A3.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">関連インターフェース</h3> -<p><a href="ja/NsIObserverService">nsIObserverService</a></p> -<h3 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89">サンプルコード</h3> -<p>The following is an implementation of <code>nsIObserver</code> that can be registered with the preference service to be notified of changes in preferences (see <a class="external" href="http://kb.mozillazine.org/Dev_:_Using_preferences#Using_preferences_observers">Using preferences</a> on MozillaZine for a complete example and for more information about the preference system in general).</p> -<pre>var prefObserver = { - // nsIObserver - observe: function (aSubject, aTopic, aData) { - if (aTopic == "nsPref:changed") { // observe preference changes - // aData contains the name of the changed preference - dump(aData+" changed!"); - } - }, - - QueryInterface: function(aIID) { - if(!aIID.equals(CI.nsISupports) && !aIID.equals(CI.nsIObserver)) - throw CR.NS_ERROR_NO_INTERFACE; - return this; - } -}; -</pre> -<p>See also <a class="external" href="http://kb.mozillazine.org/Using_observers">Using observers</a>.</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserverservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserverservice/index.html deleted file mode 100644 index ffd3a4649d..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserverservice/index.html +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: nsIObserverService -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIObserverService -tags: - - Interfaces - - 'Interfaces:Frozen' - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIObserverService ---- -<div>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></div> - -<h2 id="Summary" name="Summary">概要</h2> - -<p><code>nsIObserverService</code> インタフェースは、様々な通知を受けるオブザーバを追加、削除、通知、列挙するためのメソッドを提供します。 </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsIObserverService.idl" rel="custom">xpcom/ds/nsIObserverService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 0.9.6 </span></div> -</div> 詳しくは <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=99163" title="FIXED: Freeze nsIObserver">バグ 99163</a> をご覧ください - -<pre> #include "nsIObserverService.h" - [scriptable, uuid=(D07F5192-E3D1-11d2-8ACD-00105A1B8860)] - interface nsIObserverService : nsISupports { ... }; -</pre> - -<p>XPCOM の <a href="ja/NsObserverService">nsObserverService</a> はこのインタフェースを実装して、様々なサブシステムのためのグローバル通知を提供しています。</p> - -<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#addObserver.28.29">addObserver</a>(in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver" title="">nsIObserver</a></code> anObserver, in string aTopic, in boolean ownsWeak);</code></td> - </tr> - <tr> - <td><code>void <a href="#removeObserver.28.29">removeObserver</a>( in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver" title="">nsIObserver</a></code> anObserver, in string aTopic );</code></td> - </tr> - <tr> - <td><code>void <a href="#notifyObservers.28.29">notifyObservers</a>( in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> aSubject, in string aTopic, in wstring someData );</code></td> - </tr> - <tr> - <td><code><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISimpleEnumerator" title="">nsISimpleEnumerator</a></code> enumerateObservers( in string aTopic );</code></td> - </tr> - </tbody> -</table> - -<h2 id="Methods" name="Methods">メソッド</h2> - -<h2 id="addObserver.28.29" name="addObserver.28.29">addObserver()</h2> - -<p>特定のトピックに関する通知を受けるために指定したリスナーの登録を行います。</p> - -<pre> void addObserver( in nsIObserver anObserver, - in string aTopic, - in boolean ownsWeak); -</pre> - -<h6 id="addObserver-Parameters" name="addObserver-Parameters">引数</h6> - -<dl> - <dt><code>anObserver</code></dt> - <dd>通知を受けるインタフェースポインタ。</dd> - <dt><code>aTopic</code></dt> - <dd>通知のトピックまたはサブジェクト。</dd> - <dt><code>ownsWeak</code></dt> - <dd><code>false</code> に設定した場合、<code>nsIObserverService</code> は <code>anObserver</code> に対する強力な参照を保持します。<code>true</code> に設定し、なおかつ <code>anObserver</code> が <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWeakReference" title="">nsIWeakReference</a></code> インタフェースをサポートしている場合、弱い参照が保持されます。そうでない場合、エラーが返されます。</dd> -</dl> - -<h2 id="removeObserver.28.29" name="removeObserver.28.29">removeObserver()</h2> - -<p>特定のトピックに関する通知を受けるために指定したリスナーの登録を解除します。</p> - -<pre> void removeObserver( in nsIObserver anObserver, - in string aTopic ); -</pre> - -<h6 id="removeObserver-Parameters" name="removeObserver-Parameters">引数</h6> - -<dl> - <dt><code>anObserver</code></dt> - <dd>通知を受けるのを停止するインタフェースポインタ。</dd> - <dt><code>aTopic</code></dt> - <dd>通知のトピックまたはサブジェクト。</dd> -</dl> - -<h2 id="notifyObservers.28.29" name="notifyObservers.28.29">notifyObservers()</h2> - -<p>指定されたトピックについて登録されたすべてのリスナーに通知を行います。</p> - -<pre> void notifyObservers( in nsISupports aSubject, - in string aTopic, - in wstring someData ); -</pre> - -<h6 id="notifyObservers-Parameters" name="notifyObservers-Parameters">引数</h6> - -<dl> - <dt><code>aSubject</code></dt> - <dd>通知固有のインタフェースポインタ。</dd> - <dt><code>aTopic</code></dt> - <dd>通知のトピックまたはサブジェクト。</dd> - <dt><code>someData</code></dt> - <dd>通知固有のワイド文字列。</dd> -</dl> - -<h2 id="enumerateObservers.28.29" name="enumerateObservers.28.29">enumerateObservers()</h2> - -<p>登録されたすべてのリスナの列挙を返します。</p> - -<pre> nsISimpleEnumerator enumerateObservers( in string aTopic ); -</pre> - -<h6 id="enumerateObservers-Parameters" name="enumerateObservers-Parameters">引数</h6> - -<dl> - <dt><code>aTopic</code></dt> - <dd>通知のトピックまたはサブジェクト。</dd> -</dl> - -<h6 id="enumerateObservers-Return_value" name="enumerateObservers-Return_value">戻り値</h6> - -<p>登録されたすべてのリスナの列挙を返します。</p> - -<h2 id="notifyObservers" name="notifyObservers()">notifyObservers()</h2> - -<p>This method is called to notify all observers for a particular topic. See <a href="#Example">Example</a>.</p> - -<pre>void notifyObservers( - in nsISupports aSubject, - in string aTopic, - in wstring someData -); -</pre> - -<h6 id="notifyObservers-Parameters" name="notifyObservers-Parameters">Parameters</h6> - -<dl> - <dt><code>aSubject</code></dt> - <dd>A notification specific interface pointer. This usually corresponds to the source of the notification, but could be defined differently depending on the notification topic and may even be <code>null</code>.</dd> - <dt><code>aTopic</code></dt> - <dd>The notification topic. This string-valued key uniquely identifies the notification. This parameter must not be <code>null</code>.</dd> - <dt><code>someData</code></dt> - <dd>A notification specific string value. The meaning of this parameter is dependent on the topic. It may be <code>null</code>.</dd> -</dl> - -<h2 id="removeObserver" name="removeObserver()">removeObserver()</h2> - -<p>This method is called to unregister an observer for a particular topic.</p> - -<pre>void removeObserver( - in nsIObserver anObserver, - in string aTopic -); -</pre> - -<h6 id="removeObserver-Parameters" name="removeObserver-Parameters">Parameters</h6> - -<dl> - <dt><code>anObserver</code></dt> - <dd>The <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver" title="">nsIObserver</a></code> instance to remove.</dd> - <dt><code>aTopic</code></dt> - <dd>The notification topic or subject. This string-valued key uniquely identifies the notification. This parameter must not be <code>null</code>.</dd> -</dl> - -<h2 id="Example" name="Example">Example</h2> - -<p>This notifies all <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver" title="">nsIObserver</a></code>s watching the "myTopicID" topic with an additional data parameter.</p> - -<pre class="brush: js">Components.classes["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService) - .notifyObservers(null, "myTopicID", "someAdditionalInformationPassedAs'Data'Parameter"); -</pre> - -<h2 id="See_also" name="See_also">関連記事</h2> - -<ul> - <li><a href="/ja/docs/NsObserverService">nsObserverService</a></li> - <li><a href="/ja/docs/Observer_Notifications">Observer Notifications</a>: オブザーバの概要と、Mozilla によって行われる組み込みの通知の一覧が掲載されています。</li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsioutputstream/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsioutputstream/index.html deleted file mode 100644 index 5af2c8425f..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsioutputstream/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: nsIOutputStream -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIOutputStream -tags: - - Interfaces - - 'Interfaces:Frozen' - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIOutputStream ---- -<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p> -<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3> -<p><code>nsIOutputStream</code> インターフェースは書き込み可能なデータシンクを表します。</p> -<pre> #include "nsIOutputStream.h" - - [scriptable, uuid=(0d0acd2a-61b4-11d4-9877-00c04fa0cf4a)] - interface nsIOutputStream : nsISupports { ... }; -</pre> -<h3 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3> -<dl> - <dt> - <code><a href="ja/NsIOutputStream/close">close</a></code></dt> - <dd> - このメソッドは、出力ストリームをクローズする。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIOutputStream/flush">flush</a></code></dt> - <dd> - このメソッドは、出力ストリームをフラッシュする。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIOutputStream/write">write</a></code></dt> - <dd> - このメソッドは、バッファからストリームにデータをコピーする。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIOutputStream/writeSegments">writeSegments</a></code></dt> - <dd> - このメソッドは、ストリームの内部バッファへの書き込むためのダイレクトアクセスを提供します。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIOutputStream/writeFrom">writeFrom</a></code></dt> - <dd> - このメソッドは、<code><a href="ja/NsIInputStream">nsIInputStream</a></code>からこの<code>nsIOutputStream</code>にデータをコピーします。</dd> -</dl> -<dl> - <dt> - <code><a href="ja/NsIOutputStream/isNonBlocking">isNonBlocking</a></code></dt> - <dd> - このメソッドは、ストリームが非ブロッキングならtrueを返す。</dd> -</dl> -<h3 id=".E5.B1.A5.E6.AD.B4" name=".E5.B1.A5.E6.AD.B4">履歴</h3> -<p>このインターフェースはMozilla 1.0で凍結されています。詳細は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=124465" title="FIXED: [meta] freeze specific necko APIs for mozilla 1.0">バグ 124465</a> を見てください。</p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparentalcontrolsservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparentalcontrolsservice/index.html deleted file mode 100644 index 61a4dbcca2..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparentalcontrolsservice/index.html +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: nsIParentalControlsService -slug: >- - Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIParentalControlsService -tags: - - Firefox 3 - - Gecko 1.9 - - Interfaces - - Parental Controls - - XPCOM - - XPCOM API Reference - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIParentalControlsService ---- -<p>nsIParentalControlsServiceインターフェースはOSの保護者による制限(以下、ペアレンタルコントロールと記述)へのアクセスを提供します。これにより、ペアレンタルコントロール機能が使えるかどうかの検出、制限を迂回しての上書き要求がコード上から行えます。</p> -<div class="blockIndicator note"><strong>註:</strong> 現在、このインターフェイスはMicrosoft Windows Vista.のみでサポートされています。</div> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/parentalcontrols/public/nsIParentalControlsService.idl" rel="custom">toolkit/components/parentalcontrols/public/nsIParentalControlsService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>実装: <code>@mozilla.org/parental-controls-service;1</code>. インスタンスを作成する場合には次のように記述します。</p> -<pre class="eval">var parentalControls = Components.classes["@mozilla.org/parental-controls-service;1"] - .createInstance(Components.interfaces.nsIParentalControlsService); -</pre> -<h2 id="Method_overview" name="Method_overview">メソッド概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#log.28.29">log</a>(in short aEntryType, in boolean aFlag, in <a href="/en/XPCOM_Interface_Reference/nsIURI" title="en/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aSource, [optional] in <a href="/en/XPCOM_Interface_Reference/nsIFile" title="en/XPCOM_Interface_Reference/nsIFile">nsIFile</a> aTarget);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#requestURIOverride.28.29">requestURIOverride</a>(in <a href="/en/XPCOM_Interface_Reference/nsIURI" title="en/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aTarget, [optional] in <a href="/en/XPCOM_Interface_Reference/nsIInterfaceRequestor" title="en/XPCOM_Interface_Reference/nsIInterfaceRequestor">nsIInterfaceRequestor</a> aWindowContext);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#requestURIOverrides.28.29">requestURIOverrides</a>(in nsIArray aTargets, [optional] in nsIInterfaceRequestor aWindowContext);</code></td> - </tr> - </tbody> -</table> -<h2 id="Attributes" name="Attributes">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>blockFileDownloadsEnabled</code></td> - <td><code>boolean</code></td> - <td> - <p>現在のユーザアカウントのペアレンタルコントロールの現在の設定が全てのファイルダウンロードの禁止を含む場合にはtrue。<em>リードオンリー</em></p> - </td> - </tr> - <tr> - <td><code>loggingEnabled</code></td> - <td><code>boolean</code></td> - <td> - <p>現在のユーザアカウントがペアレンタルコントロールのログ機能をオンにしている場合には<code>true</code>。<br> - <code>true</code>の場合、アプリケーションは<code><a href="#log.28.29">log()</a></code>メソッドを使い、関係するイベントを記録する必要がある。</p> - </td> - </tr> - <tr> - <td><code>parentalControlsEnabled</code></td> - <td><code>boolean</code></td> - <td> - <p>現在のユーザアカウントがペアレンタルコントロール機能をオンにしている場合には<code>true</code>。<em>リードオンリー</em>。</p> - </td> - </tr> - </tbody> -</table> -<h2 id="Constants" name="Constants">定数</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>ePCLog_URIVisit</code></td> - <td>1</td> - <td>Webコンテンツへのアクセス</td> - </tr> - <tr> - <td><code>ePCLog_FileDownload</code></td> - <td>2</td> - <td>ファイルのダウンロード</td> - </tr> - </tbody> -</table> -<h2 id="Methods" name="Methods">メソッド</h2> -<h3 id="log.28.29" name="log.28.29">log()</h3> -<p>アプリケーション固有のペアレンタルコントロールイベントを記録します。</p> -<pre class="eval"> void log( - in short aEntryType, - in boolean aFlag, - in nsIURI aSource, - [optional] in nsIFile aTarget - ); -</pre> -<h6 id="Parameters" name="Parameters">引数</h6> -<dl> - <dt> - <code>aEntryType</code></dt> - <dd> - 記録するイベントの型。ページ上方の<a href="/ja/nsIParentalControlsService#Constants" title="ja/nsIParentalControlsService#Constants">定数</a>の項目を参照。</dd> - <dt> - <code>aFlag</code></dt> - <dd> - イベントをブロックする場合には<code>true</code>、許可する場合には<code>false</code>を設定します。</dd> - <dt> - <code>aSource</code></dt> - <dd> - subject context の URI</dd> - <dt> - <code>aTarget</code></dt> - <dd> - コンテンツをブロックしない場合のコンテンツの保存場所。</dd> -</dl> -<h3 id="requestURIOverride.28.29" name="requestURIOverride.28.29">requestURIOverride()</h3> -<p>ペアレンタルコントロールでブロックされているURIを許可状態にするよう要求します。</p> -<pre class="eval"> boolean requestURIOverride( - in nsIURI aTarget, - [optional] in nsIInterfaceRequestor aWindowContext - ); -</pre> -<h6 id="Parameters_2" name="Parameters_2">引数</h6> -<dl> - <dt> - <code>aTarget</code></dt> - <dd> - 上書きされるURI</dd> - <dt> - <code>aWindowContext</code></dt> - <dd> - イベントを発生させるウィンドウ</dd> -</dl> -<h6 id="戻り値">戻り値</h6> -<p>ブロックが正常に上書きされれば<code>true</code>が、そうでなければ<code>false</code>が返ります。</p> -<h6 id="Return_value_2" name="Return_value_2">注意書き</h6> -<p>ブロックに対する上書き要求を操作するためのユーザインターフェース(「管理者パスワードを入力してください」と表示されるダイアログボックスなど)をOSが表示している間は、このメソッドはペアレンタルコントロールによるブロックを継続します。</p> -<h3 id="requestURIOverrides.28.29" name="requestURIOverrides.28.29">requestURIOverrides()</h3> -<p>一連のURIをペアレンタルコントロールで許可されるよう要求します。</p> -<pre class="eval"> boolean requestURIOverrides( - in nsIArray aTargets, - [optional] in nsIInterfaceRequestor aWindowContext - ); -</pre> -<p>引数</p> -<dl> - <dt> - <code>aTargets</code></dt> - <dd> - 上書きを希望するURIを表す<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>オブジェクトの配列</dd> - <dt> - <code>aWindowContext</code></dt> - <dd> - イベントを発生させるウィンドウ</dd> -</dl> -<h6 id="Return_value_2" name="Return_value_2">戻り値</h6> -<p>ブロックが正常に上書きされればtrueが、そうでなければfalseが返る。</p> -<h6 id="Remarks_2" name="Remarks_2">注意書き</h6> -<p>ブロックに対する上書き要求を操作するためのユーザインターフェース(「管理者パスワードを入力してください」と表示されるダイアログボックスなど)をOSが表示している間は、このメソッドはペアレンタルコントロールによるブロックを継続します。</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparserutils/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparserutils/index.html deleted file mode 100644 index a90cbe4208..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparserutils/index.html +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: nsIParserUtils -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIParserUtils -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIParserUtils ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/parser/html/nsIParserUtils.idl" rel="custom">parser/html/nsIParserUtils.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -Provides non-Web HTML parsing functionality to Firefox extensions and XULRunner applications. -</span> - - <div style="height: 42px; position: relative; padding: 2px; width: auto;"> - - <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div> - - <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div> - - <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 24.285714285714285%;"></div> - -<div style="height: 8px; top: 16px; left: 24.285714285714285%; background: #00dd00; position: absolute; width: 75.71428571428572%;" title="Introduced in Gecko 13.0 (Firefox 13.0 / Thunderbird 13.0 / SeaMonkey 2.10)"></div> - -<div style="top: 0px; font-size: 11px; position: absolute; left: 24.285714285714285%;">Introduced</div> -<div style="top: 22px; font-size: 11px; position: absolute; left: 24.285714285714285%;">Gecko 13.0</div> - - <div style="height: 8px; top: 16px; left: 25.21428571428571%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 14.0 (Firefox 14.0 / Thunderbird 14.0 / SeaMonkey 2.11)"></div> - -</div> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 14.0 (Firefox 14.0 / Thunderbird 14.0 / SeaMonkey 2.11)</span></div> -</div> - -<div class="warning">警告: Geckoの中からこれを使用しないでください。代わりに<code>nsContentUtils</code>、<code>nsTreeSanitizer</code>などを直接使用してください。</div> - -<p>Implemented by: <code>@mozilla.org/parserutils;1</code> as a service:</p> - -<pre class="eval">var parserUtils = Components.classes["@mozilla.org/<code>parserutils;1</code>"] - .getService(Components.interfaces.nsIParserUtils); -</pre> - -<h2 id="Method_overview" name="Method_overview">メソッド概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>AString <a href="#convertToPlainText()">convertToPlainText</a>(in AString src, in unsigned long flags, in unsigned long wrapCol);</code></td> - </tr> - <tr> - <td><code>nsIDOMDocumentFragment <a href="#parseFragment()">parseFragment</a>(in AString fragment, in unsigned long flags, in boolean isXML, in nsIURI baseURI, in nsIDOMElement element);</code> </td> - </tr> - <tr> - <td><code>AString <a href="#sanitize()">sanitize</a>(in AString src, in unsigned long flags);</code> </td> - </tr> - </tbody> -</table> - -<h2 id="Constants" name="Constants">定数</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Constant</td> - <td class="header">Value</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>SanitizerAllowComments</code></td> - <td><code>(1 << 0)</code></td> - <td>Flag for sanitizer: Allow comment nodes. </td> - </tr> - <tr> - <td><code>SanitizerAllowStyle</code></td> - <td><code>(1 << 1)</code></td> - <td> - <p>Flag for sanitizer: Allow <a href="/ja/docs/Web/HTML/Element/style" title="HTML の <style> 要素は、文書あるいは文書の一部分のスタイル情報を含みます。"><code><style></code></a> elements and <code>style</code> attributes (with contents sanitized in case of <code>-moz-binding</code>).</p> - - <div class="note"><strong>Note:</strong> If <code>-moz-binding</code> is absent, properties that might be XSS risks in other Web engines are preserved! </div> - </td> - </tr> - <tr> - <td><code>SanitizerCidEmbedsOnly</code></td> - <td><code>(1 << 2)</code></td> - <td> - <p>Flag for sanitizer: Only allow cid: URLs for embedded content.</p> - - <p>At present, sanitizing CSS backgrounds, and so on., is not supported, so setting this together with <code>SanitizerAllowStyle</code> doesn't make sense.</p> - At present, sanitizing CSS syntax in SVG presentational attributes is not supported, so this option flattens out SVG. </td> - </tr> - <tr> - <td><code>SanitizerDropNonCSSPresentation</code></td> - <td><code>(1 << 3)</code></td> - <td>Flag for sanitizer: Drops non-CSS presentational HTML elements and attributes, such as <a href="/ja/docs/Web/HTML/Element/font" title="フォント要素(<font>)はその内包するテキストの、フォントサイズ、文字色、使用フォントを定義します。"><code><font></code></a>, <a href="/ja/docs/Web/HTML/Element/center" title="廃止済みの HTML の中央揃え要素 (<center>) は、中に含まれるブロックレベルまたはインラインコンテンツを中央揃えして表示するブロックレベル要素です。"><code><center></code></a>, and the <code>bgcolor</code> attribute. </td> - </tr> - <tr> - <td><code>SanitizerDropForms</code></td> - <td><code>(1 << 4)</code></td> - <td>Flag for sanitizer: Drops forms and form controls (excluding <a href="/ja/docs/Web/HTML/Element/fieldset" title="HTML の <fieldset> 要素は、ウェブフォーム内のラベル (<label>) などのようにいくつかのコントロールをグループ化するために使用します。"><code><fieldset></code></a> and <a href="/ja/docs/Web/HTML/Element/legend" title="HTML の <legend> 要素は、その親要素である <fieldset> の内容のキャプションを表します。"><code><legend></code></a>. </td> - </tr> - <tr> - <td><code>SanitizerDropMedia</code></td> - <td><code>(1 << 5)</code></td> - <td>Flag for sanitizer: Drops <a href="/ja/docs/Web/HTML/Element/img" title="HTML の <img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code><img></code></a>, <a href="/ja/docs/Web/HTML/Element/video" title="HTML の映像要素 (<video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。"><code><video></code></a>, <a href="/ja/docs/Web/HTML/Element/audio" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code><audio></code></a>, and <a href="/ja/docs/Web/HTML/Element/source" title="HTML の <source> 要素は、 <picture> 要素、 <audio> 要素、 <video> 要素に対し、複数のメディアリソースを指定します。この要素自体は空要素です。この要素は一般的に、同一のメディアコンテンツをそれぞれのブラウザーに対応した複数のメディア形式で提供する場合に用います。"><code><source></code></a>, and flattens out <a href="/en/SVG" title="en/SVG">SVG</a>. </td> - </tr> - <tr> - <td><code>SanitizerLogRemovals</code></td> - <td><code>(1 << 6)</code></td> - <td>Flag for sanitizer: Log messages to the <a href="/en-US/docs/Tools/Browser_Console">console</a> for everything that gets sanitized.</td> - </tr> - </tbody> -</table> - -<h2 id="Methods" name="Methods">メソッド</h2> - -<h3 id="convertToPlainText" name="convertToPlainText()">convertToPlainText()</h3> - -<p>Converts HTML to plain text.</p> - -<pre class="eval">AString convertToPlainText( - in AString src, - in unsigned long flags, - in unsigned long wrapCol -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>src</code></dt> - <dd>The HTML source to parse (C++ callers are allowed but not required to use the same string for the return value.)</dd> - <dt><code>flags</code></dt> - <dd>Conversion option flags defined in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentEncoder" title="">nsIDocumentEncoder</a></code>.</dd> - <dt><code>wrapCol</code></dt> - <dd>Number of characters per line; 0 for no auto-wrapping.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>The plain text conversion of the HTML specified in <code>src</code>.</p> - -<h3 id="parseFragment">parseFragment()</h3> - -<p>Parses markup into a sanitized document fragment.</p> - -<pre class="eval">nsIDOMDocumentFragment parseFragment( - in AString fragment, - in unsigned long flags, - in boolean isXML, - in nsIURI baseURI, - in nsIDOMElement element -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>fragment</code></dt> - <dd>The input markup.</dd> - <dt><code>flags</code></dt> - <dd>Sanitization option flags defined above.</dd> - <dt><code>isXML</code></dt> - <dd><code>true</code> if |fragment| is XML and <code>false</code> if HTML.</dd> - <dt><code>baseURI</code></dt> - <dd>The base URL for this fragment.</dd> - <dt><code>element</code></dt> - <dd>The context node for the fragment parsing algorithm.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMDocumentFragment" title="">nsIDOMDocumentFragment</a></code> object for the resulting sanitized document fragment.</p> - -<h3 id="sanitize">sanitize()</h3> - -<p>Parses a string into an HTML document, sanitizes the document, and returns the result serialized to a string.</p> - -<p>The sanitizer is designed to protect against XSS when sanitized content is inserted into a different-origin context without an iframe-equivalent sandboxing mechanism.</p> - -<p>By default, the sanitizer doesn't try to avoid leaking information that the content was viewed to third parties. That is, by default, for example <a href="/ja/docs/Web/HTML/Element/img" title="HTML の <img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code><img></code></a> with a source pointing to an HTTP server potentially controlled by a third party is not removed. To avoid ambient information leakage upon loading the sanitized content, use the <code>SanitizerInternalEmbedsOnly</code> flag. In that case, <a href="/ja/docs/Web/HTML/Element/a" title="HTML の <a> 要素 (アンカー要素) は、別のウェブページ、ファイル、同一ページ内の場所、電子メールアドレス、または他の URL へのハイパーリンクを作成します。"><code><a></code></a> links (and similar) to other content are preserved, so an explicit user action (following a link) after the content has been loaded can still leak information.</p> - -<p>By default, non-dangerous non-CSS presentational HTML elements and attributes or forms are not removed. To remove these, use <code>SanitizerDropNonCSSPresentation</code> and/or <code>SanitizerDropForms</code>.</p> - -<p>By default, comments and CSS is removed. To preserve comments, use <code>SanitizerAllowComments</code>. To preserve <a href="/ja/docs/Web/HTML/Element/style" title="HTML の <style> 要素は、文書あるいは文書の一部分のスタイル情報を含みます。"><code><style></code></a> elements and <code>style</code> attributes on other elements, use <code>SanitizerAllowStyle</code>. <code>-moz-binding</code> is removed from <a href="/ja/docs/Web/HTML/Element/style" title="HTML の <style> 要素は、文書あるいは文書の一部分のスタイル情報を含みます。"><code><style></code></a> elements and <code>style</code> attributes if present. In this case, properties that Gecko doesn't recognize can get removed as a side effect.</p> - -<div class="note"><strong>Note:</strong> If <code>-moz-binding</code> is not present, <a href="/ja/docs/Web/HTML/Element/style" title="HTML の <style> 要素は、文書あるいは文書の一部分のスタイル情報を含みます。"><code><style></code></a> elements and <code>style</code> attributes, and if <code>SanitizerAllowStyle</code> is specified, the sanitized content may still be XSS dangerous if loaded into a non-Gecko Web engine!</div> - -<pre class="eval">AString sanitize( - in AString src, - in unsigned long flags -); -</pre> - -<h6 id="Parameters" name="Parameters">Parameters</h6> - -<dl> - <dt><code>src</code></dt> - <dd>The HTML source to parse (C++ callers are allowed but not required to use the same string for the return value).</dd> - <dt><code>flags</code></dt> - <dd>Sanitization option flags defined above.</dd> -</dl> - -<h6 id="Return_value" name="Return_value">Return value</h6> - -<p>The resulting text.</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipassword/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipassword/index.html deleted file mode 100644 index 8f94e59a9f..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipassword/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: nsIPassword -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIPassword -tags: - - Interfaces - - MDC Project - - NeedsContent - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIPassword ---- -<p>nsIPassword を使ったサンプルは <a href="ja/Using_nsIPasswordManager">Using nsIPasswordManager</a> を見てください。</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipasswordmanager/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipasswordmanager/index.html deleted file mode 100644 index 0464fcd2ac..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipasswordmanager/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: nsIPasswordManager -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIPasswordManager -tags: - - Interfaces - - 'Interfaces:Scriptable' - - MDC Project - - NeedsContent - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIPasswordManager ---- -<p><a href="ja/Using_nsIPasswordManager">Using nsIPasswordManager</a> に使用例があります。</p> -<div class="noinclude"> - </div> -<p>n</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiplacesview/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiplacesview/index.html deleted file mode 100644 index 209b11d0dd..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiplacesview/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: nsIPlacesView -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/NsIPlacesView -tags: - - Developing Mozilla - - Extensions - - Interfaces - - Places -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIPlacesView ---- -<p>nsIPlacesViewインターフェイスは、ビューにとらわれずに、<a href="/ja/Displaying_Places_information_using_views" title="ja/Displaying Places information using views">Placesビュー</a>についての情報にアクセスするための<br> - 手段を提供します。</p> -<p>例えば、ツリー、リスト、またはその他の類似のリストでは、選択された表現の形式が違います。コントローラーは、こういった違いに注意を払うべきではありません。生成したビューの種類に依存した、選択された表現の形式を把握するために、コントローラコードが必要とされるべきではありません。むしろ、それぞれのビューにおいて、選択した表現の形式をコントローラーが理解できる形に変換する必要があります。<code>nsIPlacesView</code>インターフェイスを実装することにより、ビューは以上の作業などを行います。</p> -<div class="note"> - <p><code>nsIPlacesView</code> は現在IDLが存在しません。現在、<a href="/ja/Displaying_Places_information_using_views" title="ja/Displaying Places information using views">組み込みのPlacesビュー</a>の各々に直接実装されています。</p> -</div> -<h2 id="Method_overview" name="Method_overview">メソッド一覧</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>nsINavHistoryResultNode[] </code><a href="#getDragableSelection()" title="#getDragableSelection()"><code>getDragableSelection</code></a><code>();</code></td> - </tr> - <tr> - <td><code>nsINavHistoryResultNode[][</code><code>] </code><a href="#getRemovableSelectionRanges()"><code>getRemovableSelectionRanges</code></a><code>();</code></td> - </tr> - <tr> - <td><code>nsINavHistoryResult </code><a href="#getResult()"><code>getResult</code></a><code>();</code></td> - </tr> - <tr> - <td><code>nsINavHistoryContainerResultNode </code><a href="#getResultNode()"><code>getResultNode</code></a><code>();</code></td> - </tr> - <tr> - <td><code>nsINavHistoryResultNode[] </code><a href="#getSelectionNodes()"><code>getSelectionNodes</code></a><code>();</code></td> - </tr> - <tr> - <td><code>void <a href="#selectAll.28.29">selectAll</a>();</code></td> - </tr> - </tbody> -</table> -<h2 id="Attributes" name="Attributes">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>hasSelection</code></td> - <td><code>boolean</code></td> - <td>アイテムが選択されているかどうか。 <em>読み取り専用。</em></td> - </tr> - <tr> - <td><code>insertionPoint</code></td> - <td><code><a href="/ja/InsertionPoint" title="ja/InsertionPoint">InsertionPoint</a></code></td> - <td> - <p>新規アイテムの、ドロップ、貼り付け、または作成の際に挿入される位置(<code>InsertionPoint</code>型)。<em>読み取り専用。</em></p> - </td> - </tr> - <tr> - <td><code>place</code></td> - <td><code>string</code></td> - <td> - <p>ビューに表示されているルートPlaceのURI(文字列型)。これはビューの更新により、動的に変更される可能性があります。<a class="internal" href="/ja/Displaying_Places_information_using_views#Connecting_a_view_to_its_data" title="ja/Displaying Places information using - views#Connecting a view to its data">Displaying Places information using views</a>の例を参照してください。</p> - </td> - </tr> - <tr> - <td><code>selectedNode</code></td> - <td><code><a href="/ja/nsINavHistoryResultNode" title="ja/nsINavHistoryResultNode">nsINavHistoryResultNode</a></code></td> - <td>ビュー中で選択されているノード。選択されているノードが複数ある場合、この値はnullとなります。<em>読み取り専用。</em></td> - </tr> - </tbody> -</table> -<p> </p> -<h2 id="Methods" name="Methods">メソッド</h2> -<h3 id="init.28.29" name="init.28.29">getDragableSelection()</h3> -<p>ビューからドラッグ可能である、選択されている<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResultNode" title="">nsINavHistoryResultNode</a></code>オブジェクトの配列を返します。</p> -<pre class="eval">nsINavHistoryResultNode[] getDragableSelection(); -</pre> -<h6 id="Parameters" name="Parameters">パラメータ</h6> -<p>無し。</p> -<h6 id="戻り値">戻り値</h6> -<p><code>nsINavHistoryResultNode</code>オブジェクトの配列。</p> -<h3 id="getRemovableSelection.28.29" name="getRemovableSelection.28.29">getRemovableSelectionRanges()</h3> -<p>ビューから削除可能なnsINavHistoryResultNode オブジェクトの配列の配列を返します。内包されているそれぞれの配列は、削除されうる連続的なノードの範囲を示します。</p> -<pre class="eval">nsINavHistoryResultNode[][] getRemovableSelectionRanges(); -</pre> -<h6 id="Parameters" name="Parameters">パラメータ</h6> -<p>無し。</p> -<h6 id="Return_value_2" name="Return_value_2">戻り値</h6> -<p><code>nsINavHistoryResultNode</code>オブジェクトの配列の配列。</p> -<h3 id="getResult">getResult()</h3> -<p>ビューに表示されている<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResult" title="">nsINavHistoryResult</a></code>オブジェクトを返します。</p> -<pre>nsINavHistoryResult getResult(); -</pre> -<h6 id="Parameters" name="Parameters">パラメータ</h6> -<p>無し。</p> -<h6 id="戻り値_2">戻り値</h6> -<p>ビューに表示されている<code>nsINavHistoryResult</code>オブジェクト。</p> -<h3 id="getResultNode">getResultNode()</h3> -<p>ビューの結果の、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryContainerResultNode" title="">nsINavHistoryContainerResultNode</a></code>オブジェクトのルートノードを返します。</p> -<pre>nsINavHistoryContainerResultNode getResultNode(); -</pre> -<h6 id="Parameters" name="Parameters">パラメータ</h6> -<p>無し。</p> -<h6 id="戻り値_3">戻り値</h6> -<p>ビューの結果の、<code>nsINavHistoryContainerResultNode</code> のルート。</p> -<h3 id="getSelection.28.29" name="getSelection.28.29">getSelectionNodes()</h3> -<p>ビューで現在選択されている全ての<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResultNode" title="">nsINavHistoryResultNode</a></code>オブジェクトの配列を返します。モデル中での現象によっては、同様のオーダー、または同様のコンテナ、同様のプロバイダであっても、ノードは必ずしも返されるというわけではありません。</p> -<pre class="eval">nsINavHistoryResultNode[] getSelectionNodes(); -</pre> -<h6 id="Parameters" name="Parameters">パラメータ</h6> -<p>無し。</p> -<h6 id="戻り値_4">戻り値</h6> -<p>選択されている<code>nsINavHistoryResultNode</code>オブジェクトの配列。</p> -<h3 id="selectAll.28.29" name="selectAll.28.29">selectAll()</h3> -<p>ビューで表示されているノードを全て選択する。</p> -<pre class="eval">void selectAll(); -</pre> -<h6 id="Parameters" name="Parameters">パラメータ</h6> -<p>無し。</p> -<h3 class="editable" id="参照"><span>参照 </span></h3> -<div class="editIcon"> - <a href="/../../../../ja/Core_JavaScript_1.5_Reference/Global_Objects/RegExp#" style="" title="編集部分"><span class="icon"><img alt="編集部分" class="sectionedit" src="../../../../skins/common/icons/icon-trans.gif"></span></a></div> -<ul> - <li><a href="/ja/Displaying_Places_information_using_views" title="ja/Displaying Places information using views">Displaying Places information using views</a></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiprefbranch/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiprefbranch/index.html deleted file mode 100644 index 8333329cce..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiprefbranch/index.html +++ /dev/null @@ -1,494 +0,0 @@ ---- -title: nsIPrefBranch -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIPrefBranch -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIPrefBranch ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/modules/libpref/public/nsIPrefBranch.idl" rel="custom">modules/libpref/public/nsIPrefBranch.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -このインターフェースは preferences dataを操作するために使われます。対応するオブジェクトはpreferences service (nsIPrefService) から取得することができ、デフォルト値やアプリケーションのuser preferencesを参照したり変更したりするために使うことができます。 -</span> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 13 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10)</span></div> -</div> -<p>このオブジェクトは自身が指し示す"branch"の起点となるpreference木の"root"値を伴って生成されます。各preferencesにはこのrootに続く最後の部分のみを使ってアクセスすることができます。 例えばオブジェクトが"browser.startup."をrootとして生成された場合、"browser.startup.page"、"browser.startup.homepage"、"browser.startup.homepage_override"などに対してGet/Setを行う際には"page"、"homepage"、"homepage_override"と指定することができます。</p> -<h2 id="Method_overview" name="Method_overview">Method overview</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#addObserver()">addObserver</a>(in string aDomain, in nsIObserver aObserver, in boolean aHoldWeak);</code> </td> - </tr> - <tr> - <td><code>void <a href="#clearUserPref()">clearUserPref</a>(in string aPrefName);</code></td> - </tr> - <tr> - <td><code>void <a href="#deleteBranch()">deleteBranch</a>(in string aStartingAt);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#getBoolPref()">getBoolPref</a>(in string aPrefName);</code></td> - </tr> - <tr> - <td><code>string <a href="#getCharPref()">getCharPref</a>(in string aPrefName);</code></td> - </tr> - <tr> - <td><code>void <a href="#getChildList()">getChildList</a>(in string aStartingAt, [optional] out unsigned long aCount, [array, size_is(aCount), retval] out string aChildArray);</code></td> - </tr> - <tr> - <td><code>void <a href="#getComplexValue()">getComplexValue</a>(in string aPrefName, in nsIIDRef aType, [iid_is(aType), retval] out nsQIResult aValue);</code></td> - </tr> - <tr> - <td><code>long <a href="#getIntPref()">getIntPref</a>(in string aPrefName);</code></td> - </tr> - <tr> - <td><code>long <a href="#getPrefType()">getPrefType</a>(in string aPrefName);</code></td> - </tr> - <tr> - <td><code>void <a href="#lockPref()">lockPref</a>(in string aPrefName);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#prefHasUserValue()">prefHasUserValue</a>(in string aPrefName);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#prefIsLocked()">prefIsLocked</a>(in string aPrefName);</code></td> - </tr> - <tr> - <td><code>void <a href="#removeObserver()">removeObserver</a>(in string aDomain, in nsIObserver aObserver);</code> </td> - </tr> - <tr> - <td><code>void <a href="#resetBranch()">resetBranch</a>(in string aStartingAt);</code></td> - </tr> - <tr> - <td><code>void <a href="#setBoolPref()">setBoolPref</a>(in string aPrefName, in long aValue);</code></td> - </tr> - <tr> - <td><code>void <a href="#setCharPref()">setCharPref</a>(in string aPrefName, in string aValue);</code></td> - </tr> - <tr> - <td><code>void <a href="#setComplexValue()">setComplexValue</a>(in string aPrefName, in nsIIDRef aType, in nsISupports aValue);</code></td> - </tr> - <tr> - <td><code>void <a href="#setIntPref()">setIntPref</a>(in string aPrefName, in long aValue);</code></td> - </tr> - <tr> - <td><code>void <a href="#unlockPref()">unlockPref</a>(in string aPrefName);</code></td> - </tr> - </tbody> -</table> -<h2 id="Attributes" name="Attributes">Attributes</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Attribute</td> - <td class="header">Type</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>root</code></td> - <td><code><a href="/en-US/docs/string" title="en/string">string</a></code></td> - <td>Called to get the root on which this branch is based, such as "browser.startup." <strong>Read only.</strong></td> - </tr> - </tbody> -</table> -<h2 id="Constants" name="Constants">Constants</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Constant</td> - <td class="header">Value</td> - <td class="header">Description</td> - </tr> - <tr> - <td><code>PREF_INVALID</code></td> - <td><code>0</code></td> - <td><code>long</code></td> - </tr> - <tr> - <td><code>PREF_STRING</code></td> - <td><code>32</code></td> - <td><code>long</code> data type.</td> - </tr> - <tr> - <td><code>PREF_INT</code></td> - <td><code>64</code></td> - <td><code>long</code> data type.</td> - </tr> - <tr> - <td><code>PREF_BOOL</code></td> - <td><code>128</code></td> - <td><code>long</code> data type.</td> - </tr> - </tbody> -</table> -<h2 id="Methods" name="Methods">Methods</h2> -<h3 id="addObserver">addObserver()</h3> -<p>preference change observerを追加します。preferenceに変化があると以下の引数が<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIObserver#observe()">nsIObserver.observe()</a></code>に渡されます:</p> -<p><code>aSubject</code> - <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrefBranch" title="">nsIPrefBranch</a></code> オブジェクト (this)。</p> -<p><code>aTopic</code> - <code>NS_PREFBRANCH_PREFCHANGE_TOPIC_ID で定義される文字列。</code></p> -<p><code>aData</code> - 変更があったpreferenceの名前(<code>aSubject</code>の"root"に対する相対値)</p> -<p><code>aSubject.get*Pref(aData)</code> で変更後の新しい値を得ることができます。例えば observer が<code>addObserver("bar.", ...)で</code><code>"foo."を起点とするbranchに対して登録を行った場合、</code><code>"foo.bar.baz"に対する変更がその</code>observerを起こします。その時の<code>aDataは</code><code>"bar.baz"</code>になります。</p> -<pre class="eval">void addObserver( - in string aDomain, - in nsIObserver aObserver, - in boolean aHoldWeak -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aDomain</code></dt> - <dd> - 変更を監視したい preference 。完全なbranchを指定することもできます。 例えば "root" <code>prefbranch</code> から <code>addObserver("foo.bar.", ...)</code> を呼ぶと <code>foo.bar.baz</code> と <code>foo.bar.bzipを監視できます</code>。</dd> - <dt> - <code>aObserver</code></dt> - <dd> - preference の変更通知を受け取るオブジェクト。</dd> - <dt> - <code>aHoldWeak</code></dt> - <dd> - <code>true</code> を指定すると <code>aObserver の weak reference を保持します。この場合オブジェクトは</code> <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupportsWeakReference" title="">nsISupportsWeakReference</a></code> インターフェースを実装する必要があり、実装されていない場合は失敗します。<code>false</code> を指定すると strong reference を保持します。</dd> -</dl> -<h3 id="clearUserPref" name="clearUserPref()">clearUserPref()</h3> -<p>Called to clear a user set value from a specific preference. This will, in effect, reset the value to the default value. If no default value exists the preference will cease to exist.</p> -<div class="blockIndicator note"><strong>註:</strong> This method does nothing if the prefbranch it is called on is a default branch.</div> -<pre class="eval">void clearUserPref( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The preference to be cleared.</dd> -</dl> -<h6 id="Remarks_2">Remarks</h6> -<div class="geckoVersionNote"> - <div class="geckoVersionHeading"> -Gecko 6.0 note -<div style="font-size: 9px; line-height: 1; font-style: italic;">(Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)</div> -</div> - <p>Prior to Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3), this method would throw an exception if there was no user value set for the specified preference. Now, this method never throws. Instead, it simply does nothing.</p> -</div> -<h3 id="deleteBranch" name="deleteBranch()">deleteBranch()</h3> -<p>Called to remove all of the preferences referenced by this branch.</p> -<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on both.</div> -<pre class="eval">void deleteBranch( - in string aStartingAt -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aStartingAt</code></dt> - <dd> - The point on the branch at which to start the deleting preferences. Pass in "" to remove all preferences referenced by this branch.</dd> -</dl> -<h3 id="getBoolPref" name="getBoolPref()">getBoolPref()</h3> -<p>Called to get the state of an individual boolean preference.</p> -<pre class="eval">boolean getBoolPref( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The boolean preference to get the state of.</dd> -</dl> -<h6 id="Return_value" name="Return_value">Return value</h6> -<p>The value of the requested boolean preference.</p> -<h3 id="getCharPref" name="getCharPref()">getCharPref()</h3> -<p>Called to get the state of an individual string preference.</p> -<pre class="eval">string getCharPref( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The string preference to retrieve.</dd> -</dl> -<h6 id="Return_value" name="Return_value">Return value</h6> -<p>Returns <code>string</code> - The value of the requested string preference.</p> -<h3 id="getChildList" name="getChildList()">getChildList()</h3> -<p>Returns an array of strings representing the child preferences of the <code>root</code> of this branch.</p> -<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on both.</div> -<p>(To call from javascript use <code>children = nsIPrefBranch.getChildList("",obj)</code>, which will fill in obj.value with the count and <em>return</em> an array of keys! (It is <em>not</em> void in javascript)</p> -<pre class="eval">void getChildList( - in string aStartingAt, - out unsigned long aCount, - [array, size_is(aCount), retval] out string aChildArray -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aStartingAt</code></dt> - <dd> - The point on the branch at which to start enumerating the child preferences. Pass in "" to enumerate all preferences referenced by this branch.</dd> - <dt> - <code>aCount</code> <span class="inlineIndicator optional optionalInline">Optional from Gecko 2.0</span></dt> - <dd> - Receives the number of elements in the array.</dd> - <dt> - <code>aChildArray</code></dt> - <dd> - Receives the array of child preferences.</dd> -</dl> -<h3 id="getComplexValue" name="getComplexValue()">getComplexValue()</h3> -<p>Called to get the state of an individual complex preference. A complex preference is a preference which represents an XPCOM object that can not be easily represented using a standard boolean, integer or string value.</p> -<pre class="eval">void getComplexValue( - in string aPrefName, - in nsIIDRef aType, - [iid_is(aType), retval] out nsQIResult aValue -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The complex preference to get the value of.</dd> - <dt> - <code>aType</code></dt> - <dd> - The XPCOM interface that this complex preference represents. Interfaces currently supported are: - <ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsILocalFile" title="">NsILocalFile</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsISupportsString" title="">NsISupportsString</a></code> (UniChar)</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIPrefLocalizedString" title="">NsIPrefLocalizedString</a></code> (Localized UniChar)</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIFileSpec" title="">NsIFileSpec</a></code> (deprecated - to be removed eventually)</li> - </ul> - </dd> - <dt> - <code>aValue</code></dt> - <dd> - The XPCOM object into which to the complex preference value should be retrieved.</dd> -</dl> -<h3 id="getIntPref" name="getIntPref()">getIntPref()</h3> -<p>Called to get the state of an individual integer preference.</p> -<pre class="eval">long getIntPref( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The integer preference to get the value of.</dd> -</dl> -<h6 id="Return_value" name="Return_value">Return value</h6> -<p>Returns <code>long</code> - The value of the requested integer preference.</p> -<h3 id="getPrefType" name="getPrefType()">getPrefType()</h3> -<p>Called to determine the type of a specific preference.</p> -<pre class="eval">long getPrefType( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The preference to get the type of.</dd> -</dl> -<h6 id="Return_value" name="Return_value">Return value</h6> -<p>Returns <code>long</code> - A value representing the type of the preference. This value will be <code>PREF_STRING</code>, <code>PREF_INT, PREF_BOOL,</code> or <code>PREF_INVALID</code>.</p> -<h3 id="lockPref" name="lockPref()">lockPref()</h3> -<p>Called to lock a specific preference. Locking a preference will cause the preference service to always return the default value regardless of whether there is a user set value or not.</p> -<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the default branch.</div> -<pre class="eval">void lockPref( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The preference to be locked.</dd> -</dl> -<h3 id="prefHasUserValue" name="prefHasUserValue()">prefHasUserValue()</h3> -<p>Called to check if a specific preference has a user value associated to it.</p> -<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the user branch.</div> -<div class="blockIndicator note"><strong>註:</strong> If a preference was manually set to a value that equals the default value, then the preference no longer has a user set value, i.e. it is considered reset to its default value. In particular, this method will return <code>false</code> for such a preference and the preference will not be saved to a file by <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIPrefService#savePrefFile()">nsIPrefService.savePrefFile()</a></code>.</div> -<pre class="eval">boolean prefHasUserValue( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The preference to be tested.</dd> -</dl> -<h6 id="Return_value" name="Return_value">Return value</h6> -<p>Returns <code>boolean</code> - <code>true</code> The preference has a user set value. <code>false</code> The preference only has a default value.</p> -<h3 id="prefIsLocked" name="prefIsLocked()">prefIsLocked()</h3> -<p>Called to check if a specific preference is locked. If a preference is locked calling its Get method will always return the default value.</p> -<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the default branch.</div> -<pre class="eval">boolean prefIsLocked( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The preference to be tested.</dd> -</dl> -<h6 id="Return_value" name="Return_value">Return value</h6> -<p>Returns <code>boolean</code> - <code>true</code> The preference is locked. <code>false</code> The preference is not locked.</p> -<h3 id="removeObserver">removeObserver()</h3> -<p>Remove a preference change observer.</p> -<div class="blockIndicator note"><strong>註:</strong> You must call <code>removeObserver</code> method on the same nsIPrefBranch instance on which you called <a href="#addObserver()">addObserver</a> method in order to remove <code>aObserver</code>; otherwise, the observer will not be removed.</div> -<pre class="eval"> void removeObserver( - in string aDomain, - in nsIObserver aObserver - ); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aDomain</code></dt> - <dd> - The preference which is being observed for changes.</dd> - <dt> - <code>aObserver</code></dt> - <dd> - An observer previously registered with <a href="#addObserver()">addObserver</a>.</dd> -</dl> -<h3 id="resetBranch" name="resetBranch()">resetBranch()</h3> -<p>Called to reset all of the preferences referenced by this branch to their default values.</p> -<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the user branch.</div> -<div class="blockIndicator note"><strong>註:</strong> As of Firefox 3.0, this function has not yet been implemented.</div> -<pre class="eval">void resetBranch( - in string aStartingAt -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aStartingAt</code></dt> - <dd> - The point on the branch at which to start the resetting preferences to their default values. Pass in "" to reset all preferences referenced by this branch.</dd> -</dl> -<h3 id="setBoolPref" name="setBoolPref()">setBoolPref()</h3> -<p>Called to set the state of an individual boolean preference.</p> -<pre class="eval">void setBoolPref( - in string aPrefName, - in long aValue -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The boolean preference to set the state of.</dd> - <dt> - <code>aValue</code></dt> - <dd> - The boolean value to set the preference to.</dd> -</dl> -<h3 id="setCharPref" name="setCharPref()">setCharPref()</h3> -<p>Called to set the state of an individual string preference.</p> -<div class="note"> - <strong>Note:</strong> preferences システムは大量のデータを保持するようには設計されていません。全ての preferences は単一のファイルに保存されアプリケーションが立ち上がる際に読み込まれます。文字列のpreferenceが最大どれだけのデータが保存できるだろうかと疑問に思った場合は、<a href="/en-US/docs/Code_snippets/File_I_O" title="en/Code snippets/File I//O">flat file</a> や <a href="/en-US/docs/Storage" title="en/Storage">sqlite database</a> など別の方法で保存することを検討してください。</div> -<pre class="eval">void setCharPref( - in string aPrefName, - in string aValue -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The string preference to set.</dd> - <dt> - <code>aValue</code></dt> - <dd> - The string value to set the preference to.</dd> -</dl> -<h3 id="setComplexValue" name="setComplexValue()">setComplexValue()</h3> -<p>Called to set the state of an individual complex preference. A complex preference is a preference which represents an XPCOM object that can not be easily represented using a standard boolean, integer or string value.</p> -<pre class="eval">void setComplexValue( - in string aPrefName, - in nsIIDRef aType, - in nsISupports aValue -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The complex preference to set the value of.</dd> - <dt> - <code>aType</code></dt> - <dd> - The XPCOM interface that this complex preference represents. Interfaces currently supported are: - <ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsILocalFile" title="">NsILocalFile</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsISupportsString" title="">NsISupportsString</a></code> (UniChar)</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIPrefLocalizedString" title="">NsIPrefLocalizedString</a></code> (Localized UniChar)</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIFileSpec" title="">NsIFileSpec</a></code> (deprecated - to be removed eventually)</li> - </ul> - </dd> - <dt> - <code>aValue</code></dt> - <dd> - The XPCOM object from which to set the complex preference value.</dd> -</dl> -<h3 id="setIntPref" name="setIntPref()">setIntPref()</h3> -<p>Called to set the state of an individual integer preference.</p> -<pre class="eval">void setIntPref( - in string aPrefName, - in long aValue -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The integer preference to set the value of.</dd> - <dt> - <code>aValue</code></dt> - <dd> - The integer value to set the preference to.</dd> -</dl> -<h3 id="unlockPref" name="unlockPref()">unlockPref()</h3> -<p>Called to unlock a specific preference. Unlocking a previously locked preference allows the preference service to once again return the user set value of the preference.</p> -<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the default branch.</div> -<pre class="eval">void unlockPref( - in string aPrefName -); -</pre> -<h6 id="Parameters" name="Parameters">Parameters</h6> -<dl> - <dt> - <code>aPrefName</code></dt> - <dd> - The preference to be unlocked.</dd> -</dl> -<h2 id="Remarks" name="Remarks">Remarks</h2> -<p>Registering as a preference observer can open an object to potential cyclical references which will cause memory leaks. These cycles generally occur because an object both registers itself as an observer (causing the branch to hold a reference to the observer) and holds a reference to the branch object for the purpose of getting/setting preference values. There are 3 approaches which have been implemented in an attempt to avoid these situations:</p> -<ol> - <li>The nsPrefBranch object supports <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupportsWeakReference" title="">nsISupportsWeakReference</a></code>. Any consumer may hold a weak reference to it instead of a strong one.</li> - <li>The nsPrefBranch object listens for xpcom-shutdown and frees all of the objects currently in its observer list. This ensures that long lived objects (services for example) will be freed correctly.</li> - <li>The observer can request to be held as a weak reference when it is registered. This insures that shorter lived objects (say one tied to an open window) will not fall into the cyclical reference trap.</li> -</ol> -<p>The list of registered observers may be changed during the dispatch of nsPref:changed notification. However, the observers are not guaranteed to be notified in any particular order, so you can't be sure whether the added/removed observer will be called during the notification when it is added/removed. </p> -<p>It is possible to change preferences during the notification.</p> -<p>It is not safe to change observers during this callback in releases before <span title="(Firefox 3)">Gecko 1.9</span>. If you want a safe way to remove a preference observer, please use an <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITimer" title="">nsITimer</a></code>.</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunescapehtml/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunescapehtml/index.html deleted file mode 100644 index 52e2dc8677..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunescapehtml/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: nsIScriptableUnescapeHTML -slug: >- - Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIScriptableUnescapeHTML -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptableUnescapeHTML ---- -<p><code>nsIScriptableUnescapeHTML</code> インタフェースは HTML 文字列をアンエスケープするユーティリティ・インタフェースです。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIScriptableUnescapeHTML.idl" rel="custom">toolkit/components/feeds/public/nsIScriptableUnescapeHTML.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>サービスとして <code>@mozilla.org/feed-unescapehtml;1</code> による実装:</p> -<pre class="eval">var gUnescapeHTML = Components.classes["@mozilla.org/feed-unescapehtml;1"] - .getService(Components.interfaces.nsIScriptableUnescapeHTML); -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>AString <a href="#unescape.28.29">unescape</a>(in AString src);</code></td> - </tr> - <tr> - <td><code>nsIDOMDocumentFragment <a href="#parseFragment.28.29">parseFragment</a>(in AString fragment, in PRBool isXML, in nsIURI baseURI, in nsIDOMElement element);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="unescape.28.29" name="unescape.28.29">unescape()</h3> -<p>文字列の全てのエンティティを Unicode 文字に変換します。</p> -<pre class="eval"> AString unescape( - in AString src - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6> -<dl> - <dt> - <tt>src</tt></dt> - <dd> - アンエスケープする HTML 文字列のポインタ。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>アンエスケープされた文字列。</p> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_FAILURE</code></dt> - <dd> - 文字列をアンエスケープできない。</dd> -</dl> -<h3 id="parseFragment.28.29" name="parseFragment.28.29">parseFragment()</h3> -<p>指定された文字列を既存の DOM 要素に追加する。これは <code>nsContentUtils::CreateContextualFragment</code> のフィード特有なバージョンです。</p> -<pre class="eval"> nsIDOMDocumentFragment parseFragment( - in AString fragment, - in PRBool isXML, - in nsIURI baseURI, - in nsIDOMElement element - ); -</pre> -<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2">パラメータ</h6> -<dl> - <dt> - <tt>fragment</tt></dt> - <dd> - <tt>element</tt> に追加する文字列へのポインタ。</dd> - <dt> - <tt>isXML</tt></dt> - <dd> - もし <tt>fragment</tt> が XML 文字列であればこれを <code>true</code> に設定してください。そうでなければ、<code>false</code> に設定してください。</dd> - <dt> - <tt>baseURI</tt></dt> - <dd> - その断片に含まれる URI を解決するための base URI へのポインタ。このパラメータは <code>isXML</code> が <code>false</code> の時は無視されます。</dd> - <dt> - <tt>element</tt></dt> - <dd> - その断片を追加する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMElement" title="">nsIDOMElement</a></code> へのポインタ。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>新しいテキストが追加された要素の <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMDocumentFragment" title="">nsIDOMDocumentFragment</a></code>。</p> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_FAILURE</code></dt> - <dd> - 要素にテキストを追加できない。</dd> -</dl> -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMDocumentFragment" title="">nsIDOMDocumentFragment</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMElement" title="">nsIDOMElement</a></code></p> -<p><span class="comment">Interwiki link</span></p> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunicodeconverter/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunicodeconverter/index.html deleted file mode 100644 index 512346dbed..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunicodeconverter/index.html +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: nsIScriptableUnicodeConverter -slug: >- - Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter -tags: - - Interfaces - - 'Interfaces:Scriptable' - - Unicode - - XPCOM - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptableUnicodeConverter ---- -<div><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/intl/uconv/idl/nsIScriptableUConv.idl" rel="custom">intl/uconv/idl/nsIScriptableUConv.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -このインターフェイスは、スクリプトで使用するための Unicode エンコーダーです。 -</span> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8 (Firefox 1.5 / Thunderbird 1.5 / SeaMonkey 1.0)</span></div> -</div></div> - -<p>Implemented by: <code>@mozilla.org/intl/scriptableunicodeconverter</code>. To create an instance, use:</p> - -<pre>var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] - .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); -</pre> - -<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>ACString <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#ConvertFromUnicode()" title="nsIScriptableUnicodeConverter#ConvertFromUnicode()">ConvertFromUnicode</a>(in AString aSrc);</code></td> - </tr> - <tr> - <td><code>ACString <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#Finish()" title="nsIScriptableUnicodeConverter#Finish()">Finish</a>();</code></td> - </tr> - <tr> - <td><code>AString <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#ConvertToUnicode()" title="nsIScriptableUnicodeConverter#ConvertToUnicode()">ConvertToUnicode</a>(in ACString aSrc);</code></td> - </tr> - <tr> - <td><code>AString <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#convertFromByteArray()" title="nsIScriptableUnicodeConverter#convertFromByteArray()">convertFromByteArray</a>([const,array,size_is(aCount)] in octet aData, in unsigned long aCount);</code></td> - </tr> - <tr> - <td><code>void <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#convertToByteArray()" title="nsIScriptableUnicodeConverter#convertToByteArray()">convertToByteArray</a>(in AString aString,[optional] out unsigned long aLen,[array, size_is(aLen),retval] out octet aData);</code></td> - </tr> - <tr> - <td><code><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code> <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#convertToInputStream()" title="nsIScriptableUnicodeConverter#convertToInputStream()">convertToInputStream</a>(in AString aString);</code></td> - </tr> - </tbody> -</table> - -<h2 id="Attributes" name="Attributes">属性</h2> - -<table class="standard-table" style="width: auto;"> - <tbody> - <tr> - <td class="header">属性名</td> - <td class="header">型</td> - <td class="header">概要</td> - </tr> - <tr> - <td><code>charset</code></td> - <td><code>string</code></td> - <td>現在の文字セット。要求された文字セットがサポートされていない場合、 <code>NS_ERROR_UCONV_NOCONV</code> がスローされる。</td> - </tr> - </tbody> -</table> - -<h2 id="Methods" name="Methods">メソッド</h2> - -<h3 id="ConvertFromUnicode" name="ConvertFromUnicode()">ConvertFromUnicode()</h3> - -<p>Converts the data from Unicode to one Charset. Returns the converted string. After converting, Finish should be called and its return value appended to this return value.</p> - -<pre>ACString ConvertFromUnicode( - in AString aSrc -); -</pre> - -<h3 id="Finish" name="Finish()">Finish()</h3> - -<p>Returns the terminator string. Should be called after ConvertFromUnicode() and appended to that function's return value.</p> - -<pre>ACString Finish(); -</pre> - -<h3 id="ConvertToUnicode" name="ConvertToUnicode()">ConvertToUnicode()</h3> - -<p>Converts the data from one Charset to Unicode.</p> - -<pre>AString ConvertToUnicode( - in ACString aSrc -); -</pre> - -<h3 id="convertFromByteArray" name="convertFromByteArray()">convertFromByteArray()</h3> - -<p>Converts an array of bytes to a unicode string.</p> - -<pre>AString convertFromByteArray( - [const,array,size_is(aCount)] in octet aData, - in unsigned long aCount -); -</pre> - -<h3 id="convertToByteArray" name="convertToByteArray()">convertToByteArray()</h3> - -<p>Convert a unicode string to an array of bytes. Finish does not need to be called.</p> - -<pre>void convertToByteArray(in AString aString, - out unsigned long aLen, <span class="inlineIndicator optional optionalInline">Optional</span> - [array, size_is(aLen),retval] out octet aData -); -</pre> - -<h3 id="convertToInputStream" name="convertToInputStream()">convertToInputStream()</h3> - -<p>Converts a Unicode string to an input stream. The bytes in the stream are encoded according to the <code>charset</code> attribute. The returned stream is non-blocking.</p> - -<pre>nsIInputStream convertToInputStream( - in AString aString -); -</pre> - -<h6 id="convertToInputStream-Parameters" name="convertToInputStream-Parameters">引数</h6> - -<dl> - <dt><code>aString</code></dt> - <dd>The text to encode to the stream. The text is encoded into the character set specified by the <code>charset</code> attribute.</dd> -</dl> - -<h6 id="convertToInputStream-Return_value" name="convertToInputStream-Return_value">戻り値</h6> - -<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code> that will present the text specified in <code>aString</code> as its data.</p> - -<h2 id="Examples" name="Examples">例</h2> - -<p>See <a href="/ja/docs/Reading_textual_data" title="Reading_textual_data">Reading textual data</a> and <a href="/ja/docs/Writing_textual_data" title="Writing_textual_data">Writing textual data</a> for examples.</p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisessionstore/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisessionstore/index.html deleted file mode 100644 index b77b282637..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisessionstore/index.html +++ /dev/null @@ -1,419 +0,0 @@ ---- -title: nsISessionStore -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsISessionStore -tags: - - Interfaces - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsISessionStore ---- -<p><code>nsISessionStore</code> インタフェースは、ブラウザのセッション、タブやウィンドウと関連付けてデータを保存する手段を拡張機能やコードへ提供します。 <a href="ja/Session_store_API">Session store API</a> も参照してください。</p> -<p>この API は最上位の <code>browser.xul</code> ウィンドウに対して機能します。詳細については <a href="#Note_on_windows">#Note on windows</a> を参照してください。</p> -<p>APIの呼び出しを成功させるためには、ユーザ設定値 <code><b>browser.sessionstore.enabled</b></code> は true でなければなりません。 <a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled"> を参照してください。 </a></p> -<p><br> - <a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled"></a></p><div style="border: solid #ddd 2px; margin-bottom: 12px;"><a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled"> -</a><div style="background: #eee; padding: 2px;"><a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled"><code></code></a><code><a href="https://dxr.mozilla.org/mozilla-central/source/browser/components/sessionstore/nsISessionStore.idl" rel="custom">browser/components/sessionstore/nsISessionStore.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div> -</div> -<p><a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled">継承元: </a><a href="ja/NsISupports">nsISupports</a></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="ja/NsISessionStore#deleteTabValue.28.29">deleteTabValue</a>(in nsIDOMNode aTab, in AString aKey);</code></td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#deleteWindowValue.28.29">deleteWindowValue</a>(in nsIDOMWindow aWindow, in AString aKey);</code></td> - </tr> - <tr> - <td><code>nsIDOMNode <a href="ja/NsISessionStore#duplicateTab.28.29">duplicateTab</a>(in nsIDOMWindow aWindow, in nsIDOMNode aTab);</code> </td> - </tr> - <tr> - <td><code>AString <a href="ja/NsISessionStore#getBrowserState.28.29">getBrowserState</a>();</code></td> - </tr> - <tr> - <td><code>unsigned long <a href="ja/NsISessionStore#getClosedTabCount.28.29">getClosedTabCount</a>(in nsIDOMWindow aWindow);</code></td> - </tr> - <tr> - <td><code>AString <a href="ja/NsISessionStore#getClosedTabData.28.29">getClosedTabData</a>(in nsIDOMWindow aWindow);</code></td> - </tr> - <tr> - <td><code>AString <a href="ja/NsISessionStore#getTabState.28.29">getTabState</a>(in nsIDOMNode aTab);</code> </td> - </tr> - <tr> - <td><code>AString <a href="ja/NsISessionStore#getTabValue.28.29">getTabValue</a>(in nsIDOMNode aTab, in AString aKey);</code></td> - </tr> - <tr> - <td><code>AString <a href="ja/NsISessionStore#getWindowState.28.29">getWindowState</a>(in nsIDOMWindow aWindow);</code></td> - </tr> - <tr> - <td><code>AString <a href="ja/NsISessionStore#getWindowValue.28.29">getWindowValue</a>(in nsIDOMWindow aWindow, in AString aKey);</code></td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#init.28.29">init</a>(in nsIDOMWindow aWindow);</code></td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#persistTabAttribute.28.29">persistTabAttribute</a>(in AString aName);</code></td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#setBrowserState.28.29">setBrowserState</a>(in AString aState);</code></td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#setTabState.28.29">setTabState</a>(in nsIDOMNode aTab, in AString aState);</code> </td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#setTabValue.28.29">setTabValue</a>(in nsIDOMNode aTab, in AString aKey, in AString aStringValue);</code></td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#setWindowState.28.29">setWindowState</a>(in nsIDOMWindow aWindow, in AString aState, in boolean aOverwrite);</code></td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#setWindowValue.28.29">setWindowValue</a>(in nsIDOMWindow aWindow, in AString aKey, in AString aStringValue);</code></td> - </tr> - <tr> - <td><code>void <a href="ja/NsISessionStore#undoCloseTab.28.29">undoCloseTab</a>(in nsIDOMWindow aWindow, in unsigned long aIndex);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="deleteTabValue.28.29" name="deleteTabValue.28.29">deleteTabValue()</h3> -<p>指定されたウィンドウ<span style="color: darkgreen; background: #ef9;">【訳注: 「タブ」の誤り?】</span>から値を削除する。</p> -<pre class="eval"> void deleteTabValue( - in nsIDOMNode aTab, - in AString aKey - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>aTab</tt></dt> - <dd> - どのタブから値を削除するか。</dd> - <dt> - <tt>aKey</tt></dt> - <dd> - どのキーに対する値を削除するか。</dd> -</dl> -<h3 id="deleteWindowValue.28.29" name="deleteWindowValue.28.29">deleteWindowValue()</h3> -<p>指定されたウィンドウから値を削除する。</p> -<pre class="eval"> void deleteWindowValue( - in nsIDOMWindow aWindow, - in AString aKey - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - どのウィンドウから値を削除するか。</dd> - <dt> - <tt>aKey</tt></dt> - <dd> - どのキーに対する値を削除するか。</dd> -</dl> -<h3 id="duplicateTab.28.29" name="duplicateTab.28.29">duplicateTab()</h3> -<div class="blockIndicator standardNote"> - <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 における注記</a></p> - <p style="font-weight: 400;">このメソッドは Firefox 3 にて導入されました。</p> -</div> 指定されたタブをできるだけ完全な形で複製する。 -<pre class="eval"> nsIDOMNode duplicateTab( - in nsIDOMWindow aWindow, - in nsIDOMNode aTab - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - 複製するタブが属するウィンドウ。</dd> - <dt> - <tt>aTab</tt></dt> - <dd> - 複製するタブ。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>新しいタブを表す <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMNode" title="">nsIDOMNode</a></code> で、その内容は <tt>aTab</tt> の複製である。</p> -<h3 id="getBrowserState.28.29" name="getBrowserState.28.29">getBrowserState()</h3> -<p>すべてのウィンドウとそのすべてのタブを含む、ブラウザ全体の現在の状態を返す。</p> -<pre class="eval"> AString getBrowserState(); -</pre> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>ブラウザ上のすべてのウィンドウについて、現在の状態を表す <a href="ja/JSON">JSON</a> 文字列。</p> -<h3 id="getClosedTabCount.28.29" name="getClosedTabCount.28.29">getClosedTabCount()</h3> -<p>引数で渡されたウィンドウについて、何個のタブを復元できるかを返す。</p> -<pre class="eval"> unsigned long getClosedTabCount( - in nsIDOMWindow aWindow - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - どのウィンドウから復元可能なタブの個数を取得するか。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6> -<p>そのウィンドウの復元可能なタブの個数。</p> -<h3 id="getClosedTabData.28.29" name="getClosedTabData.28.29">getClosedTabData()</h3> -<p>指定されたウィンドウについて、閉じたタブのリストを返す。</p> -<pre class="eval"> AString getClosedTabData( - in nsIDOMWindow aWindow - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - どのウィンドウからタブのリストを取得するか。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_4" name=".E6.88.BB.E3.82.8A.E5.80.A4_4">戻り値</h6> -<p><tt>aWindow</tt> で指定したウィンドウについての閉じたタブのリストを表す JSON 文字列。リストは Last In / First Out (LIFO) の順序であり、リストの先頭のアイテムは最後に閉じられたタブである。</p> -<h3 id="getTabState.28.29" name="getTabState.28.29">getTabState()</h3> -<div class="blockIndicator standardNote"> - <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 における注記</a></p> - <p style="font-weight: 400;">このメソッドは Firefox 3 にて導入されました。</p> -</div> 指定されたタブの状態を返す。 -<pre class="eval"> AString getTabState( - in nsIDOMNode aTab - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6> -<dl> - <dt> - <tt>aTab</tt></dt> - <dd> - どのタブの状態を返すか。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_5" name=".E6.88.BB.E3.82.8A.E5.80.A4_5">戻り値</h6> -<p>指定されたタブの状態を表す JSON 文字列。</p> -<div class="blockIndicator note"><strong>註:</strong> 戻り値の文字列は Cookie を含みません。もし Cookie も取得したいのであれば、代わりに <code><a href='"#getWindowState.28.29"'>getWindowState()</a></code> を使う必要があります。</div> -<h3 id="getTabValue.28.29" name="getTabValue.28.29">getTabValue()</h3> -<p>引数で渡されたウィンドウについて、キーに対応する値を返す。</p> -<pre class="eval"> AString getTabValue( - in nsIDOMNode aTab, - in AString aKey - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6> -<dl> - <dt> - <tt>aTab</tt></dt> - <dd> - どのタブから値を取得するか。</dd> - <dt> - <tt>aKey</tt></dt> - <dd> - どのキーに対応する値を取得するか。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_6" name=".E6.88.BB.E3.82.8A.E5.80.A4_6">戻り値</h6> -<p><code><a href="ja/NsISessionStore#setTabValue.28.29">setTabValue()</a></code> によって以前に <tt>aKey</tt> に対して割り当てられた文字列の値。</p> -<h3 id="getWindowState.28.29" name="getWindowState.28.29">getWindowState()</h3> -<p>ブラウザ上の指定されたひとつのウィンドウについて、現在の状態を返す。</p> -<pre class="eval"> AString getWindowState( - in nsIDOMWindow aWindow - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - どのウィンドウの状態から状態を取得するか。 <a href="#Note_on_windows">#Note on windows</a> を参照。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_7" name=".E6.88.BB.E3.82.8A.E5.80.A4_7">戻り値</h6> -<p><tt>aWindow</tt> によって指定されたウィンドウのみを含む、セッション状態を表す <a href="ja/JSON">JSON</a> 文字列。</p> -<p>browser.sessionstate.enabled が false の場合にこのメソッドを呼び出すと、 "aWindows[i] has no properties" というメッセージの例外が発生する。</p> -<h3 id="getWindowValue.28.29" name="getWindowValue.28.29">getWindowValue()</h3> -<p>あるウィンドウについて、引数で指定されたキーと関連付けられた値を返す。</p> -<pre class="eval"> AString getWindowValue( - in nsIDOMWindow aWindow, - in AString aKey - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_9" name=".E5.BC.95.E6.95.B0_9">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - どのウィンドウから値を取得するか。</dd> - <dt> - <tt>aKey</tt></dt> - <dd> - どのキーに対応する値を取得するか。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_8" name=".E6.88.BB.E3.82.8A.E5.80.A4_8">戻り値</h6> -<p>指定されたキーに対して以前保存された文字列の値。もしキーに対する値がセットされていなければ、空の文字列を返す。</p> -<h3 id="init.28.29" name="init.28.29">init()</h3> -<p>セッションストアサービスを初期化する。</p> -<div class="note"> - <b>注意:</b> この関数はブラウザのみから利用されることを意図しており、拡張機能はこれを呼び出すべきではありません。</div> -<pre class="eval"> void init( - in nsIDOMWindow aWindow - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_10" name=".E5.BC.95.E6.95.B0_10">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - どのウィンドウに対してサービスを初期化するか。</dd> -</dl> -<h3 id="setBrowserState.28.29" name="setBrowserState.28.29">setBrowserState()</h3> -<p>現在のブラウザの状態をセットする。</p> -<pre class="eval"> void setBrowserState( - in AString aState - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_11" name=".E5.BC.95.E6.95.B0_11">引数</h6> -<dl> - <dt> - <tt>aState</tt></dt> - <dd> - 使用するセッション状態を表す JSON 文字列。</dd> -</dl> -<div class="note"> - <b>注意:</b> <code>setBrowserState()</code> を呼び出すと、現在のセッションが直ちに置き換わり、引数 <tt>aState</tt> で渡したアプリケーション全体の状態が復元されます。</div> -<h3 id="persistTabAttribute.28.29" name="persistTabAttribute.28.29">persistTabAttribute()</h3> -<p>すべての XUL のタブに対して、保存と復元を行う tab 要素の属性名をセットする。</p> -<pre class="eval"> void persistTabAttribute( - in AString aName - ); -</pre> -<div class="note"> - <b>注意:</b> 今のところ、どのタブに対して永続化する属性をセットするかを選択する手段はありません。このメソッドはすべてのタブに対して区別無く影響します。</div> -<h6 id=".E5.BC.95.E6.95.B0_12" name=".E5.BC.95.E6.95.B0_12">引数</h6> -<dl> - <dt> - <tt>aName</tt></dt> - <dd> - すべてのタブに対して、保存復元する属性の名前。</dd> -</dl> -<h3 id="setTabState.28.29" name="setTabState.28.29">setTabState()</h3> -<div class="blockIndicator standardNote"> - <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 における注記</a></p> - <p style="font-weight: 400;">このメソッドは Firefox 3 にて導入されました。</p> -</div> 指定されたタブに対して、状態をセットする。 -<pre class="eval"> void setTabState( - in nsIDOMNode aTab, - in AString aState - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_13" name=".E5.BC.95.E6.95.B0_13">引数</h6> -<dl> - <dt> - <tt>aTab</tt></dt> - <dd> - どのタブへ状態をセットするか。</dd> - <dt> - <tt>aState</tt></dt> - <dd> - タブへセットする、タブの状態を表す JSON 文字列。例えば <code><a href="#getTabState.28.29">getTabState()</a></code> によって取得したもの。</dd> -</dl> -<h3 id="setTabValue.28.29" name="setTabValue.28.29">setTabValue()</h3> -<p>タブに対して指定されたキーに対する値をセットする。</p> -<pre class="eval"> void setTabValue( - in nsIDOMNode aTab, - in AString aKey, - in AString aStringValue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_14" name=".E5.BC.95.E6.95.B0_14">引数</h6> -<dl> - <dt> - <tt>aTab</tt></dt> - <dd> - どのタブに対して値をセットするか。</dd> - <dt> - <tt>aKey</tt></dt> - <dd> - どのキーに対する値をセットするか。</dd> - <dt> - <tt>aStringValue</tt></dt> - <dd> - キー <tt>aKey</tt> に対する値としてセットする文字列。 JavaScript のオブジェクトについては <code><a href="ja/ToSource">toSource()</a></code> メソッドを利用することができる。また、 <code><a href="ja/Eval">eval()</a></code> 関数を使うことによって、より複雑なデータ(あるいはオブジェクト全体までも)が値として割り当てることができる。</dd> -</dl> -<h3 id="setWindowState.28.29" name="setWindowState.28.29">setWindowState()</h3> -<p>保存された状態を引数として渡し、ひとつのウィンドウへ状態をセットする。</p> -<pre class="eval"> void setWindowState( - in nsIDOMWindow aWindow, - in AString aState, - in boolean aOverwrite - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_15" name=".E5.BC.95.E6.95.B0_15">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - <tt>aState</tt> で示した状態をどの <a href="ja/NsIDOMWindow">ブラウザウィンドウ</a> に対してセットするか。</dd> - <dt> - <tt>aState</tt></dt> - <dd> - 指定したウィンドウに対して適用する、保存された状態。</dd> - <dt> - <tt>aOverwrite</tt></dt> - <dd> - もしこの引数が <code>true</code> であるなら、現在開かれているすべてのタブは削除され、状態 <tt>aState</tt> のタブへと置き換わります。もし <code>false</code> であれば、ウィンドウにすでにあるタブに <tt>aState</tt> のタブが追加されます。</dd> -</dl> -<h3 id="setWindowValue.28.29" name="setWindowValue.28.29">setWindowValue()</h3> -<p>指定したウィンドウに対し、引数で渡したキーに対応する値をセットする。</p> -<pre class="eval"> void setWindowValue( - in nsIDOMWindow aWindow, - in AString aKey, - in AString aStringValue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_16" name=".E5.BC.95.E6.95.B0_16">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - どのウィンドウに対して値をセットするか。</dd> - <dt> - <tt>aKey</tt></dt> - <dd> - どのキーに対する値をセットするか。</dd> - <dt> - <tt>aStringValue</tt></dt> - <dd> - キー <tt>aKey</tt> に対する値としてセットする文字列。 JavaScript のオブジェクトについては <code><a href="ja/ToSource">toSource()</a></code> メソッドを利用することができる。また、 <code><a href="ja/Eval">eval()</a></code> 関数を使うことによって、より複雑なデータ(あるいはオブジェクト全体までも)が値として割り当てることができる。</dd> -</dl> -<h3 id="undoCloseTab.28.29" name="undoCloseTab.28.29">undoCloseTab()</h3> -<p>指定したウィンドウにて、閉じたタブを開きなおす。</p> -<pre class="eval"> void undoCloseTab( - in nsIDOMWindow aWindow, - in unsigned long aIndex - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_17" name=".E5.BC.95.E6.95.B0_17">引数</h6> -<dl> - <dt> - <tt>aWindow</tt></dt> - <dd> - どのウィンドウで閉じたタブを開きなおすか。</dd> - <dt> - <tt>aIndex</tt></dt> - <dd> - 閉じたタブのうち、どのインデックス番号のタブを復元するか。この値は、0よりも大きく、 <code><a href="ja/NsISessionStore#getClosedTabCount.28.29">getClosedTabCount()</a></code> で返される値よりも小さくなければならない。閉じたタブのリストは Last In / First Out (LIFO) の順序で保存されており、インデックス番号が0のタブは最後に閉じたタブである。</dd> -</dl> -<h2 id="Note_on_windows" name="Note_on_windows">Note on windows</h2> -<p>The <code>nsISessionStore</code> API stores state information for certain windows inside the web brower. These windows are nsIDOMWindow objects that contain the <code>tabbrowser</code> that users see as tabs; the document in these windows is <code>browser.xul</code>.</p> -<p>For many extensions, those that overlay <code>browser.xul</code>, the appropriate window object for <code>nsISessionStore</code> is the global object <code>'window'</code>.</p> -<p>For Javascript running in windows other than the one you want to use in <code>nsISessionStore</code>, you need a <code>nsIDOMWindow</code> object containing <code>browser.xul</code>. This will be the outermost or root <code>nsIDOMWindow</code> in a <code>nsIXULWindow</code> (the window seen by users as a moveable frame on the display). This kind of DOMWindow object can be obtained from other <code>nsIDOMWindow</code> objects (like the sidebar window object) by applying the 'mainWindow' statement from <a href="ja/Working_with_windows_in_chrome_code">Working_with_windows_in_chrome_code</a>. This outermost or root window can also be obtained from the list returned by <code>nsIWindowMediator</code>; see example #3 in <a href="ja/Working_with_windows_in_chrome_code">Working_with_windows_in_chrome_code</a>. It can also be obtained from an <code>nsIXULWindow</code> using</p> -<pre class="eval">if (xul_win.docShell instanceof nsIInterfaceRequestor) { - var win = xul_win.docShell.getInterface(nsIDOMWindow); - ... -</pre> -<h2 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h2> -<p><a href="ja/NsISupports">nsISupports</a></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisupports_proxies/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisupports_proxies/index.html deleted file mode 100644 index 05589a89d5..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisupports_proxies/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: nsISupports proxies -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsISupports_proxies -tags: - - MDC Project - - NeedsUpdate - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsISupports_proxies ---- -<p>この文脈において、「プロキシ」とは、<code><a href="ja/NsISupports">nsISupports</a></code> から派生していてタイプライブラリを持つ任意のクラスのメソッドが、任意のプロセス中のスレッドにおいて呼び出しを行えるようにするスタブオブジェクトのことです。</p> -<p>nsISupports プロキシが必要な主な理由は、JavaScript と UI が一つのスレッド上にあることです。ひとつのスレッドがビジーの場合、他のスレッドはブロックされます。このことの良い例が XPInstall です。そのインストールスクリプトは、小さくかつ速く走る、多くの JavaScript とは異なっています。XPInstall インストールスクリプトは、しばしばとても複雑であり、また、解凍のためやネイティブなファイルシステムの動作のために、長い実行時間を要求します。もし XPInstall が UI スレッドの上で動作するのであれば、製品はスクリプトが完了するまで動作できなくなるでしょう。これは、あきらかにまずいです。このため、XPInstall は、それ自身のスレッドに移動します。現在 XPInstall は、製品が動作している時に、インストールを実行できます。しかし、現在 XPInstall はプログレスメーターや確認ダイアログのようなUI要素にアクセスできません。分離した非 UI スレッドが UI スレッド上で動作しているかのように見せるにはどうしたらよいでしょう。ここで、<code>nsISupports</code> プロキシのユーティリティを使います。</p> -<p>Seamonkey にかかわっている他の人々も同様の解決策を望んでいると思います。このドキュメントでは、nsISupports プロキシの使い方を説明しようと思います。また、<a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&rnum=1#939240fc3f5123a8"> もご参照ください。 </a></p> -<h3 id=".E3.81.A9.E3.81.86.E3.82.84.E3.81.A3.E3.81.A6.E4.BD.BF.E3.81.86.E3.81.8B.EF.BC.9F" name=".E3.81.A9.E3.81.86.E3.82.84.E3.81.A3.E3.81.A6.E4.BD.BF.E3.81.86.E3.81.8B.EF.BC.9F"><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&rnum=1#939240fc3f5123a8">どうやって使うか? </a></h3> -<div class="note"> - <p><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&rnum=1#939240fc3f5123a8">Mozilla 1.9 で API に変更が行われましたが、以下のコードは更新されていません。更新後のインターフェースとドキュメントは <code></code></a><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/proxy/public/nsIProxyObjectManager.idl" rel="custom">xpcom/proxy/public/nsIProxyObjectManager.idl</a></code> をご覧ください。<a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&rnum=1#939240fc3f5123a8"> もご参照ください。 </a></p> -</div> -<p><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&rnum=1#939240fc3f5123a8">ユーザの視点からいうと、</a><code><a href="ja/NsIProxyObjectManager">nsIProxyObjectManager</a></code> を調べるだけです。これには、二つの入口点があります。</p> -<pre class="eval">NS_IMETHOD GetProxyForObject(nsIEventQueue *destQueue, - const nsIID & iid, - nsISupports *object, - PRInt32 proxyType, - void * *result); - -NS_IMETHOD GetProxy(nsIEventQueue *destQueue, - const nsIID & cid, - nsISupports *aOuter, - const nsIID & iid, - PRInt32 proxyType, - void * *result); -</pre> -<p>2 つの API は基本的に同じです。違いは、最初の方はすでに作成した <code>object</code> オブジェクトを受け入れるのに対し、後の方は中でオブジェクトを作成することです。この生成は、目的のイベントキューで起きます。例えば、もしオブジェクトをリモートで使うだけでなく、リモートで作成したい場合、2 番目の API を使う必要があります。</p> -<p>要求した IID はタイプライブラリの中に存在しなければ - <i> - なりません</i> - 。このことは、それに対する IDL とタイプライブラリを作成しておかなければならないことを意味します。もしそうしない場合や私が何を言っているのか理解できない場合は、 <a class="external" href="http://www.mozilla-japan.org/scriptable/" rel="freelink">http://www.mozilla-japan.org/scriptable/</a> を見てください</p> -<p><code>proxyType</code> パラメータは、2 つのフラグのどちらかをとります。<code>PROXY_SYNC</code> または <code>PROXY_ASYNC</code> です。これら 2 つのフラグは、どちらも <code>PROXY_ALWAYS</code> と OR をとることができます。</p> -<p><code>PROXY_ALWAYS</code> は、現在のスレッドがなんであれ、プロキシオブジェクトがいつも作られることを保証します。もしこのフラグがセットされていなければ、プロキシオブジェクトマネージャは、現在のスレッド上のイベントキューと渡されてきたイベントキューを比較します。もしこれらが一致したら、 - <i> - プロキシ化されていない</i> - 、そのままのオブジェクトを返します。ほとんどの場合は、あなたはこのフラグをセットしたいでしょう。</p> -<p><code>PROXY_SYNC</code> は、メソッドが目的のスレッド上で実行されるまで、呼び出しているスレッドをブロックするため、単なる関数呼び出しを行っているように振舞います。これが通常でかつデフォルトの場合です。</p> -<p>一方、<code>PROXY_ASYNC</code> は、「飛んでいって (戻るのを) 忘れてしまう」メソッド呼び出しです。このフラグで作成されたオブジェクトでの呼び出しは、直ちに復帰し、復帰情報は失われます。NS_OK が (復帰値として) 返ってきます。</p> -<div class="warning"> - <code>PROXY_ASYNC</code> についての<b>警告</b>: - <p>このフラグを使う際には、よく気をつける必要があります。呼び出しているスレッドが終了した時、呼び出し側のスタックにアクセスしているすべてのメソッドが失敗します。例えば:</p> - <pre class="eval"> myFoo->bar(&x) - - ... スレッドが終了してしまう ... - - bar(PRInt32 *x) - { - ... - *x = 0; <----- ここで失敗します - } -</pre> -</div> -<p>そのため、メソッドを実行するためのイベントキュー、そして作成された <code>nsISupports</code> オブジェクトや CID そしてフラグが渡されて、新しい <code>nsISupports</code> プロキシオブジェクトが返ってきます。一旦プロキシオブジェクトを手にすると、それをあたかも「本当の」オブジェクトであるかのように扱うことができます。「本当の」オブジェクトでのすべてのメソッドに対して、プロキシオブジェクトがスタブの役目を果たします。プロキシオブジェクトの使用が終わったら <code><a href="ja/NS_RELEASE">NS_RELEASE</a></code> を呼び出すべきです。これにより、自分自身と同様に「本当の」オブジェクトの解放も行います。自分でオブジェクトを作ってから、プロキシを作ったのであれば、少なくとも参照カウントが 2 でなければならないことに注意してください。(ひとつがプロキシのため、もうひとつは <code>GetProxyObject</code> の呼び出しで渡して作成したオブジェクトのためです。それに、その他の参照カウントが足されます。)</p> -<p>ここでは、<code>GetProxyObject</code> に対してどのようにイベントキューを提供するかということを取り上げます。二つの可能性があります。ひとつは、興味を持っているイベントキューを知っている場合です。この場合、単にそれを使ってください。ほとんどの場合では、メイン UI スレッド (一種の基本的なスレッド) が必要でしょう。もしその場合、イベントキューとして、単に <code>nsnull</code> を渡すことができます。<code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIEventQueueService.h#44" rel="custom">xpcom/threads/nsIEventQueueService.h#44</a></code> にある定義済のフラグも使うことができます。</p> -<p>呼び出し元が目的のスレッドにいるかどうかを決定するロジックもあります。これが真であれば、プロキシ経由では呼び出されずに、最適化のためにメソッド (最適化) を直接呼び出します。この検知は、<code>PROXY_SYNC</code> フラグで作成されたプロキシを使うときだけに使われます。</p> -<h4 id=".E4.BD.BF.E7.94.A8.E4.BE.8B" name=".E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h4> -<pre class="eval">nsresult rv = NS_OK; - -NS_WITH_SERVICE( nsIProxyObjectManager, pIProxyObjectManager, kProxyObjectManagerCID, &rv); -if(NS_FAILED(rv)) return rv; - -rv = pIProxyObjectManager->GetProxyForObject( NS_UI_THREAD_EVENTQ, - nsITestProxy::GetIID(), - createdTestObject, - PROXY_SYNC | PROXY_ALWAYS, - (void**)proxyToTestObject); - - // もう本当のオブジェクトについては、気にしない。すなわち、GetProxyObjectが - // 参照カウントを行っている。 -NS_RELEASE(createdTestObject); - -proxyToTestObject->Test1(x,y,z); - -NS_RELEASE(proxyToTestObject); -</pre> -<div class="originaldocinfo"> - <h2 id=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1">原文書の情報</h2> - <ul> - <li>著者: <a class="link-mailto" href="mailto:dougt@netscape.com">Doug Turner</a></li> - <li>最終更新日: January 27, 2007</li> - <li>著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a></li> - </ul> -</div> -<div class="noinclude"> - </div> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsitaggingservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsitaggingservice/index.html deleted file mode 100644 index 67867b4076..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsitaggingservice/index.html +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: nsITaggingService -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsITaggingService -tags: - - Interfaces - - 'Interfaces:Scriptable' - - Places - - XPCOM - - XPCOM API Reference - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsITaggingService ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/public/nsITaggingService.idl" rel="custom">toolkit/components/places/public/nsITaggingService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - ->インタフェースはあるURIに対するタグの付与とその除去を行う機能、与えられたタグからURIを取り出す機能、およびあるURIに関連付けられた全てのタグを取得するメソッドを提供します。 -</span> - - <div style="height: 42px; position: relative; padding: 2px; width: auto;"> - - <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div> - - <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div> - - <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 8.571428571428571%;"></div> - -<div style="height: 8px; top: 16px; left: 8.571428571428571%; background: #00dd00; position: absolute; width: 91.42857142857143%;" title="Introduced in Gecko 1.9 (Firefox 3)"></div> - -<div style="top: 0px; font-size: 11px; position: absolute; left: 8.571428571428571%;">Introduced</div> -<div style="top: 22px; font-size: 11px; position: absolute; left: 8.571428571428571%;">Gecko 1.9</div> - - <div style="height: 8px; top: 16px; left: 10.928571428571429%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)"></div> - -</div> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)</span></div> -</div> - -<p>実装: <code>@mozilla.org/browser/tagging-service;1</code> このサービスを使うには以下のものを使用して下さい。</p> - -<pre class="eval">var taggingSvc = Components.classes["@mozilla.org/browser/tagging-service;1"] - .getService(Components.interfaces.nsITaggingService); -</pre> - -<h2 id="メソッドの概要">メソッドの概要</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#tagURI.28.29">tagURI</a>(in <a href="/ja/XPCOM_Interface_Reference/nsIURI" title="ja/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aURI, in <a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a> aTags);</code></td> - </tr> - <tr> - <td><code>void <a href="#untagURI.28.29">untagURI</a>(in <a href="/ja/XPCOM_Interface_Reference/nsIURI" title="ja/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aURI, in <a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a> aTags);</code></td> - </tr> - <tr> - <td><code><a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a> <a href="#getURIsForTag.28.29">getURIsForTag</a>(in AString aTag);</code></td> - </tr> - <tr> - <td><code><a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a> </code><code><a href="#getTagsForURI.28.29">getTagsForURI</a>(in <a href="/ja/XPCOM_Interface_Reference/nsIURI" title="ja/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aURI, [任意] out unsigned long length, [retval, array, size_is(length)] out wstring aTags);</code></td> - </tr> - </tbody> -</table> - -<h2 id="属性">属性</h2> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>allTags</code></td> - <td><code><a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a></code></td> - <td>データベース内で URI に付与したタグの全てを(名前順で)受け取ります。</td> - </tr> - <tr> - <td><code>tagContainerIconSpec</code></td> - <td><code><a href="/ja/AUTF8String" title="ja/AUTF8String">AUTF8String</a></code></td> - <td>タグコンテナアイコンの URL 仕様を受け取ります</td> - </tr> - </tbody> -</table> - -<h2 id="メソッド">メソッド</h2> - -<h3 id="tagURI.28.29" name="tagURI.28.29"><a name="tagURI()">tagURI()</a></h3> - -<p>与えられたタグのセットをある URI に付与します。 URI が持つ現在のタグのセットはそのまま残ります。 <code>aTags</code> に含まれるタグのうち、既に与えられた URI にセットされているものがあればそれは無視されます。</p> - -<pre class="eval"> void tagURI( - in nsIURI aURI, - in nsIVariant aTags -); -</pre> - -<h6 id="引数">引数</h6> - -<dl> - <dt><code>aURI</code></dt> - <dd>タグ付けする URI です。</dd> - <dt><code>aTags</code></dt> - <dd>与えられた URI に対して付与するタグの配列です。</dd> -</dl> - -<h3 id="untagURI.28.29" name="untagURI.28.29"><a name="untagURI()">untagURI()</a></h3> - -<p>ある URI からタグを取り除きます。 aTags に含まれるタグのうち、与えられた URI に設定されていないものは無視されます。</p> - -<pre class="eval"> void untagURI( - in nsIURI aURI, - in nsIVariant aTags -); -</pre> - -<h6 id="Parameters_2" name="Parameters_2">引数</h6> - -<dl> - <dt><code>aURI</code></dt> - <dd>タグ付けを解除する URI です。</dd> - <dt><code>aTags</code></dt> - <dd>URI から取り除くタグの配列です。NULL を渡すと与えられた URI から全てのタグを取り除きます。</dd> -</dl> - -<h3 id="getURIsForTag.28.29" name="getURIsForTag.28.29"><a name="getURIsForTag()">getURIsForTag()</a></h3> - -<p>このメソッドは、与えられたタグが付与されている全ての URI を取得します。</p> - -<pre class="eval"> nsIVariant getURIsForTag( - in AString aTag -); -</pre> - -<h6 id="Parameters_3" name="Parameters_3">引数</h6> - -<dl> - <dt><code>aTag</code></dt> - <dd>タグ名です。</dd> -</dl> - -<h6 id="Return_value" name="Return_value">返値</h6> - -<p><code>aTag</code> で指定されたタグが付与された全ての URI の配列</p> - -<h3 id="getTagsForURI.28.29" name="getTagsForURI.28.29"><a name="getTagsForURI()">getTagsForURI()</a></h3> - -<p>与えられたURIに付与されている全てのタグを取得します。</p> - -<pre class="eval">nsIVariant getTagsForURI( - in nsIURI aURI, - [任意] out unsigned long length, - [retval, array, size_is(length)] out wstring aTags -); -</pre> - -<h6 id="Parameters_4" name="Parameters_4">引数</h6> - -<dl> - <dt><code>aURI</code></dt> - <dd>タグを返す URI です。</dd> - <dt><code>length</code> <span class="inlineIndicator optional optionalInline">Optional</span></dt> - <dd>戻る際に aTags に返されたタグの数が入ります。任意ですが、 Gecko 2.0 より前は必須の引数でした。</dd> - <dt><code>aTags</code></dt> - <dd>戻る際に URI に付与されたタグの配列が入ります。</dd> -</dl> - -<h6 id="Return_value_2" name="Return_value_2">返値</h6> - -<p>タグの配列(名前順)です。</p> - -<h3 id="関連情報">関連情報</h3> - -<ul> - <li><a href="/ja/Places" title="ja/Places">Places</a></li> - <li><a href="/ja/Using_the_Places_tagging_service" title="ja/Using_the_Places_tagging_service">Using the Places tagging service</a></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithread/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithread/index.html deleted file mode 100644 index 7f8e9a8940..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithread/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: nsIThread -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThread -tags: - - Firefox 3 - - Interfaces - - Threads - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThread ---- -<p> <code>nsIThread</code> インタフェースは、オペレーティングシステム (OS) のスレッドに対する高レベルの抽象化を提供します。スレッドには組み込みのキューが含まれており、スレッドは、そのスレッド上で処理される <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRunnable" title="">nsIRunnable</a></code> オブジェクト (イベント) を取得できるイベントターゲットと言えます。</p> -<p>スレッドを作成するには、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code> インタフェースを使います。</p> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEventTarget" title="">nsIEventTarget</a></code></p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThread.idl" rel="custom">xpcom/threads/nsIThread.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void shutdown()</code></td> - </tr> - <tr> - <td><code>boolean hasPendingEvents()</code></td> - </tr> - <tr> - <td><code>boolean processNextEvent(in boolean mayWait)</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>PRThread</code></td> - <td><code><a href="/ja/PRThread" title="ja/PRThread">PRThread</a></code></td> - <td><code>nsIThread</code> に相当する NSPR スレッドオブジェクト。<em>読み取り専用。</em></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="shutdown.28.29" name="shutdown.28.29">shutdown()</h3> -<p>スレッドを停止します。これは、そのスレッドに割り当てられているイベントを中止し、スレッドが現在のスレッドに加わる前に、待機中のイベントがある場合はそれらを実行して完了させます (詳しくは <code><a href="/ja/PR_JoinThread" title="ja/PR_JoinThread">PR_JoinThread()</a></code> を参照してください)。このメソッド呼び出しの実行中、現在のスレッドに割り当てられたイベントは処理が継続されます。</p> -<div class="warning"> - <strong>警告:</strong> このメソッドは、スレッド自体から呼び出すことができません。その代わり、他のスレッド (通常、呼び出したいスレッドの作成元であるスレッド、もしくはメインのアプリケーションスレッド) から呼び出す必要があります。この関数が返されると、スレッドは停止され、以後イベントを受け付けることはできなくなります。</div> -<pre class="eval">void shutdown() -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<p>なし。</p> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_UNEXPECTED</code></dt> - <dd> - <code>shutdown()</code> が、スレッド自体から誤って呼び出された場合。そのスレッドがスレッドマネージャの <code><a href="/ja/nsIThreadManager#newThread.28.29" title="ja/nsIThreadManager#newThread.28.29">newThread()</a></code> メソッドを使って作成されたものではない場合。あるいはスレッドがすでに停止処理中である場合。</dd> -</dl> -<h3 id="hasPendingEvents.28.29" name="hasPendingEvents.28.29">hasPendingEvents()</h3> -<p>処理待機中のイベントがそのスレッドに存在するかどうかを判別します。</p> -<div class="blockIndicator note"><strong>註:</strong> このメソッドは、他のスレッドからではなく、スレッド自体から呼び出す必要があります。</div> -<pre class="eval">boolean hasPendingEvents() -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<p>なし。</p> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>関数が呼び出された時点で待機中のイベントが存在する場合は <code>true</code>。なお、<code>false</code> が返ってきた場合でも、現在のスレッドに他のスレッドがイベントを追加できるため、このメソッドが返るまでにイベントキューが空ではなくなる可能性があります。</p> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_UNEXPECTED</code></dt> - <dd> - このスレッドが現在のスレッドではないときにこのメソッドが呼び出された場合。</dd> -</dl> -<h3 id="processNextEvent.28.29" name="processNextEvent.28.29">processNextEvent()</h3> -<p>次に待機中のイベントを処理します。待機中のイベントが存在しない場合、<code>mayWait</code> 引数の値によっては、新しいイベントがスレッドに割り当てられるまで待機状態となります。</p> -<p>このメソッドは再入可能ですが、このスレッドが現在のスレッドである場合のみ呼び出されます。</p> -<pre class="eval">boolean processNextEvent( - in boolean mayWait -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <code>mayWait</code></dt> - <dd> - <code>true</code> の場合、イベントキューが空であるときは、新しいイベントが処理可能になるまで待機します。<code>false</code> の場合、イベントキューが空であるときは即座に返ります。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>イベントが処理中であった場合は <code>true</code>、待機中のイベントが存在しない場合は <code>false</code>。</p> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_UNEXPECTED</code></dt> - <dd> - このスレッドが現在のスレッドではないときにこのメソッドが呼び出された場合。</dd> -</dl> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><a href="/ja/The_Thread_Manager" title="ja/The_Thread_Manager">The Thread Manager</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadeventfilter/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadeventfilter/index.html deleted file mode 100644 index 49f64ad777..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadeventfilter/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: nsIThreadEventFilter -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadEventFilter -tags: - - Firefox 3 - - Interfaces - - Threads - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter ---- -<p><code>nsIThreadEventFilter</code> インタフェースを実装すると、あるイベントが入れ子になったイベントキューに受け付けられるかどうかを判別することができます。詳細は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code> の <code><a href="ja/NsIThreadInternal#pushEventQueue.28.29">pushEventQueue()</a></code> メソッドを参照してください。</p> -<p>このインタフェースと <code><a href="#acceptEvent.28.29">acceptEvent()</a></code> メソッドを実装してから、それをフィルタとして実装したオブジェクトを渡すべきです。</p> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadInternal.idl" rel="custom">xpcom/threads/nsIThreadInternal.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>[notxpcom] boolean acceptEvent(in <a href="ja/NsIRunnable">nsIRunnable</a> event);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="acceptEvent.28.29" name="acceptEvent.28.29">acceptEvent()</h3> -<p>このメソッドは、あるイベントが入れ子になったイベントキューに受け付けられるかどうかを判別するために呼び出されます。</p> -<div class="warning"> - <b>警告:</b> このメソッドはスレッドオブジェクト上では呼び出しを行ってはいけません。</div> -<pre class="eval">[notxpcom] boolean acceptEvent( - in nsIRunnable event -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>event</tt></dt> - <dd> - 割り当てを行うイベント。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>イベントが受け入れられる場合は <code>true</code>、受け入れられない場合は <code>false</code>。</p> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadinternal/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadinternal/index.html deleted file mode 100644 index c363c03792..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadinternal/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: nsIThreadInternal -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadInternal -tags: - - Firefox 3 - - Interfaces - - Threads - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal ---- -<p> <code>nsIThreadInternal</code> インタフェースは、スレッド上に割り当てられたアクティビティを監視するために、XPCOM スレッドオブジェクトによって実装されています。</p> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadInternal.idl" rel="custom">xpcom/threads/nsIThreadInternal.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void pushEventQueue(in <a href="ja/NsIThreadEventFilter">nsIThreadEventFilter</a> filter);</code></td> - </tr> - <tr> - <td><code>void popEventQueue();</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>observer</code></td> - <td><code><a href="ja/NsIThreadObserver">nsIThreadObserver</a></code></td> - <td>現在のスレッドオブザーバを取得、設定します。監視を無効化する場合は <code>null</code> を設定します。この属性はどのスレッドからも読み取り可能ですが、設定は、このスレッドオブジェクトに対応したスレッド上で行わなくてはなりません。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="pushEventQueue.28.29" name="pushEventQueue.28.29">pushEventQueue()</h3> -<p>現在スレッド上で待機しているすべてのイベントを、<a href="#popEventQueue.28.29">popEventQueue()</a> が呼び出されるまで中止します。さらに、新たにスレッドに割り当てられたイベントは、指定されたフィルタによって許可された場合のみ処理されます。</p> -<p>フィルタが <code>null</code> の場合、新しいイベントはすべて許可されます。</p> -<p><code>pushEventQueue()</code> の呼び出しは入れ子にすることができますが、スレッドを元の状態に戻すには、対応する <a href="#popEventQueue.28.29">popEventQueue()</a> の呼び出しとそれぞれ対にする必要があります。</p> -<pre class="eval">void pushEventQueue( - in nsIThreadEventFilter filter -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>filter</tt></dt> - <dd> - 割り当てられたイベントに適用する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code>。割り当てられているイベントをすべて許可する場合は <code>null</code>。</dd> -</dl> -<h3 id="popEventQueue.28.29" name="popEventQueue.28.29">popEventQueue()</h3> -<p><a href="#pushEventQueue.28.29">pushEventQueue()</a> の呼び出しを取り消します。イベントキューが再開されると、キューに残っているイベントはすべて、より上のキューに追加されます。</p> -<pre class="eval">void popEventQueue() -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<p>なし。</p> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadmanager/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadmanager/index.html deleted file mode 100644 index bb797c4d5c..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadmanager/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: nsIThreadManager -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadManager -tags: - - Firefox 3 - - Interfaces - - Threads - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager ---- -<p> <code>nsIThreadManager</code> インタフェースは、アプリケーションや拡張機能がスレッドを作成、管理できるようにするもので、それぞれ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> で表されています。</p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadManager.idl" rel="custom">xpcom/threads/nsIThreadManager.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="ja/NsIThread">nsIThread</a> newThread(in unsigned long creationFlags)</code></td> - </tr> - <tr> - <td><code><span class="nowiki">[noscript]</span> nsIThread getThreadFromPRThread(in <a href="ja/PRThread">PRThread</a> prthread)</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>mainThread</code></td> - <td><code><a href="ja/NsIThread">nsIThread</a></code></td> - <td>メインスレッド。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>currentThread</code></td> - <td><code>nsIThread</code></td> - <td>現在実行中のスレッド。呼び出されたスレッドが、それと関連付けられた <code>nsIThread</code> をまだ持っていない場合、スレッドが新たに作成され、現在の <code><a href="ja/PRThread">PRThread</a></code> と関連付けられます。 - <i> - 読み取り専用。</i> - </td> - </tr> - <tr> - <td><code>isMainThread</code></td> - <td><code>boolean</code></td> - <td>現在実行中のスレッドがメインスレッドの場合に <code>true</code> を返します。 - <i> - 読み取り専用。</i> - </td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="newThread.28.29" name="newThread.28.29">newThread()</h3> -<p>新しいスレッドを作成します。内部的には、これはグローバルユーザの <code><a href="ja/PRThread">PRThread</a></code> です。</p> -<pre class="eval">nsIThread newThread( - in unsigned long creationFlags -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>creationFlags</tt></dt> - <dd> - 将来の使用のために確保されています。0 を渡します。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>新たに作成された <code><a href="ja/NsIThread">nsIThread</a></code>。</p> -<h3 id="getThreadFromPRThread.28.29" name="getThreadFromPRThread.28.29">getThreadFromPRThread()</h3> -<p>このメソッドは、<code><a href="ja/PRThread">PRThread</a></code> を与えられて、対応する <code><a href="ja/NsIThread">nsIThread</a></code> を返します。対応する <code>nsIThread</code> が存在しない場合は <code>null</code> を返します。</p> -<div class="blockIndicator note"><strong>註:</strong> このメソッドはネイティブコードからのみ呼び出されるでしょう。</div> -<pre class="eval">[noscript] nsIThread getThreadFromPRThread( - in PRThread prthread -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>prthread</tt></dt> - <dd> - 対応する <code>nsIThread</code> を取得するための <code><a href="ja/PRThread">PRThread</a></code>。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>指定された <code>PRThread</code> に一致する <code>nsIThread</code> を返します。一致する <code>nsIThread</code> が存在しない場合は <code>null</code> を返します。</p> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li> - <li><code><a href="ja/PRThread">PRThread</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadobserver/index.html deleted file mode 100644 index 5a058d0797..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadobserver/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: nsIThreadObserver -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadObserver -tags: - - Firefox 3 - - Interfaces - - Threads - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver ---- -<p> <code>nsIThreadObserver</code> インタフェースを実装すると、オブザーバが階層化されたイベントキューを実装できます。</p> -<p>例えば、以下のようにして、GUI ツールキットのために処理中のイベントを、あるスレッドのイベントの上に重ね合わせることができます。</p> -<pre class="eval">var NativeQueue; -Observer = { - onDispatchedEvent(thread) { - NativeQueue.signal(); - } - onProcessNextEvent(thread, mayWait, recursionDepth) { - if (NativeQueue.hasNextEvent()) { - NativeQueue.processNextEvent(); - } - while (mayWait && !thread.hasPendingEvent()) { - NativeQueue.wait(); - NativeQueue.processNextEvent(); - } - } -}; -</pre> -<div class="warning"> - <b>警告:</b> このインタフェースの実装はスレッドセーフでなければなりません。</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadInternal.idl" rel="custom">xpcom/threads/nsIThreadInternal.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void onDispatchedEvent(in nsIThreadInternal thread);</code></td> - </tr> - <tr> - <td><code>void onProcessNextEvent(in nsIThreadInternal thread, in boolean mayWait, in unsigned long recursionDepth);</code></td> - </tr> - <tr> - <td><code>void afterProcessNextEvent(in nsIThreadInternal thread, in unsigned long recursionDepth);</code></td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="onDispatchedEvent.28.29" name="onDispatchedEvent.28.29">onDispatchedEvent()</h3> -<p>イベントがスレッドに割り当てられた後に呼び出されます。このメソッドはどのスレッドからも呼び出すことができます。</p> -<div class="blockIndicator note"><strong>註:</strong> このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。</div> -<pre class="eval">void onDispatchedEvent( - in nsIThreadInternal thread -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <tt>thread</tt></dt> - <dd> - イベントが割り当てられた <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code>。</dd> -</dl> -<h3 id="onProcessNextEvent.28.29" name="onProcessNextEvent.28.29">onProcessNextEvent()</h3> -<p>イベントが処理される前に、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> の <code><a href="ja/NsIThread#processNextEvent.28.29">processNextEvent()</a></code> メソッドによって呼び出されます。このメソッドはターゲットのスレッド上でのみ呼び出すことができます。</p> -<div class="blockIndicator note"><strong>註:</strong> このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。</div> -<pre class="eval">void onProcessNextEvent( - in nsIThreadInternal thread, - in boolean mayWait, - in unsigned long recursionDepth -</pre> -<p>);</p> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <tt>thread</tt></dt> - <dd> - イベントの処理が行われている <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code>。</dd> - <dt> - <tt>mayWait</tt></dt> - <dd> - スレッドの呼び出しをブロックすることをメソッドに許可する場合は <code>true</code>。この引数は、例えばスレッド停止中などは <code>false</code> になります。</dd> - <dt> - <tt>recursionDepth</tt></dt> - <dd> - 現在の呼び出しに加えて、呼び出しスタック上での <code>ProcessNextEvent()</code> の呼び出し回数。</dd> -</dl> -<h3 id="afterProcessNextEvent.28.29" name="afterProcessNextEvent.28.29">afterProcessNextEvent()</h3> -<p>イベントが処理された後に、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> の <code><a href="ja/NsIThread#processNextEvent.28.29">processNextEvent()</a></code> メソッドによって呼び出されます。このメソッドはターゲットのスレッド上でのみ呼び出すことができます。</p> -<div class="blockIndicator note"><strong>註:</strong> このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。</div> -<pre class="eval">void afterProcessNextEvent( - in nsIThreadInternal thread, - in unsigned long recursionDepth -) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <tt>thread</tt></dt> - <dd> - イベントの処理が行われた <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code>。</dd> - <dt> - <tt>recursionDepth</tt></dt> - <dd> - 現在の呼び出しに加えて、呼び出しスタック上での <code>ProcessNextEvent()</code> の呼び出し回数。</dd> -</dl> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadpool/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadpool/index.html deleted file mode 100644 index 703ee3c9a3..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadpool/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: nsIThreadPool -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadPool -tags: - - Firefox 3 - - Interfaces - - Threads - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool ---- -<p> <code>nsIThreadPool</code> インタフェースはスレッドプールのサポートを提供します。</p> -<p>スレッドプールは、限られた数の無名のワーカースレッドを作成できます。イベントがスレッドプールに割り当てられると、プールは、次に利用可能なワーカースレッド上でそのイベントを実行します。</p> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEventTarget" title="">nsIEventTarget</a></code></p> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadPool.idl" rel="custom">xpcom/threads/nsIThreadPool.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void shutdown()</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>threadLimit</code></td> - <td><code>unsigned long</code></td> - <td>プールに一度に存在できるスレッドの最大数。この属性を変更することで、最大数を変更することができます。</td> - </tr> - <tr> - <td><code>idleThreadLimit</code></td> - <td><code>unsigned long</code></td> - <td>存続している待機スレッドの最大数を取得、設定します。待機中のワーカースレッドがこの最大数を超えると、待機スレッドは順次破棄されます。</td> - </tr> - <tr> - <td><code>idleThreadTimeout</code></td> - <td><code>unsigned long</code></td> - <td>スレッドが破棄可能になるまで待機する時間をミリ秒で取得、設定します。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="shutdown.28.29" name="shutdown.28.29">shutdown()</h3> -<p>スレッドプールを停止します。</p> -<div class="warning"> - <b>警告:</b> このメソッドをスレッドプール内のスレッドから呼び出してはいけません。代わりに、他のスレッド (通常、そのスレッドプールを作成したスレッド) から呼び出してください。</div> -<p>このメソッドが返ると、スレッドプールと、そのすべてのスレッドは停止され、以後そのスレッドプールにイベントを割り当てることはできなくなります。</p> -<pre class="eval">void shutdown() -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<p>なし。</p> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwebprogresslistener/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwebprogresslistener/index.html deleted file mode 100644 index 4dccfef795..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwebprogresslistener/index.html +++ /dev/null @@ -1,392 +0,0 @@ ---- -title: nsIWebProgressListener -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIWebProgressListener -tags: - - Interfaces - - 'Interfaces:Scriptable' - - XPCOM - - XPCOM API Reference - - XPCOM Interface Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgressListener ---- -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/uriloader/base/nsIWebProgressListener.idl" rel="custom">uriloader/base/nsIWebProgressListener.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;">このインターフェースは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスのコンテクストだけではなく、すべての子 <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスの、非同期リクエストの読み込みに関連する進捗を監視しようとするクライアントによって実装されています。</span> - -<div style="background: #eee; padding: 2px;"> -継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> -<span style="text-align: right; float: right;">最終更新: Gecko 15 (Firefox 15 / Thunderbird 15 / SeaMonkey 2.12)</span></div> -</div> -<p> </p> -<h2 id="Method_overview" name="Method_overview">メソッド概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#onLocationChange()">onLocationChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsIURI aLocation);</code></td> - </tr> - <tr> - <td><code>void <a href="#onProgressChange()">onProgressChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aCurSelfProgress, in long aMaxSelfProgress, in long aCurTotalProgress, in long aMaxTotalProgress);</code></td> - </tr> - <tr> - <td><code>void <a href="#onSecurityChange()">onSecurityChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long aState);</code></td> - </tr> - <tr> - <td><code>void <a href="#onStateChange()">onStateChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long aStateFlags, in nsresult aStatus);</code></td> - </tr> - <tr> - <td><code>void <a href="#onStatusChange()">onStatusChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsresult aStatus, in wstring aMessage);</code></td> - </tr> - </tbody> -</table> -<h2 id="Constants" name="Constants">定数</h2> -<h3 id="State_Transition_Flags" name="State_Transition_Flags">遷移状態フラグ(State Transition Flags)</h3> -<p>これらのフラグは、リクエストがロードされ、遷移しているさまざまな状態を表します。これらのフラグは排他的です。</p> -<p>リクエストが与えられる度、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> が呼び出されます。 <code>STATE_START</code> を伴って一回、<code>STATE_TRANSFERRING</code> フラグを伴ってゼロまたは数回、<code>STATE_REDIRECTING</code> と一回、最終的に<code>STATE_STOP</code> を伴って一回、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> は呼び出されます。</p> -<div class="note"> - <strong>註:</strong>ドキュメントのリクエストにおいて、2つ目の <code>STATE_STOP</code> が生成されます。(詳しくは <code>STATE_IS_WINDOW</code> の詳細を参照してください)</div> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>STATE_START</code></td> - <td><code>0x00000001</code></td> - <td>このフラグはリクエストが開始されたことを表します。このフラグはリクエストが初期化された際に設定されます。開始されたリクエストは、<code>STATE_STOP</code> フラグを伴って<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> が呼び出された時に完了します。</td> - </tr> - <tr> - <td><code>STATE_REDIRECTING</code></td> - <td><code>0x00000002</code></td> - <td>このフラグはリクエストがリダイレクトされていることを表します。<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> に通されたリクエストはリダイレクトされたものです。リダイレクトが発生したとき、その過程において自動的に新規リクエストが生成されます。新しいリクエストでも同様に <code>STATE_START</code> のイベントが発生し、リダイレクトされたリクエストは <code>STATE_STOP</code> を迎えると予想されます。</td> - </tr> - <tr> - <td><code>STATE_TRANSFERRING</code></td> - <td><code>0x00000004</code></td> - <td>このフラグは、リクエストしたデータがこちらへと転送されている状態にあることを表します。このフラグは、リクエストがつながり、ユーザーがリクエストに対応するコンテンツを見始めるようになることも意味します。</td> - </tr> - <tr> - <td><code>STATE_NEGOTIATING</code></td> - <td><code>0x00000008</code></td> - <td>このフラグは使用されません。</td> - </tr> - <tr> - <td><code>STATE_STOP</code></td> - <td><code>0x00000010</code></td> - <td>このフラグはリクエストが完了したことを表します。<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> の aStatus パラメータは、リクエストの最終ステータスを表します。</td> - </tr> - </tbody> -</table> -<h3 id="State_Type_Flags" name="State_Type_Flags">状態種類フラグ(State Type Flags)</h3> -<p>これらのフラグは、発生しているトランザクションの状態についての実態をより詳しく説明します。これらのフラグは<strong>排他的ではありません</strong>( <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> イベントはこれらのフラグが組み合わさっていることを示すかもしれません。)</p> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>STATE_IS_REQUEST</code></td> - <td><code>0x00010000</code></td> - <td>このフラグは、ドキュメントに限らないリクエストの遷移状態を表します。(下記のドキュメントのリクエストの詳細も参照してください) (例えば画像やスタイルシートといった)インラインコンテンツのような、他の種類のリクエストはの通常のリクエストとして見做されています。</td> - </tr> - <tr> - <td><code>STATE_IS_DOCUMENT</code></td> - <td><code>0x00020000</code></td> - <td> - <p>このフラグは、ドキュメントリクエストの遷移状態を表します。このフラグは <code>STATE_IS_REQUEST</code> を追加で設定します。ドキュメントリクエストは、 <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> のサポートと、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code>::LOAD_DOCUMENT_URI を含む、リクエストの loadFlags 属性を含んでいます。</p> - <p>ドキュメントに対応した読み込みに関連するリクエストの全てが完了するまで、ドキュメントリクエストは完了しません。これには、(たとえば HTML <iframe> 要素といった)他のドキュメントリクエストも含まれます。ドキュメントリクエストに対応しているドキュメントは、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> の aWebProgress パラメータの <code>DOMWindow</code> 属性を経由して取得できます。</p> - </td> - </tr> - <tr> - <td><code>STATE_IS_NETWORK</code></td> - <td><code>0x00040000</code></td> - <td> - <p>このフラグは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスによって表わされる活動の開始または停止に対応する遷移状態を表します。このフラグには、<code>STATE_START</code> または <code>STATE_STOP</code> の一方及びその他の状態種類フラグが付随しています。</p> - <p><code>STATE_IS_WINDOW</code> とは異なり、このフラグは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスのアクティビティが開始または停止していると通知された時にのみ設定されます。アクティビティが子 <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス でのみ発生した場合、そのアクテビティの開始または停止を示すためにこのフラグが設定されるでしょう。</p> - <p>例えば、HTML フレームセットの単体フレームのナビゲーションの場合、フレームセットウィンドウの <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> に加えられた <code>nsIWebProgressListener</code> インスタンスは、ナビゲーションの開始と中止を設定された <code>STATE_IS_NETWORK</code> フラグとともに <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> の呼び出しを受けます。言い換えれば、アクテビティが子ウィンドウに束縛された際には、外部ウィンドウのオブザーバーは開始または中止を 定義できるということです。</p> - </td> - </tr> - <tr> - <td><code>STATE_IS_WINDOW</code></td> - <td><code>0x00080000</code></td> - <td> - <p>このフラグは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスが示すアクティビティの開始と停止に対応する遷移状態を表します。このフラグは、<code>STATE_START</code> または <code>STATE_STOP</code> 、およびその他の状態種類フラグを伴います。</p> - <p>このフラグは、<code>STATE_IS_DOCUMENT</code> に類似しています。しかしながら、ドキュメントのリクエストが完了された時、生成された <code>STATE_STOP</code> と共に <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> が2回呼び出されます。ドキュメントのリクエストはそれぞれの呼び出しの際に aRequest を渡します。最初の呼び出しでは <code>STATE_IS_REQUEST</code> および <code>STATE_IS_DOCUMENT</code> が設定され、2回目の呼び出しでは <code>STATE_IS_WINDOW</code> が設定されます。(加えて、可能であれば <code>STATE_IS_NETWORK</code> が設定されます。<code>STATE_IS_NETWORK</code> が設定される場合の詳細については上記の詳細を参照してください) この2つの <code>STATE_STOP</code> イベントは、ドキュメントのリクエストが完了した際に発生した作業を分別するのに有効とされます。</p> - </td> - </tr> - </tbody> -</table> -<h3 id="State_Modifier_Flags" name="State_Modifier_Flags">状態変更フラグ(State Modifier Flags)</h3> -<p>これらのフラグは、発生しているトランザクションの状態についての実態をより詳しく説明します。これらのフラグは<strong>排他的ではありません</strong>( <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> イベントはこれらのフラグが組み合わさっていることを示すかもしれません。)</p> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>STATE_RESTORING</code></td> - <td><code>0x01000000</code></td> - <td>このフラグは、以前レンダリングされた表示結果の復元作業の開始または停止に相当する遷移状態を表します。このリクエストに関連するネットワーク・アクティビティはなく、読み込まれたオリジナルのドキュメントや表示に加えられた変更それ自体は、依然として存在しています。</td> - </tr> - </tbody> -</table> -<h3 id="State_Security_Flags" name="State_Security_Flags">セキュリティ状態フラグ(State Security Flags)</h3> -<p>これらのフラグは <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onSecurityChange()">onSecurityChange()</a></code> が呼び出されることによって 報告されるセキュリティの状態について説明します。これらのフラグは排他的です。</p> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>STATE_IS_INSECURE</code></td> - <td><code>0x00000004</code></td> - <td>このフラグは、リクエストに対応するデータが安全ではないチャンネルを経由して受信されたことを表します。</td> - </tr> - <tr> - <td><code>STATE_IS_BROKEN</code></td> - <td><code>0x00000001</code></td> - <td>このフラグは未知のセキュリティの状態であることを表します。これは、ページ中の一部のコンテンツのリクエストが、安全ではないチャンネルを経由して読み込まれていることを意味するかもしれません。</td> - </tr> - <tr> - <td><code>STATE_IS_SECURE</code></td> - <td><code>0x00000002</code></td> - <td>このフラグは、リクエストに対応するデータが安全なチャンネルを経由して受信されたことを表します。セキュリティの程度については、<code>STATE_SECURE_HIGH</code>、<code>STATE_SECURE_MED</code>、または <code>STATE_SECURE_LOW</code> によって表現されます。</td> - </tr> - </tbody> -</table> -<h3 id="Security_Strength_Flags" name="Security_Strength_Flags">セキュリティ強度フラグ(Security Strength Flags)</h3> -<p>これらのフラグは、セキュリティの強度と、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onSecurityChange()">onSecurityChange()</a></code> メソッドの呼び出しに伴う <code>STATE_IS_SECURE</code> について説明します。これらのフラグは排他的です。</p> -<p>これらのフラグは、データ転送のセキュリティについて厳密な詳細を提供することを意味しません。これらは代わりに、セキュリティ通知の色区分や、その他ユーザー向けの基本的なデータ転送のフィードバックなどのような、簡易的なインジケータで使用されることを意図しています。</p> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>STATE_SECURE_HIGH</code></td> - <td><code>0x00040000</code></td> - <td>このフラグは高レベルのセキュリティにあることを示します。</td> - </tr> - <tr> - <td><code>STATE_SECURE_MED</code></td> - <td><code>0x00010000</code></td> - <td>このフラグは中レベルのセキュリティにあることを示します。</td> - </tr> - <tr> - <td><code>STATE_SECURE_LOW</code></td> - <td><code>0x00020000</code></td> - <td>このフラグは低レベルのセキュリティにあることを示します。</td> - </tr> - </tbody> -</table> -<h3 id="State_Identity_Flags" name="State_Identity_Flags">アイデンティティ状態フラグ(State identity flags)</h3> -<p>これらのフラグは、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onSecurityChange()">onSecurityChange()</a></code> メソッドの呼び出しにおける、身元検証のレベルについて説明します。</p> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>STATE_IDENTITY_EV_TOPLEVEL</code></td> - <td><code>0x00100000</code></td> - <td> - <p>ステータスビットにおける EV とは Extended Validation すなわち High Assurance であり、高く保証されていることを意味します。</p> - <p>最高位のドキュメントには EV 証明書が使用されています。 </p> - </td> - </tr> - </tbody> -</table> -<h3 id="Location_Change_Flags" name="Location_Change_Flags">ロケーション変更状態フラグ (Location Change flags)</h3> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">詳細</td> - </tr> - <tr> - <td><code>LOCATION_CHANGE_SAME_DOCUMENT</code></td> - <td><code>0x00000001</code></td> - <td>このフラグは、<code>aWebProgress</code> が新たにドキュメントを読み込まなかったときのものです。例としては、アンカーによるスクロールや pushState/popState/replaceState によるロケーションの変更が挙げられます。</td> - </tr> - </tbody> -</table> -<h2 id="Methods" name="Methods">メソッド</h2> -<h3 id="onLocationChange" name="onLocationChange()">onLocationChange()</h3> -<p>変更を監視されているウィンドウのロケーションが変更された際に呼び出されます。読み込みがリクエストされたときではなく、与えられたウィンドウにおいて読み込みが発生しようとしているの一度確認された際に呼び出されます。たとえば、ウィンドウに於いて開始した読み込みが、新しいサイトに向けてプログレスとステータスメッセージを送信していたとしても、新たなページが読み込まれていると私たちが確認するまでは、<code>onLocationChange</code> は呼び出されないでしょう。別の例として、ブラウザの中でドキュメントが読み込まれているのではなく、サードパーティのツールへとドキュメントが渡された場合、PDFやフラッシュの読み込みでは <code>onLocationChange</code> は呼び出されないでしょう。</p> -<pre class="eval">void onLocationChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in nsIURI aLocation - [optional] in unsigned long aFlags -); -</pre> -<h6 id="Parameters" name="Parameters">引数</h6> -<dl> - <dt> - <code>aWebProgress</code></dt> - <dd> - 通知が発生した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス。</dd> - <dt> - <code>aRequest</code></dt> - <dd> - 関連する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。いくつかの場合では、この値は <code>null</code> かもしれません。</dd> - <dt> - <code>aLocation</code></dt> - <dd> - 読み込まれているロケーションの URI 。</dd> - <dt> - <code>aFlags</code></dt> - <dd> - オプション:この値は、ロケーションが変更された状況や理由について表します。 <span class="inlineIndicator optional optionalInline">Optional from Gecko 10</span></dd> -</dl> -<h3 id="onProgressChange" name="onProgressChange()">onProgressChange()</h3> -<p><code>aWebProgress</code> に関連するリクエストのひとつの変更されたプログレスを通知します。(<code>STATE_STOP</code> と <code>STATE_IS_WINDOW</code> フラグを含む <code>aStateFlags</code> を伴って呼び出された <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> に対応する) aWebProgress の全てのリクエストが完了したとき、プログレス全体はゼロへとリセットされます。</p> -<div class="note"> - <strong>註:</strong>プログレスの値が未知である、または長整数型の最大値を上回る場合、プログレスの値は -1 によって置き換えられます。</div> -<div class="note"> - <strong>註:</strong>オブジェクトが <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgressListener2" title="">nsIWebProgressListener2</a></code> を実装しており、尚且つ呼び出し側がそのインターフェースを知っている場合、この関数は呼び出されません。その場合、代わりに <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener2#onProgressChange64()">nsIWebProgressListener2.onProgressChange64()</a></code> が呼び出されます。</div> -<pre class="eval">void onProgressChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in long aCurSelfProgress, - in long aMaxSelfProgress, - in long aCurTotalProgress, - in long aMaxTotalProgress -); -</pre> -<h6 id="Parameters" name="Parameters">引数</h6> -<dl> - <dt> - <code>aWebProgress</code></dt> - <dd> - 通知が発生した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス。</dd> - <dt> - <code>aRequest</code></dt> - <dd> - 新しいプログレスを持つ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。</dd> - <dt> - <code>aCurSelfProgress</code></dt> - <dd> - リクエストの現在のプログレス。</dd> - <dt> - <code>aMaxSelfProgress</code></dt> - <dd> - リクエストの最大のプログレス。</dd> - <dt> - <code>aCurTotalProgress</code></dt> - <dd> - aWebProgress に関連する全てのリクエストにおける、現在のプログレス。</dd> - <dt> - <code>aMaxTotalProgress</code></dt> - <dd> - aWebProgress に関連する全てのリクエストにおける、全体のプログレス。</dd> -</dl> -<h3 id="onSecurityChange" name="onSecurityChange()">onSecurityChange()</h3> -<p>セキュリティプログレスを通知します。このメソッドは (例えば HTTP -> HTTPS または HTTP, FOO -> HTTPS といった)セキュリティの遷移に応じて、およびドキュメントの読み込みの完了と共に呼び出されます。ネットワーク読み込みの間にエラーが発生した場合でも、同様に呼び出されます。</p> -<div class="note"> - <strong>註:</strong>セキュリティパッケージを導入している場合、これらの通知は一度しか発生しません。</div> -<pre class="eval">void onSecurityChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in unsigned long aState -); -</pre> -<h6 id="Parameters" name="Parameters">引数</h6> -<dl> - <dt> - <code>aWebProgress</code></dt> - <dd> - 通知が発生した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス。</dd> - <dt> - <code>aRequest</code></dt> - <dd> - 新しいセキュリティ状態の <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。</dd> - <dt> - <code>aState</code></dt> - <dd> - 上述の<a href="#State_Security_Flags">セキュリティ状態フラグ</a>と<a href="#Security_Strength_Flags">セキュリティ強度フラグ</a>によって構成された値。将来的には未定義なビット列を受け取ることになるかもしれません。</dd> -</dl> -<h3 id="onStateChange" name="onStateChange()">onStateChange()</h3> -<p>aWebProgress に関連するリクエストのいずれかの状態が変更されたことを通知します。</p> -<pre class="eval">void onStateChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in unsigned long aStateFlags, - in nsresult aStatus -); -</pre> -<h6 id="Parameters" name="Parameters">引数</h6> -<dl> - <dt> - <code>aWebProgress</code></dt> - <dd> - 通知が発生した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス。</dd> - <dt> - <code>aRequest</code></dt> - <dd> - 状態が変更した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。この引数は <code>null</code> である場合があります。</dd> - <dt> - <code>aStateFlags</code></dt> - <dd> - 新しい状態のフラグを表します。この値は、上述した遷移状態フラグのひとつと、状態種類フラグのひとつ、または複数によって構成されています。将来的には未定義なビット列を受け取ることになるかもしれません。</dd> - <dt> - <code>aStatus</code></dt> - <dd> - <p>状態の変更に関連するエラーステータスコードです。この引数は aStateFlag が <code>STATE_STOP</code> ビットを含まない限りは無視されます。ステータスコードは状態の変更に関連するリクエストの成功または失敗を示します。</p> - <div class="note"> - <strong>註:</strong>HTTP <code>404 File Not Found</code> エラーのようなサーバー側で発生したエラーに対しても、成功したとのコードを示すかもしれません。こうした場合において、リクエスト自体のエラー情報については、(HTTPリクエストについては <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpChannel" title="">nsIHttpChannel</a></code> を参照するなど)拡張されたエラー情報を問い合わせるべきです。</div> - </dd> -</dl> -<h3 id="onStatusChange" name="onStatusChange()"><strong>onStatusChange()</strong></h3> -<p>リクエストのステータスが変更されたことを通知します。ステータスメッセージは、ブラウザのステータスバーなどといった、ユーザーへの表示を意図されています。</p> -<pre class="eval">void onStatusChange( - in nsIWebProgress aWebProgress, - in nsIRequest aRequest, - in nsresult aStatus, - in wstring aMessage -); -</pre> -<h6 id="Parameters" name="Parameters">引数</h6> -<dl> - <dt> - <code>aWebProgress</code></dt> - <dd> - 通知が発火した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> 。</dd> - <dt> - <code>aRequest</code></dt> - <dd> - 新たなステータスを持つ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。</dd> - <dt> - <code>aStatus</code></dt> - <dd> - <p>この値はエラーコードではありません。その代わり、現在のリクエストのステータスを示す数値になります。このインターフェースはステータスコードの設定が可能なようには定義されていません。</p> - <div class="note"> - <strong>註:</strong>いくつかのステータス値は、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITransport" title="">nsITransport</a></code> および <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISocketTransport" title="">nsISocketTransport</a></code>で定義されています</div> - </dd> - <dt> - <code>aMessage</code></dt> - <dd> - aStatus に対応するローカライズされたテキスト。</dd> -</dl> -<h2 id="Example" name="Example">例</h2> -<p>タブごとへの nsIWebProgressListener:</p> -<ul> - <li><a href="https://dxr.mozilla.org/mozilla-central/source/browser/base/content/tabbrowser.xml#444" rel="custom">gBrowser.mTabProgressListener による作成</a></li> -</ul> -<p>gBrowser.mProgressListeners (上で述べたようにタブ毎の nsIWebProgressListener によって起動される):</p> -<ul> - <li><a href="https://dxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#4306" rel="custom">XULBrowserWindow.onStateChange</a> (etc.)</li> -</ul> -<p> </p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwindowmediator/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwindowmediator/index.html deleted file mode 100644 index 7a0b9ccaaa..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwindowmediator/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: nsIWindowMediator -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIWindowMediator -tags: - - Interfaces - - 'Interfaces:Scriptable' - - MDC Project - - NeedsEditorialReview - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIWindowMediator ---- -<p> </p> -<p>ウィンドウメディエータは開いているウィンドウを監視する Mozilla コンポーネントです。 <code>nsIWindowMediator</code> インターフェイスを通じてアクセスできます。 <code>nsIWindowMediator</code> の最も一般的な二つの用途は次のようなものです。</p> -<ol> - <li>最前面にある (<span style="color: green;">most recent</span>)、もしくは任意の、指定された型のウィンドウを取得する。</li> - <li>指定された型の全てのウィンドウを列挙する。</li> -</ol> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpfe/appshell/public/nsIWindowMediator.idl" rel="custom">xpfe/appshell/public/nsIWindowMediator.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.6 </span></div> -</div> -<p><br> - 下記の例で、<code>type</code> は検索したいウィンドウの型を示しています。ウィンドウに型を指定するには、<code><<code><a href="/ja/docs/Mozilla/Tech/XUL/window" title="window">window</a></code>></code> や <code><<code><a href="/ja/docs/Mozilla/Tech/XUL/dialog" title="dialog">dialog</a></code>></code> のようなトップレベルの要素に <code><code id="a-windowtype"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/windowtype">windowtype</a></code></code> 属性を付加します。</p> -<p>ブラウザウィンドウは <code>navigator:browser</code> というウィンドウの型を持っています。ウィンドウの型に関わらず全てのウィンドウを検索するには、空文字列 <code>""</code> を渡して下さい。</p> -<p><span id="Getting_most_recent_window"></span></p> -<h3 id=".E6.9C.80.E5.89.8D.E9.9D.A2.E3.81.AB.E3.81.82.E3.82.8B.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B" name=".E6.9C.80.E5.89.8D.E9.9D.A2.E3.81.AB.E3.81.82.E3.82.8B.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B">最前面にあるウィンドウを取得する</h3> -<p>次のコードは、指定した型のウィンドウのいずれかを取得したい時や、ある型のウィンドウ (例えばあなたの拡張機能の設定ダイアログ) がすでに開かれているかどうかを調べたい時に役立ちます。</p> -<p><code>getMostRecentWindow</code> は、 <code>ChromeWindow</code> オブジェクト、もしくは指定された型のウィンドウが開かれていなければ、 <code>null</code> を返します。</p> -<pre>var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); -var win = wm.getMostRecentWindow(type); -</pre> -<p><span id="Enumerating_windows"></span></p> -<h3 id=".E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E5.88.97.E6.8C.99.E3.81.99.E3.82.8B" name=".E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E5.88.97.E6.8C.99.E3.81.99.E3.82.8B">ウィンドウを列挙する</h3> -<p>次のコードは、特定の型の開かれているウィンドウのそれぞれに何かをしなければならない時に使えます。例えば、設定ダイアログの "OK" ハンドラで、開かれているブラウザウィンドウのそれぞれに新しい設定を適用する時などです。</p> -<pre>var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); -var enumerator = wm.getEnumerator(type); -while(enumerator.hasMoreElements()) { - var win = enumerator.getNext(); - // |win| は [Object ChromeWindow] である(|window| と同等)。これに何かをする -} -</pre> -<p>このコードでは特定の型のウィンドウ全てに対して反復処理を行っており、<var>type</var> で指定するのはウィンドウの型です。例えば、全てのブラウザウィンドウを列挙したければ、"navigator:browser" を指定します。型に関わらず全てのウィンドウを列挙したければ、<code>null</code> を指定します。</p> -<div class="note"> - <strong>注意:</strong> <code>nsIWindowMediator</code> のリファレンスページでは、 <code>getMostRecentWindow</code> の戻り値の型と、列挙された要素の型は、 <code>nsIDOMWindow</code>/<code>nsIDOMWindowInternal</code> とされています。実際には、JavaScript のコードから呼ばれる時には、これらのメソッドは普通 (常に?) <code>ChromeWindow</code> オブジェクトを返し、これは上記の両方と他の幾つかのインターフェイスを実装しています。あなたが恐らく慣れ親しんでいるであろう、グローバルオブジェクトの <code>window</code> は <code>ChromeWindow</code> 型です。</div> -<p><span id="See_also"></span></p> -<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3> -<ul> - <li><a href="/ja/Working_with_windows_in_chrome_code" title="ja/Working_with_windows_in_chrome_code">chrome コードでウィンドウを動かす</a></li> -</ul> -<p><span class="comment">Interwiki Languages Links</span></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsixmlhttprequest/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsixmlhttprequest/index.html deleted file mode 100644 index 1f24082b00..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsixmlhttprequest/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: nsIXMLHttpRequest -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIXMLHttpRequest -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequest ---- -<div class="blockIndicator obsolete obsoleteHeader"><p><strong><span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span> Gecko 60 で廃止 (Firefox 60 / Thunderbird 60 / SeaMonkey 2.57)</strong><br>この機能は廃止されました。まだいくつかのブラウザーで動作するかもしれませんが、いつ削除されてもおかしくないので、使わないようにしましょう。</p></div> - -<p><code>nsIXMLHttpRequest</code> along with <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIJSXMLHttpRequest" title="">nsIJSXMLHttpRequest</a></code> and <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequestEventTarget" title="">nsIXMLHttpRequestEventTarget</a></code> are Mozilla's implementation details of the DOM <a href="/en/DOM/XMLHttpRequest" title="en/DOM/XMLHttpRequest">XMLHttpRequest</a> object.</p> - -<div class="note"><strong>Note:</strong> If you're a web developer or a Mozilla add-on developer, please refer to the <a href="/en/DOM/XMLHttpRequest" title="en/DOM/XMLHttpRequest">XMLHttpRequest</a> documentation instead.</div> - -<p>This page contains documentation, specific to Mozilla application and add-on developers.</p> - -<p>The interface definition: <a href="https://dxr.mozilla.org/mozilla-central/source/dom/xhr/nsIXMLHttpRequest.idl">https://dxr.mozilla.org/mozilla-central/source/dom/xhr/nsIXMLHttpRequest.idl</a></p> - -<h3 id="Elevated_Privileges">Elevated Privileges</h3> - -<p>As mentioned in the "Non-Standard Properties" the property of <code>channel</code> was read-only. When using the XPCOM interface, as seen below in <a href="#Example_code">Example 2</a>, we can get access to this. The most obvious benefit is that we can set <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIRequest#Constants">nsiRequest - Constants</a> in the <code>xhr.channel.loadFlags</code>. For instance, as done in <a href="#Example_code">Example 2</a>, the flag of <code>LOAD_ANONYMOUS</code> is added, this strips all user data (cookies, tokens, etc).</p> - -<h3 id="Using_event_handlers_from_native_code">Using event handlers from native code</h3> - -<p>(Not sure if it's up-to-date)</p> - -<p>From native code, the way to set up onload and onerror handlers is a bit different. Here is a comment from Johnny Stenback <<a class="link-mailto" href="mailto:jst@netscape.com" rel="freelink">jst@netscape.com</a>>:</p> - -<blockquote>The mozilla implementation of nsIXMLHttpRequest implements the interface nsIDOMEventTarget and that's how you're supported to add event listeners. Try something like this: nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(myxmlhttpreq)); target->AddEventListener(NS_LITERAL_STRING("load"), mylistener, PR_FALSE) where mylistener is your event listener object that implements the interface nsIDOMEventListener. The 'onload', 'onerror', and 'onreadystatechange' attributes moved to nsIJSXMLHttpRequest, but if you're coding in C++ you should avoid using those.</blockquote> - -<p>Though actually, if you use addEventListener from C++ weird things will happen too, since the result will depend on what JS happens to be on the stack when you do it....</p> - -<p>Conclusion: Do not use event listeners on XMLHttpRequest from C++, unless you're aware of all the security implications. And then think twice about it.</p> - -<h2 id="Example_code" name="Example_code">サンプルコード</h2> - -<p>This is a simple example code for opening a simple HTTP request from a xul application (like a Mozilla extension) without using observers:</p> - -<pre class="eval"> var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(); - req.open('POST', "<a class="external" href="http://www.foo.bar:8080/nietzsche.do" rel="freelink">http://www.foo.bar:8080/nietzsche.do</a>", true); - req.send('your=data&and=more&stuff=here'); -</pre> - -<h2 id="Example_code" name="Example_code">Example 2</h2> - -<pre><code>var {Cu: utils, Cc: classes, Ci: instances} = Components; -Cu.import('resource://gre/modules/Services.jsm'); -function xhr(url, cb) { - let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest); - - let handler = ev => { - evf(m => xhr.removeEventListener(m, handler, !1)); - switch (ev.type) { - case 'load': - if (xhr.status == 200) { - cb(xhr.response); - break; - } - default: - Services.prompt.alert(null, 'XHR Error', 'Error Fetching Package: ' + xhr.statusText + ' [' + ev.type + ':' + xhr.status + ']'); - break; - } - }; - - let evf = f => ['load', 'error', 'abort'].forEach(f); - evf(m => xhr.addEventListener(m, handler, false)); - - xhr.mozBackgroundRequest = true; - xhr.open('GET', url, true); - xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS | Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_PERSISTENT_CACHING; - xhr.responseType = "arraybuffer"; //dont set it, so it returns string, you dont want arraybuffer. you only want this if your url is to a zip file or some file you want to download and make a nsIArrayBufferInputStream out of it or something - xhr.send(null); -} - -xhr('https://www.gravatar.com/avatar/eb9895ade1bd6627e054429d1e18b576?s=24&d=identicon&r=PG&f=1', data => { - Services.prompt.alert(null, 'XHR Success', data); - var file = OS.Path.join(OS.Constants.Path.desktopDir, "test.png"); - var promised = OS.File.writeAtomic(file, new UInt8Array(data)); - promised.then( - function() { - alert('succesfully saved image to desktop') - }, - function(ex) { - alert('FAILED in saving image to desktop') - } - ); -});</code></pre> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipentry/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipentry/index.html deleted file mode 100644 index 7892efac9a..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipentry/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: nsIZipEntry -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIZipEntry -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIZipEntry ---- -<p> </p> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>compression</code></td> - <td><code>readonly attribute unsigned short</code></td> - <td>アイテムに使用される圧縮の種類。取り得る値とそれらの意味は <a class="external" href="http://www.pkware.com/business_and_developers/developer/appnote/" rel="freelink">http://www.pkware.com/business_and_d...loper/appnote/</a> にある ZIP ファイルの仕様書に定義されています。</td> - </tr> - <tr> - <td><code>size</code></td> - <td><code>readonly attribute unsigned long</code></td> - <td>アイテムに含まれるデータの圧縮済みサイズ。</td> - </tr> - <tr> - <td><code>realSize</code></td> - <td><code>readonly attribute unsigned long</code></td> - <td>アイテムに含まれるデータの非圧縮サイズ。</td> - </tr> - <tr> - <td><code>CRC32</code></td> - <td><code>readonly attribute unsigned long</code></td> - <td>エントリに含まれるファイルの CRC-32 ハッシュ値。</td> - </tr> - <tr> - <td><code>isDirectory</code></td> - <td><code>readonly attribute boolean</code></td> - <td>エントリの名前が「/」で終わる場合は true、そうでなければ false。</td> - </tr> - <tr> - <td><code>lastModifiedTime</code></td> - <td><code>readonly attribute PRTime</code></td> - <td>アイテムの最終更新日時。</td> - </tr> - <tr> - <td><code>isSynthetic</code></td> - <td><code>readonly attribute boolean</code></td> - <td>この属性は、アイテムが本当の ZIP エントリであるか、実際のエントリのパスの一部のために合成されたエントリであるかを判別するために使用します。合成エントリは、ZIP ファイル内部で対応するエントリを持たないディレクトリを表します。例えば、ZIP ファイル内のディレクトリ foo/ のためのエントリが、foo/bar.txt のためのエントリをひとつだけ含む場合、それは合成エントリとなります。その ZIP ファイルにディレクトリの実際のエントリが含まれる場合、そのディレクトリの nsIZipEntry に関しては、この属性は false となります。ファイルが合成エントリになることはできません。</td> - </tr> - </tbody> -</table> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<p><a href="ja/NsIZipReader">nsIZipReader</a></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipreader/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipreader/index.html deleted file mode 100644 index 67615221ee..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipreader/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: nsIZipReader -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIZipReader -tags: - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIZipReader ---- -<p> </p> -<div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/modules/libjar/nsIZipReader.idl" rel="custom">modules/libjar/nsIZipReader.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>実装: <code>@mozilla.org/libjar/zip-reader;1</code>。インスタンスを作成するには、以下のように記述します。</p> -<pre class="eval">var zReader = Components.classes["@mozilla.org/libjar/zip-reader;1"] - .createInstance(Components.interfaces.nsIZipReader); -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#open.28.29">open</a>(in nsIFile zipFile)</code></td> - </tr> - <tr> - <td><code>void <a href="#close.28.29">close</a>()</code></td> - </tr> - <tr> - <td><code>void <a href="#test.28.29">test</a>(in string aEntryName)</code></td> - </tr> - <tr> - <td><code>void <a href="#extract.28.29">extract</a>(in string zipEntry, in nsIFile outFile)</code></td> - </tr> - <tr> - <td><code>nsIZipEntry <a href="#getEntry.28.29">getEntry</a>(in string zipEntry)</code></td> - </tr> - <tr> - <td><code>boolean <a href="#hasEntry.28.29">hasEntry</a>(in AUTF8String zipEntry)</code></td> - </tr> - <tr> - <td><code>nsIUTF8StringEnumerator <a href="#findEntries.28.29">findEntries</a>(in string aPattern)</code></td> - </tr> - <tr> - <td><code>nsIInputStream <a href="#getInputStream.28.29">getInputStream</a>(in string zipEntry)</code></td> - </tr> - <tr> - <td><code>nsIInputStream <a href="#getInputStreamWithSpec.28.29">getInputStreamWithSpec</a>(in AUTF8String aJarSpec, in string zipEntry)</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>file</code></td> - <td><code>readonly attribute nsIFile</code></td> - <td>この ZIP ファイルリーダーが初期化された ZIP を表すファイル。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="open.28.29" name="open.28.29">open()</h3> -<p>ZIP ファイルを開いてい読み取れるようにします。他のファイルを開くこともできますが、まず <code>close()</code> で閉じる必要があります。</p> -<pre class="eval">void open(in nsIFile zipFile) -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <code>zipFile</code></dt> - <dd> - 開く ZIP ファイル。</dd> -</dl> -<h3 id="close.28.29" name="close.28.29">close()</h3> -<p>ZIP ファイルを閉じます。以後、ファイルを展開しようとしたり、その入力ストリームから読み取りを行おうとするとエラーになります。</p> -<pre class="eval">void close() -</pre> -<h3 id="test.28.29" name="test.28.29">test()</h3> -<p>各アイテムをメモリに展開する際に CRC チェックを実行して、アーカイブの完全性を検証します。エントリが指定された場合、そのアイテムの完全性のみが検証されます。<code>NULL</code> が渡された場合、アーカイブ内のすべてのアイテムの完全性が検証されます。</p> -<pre class="eval">void test(in string aEntryName) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <code>aEntryName</code></dt> - <dd> - 検証を行う単独のエントリ、あるいは、アーカイブ内のすべてのエントリを検証する場合は <code>NULL</code>。</dd> -</dl> -<h3 id="extract.28.29" name="extract.28.29">extract()</h3> -<p>ZIP エントリを、<code>outFile</code> で指定されたローカルファイルに展開します。展開を正常に完了するには、このエントリは非圧縮あるいはでデフレート圧縮形式で ZIP 内に保存されていなければなりません。エントリがディレクトリの場合、そのディレクトリが非再帰的に展開されます。</p> -<pre class="eval">void extract(in string zipEntry, in nsIFile outFile) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <code>zipEntry</code></dt> - <dd> - 展開する ZIP エントリ。</dd> -</dl> -<dl> - <dt> - <code>outFile</code></dt> - <dd> - ZIP ファイルの展開先に使用するローカルファイル</dd> -</dl> -<h3 id="getEntry.28.29" name="getEntry.28.29">getEntry()</h3> -<p>指定された ZIP エントリに相当する <code>nsIZipEntry</code> を返します。</p> -<pre class="eval">nsIZipEntry getEntry(in string zipEntry) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <code>zipEntry</code></dt> - <dd> - ZIP エントリ。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>指定された ZIP エントリに相当する <code>nsIZipEntry</code>。</p> -<h3 id="hasEntry.28.29" name="hasEntry.28.29">hasEntry()</h3> -<p>ZIP ファイルに entryName で指定されたエントリが含まれているかどうかを確認します。</p> -<pre class="eval">boolean hasEntry(in AUTF8String zipEntry) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>真偽値。該当する ZIP エントリが存在する場合は <code>true</code>、存在しない場合は <code>false</code>。</p> -<h3 id="findEntries.28.29" name="findEntries.28.29">findEntries()</h3> -<p>一致するエントリ名を含む文字列の列挙 (enumerator) を返します。</p> -<pre class="eval">nsIUTF8StringEnumerator findEntries(in string aPattern) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6> -<dl> - <dt> - <code>aPattern</code></dt> - <dd> - ZIP ファイル内でエントリを検索するために使用する正規表現。すべてのエントリを取得するには、この引数を <code>null</code> に設定します。そうでない場合、以下の構文を使ってください。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_ILLEGAL_VALUE</code></dt> - <dd> - 多くの、ただしすべてではない不正な <code>aPattern</code> の値が確認された場合。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6> -<p>一致したエントリ名が含まれる <code>nsIUTF8StringEnumerator</code>。</p> -<h3 id="getInputStream.28.29" name="getInputStream.28.29">getInputStream()</h3> -<p>指定された ZIP エントリの内容が含まれる入力ストリームを返します。</p> -<pre class="eval">nsIInputStream getInputStream(in string zipEntry) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6> -<dl> - <dt> - <code>zipEntry</code></dt> - <dd> - ストリームを開くエントリの名前。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_4" name=".E6.88.BB.E3.82.8A.E5.80.A4_4">戻り値</h6> -<p>指定された ZIP エントリの内容が含まれる <code>nsIInputStream</code>。</p> -<h3 id="getInputStreamWithSpec.28.29" name="getInputStreamWithSpec.28.29">getInputStreamWithSpec()</h3> -<p>指定された ZIP エントリの内容が含まれる入力ストリームを返します。エントリが (「/」で終わる) ディレクトリを参照している場合、ディレクトリストリームが開かれます。そうでない場合はファイルエントリの内容が返されます。</p> -<pre class="eval">nsIInputStream getInputStreamWithSpec(in AUTF8String aJarSpec, in string zipEntry) -</pre> -<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6> -<dl> - <dt> - <code>aJarSpec</code></dt> - <dd> - JAR に使われている URI の Spec (利用されるのはディレクトリストリームの場合のみです)。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_5" name=".E6.88.BB.E3.82.8A.E5.80.A4_5">戻り値</h6> -<p>指定された ZIP エントリの内容が含まれる <code>nsIInputStream</code>。</p> -<h2 id="See_also" name="See_also">See also</h2> -<p><a href="ja/NsIZipEntry">nsIZipEntry</a></p> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipwriter/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipwriter/index.html deleted file mode 100644 index 5113ed3323..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipwriter/index.html +++ /dev/null @@ -1,496 +0,0 @@ ---- -title: nsIZipWriter -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIZipWriter -tags: - - Firefox 3 - - Interfaces - - XPCOM - - XPCOM API Reference -translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIZipWriter ---- -<p> <code>nsIZipWriter</code> インタフェースは、スクリプトを使ってデータを Zip ファイル形式にアーカイブできる簡単な方法を提供します。アーカイブに対する操作はひとつずつ実行することも、キューに入れておいて後で実行することもできます。</p> -<p>実行したい操作をすべてキューに追加したら、<code><a href="#processQueue.28.29">processQueue()</a></code> を呼び出せば、キューに追加した順番通りに操作が実行されます。キューの途中で実行された操作は、オブザーバの対象外で発生したエラーもすべて例外として投げます。</p> -<p>バックグラウンドでキューを実行中に、インタフェースに対して同時に操作を行おうとした場合、<code>NS_ERROR_IN_PROGRESS</code> という例外が投げられます。</p> -<p>ファイル名やディレクトリ名の区切り記号には必ずスラッシュ ("/") を使い、また 1 文字目がスラッシュで始まっていてはいけません。</p> -<div class="blockIndicator note"><strong>註:</strong> ディレクトリ内のファイルエントリを追加するために、そのディレクトリのエントリを追加しておく必要はありませんが、一部の Zip ユーティリティでは問題が生じる可能性がありますので、あらかじめディレクトリエントリを明示的に追加しておいた方が良いでしょう。</div> -<p><br> - </p><div style="border: solid #ddd 2px; margin-bottom: 12px;"> -<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/modules/libjar/zipwriter/public/nsIZipWriter.idl" rel="custom">modules/libjar/zipwriter/public/nsIZipWriter.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div> -<span style="padding: 4px 2px;"> - -<i>Please add a summary to this article.</i> -</span> - -<div style="background: #eee; padding: 2px;"> -<span> </span> -<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div> -</div> -<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p> -<p>実装: <code>@mozilla.org/zipwriter;1</code>. インスタンスを作成するには、以下のように記述します。</p> -<pre class="eval">var zipWriter = Components.classes["@mozilla.org/zipwriter;1"] - .createInstance(Components.interfaces.nsIZipWriter); -</pre> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2> -<table class="standard-table"> - <tbody> - <tr> - <td><code>void <a href="#addEntryDirectory.28.29">addEntryDirectory</a>(in AUTF8String aZipEntry, in PRTime aModTime, in boolean aQueue);</code></td> - </tr> - <tr> - <td><code>void <a href="#addEntryChannel.28.29">addEntryChannel</a>(in AUTF8SZtring aZipEntry, in PRTime aModTime, in PRInt32 aCompression, in <a href="/ja/NsIChannel" title="ja/NsIChannel">nsIChannel</a> aChannel, in boolean aQueue)</code></td> - </tr> - <tr> - <td><code>void <a href="#addEntryFile.28.29">addEntryFile</a>(in AUTF8SZtring aZipEntry, in PRInt32 aCompression, in nsIFile aFile, in boolean aQueue)</code></td> - </tr> - <tr> - <td><code>void <a href="#addEntryStream.28.29">addEntryStream</a>(in AUTF8SZtring aZipEntry, in PRTime aModTime, in PRInt32 aCompression, in <a href="/ja/nsIInputStream" title="ja/nsIInputStream">nsIInputStream</a> aStream, in boolean aQueue)</code></td> - </tr> - <tr> - <td><code>void <a href="#close.28.29">close</a>()</code></td> - </tr> - <tr> - <td><code><a href="/ja/nsIZipEntry" title="ja/nsIZipEntry">nsIZipEntry</a> <a href="#getEntry.28.29">getEntry</a>(in <a href="/ja/AUTF8String" title="ja/AUTF8String">AUTF8String</a> aZipEntry);</code></td> - </tr> - <tr> - <td><code>boolean <a href="#hasEntry.28.29">hasEntry</a>(in AUTF8String aZipEntry);</code></td> - </tr> - <tr> - <td><code>void <a href="#open.28.29">open</a>(in <a href="/ja/NsIFile" title="ja/NsIFile">nsIFile</a> aFile, in PRInt32 aIoFlags);</code></td> - </tr> - <tr> - <td><code>void <a href="#processQueue.28.29">processQueue</a>(in nsIRequestObserver aObserver, in nsISupports aContext)</code></td> - </tr> - <tr> - <td><code>void <a href="#removeEntry.28.29">removeEntry</a>(in AUTF8String aZipEntry, in boolean aQueue)</code></td> - </tr> - </tbody> -</table> -<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">属性</td> - <td class="header">型</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>comment</code></td> - <td><code><a href="/ja/ACString" title="ja/ACString">ACString</a></code></td> - <td>開かれている Zip ファイルに関連付けられているコメントを取得あるいは設定します。開かれている Zip ファイルがない場合は、例外 <code>NS_ERROR_NOT_INITIALIZED</code> が投げられます。</td> - </tr> - <tr> - <td><code>inQueue</code></td> - <td><code>boolean</code></td> - <td>バックグラウンドのキューで操作が実行中の場合は <code>true</code>、バックグラウンド操作が実行中でない場合は <code>false</code>。<em>読み取り専用。</em></td> - </tr> - <tr> - <td><code>file</code></td> - <td><code><a href="/ja/NsIFile" title="ja/NsIFile">nsIFile</a></code></td> - <td>書き込みを行う Zip ファイル。<em>読み取り専用。</em></td> - </tr> - </tbody> -</table> -<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">定数</td> - <td class="header">値</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>COMPRESSION_NONE</code></td> - <td>0</td> - <td>ファイルを圧縮しない。</td> - </tr> - <tr> - <td><code>COMPRESSION_FASTEST</code></td> - <td>1</td> - <td>ファイルをアーカイブに追加する際、最速の圧縮方法を使用します。</td> - </tr> - <tr> - <td><code>COMPRESSION_DEFAULT</code></td> - <td>6</td> - <td>ファイルをアーカイブに追加する際、標準の圧縮方法を使用します。</td> - </tr> - <tr> - <td><code>COMPRESSION_BEST</code></td> - <td>9</td> - <td>ファイルをアーカイブに追加する際、最も圧縮率の高い圧縮方法を使用します。</td> - </tr> - </tbody> -</table> -<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2> -<h3 id="addEntryDirectory.28.29" name="addEntryDirectory.28.29">addEntryDirectory()</h3> -<p>Zip ファイルに新しいディレクトリエントリを追加します。</p> -<div class="blockIndicator note"><strong>註:</strong> ディレクトリ内のファイルエントリを追加するために、そのディレクトリのエントリを追加しておく必要はありませんが、一部の Zip ユーティリティでは問題が生じる可能性がありますので、あらかじめディレクトリエントリを明示的に追加しておいた方が良いでしょう。</div> -<pre class="eval"> void addEntryDirectory( - in AUTF8String aZipEntry, - in PRTime aModTime, - in boolean aQueue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6> -<dl> - <dt> - <code>aZipEntry</code></dt> - <dd> - Zip ファイルに追加するディレクトリエントリのパス。</dd> - <dt> - <code>aModTime</code></dt> - <dd> - エントリの変更日時。ミリ秒単位。</dd> - <dt> - <code>aQueue</code></dt> - <dd> - 操作をキューに追加して後で実行する場合は <code>true</code>、操作を即座に実行する場合は <code>false</code>。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_NOT_INITIALIZED</code></dt> - <dd> - 開かれている Zip ファイルがありません。</dd> - <dt> - <code>NS_ERROR_FILE_ALREADY_EXISTS</code></dt> - <dd> - 指定されたパスは既に Zip ファイルの中に存在します。</dd> - <dt> - <code>NS_ERROR_IN_PROGRESS</code></dt> - <dd> - Zip Writer は他の操作を実行中です。</dd> -</dl> -<h3 id="addEntryChannel.28.29" name="addEntryChannel.28.29">addEntryChannel()</h3> -<p>チャンネルから Zip ファイルにデータを追加します。</p> -<pre class="eval"> void addEntryChannel( - in AUTF8String aZipEntry, - in PRTime aModTime, - in PRInt32 aCompression, - in nsIChannel aChannel, - in boolean aQueue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6> -<dl> - <dt> - <code>aZipEntry</code></dt> - <dd> - Zip ファイルに追加するファイルエントリのパス。これは Zip ファイル内に配置されるパスになります。</dd> - <dt> - <code>aModTime</code></dt> - <dd> - エントリの変更日時。ミリ秒単位。</dd> - <dt> - <code>aCompression</code></dt> - <dd> - 使用する圧縮方法を表す <a href="#Constants">圧縮定数</a> のいずれか。</dd> - <dt> - <code>aChannel</code></dt> - <dd> - データを取得するチャンネル。</dd> - <dt> - <code>aQueue</code></dt> - <dd> - 操作をキューに追加して後で実行する場合は <code>true</code>、操作を即座に実行する場合は <code>false</code>。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_NOT_INITIALIZED</code></dt> - <dd> - 開かれている Zip ファイルがありません。</dd> - <dt> - <code>NS_ERROR_FILE_ALREADY_EXISTS</code></dt> - <dd> - 指定されたパスは既に Zip ファイルの中に存在します。</dd> - <dt> - <code>NS_ERROR_IN_PROGRESS</code></dt> - <dd> - Zip Writer は他の操作を実行中です。</dd> -</dl> -<h3 id="addEntryFile.28.29" name="addEntryFile.28.29">addEntryFile()</h3> -<p>新しいファイルもしくはディレクトリを Zip ファイルに追加します。指定されたファイルがディレクトリの場合、この呼び出しは以下と同じことになります。</p> -<pre class="eval"> addEntryDirectory(aZipEntry, aFile.lastModifiedTime, aQueue); -</pre> -<pre class="eval"> void addEntryFile( - in AUTF8String aZipEntry, - in PRInt32 aCompression, - in nsIFile aFile, - in boolean aQueue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6> -<dl> - <dt> - <code>aZipEntry</code></dt> - <dd> - Zip ファイルに追加するファイルエントリのパス。これは Zip ファイル内に配置されるパスになります。</dd> - <dt> - <code>aCompression</code></dt> - <dd> - 使用する圧縮方法を表す <a href="#Constants">圧縮定数</a> のいずれか。</dd> - <dt> - <code>aFile</code></dt> - <dd> - データと変更日時を取得するファイル。</dd> - <dt> - <code>aQueue</code></dt> - <dd> - 操作をキューに追加して後で実行する場合は <code>true</code>、操作を即座に実行する場合は <code>false</code>。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_NOT_INITIALIZED</code></dt> - <dd> - 開かれている Zip ファイルがありません。</dd> - <dt> - <code>NS_ERROR_FILE_ALREADY_EXISTS</code></dt> - <dd> - 指定されたパスは既に Zip ファイルの中に存在します。</dd> - <dt> - <code>NS_ERROR_IN_PROGRESS</code></dt> - <dd> - Zip Writer は他の操作を実行中です。</dd> -</dl> -<h3 id="addEntryStream.28.29" name="addEntryStream.28.29">addEntryStream()</h3> -<p>入力ストリームから Zip ファイルにデータを追加します。</p> -<pre class="eval"> void addEntryStream( - in AUTF8String aZipEntry, - in PRTime aModTime, - in PRInt32 aCompression, - in nsIInputStream aStream, - in boolean aQueue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6> -<dl> - <dt> - <code>aZipEntry</code></dt> - <dd> - Zip ファイルに追加するファイルエントリのパス。これは Zip ファイル内に配置されるパスになります。</dd> - <dt> - <code>aModTime</code></dt> - <dd> - エントリの変更日時。ミリ秒単位。</dd> - <dt> - <code>aCompression</code></dt> - <dd> - 使用する圧縮方法を表す <a href="#Constants">圧縮定数</a> のいずれか。</dd> - <dt> - <code>aStream</code></dt> - <dd> - データを取得する入力ストリーム。</dd> - <dt> - <code>aQueue</code></dt> - <dd> - 操作をキューに追加して後で実行する場合は <code>true</code>、操作を即座に実行する場合は <code>false</code>。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_4" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_4">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_NOT_INITIALIZED</code></dt> - <dd> - 開かれている Zip ファイルがありません。</dd> - <dt> - <code>NS_ERROR_FILE_ALREADY_EXISTS</code></dt> - <dd> - 指定されたパスは既に Zip ファイルの中に存在します。</dd> - <dt> - <code>NS_ERROR_IN_PROGRESS</code></dt> - <dd> - Zip Writer は他の操作を実行中です。</dd> -</dl> -<h3 id="close.28.29" name="close.28.29">close()</h3> -<p>Zip ファイルを閉じます。</p> -<pre class="eval"> void close(); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6> -<p>なし。</p> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_5" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_5">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_NOT_INITIALIZED</code></dt> - <dd> - 開かれている Zip ファイルがありません。</dd> - <dt> - <code>NS_ERROR_IN_PROGRESS</code></dt> - <dd> - Zip Writer は他の操作を実行中です。</dd> -</dl> -<p>Zip ファイルの仕上げが失敗した場合、他の例外が投げられる場合もあります。</p> -<h3 id="getEntry.28.29" name="getEntry.28.29">getEntry()</h3> -<p>開かれている Zip ファイルから特定のエントリを取得します。</p> -<pre class="eval"> nsIZipEntry getEntry( - in AUTF8String aZipEntry, - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6> -<dl> - <dt> - <code>aZipEntry</code></dt> - <dd> - 取得するファイルエントリのパス。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6> -<p>指定したエントリについて説明した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIZipEntry" title="">nsIZipEntry</a></code> オブジェクト。あるいは、該当するエントリが存在しなかった場合 <code>null</code>。</p> -<h3 id="hasEntry.28.29" name="hasEntry.28.29">hasEntry()</h3> -<p>特定のエントリが Zip ファイル内に存在するかどうかを判別します。</p> -<pre class="eval"> boolean hasEntry( - in AUTF8String aZipEntry, - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6> -<dl> - <dt> - <code>aZipEntry</code></dt> - <dd> - 確認を行うファイルエントリのパス。</dd> -</dl> -<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6> -<p>指定されたパスのエントリが Zip ファイル内に存在する場合は <code>true</code>、存在しない場合は <code>false</code> を返します。</p> -<h3 id="open.28.29" name="open.28.29">open()</h3> -<p>指定された Zip ファイルを開きます。</p> -<pre class="eval"> void open( - in nsIFile aFile, - in PRInt32 aIoFlags - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6> -<dl> - <dt> - <code>aFile</code></dt> - <dd> - 開く Zip ファイル。</dd> - <dt> - <code>aIoFlags</code></dt> - <dd> - <code>prio.h</code> で指定された、Zip ファイルのオープンフラグ。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_6" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_6">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_ALREADY_INITIALIZED</code></dt> - <dd> - Zip ファイルは既に開かれています。</dd> - <dt> - <code>NS_ERROR_INVALID_ARG</code></dt> - <dd> - <code>aFile</code> 引数が null です。</dd> - <dt> - <code>NS_ERROR_FILE_NOT_FOUND</code></dt> - <dd> - 指定されたファイルが見つからず、フラグでそのファイルの作成が許可されていません。または、指定されたファイルを含むディレクトリが存在しません。</dd> - <dt> - <code>NS_ERROR_FILE_CORRUPTED</code></dt> - <dd> - 指定されたファイルは識別可能な Zip ファイルではありません。</dd> -</dl> -<p>ファイルが破損していた場合やサポートされていない形式だった場合など、ファイルを開くのに失敗すると、他の例外が投げられる場合もあります。</p> -<h3 id="processQueue.28.29" name="processQueue.28.29">processQueue()</h3> -<p>キュー全体の処理が完了するかエラーが発生するまで、キューに追加されたすべての項目を処理します。最初の操作が開始されたときと、最後の操作が完了したときに、オブザーバに通知が行われます。</p> -<p>エラーが発生した場合はすべてオブザーバに通知されます。</p> -<p>キューが完了するか、エラーが起きて途中までのキューの処理が中止されるまで、Zip Writer はビジー状態になります。途中までの処理に失敗した場合、残りの項目はキューに留まります。再度 <code>processQueue()</code> を呼び出すと、操作が中断されたところから再開されます。</p> -<pre class="eval"> void processQueue( - in nsIRequestObserver aObserver, - in nsISupports aContext - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_9" name=".E5.BC.95.E6.95.B0_9">引数</h6> -<dl> - <dt> - <code>aObserver</code></dt> - <dd> - キューから通知を受け取るオブザーバ。</dd> - <dt> - <code>aContext</code></dt> - <dd> - オブザーバに渡すコンテキスト。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_7" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_7">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_NOT_INITIALIZED</code></dt> - <dd> - 開かれている Zip ファイルがありません。</dd> - <dt> - <code>NS_ERROR_IN_PROGRESS</code></dt> - <dd> - キューの処理は既に実行中です。</dd> -</dl> -<h3 id="removeEntry.28.29" name="removeEntry.28.29">removeEntry()</h3> -<p>Zip ファイルからエントリを削除します。</p> -<pre class="eval"> void removeEntry( - in AUTF8String aZipEntry, - in boolean aQueue - ); -</pre> -<h6 id=".E5.BC.95.E6.95.B0_10" name=".E5.BC.95.E6.95.B0_10">引数</h6> -<dl> - <dt> - <code>aZipEntry</code></dt> - <dd> - Zip ファイルから削除するエントリのパス。</dd> - <dt> - <code>aQueue</code></dt> - <dd> - 削除の操作をキューに追加する場合は <code>true</code>。即座に実行する場合は <code>false</code>。</dd> -</dl> -<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_8" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_8">投げられる例外</h6> -<dl> - <dt> - <code>NS_ERROR_NOT_INITIALIZED</code></dt> - <dd> - 開かれている Zip ファイルがありません。</dd> - <dt> - <code>NS_ERROR_IN_PROGRESS</code></dt> - <dd> - キューの処理は既に実行中です。</dd> - <dt> - <code>NS_ERROR_FILE_NOT_FOUND</code></dt> - <dd> - 指定されたパスにエントリが存在しません。</dd> -</dl> -<p>Zip ファイルの更新に失敗した場合、他の例外が投げられる場合もあります。</p> -<h2 id=".E4.BE.8B" name=".E4.BE.8B">例</h2> -<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88.E3.82.92_Zip_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AB.E8.BF.BD.E5.8A.A0.E3.81.99.E3.82.8B" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88.E3.82.92_Zip_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AB.E8.BF.BD.E5.8A.A0.E3.81.99.E3.82.8B">コメントを Zip ファイルに追加する</h3> -<pre>var zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter"); -var zipW = new zipWriter(); - -zipW.open(myZipFilePath, PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE); -zipW.comment = "This is a comment."; -zipW.close(); -</pre> -<p><code>PR_RDWR</code> とそれに続くオプションは、どのインタフェースにも含まれていない定数です (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=433295">Bug 433295</a> 参照)。このため、上記のコードを実際に動作させるには、以下のようなコードを追加する必要があります。</p> -<pre>const PR_RDONLY = 0x01; -const PR_WRONLY = 0x02; -const PR_RDWR = 0x04; -const PR_CREATE_FILE = 0x08; -const PR_APPEND = 0x10; -const PR_TRUNCATE = 0x20; -const PR_SYNC = 0x40; -const PR_EXCL = 0x80; -</pre> -<p><a href="/ja/Code_snippets/File_I//O_File" title="ja/Code_snippets/File_I//O_File">I/O Snippets</a> も参照してください。</p> -<h3 id=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92_Zip_.E3.82.A2.E3.83.BC.E3.82.AB.E3.82.A4.E3.83.96.E3.81.AB.E8.BF.BD.E5.8A.A0.E3.81.99.E3.82.8B" name=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92_Zip_.E3.82.A2.E3.83.BC.E3.82.AB.E3.82.A4.E3.83.96.E3.81.AB.E8.BF.BD.E5.8A.A0.E3.81.99.E3.82.8B">ファイルを Zip アーカイブに追加する</h3> -<p>このコードは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code> <code>theFile</code> で指定されたファイルを、Zip アーカイブへ同期的に追加するものです。</p> -<pre>var zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter"); -var zipW = new zipWriter(); - -zipW.open(myZipFilePath, PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE); -zipW.addEntryFile("Path/For/This/File/In/Zip Archive", Components.interfaces.nsIZipWriter.COMPRESSION_DEFAULT, theFile, false); -zipW.close(); -</pre> -<p>引数のうち <code>nyZipFilePath</code> は、実際にはパスではなく、新しい Zip ファイルの場所を指定する <code>nsIFile</code> インスタンスのことを指しています。ファイルそのものは存在していなくても構いませんが、そのファイルを含むディレクトリ (つまり nsIFile.parent) は必ず存在している必要があります。</p> -<h3 id=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E4.BE.8B" name=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E4.BE.8B">その他の例</h3> -<p>他の例については、ソースツリー内のユニットテストを参照してください。</p> -<ul> - <li><code><a href="https://dxr.mozilla.org/mozilla-central/source/modules/libjar/zipwriter/test/unit" rel="custom">modules/libjar/zipwriter/test/unit</a></code></li> -</ul> -<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2> -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIZipReader" title="">nsIZipReader</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code></li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code></li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference_group/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference_group/index.html deleted file mode 100644 index 16538d388e..0000000000 --- a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference_group/index.html +++ /dev/null @@ -1,976 +0,0 @@ ---- -title: XPCOM Interface Reference group -slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference_group -translation_of: Mozilla/Tech/XPCOM/Reference/Reference_by_grouping ---- -<h2 id="Using_this_guide">Using this guide</h2> - -<p>このページには2010年12月1日現在の Mozilla インターフェースが一覧となっています。<a href="/ja/XPCOM_Interface_Reference" title="ja/XPCOM_Interface_Reference">the XPCOM interface Reference</a> の一覧はアルファベット順に並べられていますが、このページではそれらを機能ごとにグループ化するという試みがなされています。グループ化とカテゴリの名称は著者<span style="color: darkgreen; background: #ef9;">【訳注: 英語版のこのページの著者】</span>による独断が多少入り混じっています。(これについては涙を流す結末になりうる重大な論点であるとは認識しています。ですが、どうやら私がこの編集を行った最初の人物であるようなので、最初の編集者としての権利を得たものとします。)</p> -<p>主要セクションの定義:</p> -<ul> - <li><strong>Browser</strong> - <p>このセクションはビューペインまたは"browser window" 固有のコンテンツに関連する要素を含んでいます。<strong>System</strong> によってラップされていますが、便利に表示されます。</p> - </li> - <li><strong>Data</strong> - <p>このセクションはデータラッパーとコアオブジェクトの定義が含まれています。</p> - </li> - <li><strong>Security</strong> - <p>このセクションは安全なチャンネルコミュニケーションのための API 群を含んでいます。</p> - </li> - <li><strong>System</strong> - <p>このセクションは、(デバイスコールのような)外部のサポートしている要素の呼び出しを含む、アプリケーションレベルのインターフェースを含んでいます。これはルート要素であり、他のグループで定義されている幾つかの機能を含むものです。</p> - </li> - <li><strong>User</strong> - <p>このセクションは与えられたユーザーデータのストレージ固有の要素を含んでいます。</p> - </li> -</ul> -<div class="columns" style=""> - <div class="primary Browser" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h1 id="Browser">Browser</h1> - <ul> - <li class="secondary Autocomplete" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Autocomplete">Autocomplete</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAutoCompleteController" title="ja/XPCOM_Interface_Reference/nsIAutoCompleteController">nsIAutoCompleteController</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAutoCompleteInput" title="ja/XPCOM_Interface_Reference/nsIAutoCompleteInput">nsIAutoCompleteInput</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAutoCompleteSearch" title="ja/XPCOM_Interface_Reference/nsIAutoCompleteSearch">nsIAutoCompleteSearch</a></li> - </ul> - </li> - <li class="secondary Console" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Console">Console</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIConsoleListener" title="ja/XPCOM_Interface_Reference/nsIConsoleListener">nsIConsoleListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIConsoleMessage" title="ja/XPCOM_Interface_Reference/nsIConsoleMessage">nsIConsoleMessage</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIConsoleService" title="ja/XPCOM_Interface_Reference/nsIConsoleService">nsIConsoleService</a></li> - </ul> - </li> - <li class="secondary Document" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Document">Document</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDocShell" title="ja/XPCOM_Interface_Reference/nsIDocShell">nsIDocShell</a></li> - </ul> - </li> - <li class="secondary DOM" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="DOM">DOM</h2> - <ul> - <li class="tercerary Device" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Device">Device</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoGeolocation" title="ja/XPCOM_Interface_Reference/NsIDOMGeoGeolocation">nsIDOMGeoGeolocation</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPosition" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPosition">nsIDOMGeoPosition</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMGeoPositionAddress" title="ja/XPCOM_Interface_Reference/nsIDOMGeoPositionAddress">nsIDOMGeoPositionAddress</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionCallback" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionCallback">nsIDOMGeoPositionCallback</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionCoords" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionCoords">nsIDOMGeoPositionCoords</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionError" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionError">nsIDOMGeoPositionError</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionErrorCallback" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionErrorCallback">nsIDOMGeoPositionErrorCallback</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionOptions" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionOptions">nsIDOMGeoPositionOptions</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMGlobalPropertyInitializer" title="ja/XPCOM_Interface_Reference/nsIDOMGlobalPropertyInitializer">nsIDOMGlobalPropertyInitializer</a></li> - </ul> - </li> - <li class="tercerary Element" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Element">Element</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMChromeWindow" title="ja/XPCOM_Interface_Reference/nsIDOMChromeWindow">nsIDOMChromeWindow</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMClientRect" title="ja/XPCOM_Interface_Reference/nsIDOMClientRect">nsIDOMClientRect</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMElement" title="ja/XPCOM_Interface_Reference/nsIDOMElement">nsIDOMElement</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMHTMLAudioElement" title="ja/XPCOM_Interface_Reference/nsIDOMHTMLAudioElement">nsIDOMHTMLAudioElement</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMHTMLFormElement" title="ja/XPCOM_Interface_Reference/nsIDOMHTMLFormElement">nsIDOMHTMLFormElement</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMHTMLMediaElement" title="ja/XPCOM_Interface_Reference/NsIDOMHTMLMediaElement">nsIDOMHTMLMediaElement</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMHTMLSourceElement" title="ja/XPCOM_Interface_Reference/nsIDOMHTMLSourceElement">nsIDOMHTMLSourceElement</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMHTMLTimeRanges" title="ja/XPCOM_Interface_Reference/nsIDOMHTMLTimeRanges">nsIDOMHTMLTimeRanges</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMJSWindow" title="ja/XPCOM_Interface_Reference/nsIDOMJSWindow">nsIDOMJSWindow</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMNode" title="ja/XPCOM_Interface_Reference/nsIDOMNode">nsIDOMNode</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMNSHTMLDocument" title="ja/XPCOM_Interface_Reference/nsIDOMNSHTMLDocument">nsIDOMNSHTMLDocument</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMStorageItem" title="ja/XPCOM_Interface_Reference/NsIDOMStorageItem">nsIDOMStorageItem</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMStorageManager" title="ja/XPCOM_Interface_Reference/NsIDOMStorageManager">nsIDOMStorageManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMWindow" title="ja/XPCOM_Interface_Reference/nsIDOMWindow">nsIDOMWindow</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMWindow2" title="ja/XPCOM_Interface_Reference/nsIDOMWindow2">nsIDOMWindow2</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMWindowInternal" title="ja/XPCOM_Interface_Reference/nsIDOMWindowInternal">nsIDOMWindowInternal</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMWindowUtils" title="ja/XPCOM_Interface_Reference/nsIDOMWindowUtils">nsIDOMWindowUtils</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDynamicContainer" title="ja/XPCOM_Interface_Reference/nsIDynamicContainer">nsIDynamicContainer</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIEditor" title="ja/XPCOM_Interface_Reference/NsIEditor">nsIEditor</a></li> - </ul> - </li> - <li class="tercerary Event" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Event">Event</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMEvent" title="ja/XPCOM_Interface_Reference/nsIDOMEvent">nsIDOMEvent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMEventGroup" title="ja/XPCOM_Interface_Reference/nsIDOMEventGroup">nsIDOMEventGroup</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMEventListener" title="ja/XPCOM_Interface_Reference/nsIDOMEventListener">nsIDOMEventListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMEventTarget" title="ja/XPCOM_Interface_Reference/nsIDOMEventTarget">nsIDOMEventTarget</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMMouseScrollEvent" title="ja/XPCOM_Interface_Reference/nsIDOMMouseScrollEvent">nsIDOMMouseScrollEvent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMMozTouchEvent" title="ja/XPCOM_Interface_Reference/nsIDOMMozTouchEvent">nsIDOMMozTouchEvent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMOrientationEvent" title="ja/XPCOM_Interface_Reference/nsIDOMOrientationEvent">nsIDOMOrientationEvent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMProgressEvent" title="ja/XPCOM_Interface_Reference/NsIDOMProgressEvent">nsIDOMProgressEvent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMSimpleGestureEvent" title="ja/XPCOM_Interface_Reference/NsIDOMSimpleGestureEvent">nsIDOMSimpleGestureEvent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDragDropHandler" title="ja/XPCOM_Interface_Reference/nsIDragDropHandler">nsIDragDropHandler</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDragService" title="ja/XPCOM_Interface_Reference/nsIDragService">nsIDragService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDragSession" title="ja/XPCOM_Interface_Reference/nsIDragSession">nsIDragSession</a></li> - </ul> - </li> - <li class="tercerary HTML" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="HTML">HTML</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibilityService" title="ja/XPCOM_Interface_Reference/nsIAccessibilityService">nsIAccessibilityService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleCoordinateType" title="ja/XPCOM_Interface_Reference/nsIAccessibleCoordinateType">nsIAccessibleCoordinateType</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleDocument" title="ja/XPCOM_Interface_Reference/nsIAccessibleDocument">nsIAccessibleDocument</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleEditableText" title="ja/XPCOM_Interface_Reference/nsIAccessibleEditableText">nsIAccessibleEditableText</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleEvent" title="ja/XPCOM_Interface_Reference/nsIAccessibleEvent">nsIAccessibleEvent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleHyperLink" title="ja/XPCOM_Interface_Reference/nsIAccessibleHyperLink">nsIAccessibleHyperLink</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleHyperText" title="ja/XPCOM_Interface_Reference/nsIAccessibleHyperText">nsIAccessibleHyperText</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIAccessibleImage" title="ja/XPCOM_Interface_Reference/NsIAccessibleImage">nsIAccessibleImage</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleProvider" title="ja/XPCOM_Interface_Reference/nsIAccessibleProvider">nsIAccessibleProvider </a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleRetrieval" title="ja/XPCOM_Interface_Reference/nsIAccessibleRetrieval">nsIAccessibleRetrieval</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleRole" title="ja/XPCOM_Interface_Reference/nsIAccessibleRole">nsIAccessibleRole</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleScrollType" title="ja/XPCOM_Interface_Reference/nsIAccessibleScrollType">nsIAccessibleScrollType</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleSelectable" title="ja/XPCOM_Interface_Reference/nsIAccessibleSelectable">nsIAccessibleSelectable</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleStates" title="ja/XPCOM_Interface_Reference/nsIAccessibleStates">nsIAccessibleStates</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleTable" title="ja/XPCOM_Interface_Reference/nsIAccessibleTable">nsIAccessibleTable</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleText" title="ja/XPCOM_Interface_Reference/nsIAccessibleText">nsIAccessibleText</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleTreeCache" title="ja/XPCOM_Interface_Reference/nsIAccessibleTreeCache">nsIAccessibleTreeCache</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleValue" title="ja/XPCOM_Interface_Reference/nsIAccessibleValue">nsIAccessibleValue</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIAccessNode" title="ja/XPCOM_Interface_Reference/NsIAccessNode">nsIAccessNode</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISyncMessageSender" title="ja/XPCOM_Interface_Reference/nsISyncMessageSender">nsISyncMessageSender</a></li> - </ul> - </li> - <li class="tercerary Script" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Script">Script</h3> - <ul> - <li><a>nsIScriptableUnescapeHTML</a></li> - <li><a>nsIScriptableUnicodeConverter</a></li> - <li><a>nsIScriptError</a></li> - <li><a>nsIScriptError2</a></li> - </ul> - </li> - <li class="tercerary StyleSheet" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="StyleSheet">StyleSheet</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIStyleSheetService" title="ja/XPCOM_Interface_Reference/nsIStyleSheetService">nsIStyleSheetService</a></li> - </ul> - </li> - <li class="tercerary URL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="URL">URL</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIURI" title="ja/XPCOM_Interface_Reference/nsIURI">nsIURI</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIURL" title="ja/XPCOM_Interface_Reference/nsIURL">nsIURL</a></li> - </ul> - </li> - <li class="tercerary Util" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Util">Util</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMSerializer" title="ja/XPCOM_Interface_Reference/nsIDOMSerializer">nsIDOMSerializer</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMXPathEvaluator" title="ja/XPCOM_Interface_Reference/nsIDOMXPathEvaluator">nsIDOMXPathEvaluator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMXPathException" title="ja/XPCOM_Interface_Reference/nsIDOMXPathException">nsIDOMXPathException</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMXPathExpression" title="ja/XPCOM_Interface_Reference/nsIDOMXPathExpression">nsIDOMXPathExpression</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMXPathResult" title="ja/XPCOM_Interface_Reference/nsIDOMXPathResult">nsIDOMXPathResult</a></li> - </ul> - </li> - <li class="tercerary XSLT" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="XSLT">XSLT</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXSLTException" title="ja/XPCOM_Interface_Reference/nsIXSLTException">nsIXSLTException</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXSLTProcessor" title="ja/XPCOM_Interface_Reference/nsIXSLTProcessor">nsIXSLTProcessor</a></li> - </ul> - </li> - </ul> - </li> - <li class="secondary Download" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Download">Download</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDownload" title="ja/XPCOM_Interface_Reference/nsIDownload">nsIDownload</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDownloadManager" title="ja/XPCOM_Interface_Reference/nsIDownloadManager">nsIDownloadManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDownloadProgressListener" title="ja/XPCOM_Interface_Reference/nsIDownloadProgressListener">nsIDownloadProgressListener</a></li> - </ul> - </li> - <li class="secondary Element" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Element_2">Element</h2> - <ul> - <li class="tercerary Internal" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Internal">Internal</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIWorker" title="ja/XPCOM_Interface_Reference/NsIWorker">nsIWorker</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIWorkerGlobalScope" title="ja/XPCOM_Interface_Reference/NsIWorkerGlobalScope">nsIWorkerGlobalScope</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIWorkerMessageEvent" title="ja/XPCOM_Interface_Reference/NsIWorkerMessageEvent">nsIWorkerMessageEvent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIWorkerMessagePort" title="ja/XPCOM_Interface_Reference/NsIWorkerMessagePort">nsIWorkerMessagePort</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIWorkerScope" title="ja/XPCOM_Interface_Reference/NsIWorkerScope">nsIWorkerScope</a></li> - </ul> - </li> - <li class="tercerary Tree" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Tree">Tree</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsITreeBoxObject" title="ja/XPCOM_Interface_Reference/nsITreeBoxObject">nsITreeBoxObject</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITreeColumn" title="ja/XPCOM_Interface_Reference/nsITreeColumn">nsITreeColumn</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsITreeColumns" title="ja/XPCOM_Interface_Reference/NsITreeColumns">nsITreeColumns</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsITreeContentView" title="ja/XPCOM_Interface_Reference/NsITreeContentView">nsITreeContentView</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITreeSelection" title="ja/XPCOM_Interface_Reference/nsITreeSelection">nsITreeSelection</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITreeView" title="ja/XPCOM_Interface_Reference/nsITreeView">nsITreeView</a></li> - </ul> - </li> - <li class="tercerary Xform" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Xform">Xform</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXFormsModelElement" title="ja/XPCOM_Interface_Reference/nsIXFormsModelElement">nsIXFormsModelElement</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXFormsNSInstanceElement" title="ja/XPCOM_Interface_Reference/nsIXFormsNSInstanceElement">nsIXFormsNSInstanceElement</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXFormsNSModelElement" title="ja/XPCOM_Interface_Reference/nsIXFormsNSModelElement">nsIXFormsNSModelElement</a></li> - </ul> - </li> - <li class="tercerary XMLHttpRequest" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="XMLHttpRequest">XMLHttpRequest</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIXMLHttpRequestEventTarget" title="ja/XPCOM_Interface_Reference/NsIXMLHttpRequestEventTarget">nsIXMLHttpRequestEventTarget</a></li> - </ul> - </li> - </ul> - </li> - <li class="secondary FavIcon" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="FavIcon">FavIcon</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFaviconDataCallback" title="ja/XPCOM_Interface_Reference/nsIFaviconDataCallback">nsIFaviconDataCallback</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFaviconService" title="ja/XPCOM_Interface_Reference/nsIFaviconService">nsIFaviconService</a></li> - </ul> - </li> - <li class="secondary Frame" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Frame">Frame</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIChromeFrameMessageManager" title="ja/XPCOM_Interface_Reference/nsIChromeFrameMessageManager">nsIChromeFrameMessageManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFrameLoader" title="ja/XPCOM_Interface_Reference/nsIFrameLoader">nsIFrameLoader</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFrameLoaderOwner" title="ja/XPCOM_Interface_Reference/nsIFrameLoaderOwner">nsIFrameLoaderOwner</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFrameMessageListener" title="ja/XPCOM_Interface_Reference/nsIFrameMessageListener">nsIFrameMessageListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFrameMessageManager" title="ja/XPCOM_Interface_Reference/nsIFrameMessageManager">nsIFrameMessageManager</a></li> - </ul> - </li> - <li class="secondary Interface" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Interface">Interface</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIJSXMLHttpRequest" title="ja/XPCOM_Interface_Reference/nsIJSXMLHttpRequest">nsIJSXMLHttpRequest</a></li> - </ul> - </li> - <li class="secondary Jetpack" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Jetpack">Jetpack</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIJetpack" title="ja/XPCOM_Interface_Reference/nsIJetpack">nsIJetpack</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIJetpackService" title="ja/XPCOM_Interface_Reference/nsIJetpackService">nsIJetpackService</a></li> - </ul> - </li> - <li class="secondary offlineStorage" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="offlineStorage">offlineStorage</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCache" title="ja/XPCOM_Interface_Reference/NsIApplicationCache">nsIApplicationCache</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCacheChannel" title="ja/XPCOM_Interface_Reference/NsIApplicationCacheChannel">nsIApplicationCacheChannel</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCacheContainer" title="ja/XPCOM_Interface_Reference/NsIApplicationCacheContainer">nsIApplicationCacheContainer</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCacheNamespace" title="ja/XPCOM_Interface_Reference/NsIApplicationCacheNamespace">nsIApplicationCacheNamespace</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCacheService" title="ja/XPCOM_Interface_Reference/NsIApplicationCacheService">nsIApplicationCacheService</a></li> - </ul> - </li> - <li class="secondary Places" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Places">Places</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAnnotationObserver" title="ja/XPCOM_Interface_Reference/nsIAnnotationObserver">nsIAnnotationObserver</a></li> - </ul> - </li> - <li class="secondary RSS Feed" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="RSS_Feed">RSS Feed</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeed" title="ja/XPCOM_Interface_Reference/nsIFeed">nsIFeed</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedContainer" title="ja/XPCOM_Interface_Reference/nsIFeedContainer">nsIFeedContainer</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedElementBase" title="ja/XPCOM_Interface_Reference/nsIFeedElementBase">nsIFeedElementBase</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedEntry" title="ja/XPCOM_Interface_Reference/nsIFeedEntry">nsIFeedEntry</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedGenerator" title="ja/XPCOM_Interface_Reference/nsIFeedGenerator">nsIFeedGenerator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedPerson" title="ja/XPCOM_Interface_Reference/nsIFeedPerson">nsIFeedPerson</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedProcessor" title="ja/XPCOM_Interface_Reference/nsIFeedProcessor">nsIFeedProcessor</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedProgressListener" title="ja/XPCOM_Interface_Reference/nsIFeedProgressListener">nsIFeedProgressListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedResult" title="ja/XPCOM_Interface_Reference/nsIFeedResult">nsIFeedResult</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedResultListener" title="ja/XPCOM_Interface_Reference/nsIFeedResultListener">nsIFeedResultListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedTextConstruct" title="ja/XPCOM_Interface_Reference/nsIFeedTextConstruct">nsIFeedTextConstruct</a></li> - </ul> - </li> - <li class="secondary script" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="script">script</h2> - <ul> - <li><a>mozIJSSubScriptLoader</a></li> - </ul> - </li> - <li class="secondary storage" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="storage">storage</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/mozIStorageVacuumParticipant" title="ja/XPCOM_Interface_Reference/mozIStorageVacuumParticipant">mozIStorageVacuumParticipant</a></li> - </ul> - </li> - <li class="secondary Util" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Util_2">Util</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIEffectiveTLDService" title="ja/XPCOM_Interface_Reference/nsIEffectiveTLDService">nsIEffectiveTLDService</a></li> - </ul> - </li> - <li class="secondary Worker" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Worker">Worker</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIAbstractWorker" title="ja/XPCOM_Interface_Reference/NsIAbstractWorker">nsIAbstractWorker</a></li> - </ul> - </li> - </ul> - </div> - <div class="primary Data" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h1 id="Data">Data</h1> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIArray" title="ja/XPCOM_Interface_Reference/nsIArray">nsIArray</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICategoryManager" title="ja/XPCOM_Interface_Reference/nsICategoryManager">nsICategoryManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICollection" title="ja/XPCOM_Interface_Reference/nsICollection">nsICollection</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDictionary" title="ja/XPCOM_Interface_Reference/nsIDictionary">nsIDictionary</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMutableArray" title="ja/XPCOM_Interface_Reference/nsIMutableArray">nsIMutableArray</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISimpleEnumerator" title="ja/XPCOM_Interface_Reference/nsISimpleEnumerator">nsISimpleEnumerator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsChar" title="ja/XPCOM_Interface_Reference/nsISupportsChar">nsISupportsChar</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsDouble" title="ja/XPCOM_Interface_Reference/nsISupportsDouble">nsISupportsDouble</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsFloat" title="ja/XPCOM_Interface_Reference/nsISupportsFloat">nsISupportsFloat</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsID" title="ja/XPCOM_Interface_Reference/nsISupportsID">nsISupportsID</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsInterfacePointer" title="ja/XPCOM_Interface_Reference/nsISupportsInterfacePointer">nsISupportsInterfacePointer</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRBool" title="ja/XPCOM_Interface_Reference/nsISupportsPRBool">nsISupportsPRBool</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPrimitive" title="ja/XPCOM_Interface_Reference/nsISupportsPrimitive">nsISupportsPrimitive</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRInt16" title="ja/XPCOM_Interface_Reference/nsISupportsPRInt16">nsISupportsPRInt16</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRInt32" title="ja/XPCOM_Interface_Reference/nsISupportsPRInt32">nsISupportsPRInt32</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRInt64" title="ja/XPCOM_Interface_Reference/nsISupportsPRInt64">nsISupportsPRInt64</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPriority" title="ja/XPCOM_Interface_Reference/nsISupportsPriority">nsISupportsPriority</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRTime" title="ja/XPCOM_Interface_Reference/nsISupportsPRTime">nsISupportsPRTime</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRUint16" title="ja/XPCOM_Interface_Reference/nsISupportsPRUint16">nsISupportsPRUint16</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRUint32" title="ja/XPCOM_Interface_Reference/nsISupportsPRUint32">nsISupportsPRUint32</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRUint64" title="ja/XPCOM_Interface_Reference/nsISupportsPRUint64">nsISupportsPRUint64</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRUint8" title="ja/XPCOM_Interface_Reference/nsISupportsPRUint8">nsISupportsPRUint8</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsString" title="ja/XPCOM_Interface_Reference/nsISupportsString">nsISupportsString</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsVoid" title="ja/XPCOM_Interface_Reference/nsISupportsVoid">nsISupportsVoid</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsWeakReference" title="ja/XPCOM_Interface_Reference/nsISupportsWeakReference">nsISupportsWeakReference</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a></li> - </ul> - </div> - <div class="primary ignore" style="background-color: #F6F6F1; color: #DDD; border: 1px solid #DDD;"> - <h1 id="DO_NOT_USE">DO NOT USE</h1> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIEnumerator" title="ja/XPCOM_Interface_Reference/nsIEnumerator">nsIEnumerator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIInProcessContentFrameMessageManager" title="ja/XPCOM_Interface_Reference/nsIInProcessContentFrameMessageManager">nsIInProcessContentFrameMessageManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIScriptableIO" title="ja/XPCOM_Interface_Reference/nsIScriptableIO">nsIScriptableIO</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXPCScriptable" title="ja/XPCOM_Interface_Reference/nsIXPCScriptable">nsIXPCScriptable</a></li> - </ul> - </div> - <div class="primary ignore" style="background-color: #F6F6F1; color: #DDD; border: 1px solid #DDD;"> - <h1 id="Future">Future</h1> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIXMLHttpRequestUpload" title="ja/XPCOM_Interface_Reference/NsIXMLHttpRequestUpload">nsIXMLHttpRequestUpload</a></li> - </ul> - </div> - <div class="primary ignore" style="background-color: #F6F6F1; color: #DDD; border: 1px solid #DDD;"> - <h1 id="Obsolete">Obsolete</h1> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXmlRpcClient" title="ja/XPCOM_Interface_Reference/nsIXmlRpcClient">nsIXmlRpcClient</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXmlRpcFault" title="ja/XPCOM_Interface_Reference/nsIXmlRpcFault">nsIXmlRpcFault</a></li> - </ul> - </div> - <div class="primary Security" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h1 id="Security">Security</h1> - <ul> - <li class="secondary Auth" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Auth">Auth</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAuthModule" title="ja/XPCOM_Interface_Reference/nsIAuthModule">nsIAuthModule</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAuthPrompt" title="ja/XPCOM_Interface_Reference/nsIAuthPrompt">nsIAuthPrompt</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAuthPromptProvider" title="ja/XPCOM_Interface_Reference/nsIAuthPromptProvider">nsIAuthPromptProvider</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAuthPromptWrapper" title="ja/XPCOM_Interface_Reference/nsIAuthPromptWrapper">nsIAuthPromptWrapper</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAsyncVerifyRedirectCallback" title="ja/XPCOM_Interface_Reference/nsIAsyncVerifyRedirectCallback">nsIAsyncVerifyRedirectCallback</a></li> - </ul> - </li> - <li class="secondary Content" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Content">Content</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIContentPolicy" title="ja/XPCOM_Interface_Reference/nsIContentPolicy">nsIContentPolicy</a></li> - </ul> - </li> - <li class="secondary Credentials" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Credentials">Credentials</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsILoginInfo" title="ja/XPCOM_Interface_Reference/nsILoginInfo">nsILoginInfo</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsILoginManager" title="ja/XPCOM_Interface_Reference/nsILoginManager">nsILoginManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsILoginManager/Using_nsILoginManager" title="ja/XPCOM_Interface_Reference/nsILoginManager/Using_nsILoginManager">Using nsILoginManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsILoginManagerStorage" title="ja/XPCOM_Interface_Reference/nsILoginManagerStorage">nsILoginManagerStorage</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsILoginMetaInfo" title="ja/XPCOM_Interface_Reference/NsILoginMetaInfo">nsILoginMetaInfo</a></li> - </ul> - </li> - <li class="secondary History" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="History">History</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIGlobalHistory2" title="ja/XPCOM_Interface_Reference/nsIGlobalHistory2">nsIGlobalHistory2</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIGlobalHistory3" title="ja/XPCOM_Interface_Reference/nsIGlobalHistory3">nsIGlobalHistory3</a></li> - </ul> - </li> - <li class="secondary SSL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="SSL">SSL</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIBadCertListener2" title="ja/XPCOM_Interface_Reference/nsIBadCertListener2">nsIBadCertListener2</a></li> - </ul> - </li> - </ul> - </div> - <div class="primary System" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h1 id="System">System</h1> - <ul> - <li class="secondary Action" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Action">Action</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsICancelable" title="ja/XPCOM_Interface_Reference/nsICancelable">nsICancelable</a></li> - </ul> - </li> - <li class="secondary Application" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Application">Application</h2> - <ul> - <li class="tercerary Application" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Application_2">Application</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIApplicationUpdateService" title="ja/XPCOM_Interface_Reference/nsIApplicationUpdateService">nsIApplicationUpdateService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAppShell" title="ja/XPCOM_Interface_Reference/nsIAppShell">nsIAppShell</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAppShellService" title="ja/XPCOM_Interface_Reference/nsIAppShellService">nsIAppShellService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAppStartup" title="ja/XPCOM_Interface_Reference/nsIAppStartup">nsIAppStartup</a></li> - </ul> - </li> - <li class="tercerary XUL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="XUL">XUL</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXULAppInfo" title="ja/XPCOM_Interface_Reference/nsIXULAppInfo">nsIXULAppInfo</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXULRuntime" title="ja/XPCOM_Interface_Reference/nsIXULRuntime">nsIXULRuntime</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXULTemplateBuilder" title="ja/XPCOM_Interface_Reference/nsIXULTemplateBuilder">nsIXULTemplateBuilder</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXULTemplateQueryProcessor" title="ja/XPCOM_Interface_Reference/nsIXULTemplateQueryProcessor">nsIXULTemplateQueryProcessor</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIXULTemplateResult" title="ja/XPCOM_Interface_Reference/nsIXULTemplateResult">nsIXULTemplateResult</a></li> - </ul> - </li> - </ul> - </li> - <li class="secondary Bookmark" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Bookmark">Bookmark</h2> - <ul> - <li class="tercerary LiveMark" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="LiveMark">LiveMark</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsILivemarkService" title="ja/XPCOM_Interface_Reference/nsILivemarkService">nsILivemarkService</a></li> - </ul> - </li> - <li><a href="/ja/XPCOM_Interface_Reference/nsINavBookmarkObserver" title="ja/XPCOM_Interface_Reference/nsINavBookmarkObserver">nsINavBookmarkObserver</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsINavBookmarksService" title="ja/XPCOM_Interface_Reference/nsINavBookmarksService">nsINavBookmarksService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsINavHistoryService" title="ja/XPCOM_Interface_Reference/nsINavHistoryService">nsINavHistoryService</a></li> - </ul> - </li> - <li class="secondary Browser" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Browser_2">Browser</h2> - <ul> - <li class="tercerary DOM" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="DOM_2">DOM</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWebBrowser" title="ja/XPCOM_Interface_Reference/nsIWebBrowser">nsIWebBrowser</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWebBrowserPersist" title="ja/XPCOM_Interface_Reference/nsIWebBrowserPersist">nsIWebBrowserPersist</a></li> - </ul> - </li> - </ul> - </li> - <li class="secondary Cache" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Cache">Cache</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsICache" title="ja/XPCOM_Interface_Reference/nsICache">nsICache</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICacheDeviceInfo" title="ja/XPCOM_Interface_Reference/nsICacheDeviceInfo">nsICacheDeviceInfo</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICacheEntryDescriptor" title="ja/XPCOM_Interface_Reference/nsICacheEntryDescriptor">nsICacheEntryDescriptor</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICacheEntryInfo" title="ja/XPCOM_Interface_Reference/nsICacheEntryInfo">nsICacheEntryInfo</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICacheListener" title="ja/XPCOM_Interface_Reference/nsICacheListener">nsICacheListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICacheMetaDataVisitor" title="ja/XPCOM_Interface_Reference/nsICacheMetaDataVisitor">nsICacheMetaDataVisitor</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICacheService" title="ja/XPCOM_Interface_Reference/nsICacheService">nsICacheService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICacheSession" title="ja/XPCOM_Interface_Reference/nsICacheSession">nsICacheSession</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICacheVisitor" title="ja/XPCOM_Interface_Reference/nsICacheVisitor">nsICacheVisitor</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICachingChannel" title="ja/XPCOM_Interface_Reference/nsICachingChannel">nsICachingChannel</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISelectionImageService" title="ja/XPCOM_Interface_Reference/nsISelectionImageService">nsISelectionImageService</a></li> - </ul> - </li> - <li class="secondary Chrome" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Chrome">Chrome</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsISearchEngine" title="ja/XPCOM_Interface_Reference/nsISearchEngine">nsISearchEngine</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISearchSubmission" title="ja/XPCOM_Interface_Reference/nsISearchSubmission">nsISearchSubmission</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWebBrowserChrome" title="ja/XPCOM_Interface_Reference/nsIWebBrowserChrome">nsIWebBrowserChrome</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWindowCreator" title="ja/XPCOM_Interface_Reference/nsIWindowCreator">nsIWindowCreator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWindowMediator" title="ja/XPCOM_Interface_Reference/nsIWindowMediator">nsIWindowMediator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWindowWatcher" title="ja/XPCOM_Interface_Reference/nsIWindowWatcher">nsIWindowWatcher</a></li> - </ul> - </li> - <li class="secondary Clipboard" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Clipboard">Clipboard</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboard" title="ja/XPCOM_Interface_Reference/nsIClipboard">nsIClipboard</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardCommands" title="ja/XPCOM_Interface_Reference/nsIClipboardCommands">nsIClipboardCommands</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardDragDropHookList" title="ja/XPCOM_Interface_Reference/nsIClipboardDragDropHookList">nsIClipboardDragDropHookList</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardDragDropHooks" title="ja/XPCOM_Interface_Reference/nsIClipboardDragDropHooks">nsIClipboardDragDropHooks</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardHelper" title="ja/XPCOM_Interface_Reference/nsIClipboardHelper">nsIClipboardHelper</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardOwner" title="ja/XPCOM_Interface_Reference/nsIClipboardOwner">nsIClipboardOwner</a></li> - </ul> - </li> - <li class="secondary Core" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Core">Core</h2> - <ul> - <li class="tercerary Action" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Action_2">Action</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsITransactionManager" title="ja/XPCOM_Interface_Reference/nsITransactionManager">nsITransactionManager</a></li> - </ul> - </li> - <li class="tercerary Process" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h2 id="Process">Process</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProcess" title="ja/XPCOM_Interface_Reference/nsIProcess">nsIProcess</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIProcess2" title="ja/XPCOM_Interface_Reference/NsIProcess2">nsIProcess2</a></li> - </ul> - </li> - <li class="tercerary Thread" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Thread">Thread</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIThread" title="ja/XPCOM_Interface_Reference/nsIThread">nsIThread</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadEventFilter" title="ja/XPCOM_Interface_Reference/nsIThreadEventFilter">nsIThreadEventFilter</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadInternal" title="ja/XPCOM_Interface_Reference/nsIThreadInternal">nsIThreadInternal</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadManager" title="ja/XPCOM_Interface_Reference/nsIThreadManager">nsIThreadManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadObserver" title="ja/XPCOM_Interface_Reference/nsIThreadObserver">nsIThreadObserver</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadPool" title="ja/XPCOM_Interface_Reference/nsIThreadPool">nsIThreadPool</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIThreadPoolListener" title="ja/XPCOM_Interface_Reference/NsIThreadPoolListener">nsIThreadPoolListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIToolkit" title="ja/XPCOM_Interface_Reference/nsIToolkit">nsIToolkit</a></li> - </ul> - </li> - <li class="tercerary Util" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Util_3">Util</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIVersionComparator" title="ja/XPCOM_Interface_Reference/nsIVersionComparator">nsIVersionComparator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWeakReference" title="ja/XPCOM_Interface_Reference/nsIWeakReference">nsIWeakReference</a></li> - </ul> - </li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFactory" title="ja/XPCOM_Interface_Reference/nsIFactory">nsIFactory</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIInterfaceRequestor" title="ja/XPCOM_Interface_Reference/nsIInterfaceRequestor">nsIInterfaceRequestor</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIJSCID" title="ja/XPCOM_Interface_Reference/nsIJSCID">nsIJSCID</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIJSID" title="ja/XPCOM_Interface_Reference/nsIJSID">nsIJSID</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIJSIID" title="ja/XPCOM_Interface_Reference/nsIJSIID">nsIJSIID</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIModule" title="ja/XPCOM_Interface_Reference/nsIModule">nsIModule</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIObserver" title="ja/XPCOM_Interface_Reference/nsIObserver">nsIObserver</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIObserverService" title="ja/XPCOM_Interface_Reference/nsIObserverService">nsIObserverService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProperties" title="ja/XPCOM_Interface_Reference/nsIProperties">nsIProperties</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProperty" title="ja/XPCOM_Interface_Reference/nsIProperty">nsIProperty</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIPropertyBag" title="ja/XPCOM_Interface_Reference/NsIPropertyBag">nsIPropertyBag</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPropertyBag2" title="ja/XPCOM_Interface_Reference/nsIPropertyBag2">nsIPropertyBag2</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPropertyElement" title="ja/XPCOM_Interface_Reference/nsIPropertyElement">nsIPropertyElement</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIServerSocket" title="ja/XPCOM_Interface_Reference/nsIServerSocket">nsIServerSocket</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIServerSocketListener" title="ja/XPCOM_Interface_Reference/nsIServerSocketListener">nsIServerSocketListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIServiceManager" title="ja/XPCOM_Interface_Reference/nsIServiceManager">nsIServiceManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISocketProvider" title="ja/XPCOM_Interface_Reference/nsISocketProvider">nsISocketProvider</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISocketProviderService" title="ja/XPCOM_Interface_Reference/nsISocketProviderService">nsISocketProviderService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISocketTransport" title="ja/XPCOM_Interface_Reference/nsISocketTransport">nsISocketTransport</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISocketTransportService" title="ja/XPCOM_Interface_Reference/nsISocketTransportService">nsISocketTransportService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISupports" title="ja/XPCOM_Interface_Reference/nsISupports">nsISupports</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUUIDGenerator" title="ja/XPCOM_Interface_Reference/nsIUUIDGenerator">nsIUUIDGenerator</a></li> - </ul> - </li> - <li class="secondary Debug" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Debug">Debug</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIStackFrame" title="ja/XPCOM_Interface_Reference/nsIStackFrame">nsIStackFrame</a></li> - </ul> - </li> - <li class="secondary Device" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Device_2">Device</h2> - <ul> - <li class="tercerary Display" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Display">Display</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIScreen" title="ja/XPCOM_Interface_Reference/nsIScreen">nsIScreen</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIScreenManager" title="ja/XPCOM_Interface_Reference/nsIScreenManager">nsIScreenManager</a></li> - </ul> - </li> - <li class="tercerary Geolocation" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Geolocation">Geolocation</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIGeolocationProvider" title="ja/XPCOM_Interface_Reference/NsIGeolocationProvider">nsIGeolocationProvider</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIGeolocationUpdate" title="ja/XPCOM_Interface_Reference/NsIGeolocationUpdate">nsIGeolocationUpdate</a></li> - </ul> - </li> - <li class="tercerary orientation" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="orientation">orientation</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDeviceMotionData" title="ja/XPCOM_Interface_Reference/nsIAcceleration">nsIAcceleration</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDeviceMotionListener" title="ja/XPCOM_Interface_Reference/nsIAccelerationListener">nsIAccelerationListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDeviceMotion" title="ja/XPCOM_Interface_Reference/nsIAccelerometer">nsIAccelerometer</a></li> - </ul> - </li> - <li class="tercerary Misc" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h2 id="Misc">Misc</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsISound" title="ja/XPCOM_Interface_Reference/nsISound">nsISound</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWifiMonitor" title="ja/XPCOM_Interface_Reference/nsIWifiMonitor">nsIWifiMonitor</a></li> - </ul> - </li> - </ul> - </li> - <li class="secondary Document" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Document_2">Document</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWebNavigation" title="ja/XPCOM_Interface_Reference/nsIWebNavigation">nsIWebNavigation</a></li> - </ul> - </li> - <li class="secondary Environment" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Environment">Environment</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIEnvironment" title="ja/XPCOM_Interface_Reference/nsIEnvironment">nsIEnvironment</a></li> - </ul> - </li> - <li class="secondary Event" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Event_2">Event</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIEventListenerInfo" title="ja/XPCOM_Interface_Reference/nsIEventListenerInfo">nsIEventListenerInfo</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIEventListenerService" title="ja/XPCOM_Interface_Reference/nsIEventListenerService">nsIEventListenerService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIEventTarget" title="ja/XPCOM_Interface_Reference/nsIEventTarget">nsIEventTarget</a></li> - </ul> - </li> - <li class="secondary Exception" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Exception">Exception</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIException" title="ja/XPCOM_Interface_Reference/nsIException">nsIException</a></li> - </ul> - </li> - <li class="secondary Extention" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Extention">Extention</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIExtensionManager" title="ja/XPCOM_Interface_Reference/nsIExtensionManager">nsIExtensionManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIInstallLocation" title="ja/XPCOM_Interface_Reference/nsIInstallLocation">nsIInstallLocation</a></li> - </ul> - </li> - <li class="secondary External" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="External">External</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIExternalProtocolService" title="ja/XPCOM_Interface_Reference/nsIExternalProtocolService">nsIExternalProtocolService</a></li> - </ul> - </li> - <li class="secondary Frame" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Frame_2">Frame</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIContentFrameMessageManager" title="ja/XPCOM_Interface_Reference/nsIContentFrameMessageManager">nsIContentFrameMessageManager</a></li> - </ul> - </li> - <li class="secondary History" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="History_2">History</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsISHEntry" title="ja/XPCOM_Interface_Reference/nsISHEntry">nsISHEntry</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISHistory" title="ja/XPCOM_Interface_Reference/nsISHistory">nsISHistory</a></li> - </ul> - </li> - <li class="secondary Idle" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Idle">Idle</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIIdleService" title="ja/XPCOM_Interface_Reference/nsIIdleService">nsIIdleService</a></li> - </ul> - </li> - <li class="secondary Internal" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Internal_2">Internal</h2> - <ul> - <li class="tercerary Command" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Command">Command</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsICommandLine" title="ja/XPCOM_Interface_Reference/nsICommandLine">nsICommandLine</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICommandLineHandler" title="ja/XPCOM_Interface_Reference/nsICommandLineHandler">nsICommandLineHandler</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICommandLineRunner" title="ja/XPCOM_Interface_Reference/nsICommandLineRunner">nsICommandLineRunner</a></li> - </ul> - </li> - <li class="tercerary Component" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Component">Component</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIComponentManager" title="ja/XPCOM_Interface_Reference/nsIComponentManager">nsIComponentManager</a></li> - </ul> - </li> - <li class="tercerary Preferences" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Preferences">Preferences</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIContentPrefObserver" title="ja/XPCOM_Interface_Reference/nsIContentPrefObserver">nsIContentPrefObserver</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIContentPrefService" title="ja/XPCOM_Interface_Reference/nsIContentPrefService">nsIContentPrefService</a></li> - </ul> - </li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIComponentRegistrar" title="ja/XPCOM_Interface_Reference/nsIComponentRegistrar">nsIComponentRegistrar</a></li> - </ul> - </li> - <li class="secondary Internationalization" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Internationalization">Internationalization</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIBidiKeyboard" title="ja/XPCOM_Interface_Reference/nsIBidiKeyboard">nsIBidiKeyboard</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsILocale" title="ja/XPCOM_Interface_Reference/nsILocale">nsILocale</a></li> - </ul> - </li> - <li class="secondary IO" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="IO">IO</h2> - <ul> - <li class="tercerary FileSystem" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="FileSystem">FileSystem</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryEnumerator" title="ja/XPCOM_Interface_Reference/nsIDirectoryEnumerator">nsIDirectoryEnumerator</a>li></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryIterator" title="ja/XPCOM_Interface_Reference/nsIDirectoryIterator">nsIDirectoryIterator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryService" title="ja/XPCOM_Interface_Reference/nsIDirectoryService">nsIDirectoryService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryServiceProvider" title="ja/XPCOM_Interface_Reference/nsIDirectoryServiceProvider">nsIDirectoryServiceProvider</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryServiceProvider2" title="ja/XPCOM_Interface_Reference/nsIDirectoryServiceProvider2">nsIDirectoryServiceProvider2</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDirIndex" title="ja/XPCOM_Interface_Reference/nsIDirIndex">nsIDirIndex</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDirIndexListener" title="ja/XPCOM_Interface_Reference/nsIDirIndexListener">nsIDirIndexListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDirIndexParser" title="ja/XPCOM_Interface_Reference/nsIDirIndexParser">nsIDirIndexParser</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFile" title="ja/XPCOM_Interface_Reference/nsIFile">nsIFile</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsILocalFile" title="ja/XPCOM_Interface_Reference/nsILocalFile">nsILocalFile</a></li> - </ul> - </li> - <li class="tercerary Stream" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Stream">Stream</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAsyncInputStream" title="ja/XPCOM_Interface_Reference/nsIAsyncInputStream">nsIAsyncInputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAsyncOutputStream" title="ja/XPCOM_Interface_Reference/nsIAsyncOutputStream">nsIAsyncOutputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAsyncStreamCopier" title="ja/XPCOM_Interface_Reference/nsIAsyncStreamCopier">nsIAsyncStreamCopier</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIBinaryInputStream" title="ja/XPCOM_Interface_Reference/nsIBinaryInputStream">nsIBinaryInputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIBinaryOutputStream" title="ja/XPCOM_Interface_Reference/nsIBinaryOutputStream">nsIBinaryOutputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIContentSniffer" title="ja/XPCOM_Interface_Reference/nsIContentSniffer">nsIContentSniffer</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIConverterInputStream" title="ja/XPCOM_Interface_Reference/nsIConverterInputStream">nsIConverterInputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFileInputStream" title="ja/XPCOM_Interface_Reference/nsIFileInputStream">nsIFileInputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFileOutputStream" title="ja/XPCOM_Interface_Reference/nsIFileOutputStream">nsIFileOutputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIInputStream" title="ja/XPCOM_Interface_Reference/nsIInputStream">nsIInputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIInputStreamCallback" title="ja/XPCOM_Interface_Reference/nsIInputStreamCallback">nsIInputStreamCallback</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIOutputStream" title="ja/XPCOM_Interface_Reference/nsIOutputStream">nsIOutputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIOutputStreamCallback" title="ja/XPCOM_Interface_Reference/nsIOutputStreamCallback">nsIOutputStreamCallback</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIScriptableInputStream" title="ja/XPCOM_Interface_Reference/nsIScriptableInputStream">nsIScriptableInputStream</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIStreamListener" title="ja/XPCOM_Interface_Reference/NsIStreamListener">nsIStreamListener</a></li> - </ul> - </li> - <li class="tercerary URL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="URL_2">URL</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIIOService" title="ja/XPCOM_Interface_Reference/nsIIOService">nsIIOService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIStandardURL" title="ja/XPCOM_Interface_Reference/nsIStandardURL">nsIStandardURL</a></li> - </ul> - </li> - <li class="tercerary User" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="User">User</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPrompt" title="ja/XPCOM_Interface_Reference/nsIPrompt">nsIPrompt</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPromptService" title="ja/XPCOM_Interface_Reference/nsIPromptService">nsIPromptService</a></li> - </ul> - </li> - <li class="tercerary Zipfile" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Zipfile">Zipfile</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIZipEntry" title="ja/XPCOM_Interface_Reference/nsIZipEntry">nsIZipEntry</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIZipReader" title="ja/XPCOM_Interface_Reference/nsIZipReader">nsIZipReader</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIZipReaderCache" title="ja/XPCOM_Interface_Reference/nsIZipReaderCache">nsIZipReaderCache</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIZipWriter" title="ja/XPCOM_Interface_Reference/nsIZipWriter">nsIZipWriter</a></li> - </ul> - </li> - <li class="tercerary File" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="File">File</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFilePicker" title="ja/XPCOM_Interface_Reference/nsIFilePicker">nsIFilePicker</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFileProtocolHandler" title="ja/XPCOM_Interface_Reference/nsIFileProtocolHandler">nsIFileProtocolHandler</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFileSpec" title="ja/XPCOM_Interface_Reference/nsIFileSpec">nsIFileSpec</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFileStreams" title="ja/XPCOM_Interface_Reference/nsIFileStreams">nsIFileStreams</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFileUtilities" title="ja/XPCOM_Interface_Reference/nsIFileUtilities">nsIFileUtilities</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFileView" title="ja/XPCOM_Interface_Reference/nsIFileView">nsIFileView</a></li> - </ul> - </li> - </ul> - </li> - <li class="secondary Memory" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Memory">Memory</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMemory" title="ja/XPCOM_Interface_Reference/nsIMemory">nsIMemory</a></li> - </ul> - </li> - <li class="secondary Network" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Network">Network</h2> - <ul> - <li class="tercerary Channel" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Channel">Channel</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIChannel" title="ja/XPCOM_Interface_Reference/nsIChannel">nsIChannel</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIChannelEventSink" title="ja/XPCOM_Interface_Reference/nsIChannelEventSink">nsIChannelEventSink</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIRequest" title="ja/XPCOM_Interface_Reference/NsIRequest">nsIRequest</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIRequestObserver" title="ja/XPCOM_Interface_Reference/NsIRequestObserver">nsIRequestObserver</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIResumableChannel" title="ja/XPCOM_Interface_Reference/nsIResumableChannel">nsIResumableChannel</a></li> - </ul> - </li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDNSService" title="ja/XPCOM_Interface_Reference/nsIDNSService">nsIDNSService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFTPChannel" title="ja/XPCOM_Interface_Reference/nsIFTPChannel">nsIFTPChannel</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIFTPEventSink" title="ja/XPCOM_Interface_Reference/nsIFTPEventSink">nsIFTPEventSink</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIHttpChannel" title="ja/XPCOM_Interface_Reference/nsIHttpChannel">nsIHttpChannel</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIHttpChannelInternal" title="ja/XPCOM_Interface_Reference/nsIHttpChannelInternal">nsIHttpChannelInternal</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIHttpHeaderVisitor" title="ja/XPCOM_Interface_Reference/nsIHttpHeaderVisitor">nsIHttpHeaderVisitor</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIIDNService" title="ja/XPCOM_Interface_Reference/nsIIDNService">nsIIDNService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProtocolHandler" title="ja/XPCOM_Interface_Reference/nsIProtocolHandler">nsIProtocolHandler</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProtocolProxyCallback" title="ja/XPCOM_Interface_Reference/nsIProtocolProxyCallback">nsIProtocolProxyCallback</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProtocolProxyFilter" title="ja/XPCOM_Interface_Reference/nsIProtocolProxyFilter">nsIProtocolProxyFilter</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProtocolProxyService" title="ja/XPCOM_Interface_Reference/nsIProtocolProxyService">nsIProtocolProxyService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProxyInfo" title="ja/XPCOM_Interface_Reference/nsIProxyInfo">nsIProxyInfo</a></li> - </ul> - </li> - <li class="secondary Preferences" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Preferences_2">Preferences</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIINIParser" title="ja/XPCOM_Interface_Reference/nsIINIParser">nsIINIParser</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIINIParserFactory" title="ja/XPCOM_Interface_Reference/nsIINIParserFactory">nsIINIParserFactory</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPrefBranch" title="ja/XPCOM_Interface_Reference/nsIPrefBranch">nsIPrefBranch</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPrefBranch2" title="ja/XPCOM_Interface_Reference/nsIPrefBranch2">nsIPrefBranch2</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPrefLocalizedString" title="ja/XPCOM_Interface_Reference/nsIPrefLocalizedString">nsIPrefLocalizedString</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPrefService" title="ja/XPCOM_Interface_Reference/nsIPrefService">nsIPrefService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIStringBundle" title="ja/XPCOM_Interface_Reference/nsIStringBundle">nsIStringBundle</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIStringBundleService" title="ja/XPCOM_Interface_Reference/nsIStringBundleService">nsIStringBundleService</a></li> - </ul> - </li> - <li class="secondary Security" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Security_2">Security</h2> - <ul> - <li class="tercerary Cookies" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Cookies">Cookies</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookie" title="ja/XPCOM_Interface_Reference/nsICookie">nsICookie</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookie2" title="ja/XPCOM_Interface_Reference/nsICookie2">nsICookie2</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookieAcceptDialog" title="ja/XPCOM_Interface_Reference/nsICookieAcceptDialog">nsICookieAcceptDialog</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookieConsent" title="ja/XPCOM_Interface_Reference/nsICookieConsent">nsICookieConsent</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookieManager" title="ja/XPCOM_Interface_Reference/nsICookieManager">nsICookieManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookieManager2" title="ja/XPCOM_Interface_Reference/nsICookieManager2">nsICookieManager2</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookiePermission" title="ja/XPCOM_Interface_Reference/nsICookiePermission">nsICookiePermission</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookiePromptService" title="ja/XPCOM_Interface_Reference/nsICookiePromptService">nsICookiePromptService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookieService" title="ja/XPCOM_Interface_Reference/nsICookieService">nsICookieService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsICookieStorage" title="ja/XPCOM_Interface_Reference/nsICookieStorage">nsICookieStorage</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISessionStore" title="ja/XPCOM_Interface_Reference/nsISessionStore">nsISessionStore</a></li> - </ul> - </li> - <li class="tercerary Crypto" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Crypto">Crypto</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsICryptoHash" title="ja/XPCOM_Interface_Reference/nsICryptoHash">nsICryptoHash</a></li> - </ul> - </li> - <li class="tercerary Filter" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Filter">Filter</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIParentalControlsService" title="ja/XPCOM_Interface_Reference/nsIParentalControlsService">nsIParentalControlsService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPermission" title="ja/XPCOM_Interface_Reference/nsIPermission">nsIPermission</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPermissionManager" title="ja/XPCOM_Interface_Reference/nsIPermissionManager">nsIPermissionManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsISecurityCheckedComponent" title="ja/XPCOM_Interface_Reference/nsISecurityCheckedComponent">nsISecurityCheckedComponent</a></li> - </ul> - </li> - <li class="tercerary SSL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="SSL_2">SSL</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsISSLErrorListener" title="ja/XPCOM_Interface_Reference/nsISSLErrorListener">nsISSLErrorListener</a></li> - </ul> - </li> - </ul> - </li> - <li class="secondary Stream" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Stream_2">Stream</h2> - <ul> - <li class="tercerary Stream" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Stream_3">Stream</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIPipe" title="ja/XPCOM_Interface_Reference/nsIPipe">nsIPipe</a></li> - </ul> - </li> - <li><a href="/ja/XPCOM_Interface_Reference/NsITraceableChannel" title="ja/XPCOM_Interface_Reference/NsITraceableChannel">nsITraceableChannel</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITransport" title="ja/XPCOM_Interface_Reference/nsITransport">nsITransport</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITransportEventSink" title="ja/XPCOM_Interface_Reference/nsITransportEventSink">nsITransportEventSink</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsITransportSecurityInfo" title="ja/XPCOM_Interface_Reference/NsITransportSecurityInfo">nsITransportSecurityInfo</a></li> - </ul> - </li> - <li class="secondary Timer" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Timer">Timer</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsITimer" title="ja/XPCOM_Interface_Reference/nsITimer">nsITimer</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITimerCallback" title="ja/XPCOM_Interface_Reference/nsITimerCallback">nsITimerCallback</a></li> - </ul> - </li> - <li class="secondary UI" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="UI">UI</h2> - <ul> - <li class="tercerary Windows" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h3 id="Windows">Windows</h3> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarPreview" title="ja/XPCOM_Interface_Reference/nsITaskbarPreview">nsITaskbarPreview</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarPreviewButton" title="ja/XPCOM_Interface_Reference/nsITaskbarPreviewButton">nsITaskbarPreviewButton</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarPreviewController" title="ja/XPCOM_Interface_Reference/nsITaskbarPreviewController">nsITaskbarPreviewController</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarProgress" title="ja/XPCOM_Interface_Reference/nsITaskbarProgress">nsITaskbarProgress</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarTabPreview" title="ja/XPCOM_Interface_Reference/nsITaskbarTabPreview">nsITaskbarTabPreview</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarWindowPreview" title="ja/XPCOM_Interface_Reference/nsITaskbarWindowPreview">nsITaskbarWindowPreview</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWinTaskbar" title="ja/XPCOM_Interface_Reference/nsIWinTaskbar">nsIWinTaskbar</a></li> - </ul> - </li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIAlertsService" title="ja/XPCOM_Interface_Reference/nsIAlertsService">nsIAlertsService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWebProgress" title="ja/XPCOM_Interface_Reference/nsIWebProgress">nsIWebProgress</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIWebProgressListener" title="ja/XPCOM_Interface_Reference/nsIWebProgressListener">nsIWebProgressListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIWebProgressListener2" title="ja/XPCOM_Interface_Reference/NsIWebProgressListener2">nsIWebProgressListener2</a></li> - </ul> - </li> - <li class="secondary Update" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Update">Update</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdate" title="ja/XPCOM_Interface_Reference/nsIUpdate">nsIUpdate</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateChecker" title="ja/XPCOM_Interface_Reference/nsIUpdateChecker">nsIUpdateChecker</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateCheckListener" title="ja/XPCOM_Interface_Reference/nsIUpdateCheckListener">nsIUpdateCheckListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateItem" title="ja/XPCOM_Interface_Reference/nsIUpdateItem">nsIUpdateItem</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateManager" title="ja/XPCOM_Interface_Reference/nsIUpdateManager">nsIUpdateManager</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdatePatch" title="ja/XPCOM_Interface_Reference/nsIUpdatePatch">nsIUpdatePatch</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdatePrompt" title="ja/XPCOM_Interface_Reference/nsIUpdatePrompt">nsIUpdatePrompt</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateTimerManager" title="ja/XPCOM_Interface_Reference/nsIUpdateTimerManager">nsIUpdateTimerManager</a></li> - </ul> - </li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIProgrammingLanguage" title="ja/XPCOM_Interface_Reference/nsIProgrammingLanguage">nsIProgrammingLanguage</a></li> - </ul> - </div> - <div class="primary Thunderbird" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h1 id="Thunderbird">Thunderbird</h1> - <ul> - <li class="secondary Credentials" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Credentials_2">Credentials</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIMsgAccountManagerExtension" title="ja/XPCOM_Interface_Reference/NsIMsgAccountManagerExtension">nsIMsgAccountManagerExtension</a></li> - </ul> - </li> - <li class="secondary Element" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Element_3">Element</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIEditorMailSupport" title="ja/XPCOM_Interface_Reference/nsIEditorMailSupport">nsIEditorMailSupport</a></li> - </ul> - </li> - <li class="secondary Message" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;"> - <h2 id="Message">Message</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/NsIDBChangeAnnouncer" title="ja/XPCOM_Interface_Reference/NsIDBChangeAnnouncer">nsIDBChangeAnnouncer</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIDBChangeListener" title="ja/XPCOM_Interface_Reference/nsIDBChangeListener">nsIDBChangeListener</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMessenger" title="ja/XPCOM_Interface_Reference/nsIMessenger">nsIMessenger</a></li> - </ul> - </li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIMsgCompFields" title="ja/XPCOM_Interface_Reference/NsIMsgCompFields">nsIMsgCompFields</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgCustomColumnHandler" title="ja/XPCOM_Interface_Reference/nsIMsgCustomColumnHandler">nsIMsgCustomColumnHandler</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgDatabase" title="ja/XPCOM_Interface_Reference/nsIMsgDatabase">nsIMsgDatabase</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgDBHdr" title="ja/XPCOM_Interface_Reference/nsIMsgDBHdr">nsIMsgDBHdr</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgDBView" title="ja/XPCOM_Interface_Reference/nsIMsgDBView">nsIMsgDBView</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgDBViewCommandUpdater" title="ja/XPCOM_Interface_Reference/nsIMsgDBViewCommandUpdater">nsIMsgDBViewCommandUpdater</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgFolder" title="ja/XPCOM_Interface_Reference/nsIMsgFolder">nsIMsgFolder</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgIdentity" title="ja/XPCOM_Interface_Reference/nsIMsgIdentity">nsIMsgIdentity</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgMessageService" title="ja/XPCOM_Interface_Reference/nsIMsgMessageService">nsIMsgMessageService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/NsIMsgSendLater" title="ja/XPCOM_Interface_Reference/NsIMsgSendLater">nsIMsgSendLater</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgThread" title="ja/XPCOM_Interface_Reference/nsIMsgThread">nsIMsgThread</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgWindow" title="ja/XPCOM_Interface_Reference/nsIMsgWindow">nsIMsgWindow</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgWindowCommands" title="ja/XPCOM_Interface_Reference/nsIMsgWindowCommands">nsIMsgWindowCommands</a></li> - </ul> - </div> - <div class="primary User" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;"> - <h1 id="User_2">User</h1> - <ul> - <li class="secondary History" style="background-color: #F6F6F1;"> - <h2 id="History_3">History</h2> - <ul> - <li><a href="/ja/XPCOM_Interface_Reference/nsIBrowserHistory" title="ja/XPCOM_Interface_Reference/nsIBrowserHistory">nsIBrowserHistory</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIBrowserSearchService" title="ja/XPCOM_Interface_Reference/nsIBrowserSearchService">nsIBrowserSearchService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummary" title="ja/XPCOM_Interface_Reference/nsIMicrosummary">nsIMicrosummary</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummaryGenerator" title="ja/XPCOM_Interface_Reference/nsIMicrosummaryGenerator">nsIMicrosummaryGenerator</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummaryObserver" title="ja/XPCOM_Interface_Reference/nsIMicrosummaryObserver">nsIMicrosummaryObserver</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummaryService" title="ja/XPCOM_Interface_Reference/nsIMicrosummaryService">nsIMicrosummaryService</a></li> - <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummarySet" title="ja/XPCOM_Interface_Reference/nsIMicrosummarySet">nsIMicrosummarySet</a></li> - </ul> - </li> - </ul> - </div> -</div> -<p>XPC</p> diff --git a/files/ja/mozilla/tech/xpcom/setting_http_request_headers/index.html b/files/ja/mozilla/tech/xpcom/setting_http_request_headers/index.html deleted file mode 100644 index 394e0fc521..0000000000 --- a/files/ja/mozilla/tech/xpcom/setting_http_request_headers/index.html +++ /dev/null @@ -1,273 +0,0 @@ ---- -title: Setting HTTP request headers -slug: Mozilla/Tech/XPCOM/Setting_HTTP_request_headers -tags: - - Add-ons - - Extensions - - HTTP - - XUL - - XULRunner - - 要更新 -translation_of: Mozilla/Tech/XPCOM/Setting_HTTP_request_headers ---- -<p>HTTP は Web の中核を成す技術の一つです。実際のコンテンツに加え、HTTP ヘッダによって<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">いくつかの重要な情報</a>が HTTP リクエストとレスポンスの両方で渡されます。</p> - -<p>アプリケーションが作成するどんなリクエストに対しても、独自の HTTP ヘッダを加える事ができます。そのリクエストがあなたのコードで明示的に HTTP チャンネルを開くことによって開始されたリクエストであっても、また <a href="/ja/docs/XMLHttpRequest">XMLHttpRequest</a> の活動や、コンテンツ内の <a href="/ja/docs/Web/HTML/Element/img" title="HTML の <img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code><img></code></a> タグ、さらに例え <a href="/ja/docs/Web/CSS">CSS</a> からのものであったとしても、それは可能です。</p> - - - - - - - - - - - -<h3 id="HTTP_Channels" name="HTTP_Channels">HTTP チャンネル</h3> -<p>HTTP リクエストとレスポンスを扱う時には、大抵は <code><a href="/ja/docs/NsIHttpChannel">nsIHttpChannel</a></code> を扱います。<code>nsIHttpChannel</code> インタフェースにはたくさんのプロパティやメソッドがありますが、ここで重要なメソッドは <code>setRequestHeader</code> です。このメソッドを使って <em>HTTP リクエストヘッダを設定</em>する事ができます。</p> -<p>下は HTTP ヘッダを設定するコードの例です。</p> -<pre class="brush:js">// リクエストに "X-Hello: World" ヘッダを加える -httpChannel.setRequestHeader("X-Hello", "World", false); -</pre> - - -<p>このコードの <code>httpChannel</code> という変数は、<code>nsIHttpChannel</code> を実装したオブジェクトを示しています。(変数名はどんなものでも結構です。)</p> -<p><code>setRequestHeader</code> メソッドは 3 つのパラメータを取ります。1 つめは HTTP リクエストヘッダの<em>名前</em>で、2 つめは HTTP リクエストヘッダの<em>値</em>です。3 つめのパラメータに関しては今のところ無視して、常に <code>false</code> にしておきます。</p> -<p>このサンプルコードでは <code>X-Hello</code> という<em>名前</em>の HTTP リクエストヘッダが追加され、この HTTP リクエストヘッダの<em>値</em>は <code>World</code> となっています。</p> -<div class="note"> - <p><strong>注</strong>: 独自の HTTP ヘッダを作成する場合には、名前の前に<code> X-</code> を付けなければなりません。(上のサンプルコードでもちゃんと名前の前に <code>X-</code> を追加しているため、作成した HTTP ヘッダは <code>Hello</code> ではなく <code>X-Hello</code> となっています。)</p> -</div> - - - - - - -<h3 id="Notifications" name="Notifications">通知</h3> -<p>ここでおそらく、HTTP リクエストが開始された時にどうやって <code>nsIHttpChannel</code> を取得するのかという疑問が出てくるでしょう。</p> -<p>あなたのコードによってリクエストが開始された場合には、おそらく既に取得できているでしょう。その他のリクエストを捕捉するには、<span style="border-bottom: 1px dashed green;" title="notifications">通知</span> を使います。これは他の言語やフレームワークでは<em><span style="border-bottom: 1px dashed green;" title="events">イベント</span></em> や<em><span style="border-bottom: 1px dashed green;" title="signals">シグナル</span></em> と呼ばれるものと同じようなものです。</p> -<p>具体的に言えば、HTTP リクエストが作られる直前に <code>nsIHttpChannel</code> を取得するには <code>"http-on-modify-request"</code> トピックを<em>監視 (<span style="color: green;">observe</span>)</em> する必要があります。(<code>"http-on-modify-request"</code> は文字列です。)</p> -<div class="note"> - <p><strong>注</strong>: 通知を受けられるトピックは <code>"http-on-modify-request"</code> の他にもたくさんあります。例えば <code>"http-on-examine-response"</code> や <code>"xpcom-shutdown"</code> などです。また、独自のトピックを作り出したり、自分で通知を送る事も可能です。</p> - <p>通知のフレームワークや一般的な通知トピックのリストについてのより詳しい情報を得るには <a href="/ja/docs/Observer_Notifications">Observer Notifications</a> を参照して下さい。</p> -</div> - - - - - - -<h3 id="Observers" name="Observers">オブザーバ</h3> -<p>あるトピック (<code>"http-on-modify-request"</code> など) についての通知を得るには、<strong>オブザーバ (<span style="color: green;">observer</span>)</strong> を作成しなければなりません。オブザーバは <a href="/ja/docs/nsIObserver">nsIObserver</a> インタフェースを実装したコンポーネントです。あるトピックに対してオブザーバが<em>登録</em>されると、オブザーバは <code>observe</code> メソッドが呼ばれる事によってそのトピックについての通知を受けます。</p> -<p>下のコードは http-on-modify-request の通知によって渡されたチャンネルに "X-Hello" という独自のヘッダを追加するオブザーバの例です。</p> -<pre class="brush:js">var httpRequestObserver = -{ - observe: function(subject, topic, data) - { - if (topic == "http-on-modify-request") { - var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel); - httpChannel.setRequestHeader("X-Hello", "World", false); - } - } -}; -</pre> -<p><span class="comment">div class="note"> Doesn't seem very suitable for this article; readers should are typically assumed to be familiar with JS. Nickolay '''NOTE''': Often people expect <a href="/ja/docs/JavaScript">JavaScript</a> to be just like <a href="/ja/docs/Java">Java</a>. And while superficially, they look very similar, there are some important differences between the two. For example, while Java is an <em>object-oriented programming language</em>, JavaScript is not. JavaScript is <em>prototype-based programming language</em> and as such while it has <em>objects</em> it does not have <em>classes</em>. (Which is why, if you are not well versed with JavaScript, the object creation in the sample code above may look strange.) </div</span></p> -<p><code>observe</code> メソッドが取るパラメータの数が重要です。このメソッドは (上のサンプルコードにあるように) 3 つのパラメータを取ります。<code>"http-on-modify-request"</code> トピックに対しては、1 つめのパラメータ (上のコードでは <code>subject</code>) は <code>nsIHttpChannel</code> になります。ただしこれは <code><a href="/ja/docs/NsISupports">nsISupports</a></code> として渡されます。なので <code>nsISupports</code> から <code>nsIHttpChannel</code> に<em>変換</em>しなければならず、<code>QueryInterface</code> を呼び出すことによってこれを行っています。</p> -<p><code>if</code> ブロックの 2 行目のコードは既にご存知でしょう。この記事の最初の方で HTTP リクエストヘッダを追加するのに使ったコードと同じものです。</p> -<p>このオブジェクトの名前 (<code>httpRequestObserver</code>) は重要ではありません。好きな名前を付けて結構です。</p> - - - - - -<h3 id="Registering" name="Registering">登録する</h3> -<p>オブザーバを作成したら、それを登録する必要があります。今回の場合は、オブザーバを <code>"http-on-modify-request"</code> トピックに対して登録しようとしています。これは以下のコードによって可能です。</p> -<pre class="brush:js">var observerService = Components.classes["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.<a href="/ja/docs/nsIObserverService">nsIObserverService</a>); -observerService.addObserver(httpRequestObserver, "http-on-modify-request", false); -</pre> -<p>1 つめの文で、通知を受けたいトピックにオブザーバを登録するためのオブジェクトを取得しています。</p> -<p>2 つめの文では実際に登録を行っています。 <code>"http-on-modify-request"</code> トピック (それぞれの HTTP リクエストの直前に起こる) が発生したときに、<code>httpRequestObserver</code> が (<code>observe</code> メソッドが呼び出されることによって) 通知を受けられるようにしています。</p> - - - - - - -<h3 id="Unregistering" name="Unregistering">登録を解除する</h3> -<p>アプリケーションの終了時にはオブザーバの登録を解除するべきです。これを怠るとメモリリークが引き起こされる可能性があります。オブザーバの登録を解除するには、次のように <code>nsIObserverService.removeObserver</code> を使ってください。</p> - -<pre class="brush:js">observerService.removeObserver(httpRequestObserver, "http-on-modify-request"); -</pre> - - - - - - -<h3 id="XPCOM_components" name="XPCOM_components">XPCOM コンポーネント</h3> -<p><code>http-on-modify-request</code> オブザーバは、アプリケーションごとに 1 つしか登録する必要はありません (ウィンドウごとに 1 つではありません)。つまり、オブザーバの実装は<a href="/ja/docs/XUL_Overlays">オーバーレイ</a>ではなく <a href="/ja/docs/How_to_Build_an_XPCOM_Component_in_Javascript">XPCOM コンポーネント</a>に置くべきです。</p> - - - - - -<h3 id=".E3.81.BE.E3.81.A8.E3.82.81" name=".E3.81.BE.E3.81.A8.E3.82.81">まとめ</h3> - -<p>基本的には大体こんな感じです。しかし、あなたに役立つように、<code>httpRequestObserver</code> オブジェクトの少し違ったバージョンも示しておきます。</p> - -<p>前に示したバージョンは学習のためには有効ですが、実際のアプリケーションでは次のようなコードにしたほうがいいでしょう。</p> - - -<pre class="brush:js">var httpRequestObserver = -{ - observe: function(subject, topic, data) - { - if (topic == "http-on-modify-request") { - var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel); - httpChannel.setRequestHeader("X-Hello", "World", false); - } - }, - - get observerService() { - return Components.classes["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService); - }, - - register: function() - { - this.observerService.addObserver(this, "http-on-modify-request", false); - }, - - unregister: function() - { - this.observerService.removeObserver(this, "http-on-modify-request"); - } -}; -</pre> - -<p>このオブジェクトには <code>register()</code> と <code>unregister()</code> という便利なメソッドがあり、下のように呼び出すだけでオブザーバを有効にする事が出来ます。</p> - -<pre class="brush:js">httpRequestObserver.register(); -</pre> - -<p>また、終了時にはオブザーバの登録を解除するのも忘れないでください。</p> - -<pre class="brush:js">httpRequestObserver.unregister(); -</pre> - -<p>以上です。</p> - -<p><span class="comment">We need downloadable XPCOM component for this</span></p> - - - - - - -<h3 id="Example_Code" name="Example_Code">サンプルコード</h3> -<pre class="brush:js">var headerName = "X-hello"; -var headerValue = "world"; - -function LOG(text) -{ - // var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService); - // consoleService.logStringMessage(text); -} - -function myHTTPListener() { } - -myHTTPListener.prototype = { - - observe: function(subject, topic, data) - { - if (topic == "http-on-modify-request") { - - LOG("----------------------------> (" + subject + ") mod request"); - - var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel); - httpChannel.setRequestHeader(headerName, headerValue, false); - return; - } - - - if (topic == "app-startup") { - - LOG("----------------------------> app-startup"); - - var os = Components.classes["@mozilla.org/observer-service;1"] - .getService(Components.interfaces.nsIObserverService); - - os.addObserver(this, "http-on-modify-request", false); - return; - } - }, - - QueryInterface: function (iid) { - if (iid.equals(Components.interfaces.nsIObserver) || - iid.equals(Components.interfaces.nsISupports)) - return this; - - Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE; - return null; - }, -}; - -var myModule = { - registerSelf: function (compMgr, fileSpec, location, type) { - - var compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar); - compMgr.registerFactoryLocation(this.myCID, - this.myName, - this.myProgID, - fileSpec, - location, - type); - - - LOG("----------------------------> registerSelf"); - - var catMgr = Components.classes["@mozilla.org/categorymanager;1"].getService(Components.interfaces.nsICategoryManager); - catMgr.addCategoryEntry("app-startup", this.myName, this.myProgID, true, true); - }, - - - getClassObject: function (compMgr, cid, iid) { - - LOG("----------------------------> getClassObject"); - - return this.myFactory; - }, - - myCID: Components.ID("{9cf5f3df-2505-42dd-9094-c1631bd1be1c}"), - - myProgID: "@dougt/myHTTPListener;1", - - myName: "Simple HTTP Listener", - - myFactory: { - QueryInterface: function (aIID) { - if (!aIID.equals(Components.interfaces.nsISupports) && - !aIID.equals(Components.interfaces.nsIFactory)) - throw Components.results.NS_ERROR_NO_INTERFACE; - return this; - }, - - createInstance: function (outer, iid) { - - LOG("----------------------------> createInstance"); - - return new myHTTPListener(); - } - }, - - canUnload: function(compMgr) { - return true; - } -}; - -function NSGetModule(compMgr, fileSpec) { - return myModule; -} -</pre> diff --git a/files/ja/mozilla/tech/xpcom/storage/index.html b/files/ja/mozilla/tech/xpcom/storage/index.html deleted file mode 100644 index 7abeb7a36e..0000000000 --- a/files/ja/mozilla/tech/xpcom/storage/index.html +++ /dev/null @@ -1,378 +0,0 @@ ---- -title: Storage -slug: Mozilla/Tech/XPCOM/Storage -tags: - - Interfaces - - Storage - - Toolkit API - - 要更新 -translation_of: Mozilla/Tech/XPCOM/Storage ---- -<p><strong>Storage</strong> is a <a href="http://www.sqlite.org/">SQLite</a> database API. It is available to trusted callers, meaning extensions and Firefox components only.</p> - -<p>The API is currently "unfrozen", which means it is subject to change at any time; in fact, it has changed somewhat with each release of Firefox since it was introduced, and will likely continue to do so for a while.</p> - -<div class="note"><strong>注記:</strong> Storage is not the same as the <a href="/ja/docs/DOM/Storage" title="DOM/Storage">DOM:Storage</a> feature which can be used by web pages to store persistent data or the <a href="/ja/docs/Session_store_API" title="Session_store_API">Session store API</a> (an <a href="/ja/docs/XPCOM" title="XPCOM">XPCOM</a> storage utility for use by extensions).</div> - -<h2 id="Getting_started" name="Getting_started">Getting started</h2> - -<p>This document covers the Storage API and some peculiarities of SQLite. It does <em>not</em> cover SQL or "regular" SQLite. You can find some very useful links in the <a href="#See_also">See also section</a> however. For Storage API help, you can post to mozilla.dev.apps.platform on the news server news.mozilla.org. To report bugs, use <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Toolkit&component=Storage">Bugzilla</a>.</p> - -<p>The overall procedure for use is:</p> - -<ol> - <li>Get the Storage service - <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageService" title="">mozIStorageService</a></code>.</li> - <li>Open a connection to the database of your choice - <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageConnection" title="">mozIStorageConnection</a></code>.</li> - <li>Create statements to execute on the connection - <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code>.</li> - <li>Bind parameters to a statement as necessary.</li> - <li>Execute the statement.</li> - <li>Check for errors.</li> - <li>Reset the statement.</li> -</ol> - -<h2 id="Opening_a_connection" name="Opening_a_connection">Opening a connection</h2> - -<p>JavaScript example of opening <code>my_db_file_name.sqlite</code> in the profile directory:</p> - -<pre class="brush: js">Components.utils.import("resource://gre/modules/Services.jsm"); -Components.utils.import("resource://gre/modules/FileUtils.jsm"); - -let file = FileUtils.getFile("ProfD", ["my_db_file_name.sqlite"]); -let mDBConn = Services.storage.openDatabase(file); // Will also create the file if it does not exist -</pre> - -<p>Likewise, the C++ would look like this:</p> - -<pre class="brush: cpp">nsCOMPtr<nsIFile> dbFile; -rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, - getter_AddRefs(dbFile)); -NS_ENSURE_SUCCESS(rv, rv); -rv = dbFile->Append(NS_LITERAL_STRING("my_db_file_name.sqlite")); -NS_ENSURE_SUCCESS(rv, rv); -nsCOMPtr<mozIStorageService> dbService = - do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID, &rv); -NS_ENSURE_SUCCESS(rv, rv); - -nsCOMPtr<mozIStorageConnection> dbConn; -rv = dbService->OpenDatabase(dbFile, getter_AddRefs(dbConn)); -NS_ENSURE_SUCCESS(rv, rv); -</pre> - -<div class="note">Note: <code>MOZ_STORAGE_SERVICE_CONTRACTID</code> is defined in <code><a href="https://dxr.mozilla.org/mozilla-central/source/storage/build/mozStorageCID.h" rel="custom">storage/build/mozStorageCID.h</a></code>.</div> - -<div class="blockIndicator warning"> - <p><strong>警告:</strong> It may be tempting to give your database a name ending in '.sdb' for <strong>s</strong>qlite <strong>d</strong>ata<strong>b</strong>ase, but this is <em>not recommended.</em> This extension is treated specially by Windows as a known extension for an 'Application Compatibility Database' and changes are backed up by the system automatically as part of system restore functionality. This can result in significantly higher overhead file operation.</p> -</div> - -<h2 id="Statements" name="Statements">Closing a connection</h2> - -<p>To close a connection on which only synchronous transactions were performed, use the <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#close()">mozIStorageConnection.close()</a></code> method. If you performed any asynchronous transactions, you should instead use the <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#asyncClose()">mozIStorageConnection.asyncClose()</a></code> method. The latter will allow all ongoing transactions to complete before closing the connection, and will optionally notify you via callback when the connection is closed.</p> - -<h2 id="Statements" name="Statements">Statements</h2> - -<p>This section demonstrates how you can execute SQL statements on your database. For a complete reference see <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code>.</p> - -<h3 id="Creating_a_statement" name="Creating_a_statement">Creating a Statement</h3> - -<p>There are actually two ways to execute a statement. You should choose the right one based on your needs.</p> - -<h4 id="No_Results_to_be_Returned" name="No_Results_to_be_Returned">No Results to be Returned</h4> - -<p> </p> - -<p>If you do not need to get any results back, you can use <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#executeSimpleSQL()">mozIStorageConnection.executeSimpleSQL()</a></code> API like this in JavaScript:</p> - -<pre class="brush: js">dbConn.executeSimpleSQL("CREATE TEMP TABLE table_name (column_name INTEGER)"); -</pre> - -<p>Similarly, the C++ looks like this:</p> - -<pre class="brush: cpp">rv = mDBConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING("CREATE TEMP TABLE table_name (column_name INTEGER)")); -NS_ENSURE_SUCCESS(rv, rv);</pre> - -<h4 id="Results_to_be_Returned" name="Results_to_be_Returned">Results to be Returned</h4> - -<p>However, if you need to get results back, you should create the statement with the <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#createStatement()">mozIStorageConnection.createStatement()</a></code> API like this in JavaScript:</p> - -<pre class="brush: js">var statement = dbConn.createStatement("SELECT * FROM table_name WHERE column_name = :parameter"); -</pre> - -<p>This example uses a named placeholder called "parameter" to be bound later (described in <a href="#Binding_Parameters">Binding Parameters</a>). Similarly, the C++ looks like this:</p> - -<pre class="brush: cpp">nsCOMPtr<mozIStorageStatement> statement; -rv = dbConn->CreateStatement(NS_LITERAL_CSTRING("SELECT * FROM table_name WHERE column_name = ?1"), - getter_AddRefs(statement)); -NS_ENSURE_SUCCESS(rv, rv); -</pre> - -<p>This example uses the numbered placeholder indexed by zero for a parameter to be bound later (described in <a href="#Binding_Parameters">Binding Parameters</a>).</p> - -<div class="blockIndicator note"><strong>註:</strong> Numerical indexes for parameters are always one less than the number you write in the SQL. The use of numerical indexes for parameters is strongly discouraged in JavaScript where named parameters are much easier to use.</div> - -<div class="blockIndicator note"><strong>註:</strong> If you need to execute a statement multiple times, caching the result of createStatement will give you a noticeable performance improvement because the SQL query does not need to be parsed each time.</div> - -<h3 id="Binding_parameters" name="Binding_parameters">Binding Parameters</h3> - -<p>In order to effectively use the statements that you create, you have to bind values to the parameters you placed in the statement. A given placeholder can appear multiple times in the same statement, and all instances of it will be replaced with the bound value. If you neglect to bind a value to a parameter, it will be interpreted as <code>NULL</code>.</p> - -<div class="warning">You should never try to construct SQL statements on the fly with values inserted in them. By binding the parameters, you prevent possible SQL injection attacks since a bound parameter can never be executed as SQL.</div> - -<h4 id="Binding_One_Set_of_Parameters" name="Binding_One_Set_of_Parameters">Binding One Set of Parameters</h4> - -<p>If you only have one row to insert, or are using the synchronous API you'll need to use this method. In JavaScript, there is a useful helper object (<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementParams" title="">mozIStorageStatementParams</a></code>) available () that makes binding parameters much easier:</p> - -<pre class="brush: js">var statement = dbConn.createStatement("SELECT * FROM table_name WHERE id = :row_id"); -statement.params.row_id = 1234; -</pre> - -<p>You can still use this helper object by manually creating the statement wrapper, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementWrapper" title="">mozIStorageStatementWrapper</a></code>, which is provided in Gecko 1.9.1 and later.</p> - -<p>Using named parameters in C++ is a lot more difficult, so it's generally accepted to use numerical placeholders instead. The example below uses <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#bindInt32Parameter()">mozIStorageStatement.bindInt32Parameter()</a></code>.<code><span style="font-family: Verdana,Tahoma,sans-serif;"> The full list of </span></code>binding functions can be found with the <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code> documentation.</p> - -<p>C++ example:</p> - -<pre class="brush: cpp">nsCOMPtr<mozIStorageStatement> statement; -rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING("SELECT * FROM table_name WHERE id = ?1"), - getter_AddRefs(statement)); -NS_ENSURE_SUCCESS(rv, rv); - -rv = statement->BindInt32Parameter(0, 1234); -NS_ENSURE_SUCCESS(rv, rv); -</pre> - -<div class="blockIndicator note"><strong>註:</strong> Numerical indexes for parameters are always one less than the number you write in the SQL. The use of numerical indexes for parameters is strongly discouraged in JavaScript where named parameters are much easier to use.</div> - -<h4 id="Binding_Multiple_Sets_of_Parameters" name="Binding_Multiple_Sets_of_Parameters">Binding Multiple Sets of Parameters</h4> - -<div></div> - -<p>Starting in Gecko 1.9.2 (Firefox 3.6), there's a new, more convenient way to bind multiple sets of parameters at once prior to executing your statement asynchronously. This API is only available for asynchronous execution.</p> - -<pre class="brush: js">let stmt = dbConn.createStatement("INSERT INTO table_name (value) VALUES(:value)"); -let params = stmt.newBindingParamsArray(); -for (let i = 0; i < 10; i++) { - let bp = params.newBindingParams(); - bp.bindByName("value", i); - params.addParams(bp); -} -stmt.bindParameters(params); -</pre> - -<p>You can attach multiple sets of bindings to a statement by adding multiple <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageBindingParams" title="">mozIStorageBindingParams</a></code> objects to the array of parameter lists, adding each one through calls to the <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageBindingParamsArray#addParams()">mozIStorageBindingParamsArray.addParams()</a></code>. Once all the parameters are set up, a single call to <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#bindParameters()">mozIStorageStatement.bindParameters()</a></code> will ensure that the parameters are bound before execution. You can then <a href="/ja/docs/Storage#Asynchronously" title="Storage#Asynchronously">execute the statement asynchronously</a>, and the statement will get each set of bindings bound to it before execution asynchronously.</p> - -<h3 id="Executing_a_statement" name="Executing_a_statement">Executing a Statement</h3> - -<p>You may execute statements either synchronously (which is supported in Firefox Gecko 1.8 and 1.9) or asynchronously (starting in Gecko 1.9.1). If your code needs to work with applications based on Gecko 1.8 or 1.9, you should the technique covered in the section <a href="#Synchronously">Synchronously</a> below. Otherwise, it's strongly recommended that you use asynchronous execution, for performance reasons.</p> - -<h4 id="Asynchronously" name="Asynchronously">Asynchronously</h4> - -<div></div> - -<p>Gecko 1.9.1 introduced support for asynchronous execution of a statement by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#executeAsync()">mozIStorageStatement.executeAsync()</a></code> on the statement. Multiple statements can be executed in a transaction by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#executeAsync()">mozIStorageConnection.executeAsync()</a></code> on the connection and passing in an array of statements. Both of these methods have similar signatures that accept an object as input that receives notifications the execution of the statement(s). A C++ example is omitted here because it would be verbose, but real-world code can be found in the Mozilla source tree (<a href="http://mxr.mozilla.org/mozilla-central/ident?i=mozIStorageStatementCallback">MXR ID で <code>mozIStorageStatementCallback</code> を</a>).</p> - -<p>After you create and bind a statement, your JavaScript should look something like this to execute a statement asynchronously:</p> - -<pre class="brush: js">statement.executeAsync({ - handleResult: function(aResultSet) { - for (let row = aResultSet.getNextRow(); - row; - row = aResultSet.getNextRow()) { - - let value = row.getResultByName("column_name"); - } - }, - - handleError: function(aError) { - print("Error: " + aError.message); - }, - - handleCompletion: function(aReason) { - if (aReason != Components.interfaces.mozIStorageStatementCallback.REASON_FINISHED) - print("Query canceled or aborted!"); - } -}); -</pre> - -<p>The call to <code>executeAsync</code> takes an object that implements <a href="/ja/docs/MozIStorageStatementCallback" title="MozIStorageStatementCallback">mozIStorageStatementCallback</a>. See its documentation for more details on each method. The callback is optional, however, so if you do not want to receive feedback, you can pass nothing.</p> - -<h4 id="Synchronously" name="Synchronously">Synchronously</h4> - -<p>If you are OK with the possibility of locking up your user interface, or if you are running on a background thread, you can use <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#executeStep()">mozIStorageStatement.executeStep()</a></code>. This function allows you to enumerate all the results produced by the statement.</p> - -<p>As you step through each row, you can obtain each parameter by name through a helper object (<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementRow" title="">mozIStorageStatementRow</a></code>) in JavaScript ( ) like so:</p> - -<pre class="brush: js">while (statement.executeStep()) { - let value = statement.row.column_name; -} -</pre> - -<p>You can create this helper object yourself if it's not available in your version of Gecko. See <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementWrapper" title="">mozIStorageStatementWrapper</a></code> for details.</p> - -<p>In C++, the code would look something like this:</p> - -<pre class="brush: cpp">bool hasMoreData; -while (NS_SUCCEEDED(statement->ExecuteStep(&hasMoreData)) && hasMoreData) { - PRInt32 value; - rv = statement->GetInt32(0, &value); - NS_ENSURE_SUCCESS(rv, rv); -} -</pre> - -<p>You can obtain other types of data by using the various methods available on <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageValueArray" title="">mozIStorageValueArray</a></code>.</p> - -<p>Alternatively, if you do not expect any results but still need to execute a bound statement, you can simply call <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#execute()">mozIStorageStatement.execute()</a></code>. This is equivalent to calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#executeStep()">mozIStorageStatement.executeStep()</a></code> and then <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#reset()">mozIStorageStatement.reset()</a></code>.</p> - -<h3 id="Resetting_a_Statement" name="Resetting_a_Statement">Resetting a Statement</h3> - -<p>When you execute a statement synchronously, it is important to make sure you reset your statement. You can accomplish this by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#reset()">mozIStorageStatement.reset()</a></code> on the statement. If you end up finalizing the statement (see <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#finalize()">mozIStorageStatement.finalize()</a></code>) you do not need to worry about calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#reset()">mozIStorageStatement.reset()</a></code>. You should do this before you reuse the statement.</p> - -<div class="blockIndicator warning"> - <p><strong>警告:</strong> If you fail to reset a write statement, it will continue to hold a lock on the database preventing future writes or reads. Additionally, if you fail to reset a read statement, it will prevent any future writes to the database.</p> -</div> - -<p>In JavaScript, the language makes it pretty easy to ensure that you always reset a statement. Be aware that you should always reset even if an exception is thrown, so your code should look something like this:</p> - -<pre class="brush: js">var statement = dbConn.createStatement("SELECT * FROM table_name"); -try { - while (statement.step()) { - // Use the results... - } -} -finally { - statement.reset(); -} -</pre> - -<p>In C++, Storage provides a helper object in <code><a href="https://dxr.mozilla.org/mozilla-central/source/storage/public/mozStorageHelper.h" rel="custom">storage/public/mozStorageHelper.h</a></code>, <code>mozStorageStatementScoper</code>, which ensures that the statement object is reset when the object falls out of scope. Of course, if your statement is local only to the function, you do not have to worry about calling reset since the object will be destroyed.</p> - -<pre class="brush: cpp">nsresult -myClass::myFunction() -{ - // mSpecialStatement is a member variable of the class that contains a statement. - mozStorageStatementScoper scoper(mSpecialStatement); - // You can use mSpecialStatement without concern now. - - nsCOMPtr<mozIStorageStatement> statement; - // mDBConn is a database connection that is stored a member variable of the class. - nsresult rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING("DELETE FROM table_name"), - getter_AddRefs(statement)); - NS_ENSURE_SUCCESS(rv, rv); - return statement->Execute(); - // Once this function returns, mSpecialStatement will be reset, and statement will - // be destroyed. -} -</pre> - -<div class="blockIndicator note"><strong>註:</strong> Calling reset is not an expensive operation, and nothing bad happens if you call reset more than once.</div> - -<h2 id="Transactions" name="Transactions">Transactions</h2> - -<p>Transactions can be used to either improve performance, or group statements together as an atomic operation. In both cases, you execute more than one statement inside of a transaction.</p> - -<p>In JavaScript, managing transactions can be difficult when you are using the same connection on different threads, or are using a combination of asynchronous and synchronous statement execution. The best way to deal with this is to only execute your statements asynchronously using <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#executeAsync()">mozIStorageConnection.executeAsync()</a></code>. This method will manage the transactions for you, so you don't have to worry about them.</p> - -<div class="blockIndicator note"><strong>註:</strong> The database engine does not support nested transactions, so attempting to start a transaction when one is already active will throw an exception.</div> - -<p>Transactions can be started with <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#beginTransaction()">mozIStorageConnection.beginTransaction()</a></code> or <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#beginTransactionAs()">mozIStorageConnection.beginTransactionAs()</a></code>. The latter takes one of three constants to describe the type of transaction:</p> - -<ul> - <li><code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIStorageConnection#TRANSACTION_DEFERRED">mozIStorageConnection.TRANSACTION_DEFERRED</a></code></li> - <li><code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIStorageConnection#TRANSACTION_IMMEDIATE">mozIStorageConnection.TRANSACTION_IMMEDIATE</a></code></li> - <li><code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIStorageConnection#TRANSACTION_EXCLUSIVE">mozIStorageConnection.TRANSACTION_EXCLUSIVE</a></code></li> -</ul> - -<p><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#beginTransaction()">mozIStorageConnection.beginTransaction()</a></code> is equivalent to calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#beginTransactionAs()">mozIStorageConnection.beginTransactionAs()</a></code> and passing <code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIStorageConnection#TRANSACTION_DEFERRED">mozIStorageConnection.TRANSACTION_DEFERRED</a></code>. In general, this is the method you want to use.</p> - -<p>Once you start a transaction, you can either commit the changes by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#commitTransaction()">mozIStorageConnection.commitTransaction()</a></code>, or rollback the changes by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#rollbackTransaction()">mozIStorageConnection.rollbackTransaction()</a></code>.</p> - -<p>In C++ code, there is a helper class defined in <code><a href="https://dxr.mozilla.org/mozilla-central/source/storage/public/mozStorageHelper.h" rel="custom">storage/public/mozStorageHelper.h</a></code>, <code>mozStorageTransaction</code>, that will attempt to get a transaction for you, and handle it appropriately when it falls out of scope. If a transaction is already in progress, no transaction is obtained. If your function returns without calling <code>Commit</code> on the helper object, the transaction will be rolled back.</p> - -<pre class="brush: cpp">nsresult -myClass::myFunction() -{ - // mDBConn is a member variable of our mozIStorageConnection. - mozStorageTransaction transaction(mDBConn); - - // Execute some statements. If we encounter an error, the transaction will - // be rolled back. - - return transaction.Commit(); -} -</pre> - -<h2 id="Collation_sorting" name="Collation_(sorting)">Collation (sorting)</h2> - -<p>SQLite provides several collation methods (<code>BINARY</code>, <code>NOCASE</code>, and <code>RTRIM</code>), but these are all very simple and have no support for various text encodings or the user's locale.</p> - -<div></div> - -<p><span title="(Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)">Gecko 1.9.2</span> added support for several new collation methods:</p> - -<dl> - <dt><code>locale</code></dt> - <dd>Case- and accent-insensitive collation.</dd> - <dt><code>locale_case_sensitive</code></dt> - <dd>Case-sensitive, accent-insensitive collation.</dd> - <dt><code>locale_accent_sensitive</code></dt> - <dd>Case-insensitive, accent-sensitive collation.</dd> - <dt><code>locale_case_accent_sensitive</code></dt> - <dd>Case- and accent-sensitive collation.</dd> -</dl> - -<p>You can use them quite simply in your <code>SELECT</code> queries, like this:</p> - -<pre>var stmt = aConn.createStatement("SELECT * FROM foo ORDER BY name COLLATE locale ASC"); -var results = []; - -while (stmt.executeStep()) { - results.push(stmt.row.t); -} -stmt.finalize(); -</pre> - -<h2 id="How_to_corrupt_your_database" name="How_to_corrupt_your_database">How to Corrupt a Database</h2> - -<p>SQLite is very good about maintaining database integrity, but there are a few things you can do that can lead to database corruption. You can find out more by reading <a href="http://www.sqlite.org/lockingv3.html" title="http://www.sqlite.org/lockingv3.html">SQLite's documentation on this</a>. There are a few simple things you can do to help make sure this doesn't happen:</p> - -<ul> - <li>Open more than one connection to the same file with names that aren't exactly the same as determined by <code>strcmp</code>. This includes "my.db" and "../dir/my.db" or, on Windows (case-insensitive) "my.db" and "My.db". Sqlite tries to handle many of these cases, but you shouldn't count on it.</li> -</ul> - -<ul> - <li>Access a database from a symbolic or hard link.</li> -</ul> - -<ul> - <li>Access a statement from more than one thread (discussed in <a href="#Thread_safety">Thread safety</a>).</li> -</ul> - -<ul> - <li>Call <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageService#backupDatabaseFile()">mozIStorageService.backupDatabaseFile()</a></code> on a locked database, assuming this will leave your database locked. Due to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=626193" title="mozIStorageService.backupDatabaseFile() releases database locks">バグ 626193</a>, locked databases get unlocked when you call this.</li> -</ul> - -<h2 id="Thread_safety" name="Thread_safety">Thread Safety</h2> - -<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageService" title="">mozIStorageService</a></code> and <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageConnection" title="">mozIStorageConnection</a></code> are thread safe. However, no other interface or method is, so do not use them on different threads at the same time!</p> - -<p>If you want to use concurrency to work on your database, you should use the asynchronous APIs provided by Storage.</p> - -<h2 id="See_also" name="See_also">関連情報</h2> - -<ul> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageConnection" title="">mozIStorageConnection</a></code> Database connection to a specific file or in-memory data storage</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code> Create and execute SQL statements on a SQLite database.</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageValueArray" title="">mozIStorageValueArray</a></code> Wraps an array of SQL values, such as a result row.</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageFunction" title="">mozIStorageFunction</a></code> Create a new SQLite function.</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageAggregateFunction" title="">mozIStorageAggregateFunction</a></code> Create a new SQLite aggregate function.</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageProgressHandler" title="">mozIStorageProgressHandler</a></code> Monitor progress during the execution of a statement.</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementWrapper" title="">mozIStorageStatementWrapper</a></code> Storage statement wrapper</li> - <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageService" title="">mozIStorageService</a></code> Storage Service</li> -</ul> - -<ul> - <li><a href="/ja/docs/Storage/Performance" title="Storage/Performance">Storage:Performance</a> How to get your database connection performing well.</li> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/3072">Storage Inspector Extension</a> Makes it easy to view any sqlite database files in the current profile.</li> - <li><a href="http://www.sqlite.org/lang.html">SQLite Syntax</a> Query language understood by SQLite</li> - <li><a href="http://sqlitebrowser.sourceforge.net/">SQLite Database Browser</a> is a capable free tool available for many platforms. It can be handy for examining existing databases and testing SQL statements.</li> - <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/5817">SQLite Manager Extension</a> helps manage sqlite database files on your computer.</li> -</ul> diff --git a/files/ja/mozilla/tech/xpcom/the_thread_manager/index.html b/files/ja/mozilla/tech/xpcom/the_thread_manager/index.html deleted file mode 100644 index 76856f2327..0000000000 --- a/files/ja/mozilla/tech/xpcom/the_thread_manager/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: The Thread Manager -slug: Mozilla/Tech/XPCOM/The_Thread_Manager -tags: - - Firefox 3 - - Threads -translation_of: Mozilla/Tech/XPCOM/The_Thread_Manager ---- -<p> -</p><p>Firefox 3 で導入されたスレッドマネージャは、スレッドを作成して、処理を行うイベントをそのスレッドに割り当てる便利な方法を提供します。 -</p><p><span id="Interfaces"></span> -</p> -<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">インタフェース</h3> -<p>スレッドのサポートを提供するインタフェースは、以下のようにいくつか存在します。 -</p> -<dl><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code> -</dt><dd>スレッドを作成できるようにするスレッドマネージャそのもの。 -</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> -</dt><dd>この <code>nsIThread</code> インタフェースは、オペレーティングシステムのスレッドをカプセル化したもので、コードからマルチスレッドに対する簡易なクロスプラットフォームアクセスを提供します。 -</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code> -</dt><dd>スレッドプールは、限られた一連のワーカースレッドを提供します。イベントをプールに割り当てる際、プールは、そのイベントを処理するために利用可能なワーカースレッドを選択する役割を果たします。 -</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code> -</dt><dd><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> のサブクラスで、XPCOM のスレッドオブジェクトによって実装されており、スレッドへのアクティビティ割り当て監視サポートを提供します。 -</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code> -</dt><dd>スレッドを監視する機能を提供します。スレッドにイベントが割り当てられた際や、それらのイベントの処理が完了した際に、通知を受け取ることができます。 -</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code> -</dt><dd>このインタフェースは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code> 内の <code><a href="ja/NsIThreadInternal#pushEventQueue.28.29">pushEventQueue()</a></code> メソッドで使われており、イベントのフィルタリングを可能にします。 -</dd></dl> -<p><span id="Using_the_Thread_Manager"></span> -</p> -<h3 id=".E3.82.B9.E3.83.AC.E3.83.83.E3.83.89.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.A3.E3.81.AE.E4.BD.BF.E3.81.84.E6.96.B9" name=".E3.82.B9.E3.83.AC.E3.83.83.E3.83.89.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.A3.E3.81.AE.E4.BD.BF.E3.81.84.E6.96.B9">スレッドマネージャの使い方</h3> -<p>スレッドマネージャを使用するには、各スレッドのワーキングコードを <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRunnable" title="">nsIRunnable</a></code> XPCOM オブジェクトにカプセル化しなければなりません。このオブジェクトは全体を JavaScript で書くことができ、それほど難しくありません。 -</p><div class="blockIndicator note"><strong>註:</strong> DOM はスレッドセーフではないので、バックグラウンドスレッドから DOM や ユーザーインタフェースにアクセスしてはいけません。クラッシュの原因となります。</div> -<p>このセクションでは簡単な例を見ていきます。 -</p><p><span id="The_background_thread"></span> -</p> -<h4 id=".E3.83.90.E3.83.83.E3.82.AF.E3.82.B0.E3.83.A9.E3.82.A6.E3.83.B3.E3.83.89.E3.82.B9.E3.83.AC.E3.83.83.E3.83.89" name=".E3.83.90.E3.83.83.E3.82.AF.E3.82.B0.E3.83.A9.E3.82.A6.E3.83.B3.E3.83.89.E3.82.B9.E3.83.AC.E3.83.83.E3.83.89">バックグラウンドスレッド</h4> -<p>まず、バックグラウンドスレッドで行われる処理を扱う XPCOM オブジェクトが必要になります。 -</p> -<pre>var workingThread = function(threadID, number) { - this.threadID = threadID; - this.number = number; - this.result = 0; -}; - -workingThread.prototype = { - run: function() { - try { - // ここでワーキングスレッドが処理を行う - - for (var i = 0; i<= this.number; i++) { - this.result += i; - } - - // 処理が終了したら、終了を知らせるためにメインスレッドにコールバックする - - main.dispatch(new mainThread(this.threadID, this.result), - background.DISPATCH_NORMAL); - } catch(err) { - Components.utils.reportError(err); - } - }, - - QueryInterface: function(iid) { - if (iid.equals(Components.interfaces.nsIRunnable) || - iid.equals(Components.interfaces.nsISupports)) { - return this; - } - throw Components.results.NS_ERROR_NO_INTERFACE; - } -}; -</pre> -<p>このスレッドのコンストラクタでは、スレッドの ID と 数値をローカル変数に保存し、result 変数を 0 に設定しています。 これらの変数はスレッドの実行時に使用されます。 -</p><p>このオブジェクトにはコンストラクタのほかに 2 つのメソッドがあります: -</p> -<dl><dt><code>run()</code> -</dt><dd><code>run()</code> メソッドは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> インタフェースの <code>dispatch()</code> メソッドが呼び出されたときに呼び出されます。これはバックグラウンドスレッドで実際の作業を行うルーチンです。 この例では、0 から <tt>this.number</tt> までのすべての数の合計を計算しています。 計算が終了すると、 <code>mainThread</code> オブジェクトを使ってメインスレッドにアクセスし、計算結果を共有するためにコールバックをメインスレッドにディスパッチします。 -</dd><dt><code>QueryInterface()</code> -</dt><dd>スレッドの XPCOM オブジェクトは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRunnable" title="">nsIRunnable</a></code> インタフェースを扱う必要があるため、オブジェクトが <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRunnable" title="">nsIRunnable</a></code> インタフェースを扱っているかを尋ねるためにこのメソッドが呼び出されたときに、正しい反応を返さなければなりません。 -</dd></dl> -<p><span id="The_main_thread"></span> -</p> -<h4 id=".E3.83.A1.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.AC.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.AC.E3.83.83.E3.83.89">メインスレッド</h4> -<p>メインスレッドを扱う XPCOM オブジェクトはバックグラウンドタスクからのコールバックとして使用されます。このオブジェクトの <code>run()</code> メソッドは、バックグラウンドスレッドが計算結果をユーザーに知らせようとしたときに呼び出されます。バックグラウンドスレッドはユーザーインタフェースに触れることができず、メインスレッドに依頼しなければならないため、このオブジェクトが必要になります。 -</p> -<pre>var mainThread = function(threadID, result) { - this.threadID = threadID; - this.result = result; -}; - -mainThread.prototype = { - run: function() { - try { - // ここでワーキングスレッドの完了に対して反応を返す - alert('Thread ' + this.threadID + ' finished with result: ' + this.result); - } catch(err) { - Components.utils.reportError(err); - } - }, - - QueryInterface: function(iid) { - if (iid.equals(Components.interfaces.nsIRunnable) || - iid.equals(Components.interfaces.nsISupports)) { - return this; - } - throw Components.results.NS_ERROR_NO_INTERFACE; - } -}; -</pre> -<p>この例では <code>run()</code> メソッドは単純に警告ボックスを使ってユーザーに出力を表示します。 -</p><p><span id="Putting_it_all_together"></span> -</p> -<h4 id=".E4.BB.95.E4.B8.8A.E3.81.92" name=".E4.BB.95.E4.B8.8A.E3.81.92">仕上げ</h4> -<p>実際にスレッドマネージャを使ってバックグラウンドでこれらの計算を行うには、まず <tt>workingThread</tt> のタスクを実行する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> オブジェクトを作成する必要があります: -</p> -<pre class="eval">var background = Components.classes["@mozilla.org/thread-manager;1"].getService().newThread(0); -</pre> -<p>それに加えて、メインスレッドの <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> の参照を得る必要があります: -</p> -<pre class="eval">var main = Components.classes["@mozilla.org/thread-manager;1"].getService().mainThread; -</pre> -<p>この情報を得たら、タスクをバックグラウンドスレッドに割り当てることができます。 -</p> -<pre class="eval">background.dispatch(new workingThread(1, 5000000), background.DISPATCH_NORMAL); -</pre> -<p>これによりバックグラウンドスレッドの実行が開始され、0 と 5,000,000 の間のすべての数の合計が計算されます。作業が終了すると、メインスレッドの <code>run()</code> メソッドが呼び出され、結果をユーザーと共有します。それまでの間、メインスレッドはユーザーの操作に反応するなどの自分の作業を続けることができます。 -</p><p><br> -</p> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/frequently_asked_questions/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/frequently_asked_questions/index.html deleted file mode 100644 index 1edb362717..0000000000 --- a/files/ja/mozilla/tech/xpcom/using_nscomptr/frequently_asked_questions/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Frequently Asked Questions -slug: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Frequently_Asked_Questions -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Frequently_Asked_Questions ---- -<p> -</p><p>このセクションは、もしあなたが壊れたビルドを直したり、即答できる明らかな疑問を持っていたり、あるいは <a href="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a> を読む時間がない場合に役に立つでしょう。この FAQ は、通常は適切な答えへ直接的に参照するだけです。もしあなたが単に <code>nsCOMPtr</code> について学ぶことを期待しているのであれば、<a href="ja/Using_nsCOMPtr/Getting_Started_Guide">スタートガイド</a> にもっと良い紹介があります。 -</p><p>FAQ は、探しているものを早く見つけやすくするために複数のセクションに分かれています。 ほとんどの場合、答えは上記のリファレンスマニュアルを参照しているだけです。 同じことを 2 度説明する必要はありません <code><span class="nowiki">:-)</span></code> -</p> -<h3 id=".E3.83.93.E3.83.AB.E3.83.89.E6.99.82.E3.81.AE.E3.82.A8.E3.83.A9.E3.83.BC" name=".E3.83.93.E3.83.AB.E3.83.89.E6.99.82.E3.81.AE.E3.82.A8.E3.83.A9.E3.83.BC"> ビルド時のエラー </h3> -<p>ビルドが壊れました。エラーがあなた自身のコードでもなく、あなたのプラットフォームのコードでもなく、<code>nsCOMPtr</code>の 中で起こっており、そしてあなたはそれを疑っています。あなたは正しい場所を見ています。 -</p> -<h4 id="nsCOMPtr_.E3.81.A8.E7.94.9F.E3.81.AE_.5BXP.5DCOM_.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.82.92.E6.AF.94.E8.BC.83.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99" name="nsCOMPtr_.E3.81.A8.E7.94.9F.E3.81.AE_.5BXP.5DCOM_.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.82.92.E6.AF.94.E8.BC.83.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99"> <code>nsCOMPtr</code> と生の [XP]COM インタフェースポインタを比較しています </h4> -<h4 id="nsCOMPtr_.E3.82.92.E5.BE.8C.E3.81.AB.E5.AE.A3.E8.A8.80.E3.81.97.E3.81.A6.E3.81.84.E3.82.8B.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AB.E5.AF.BE.E3.81.97.E3.81.A6.E5.AE.A3.E8.A8.80.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99" name="nsCOMPtr_.E3.82.92.E5.BE.8C.E3.81.AB.E5.AE.A3.E8.A8.80.E3.81.97.E3.81.A6.E3.81.84.E3.82.8B.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AB.E5.AF.BE.E3.81.97.E3.81.A6.E5.AE.A3.E8.A8.80.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99"> <code>nsCOMPtr</code> を後に宣言しているクラスに対して宣言しています </h4> -<h4 id="XPCOM_.E3.81.A8.E3.83.AA.E3.83.B3.E3.82.AF.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93" name="XPCOM_.E3.81.A8.E3.83.AA.E3.83.B3.E3.82.AF.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93"> XPCOM とリンクしていません </h4> -<h4 id="nsCOMPtr.h_.E3.82.92.E3.82.A4.E3.83.B3.E3.82.AF.E3.83.AB.E3.83.BC.E3.83.89.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93" name="nsCOMPtr.h_.E3.82.92.E3.82.A4.E3.83.B3.E3.82.AF.E3.83.AB.E3.83.BC.E3.83.89.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93"> nsCOMPtr.h をインクルードしていません </h4> -<h4 id="NSCAP_FEATURE_DEBUG_PTR_TYPES_.E3.81.AE.E8.A8.AD.E5.AE.9A.E3.81.8C.E9.81.95.E3.81.84.E3.81.BE.E3.81.99" name="NSCAP_FEATURE_DEBUG_PTR_TYPES_.E3.81.AE.E8.A8.AD.E5.AE.9A.E3.81.8C.E9.81.95.E3.81.84.E3.81.BE.E3.81.99"> <code>NSCAP_FEATURE_DEBUG_PTR_TYPES</code> の設定が違います </h4> -<h3 id=".E5.AE.9F.E8.A1.8C.E6.99.82.E3.81.AE.E3.82.A8.E3.83.A9.E3.83.BC" name=".E5.AE.9F.E8.A1.8C.E6.99.82.E3.81.AE.E3.82.A8.E3.83.A9.E3.83.BC"> 実行時のエラー </h3> -<h4 id="NS_ASSERTION_.22QueryInterface_needed.22" name="NS_ASSERTION_.22QueryInterface_needed.22"> <code>NS_ASSERTION</code> "QueryInterface needed" </h4> -<h4 id="NS_PRECONDITION_.22You_can.27t_dereference_a_NULL_nsCOMPtr_with_operator-.3E.28.29.22" name="NS_PRECONDITION_.22You_can.27t_dereference_a_NULL_nsCOMPtr_with_operator-.3E.28.29.22"> <code>NS_PRECONDITION</code> "You can't dereference a NULL nsCOMPtr with operator->()" </h4> -<h4 id="NS_PRECONDITION_.22You_can.27t_dereference_a_NULL_nsCOMPtr_with_operator.2A.28.29.22" name="NS_PRECONDITION_.22You_can.27t_dereference_a_NULL_nsCOMPtr_with_operator.2A.28.29.22"> <code>NS_PRECONDITION</code> "You can't dereference a NULL nsCOMPtr with operator*()" </h4> -<h3 id=".E3.81.A9.E3.81.86.E3.82.84.E3.81.A3.E3.81.A6..." name=".E3.81.A9.E3.81.86.E3.82.84.E3.81.A3.E3.81.A6..."> どうやって... </h3> -<h4 id="nsCOMPtr_.E3.82.92.E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.99.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr_.E3.82.92.E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.99.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> <code>nsCOMPtr</code> を初期化するのですか? </h4> -<h4 id="nsCOMPtr_.E3.81.8C.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.82.92.E6.8A.9C.E3.81.91.E3.82.8B.E5.89.8D.E3.81.AB.E3.81.9D.E3.82.8C.E3.82.92_Release_.E3.81.99.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr_.E3.81.8C.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.82.92.E6.8A.9C.E3.81.91.E3.82.8B.E5.89.8D.E3.81.AB.E3.81.9D.E3.82.8C.E3.82.92_Release_.E3.81.99.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> <code>nsCOMPtr</code> がスコープを抜ける前にそれを <code>Release</code> するのですか? </h4> -<p>それに <code>0</code> を代入してください。<code>nsCOMPtr</code> が新しい値を取る時は、古い値があれば、いつもそれを <code>Release</code> します。値 <code>0</code> を割り当てるということは、<code>NULL</code> の生のポインタを割り当てるのと同じようなことです。古い対象は、<code>Release</code> されます。(より詳しくは、<a href="ja/Using_nsCOMPtr/Reference_Manual#.E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.A8.E4.BB.A3.E5.85.A5">初期化と代入</a> を見てください。) -</p><p>ただし、これには小さなパフォーマンス上のペナルティがあることに注意してください。<code>nsCOMPtr</code> は、デストラクタの処理の中で、その時持つ値を <code>Release</code> しようとします。最良の解決法は、<code>nsCOMPtr</code> の生存期間をその参照を保持したい期間だけに調整することです。例えば、この例ではブロックを使っています。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 最も効率的な枠組は、|nsCOMPtr| がちょうどその参照を</span> -<span class="comment">// 保持する必要のある期間だけのスコープを設定することです。</span> - -nsresult -SomeLongFunction( nsIBar* aBar ) - { - nsresult rv; - <span class="comment">// ...</span> - - { - <span class="comment">// |nsIFoo| インタフェースは、短期間だけ必要です。</span> - <span class="comment">// そのため、その生存期間をブロック文の中で</span> - <span class="comment">// 宣言して、制御します。</span> - - nsCOMPtr<nsIFoo> foo( do_QueryInterface(aBar, &rv) ); - if ( foo ) - foo->DoSomeFooThing(); - - <span class="comment">// |foo| がスコープをはずれました。そのため、ここで |Release| が実行されます。</span> - } - - <span class="comment">// ...ここには |nsIFoo| を必要としない多くの事柄があります。</span> - - return rv; - } -</pre> -</td></tr></tbody></table> -<p>編集者注: この議論を <a href="ja/Using_nsCOMPtr/Reference_Manual#.E5.8A.B9.E7.8E.87.E6.80.A7.E3.81.A8.E6.AD.A3.E7.A2.BA.E6.80.A7">効率性</a>のセクションへ移動し、ここからリンクを張ります。 -</p> -<h4 id="nsCOMPtr_.E3.81.AE.E3.83.AA.E3.83.BC.E3.82.AF.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B_.28.E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.83.86.E3.82.B9.E3.83.88.E3.81.AE.E3.81.9F.E3.82.81.29_.EF.BC.9F" name="nsCOMPtr_.E3.81.AE.E3.83.AA.E3.83.BC.E3.82.AF.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B_.28.E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.83.86.E3.82.B9.E3.83.88.E3.81.AE.E3.81.9F.E3.82.81.29_.EF.BC.9F"> <code>nsCOMPtr</code> のリークを作るのでしょうか (デバッグテストのため) ? </h4> -<h4 id=".E7.94.9F.E3.81.AE_.5BXP.5DCOM_.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.82.92.E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E3.81.86_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name=".E7.94.9F.E3.81.AE_.5BXP.5DCOM_.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.82.92.E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E3.81.86_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> 生の [XP]COM インタフェースポインタを「入出力」パラメタとして使う getter を呼べばよいのでしょうか? </h4> -<h4 id="nsIFoo.2A_.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF.E3.81.A7.E8.A8.AD.E5.AE.9A.E3.81.99.E3.82.8B_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="nsIFoo.2A&_.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF.E3.81.A7.E8.A8.AD.E5.AE.9A.E3.81.99.E3.82.8B_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> <code>nsIFoo*&</code> パラメタで設定する getter を呼べばよいのでしょうか? </h4> -<h4 id=".E3.81.9D.E3.81.AE.E7.B5.90.E6.9E.9C.E3.82.92_AddRef_.E3.81.97.E3.81.AA.E3.81.84_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.3F" name=".E3.81.9D.E3.81.AE.E7.B5.90.E6.9E.9C.E3.82.92_AddRef_.E3.81.97.E3.81.AA.E3.81.84_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.3F"> その結果を <code>AddRef</code> しない getter を呼べばよいのでしょうか? </h4> -<p>インタフェースポインタを返すどの {{ mediawiki.external('XP') }}COM 関数 (getter) も、そのポインタに対して <code>AddRef</code> をすでに呼び出していなければいけません。 もしそれが行われないのであれば、おそらくそれをバグとして報告すべきでしょう。 この問題を解決するのに使うどのコードパターンに対しても、このようにコメントすべきです。 例えば、<code><span class="comment">// 警告: この getter は 結果を AddRef() していません。</span></code> もし getter が新しいポインタを関数の復帰値として返すのであれば、心配いりません。 -</p> -<h3 id=".E4.B8.80.E8.88.AC" name=".E4.B8.80.E8.88.AC"> 一般 </h3> -<h4 id="nsCOMPtr_.E3.81.AF.E3.80.81.E3.82.B3.E3.83.BC.E3.83.89.E3.82.92.E8.86.A8.E5.BC.B5.E3.81.95.E3.81.9B.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr_.E3.81.AF.E3.80.81.E3.82.B3.E3.83.BC.E3.83.89.E3.82.92.E8.86.A8.E5.BC.B5.E3.81.95.E3.81.9B.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> <code>nsCOMPtr</code> は、コードを膨張させますか? </h4> -<h4 id="nsCOMPtr_.E3.81.AF.E9.80.9F.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E3.82.BF.E3.82.A4.E3.83.88.E3.81.AA.E3.83.AB.E3.83.BC.E3.83.97.E3.81.AE.E4.B8.AD.E3.81.A7.E3.82.82.E4.BD.BF.E3.81.88.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr_.E3.81.AF.E9.80.9F.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E3.82.BF.E3.82.A4.E3.83.88.E3.81.AA.E3.83.AB.E3.83.BC.E3.83.97.E3.81.AE.E4.B8.AD.E3.81.A7.E3.82.82.E4.BD.BF.E3.81.88.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> <code>nsCOMPtr</code> は速いですか? タイトなループの中でも使えますか? </h4> -<h3 id=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE.E4.B8.80.E8.A6.A7" name=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE.E4.B8.80.E8.A6.A7"> 参考文献一覧 </h3> -<h4 id="Web_.E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9" name="Web_.E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9"> Web リソース </h4> -<ul><li> {{ Source("xpcom/glue/nsCOMPtr.h", "nsCOMPtr.h") }} と {{ Source("xpcom/glue/nsCOMPtr.cpp", "nsCOMPtr.cpp") }} は、<code>nsCOMPtr</code>のソースです。<a class="external" href="http://lxr.mozilla.org/">LXR</a> を使って、<code>nsCOMPtr</code>のソースをオンラインで調べることができます。このコードを探検するのは、心臓が弱い人にとっても、冒険ではありません。 -</li><li> <a href="ja/XPCOM_ownership_guidelines">COM の所有のガイドライン</a> -</li><li> <a class="external" href="http://www.develop.com/dbox/cxx/InterfacePtr.htm">Interface Pointers Considered Harmful</a> - Don Box 著 - "The C++ Report" 1995 年 9 月号初出記事 -</li><li> <a class="external" href="http://www.develop.com/dbox/cxx/SmartPtr.htm">COM Smart Pointers Even More Harmful</a> - Don Box 著 - "The C++ Report" 1996 年 2 月号初出記事のフォローアップ -</li></ul> -<h4 id=".E6.9B.B8.E7.B1.8D" name=".E6.9B.B8.E7.B1.8D"> 書籍 </h4> -<ul><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201634465">Essential COM</a> - Don Box 著 -</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201379686">Effective COM</a> - Don Box 他著 -</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201889544">The C++ Programming Language (3rd Edition)</a> - Bjarne Stroustrup 著 -</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201924889">Effective C++ (2nd Edition): 50 Specific Ways to Improve Your Programs and Designs</a> - Scott Meyers 著 -</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/020163371X">More Effective C++ : 35 New Ways to Improve Your Programs and Designs</a> - Scott Meyers 著 -</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201310155">Effective C++ CD: 85 Specific Ways to Improve Your Programs and Designs</a> - Scott Meyers 著 -</li></ul> -<h4 id=".E4.BA.BA.E3.80.85" name=".E4.BA.BA.E3.80.85"> 人々 </h4> -<ul><li> <a class="external" href="http://www.develop.com/dbox/">Don Box</a> 長い間 COM プログラミングについて書いてきた頭のいい人です。 -</li></ul> -<div class="noinclude"> -</div> -{{ languages( { "en": "en/Using_nsCOMPtr/Frequently_Asked_Questions" } ) }} diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/getting_started_guide/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/getting_started_guide/index.html deleted file mode 100644 index 826f85c35a..0000000000 --- a/files/ja/mozilla/tech/xpcom/using_nscomptr/getting_started_guide/index.html +++ /dev/null @@ -1,294 +0,0 @@ ---- -title: Getting Started Guide -slug: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Getting_Started_Guide -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Getting_Started_Guide ---- -<p> </p> -<p>もしあなたが <code>nsCOMPtr</code> を前に使ったことがないのであれば、このセクションは、あなたにピッタリです。もしあなたがすでに <code>nsCOMPtr</code> に慣れ親しんでいるのであれば、<a href="/ja/Using_nsCOMPtr/Reference_Manual" title="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a> あるいは <a href="/ja/Using_nsCOMPtr/Frequently_Asked_Questions" title="ja/Using_nsCOMPtr/Frequently_Asked_Questions">FAQ</a> まで読み飛ばしたいかもしれません。心配しないでください。スタートガイドは短いです。</p> -<h3 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h3> -<h4 id="nsCOMPtr.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"><code>nsCOMPtr</code>とは何ですか?</h4> -<p><code>nsCOMPtr</code>はリークを防ぐのを助けるツールです。</p> -<p><code>nsCOMPtr</code> は「スマートポインタ」です。これは、文法的には通常の C や C++ の通常のポインタのように振舞うテンプレートクラスです。つまり、<code>*</code> や <code>-></code> を使って、それが指すものを取り出すことができます。<code>nsCOMPtr</code> は、XPCOM オブジェクトを指す生の C++ ポインタとは違い、<code>AddRef</code>、<code>Release</code> と <code>QueryInterface</code> をあなたのために管理してくれるという点でスマートです。<code>nsCOMPtr</code> は、以下のソースファイルで定義されています。</p> -<ul> <li><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsCOMPtr.h" rel="custom">xpcom/glue/nsCOMPtr.h</a></code></li> <li><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsCOMPtr.cpp" rel="custom">xpcom/glue/nsCOMPtr.cpp</a></code></li> -</ul> -<p>...ただ、まだそこを見たくはないは思わないでしょうけど。</p> -<p><code>nsCOMPtr</code> を使うことで、生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタを使うよりも、短く、きれいで、明確で、安全なコードを書くことができます。</p> -<h4 id=".5BXP.5DCOM_.E3.81.AE.E5.9F.BA.E6.9C.AC_.E6.89.80.E6.9C.89.E6.A8.A9.E3.81.A8.E5.8F.82.E7.85.A7.E3.82.AB.E3.82.A6.E3.83.B3.E3.83.88" name=".5BXP.5DCOM_.E3.81.AE.E5.9F.BA.E6.9C.AC:_.E6.89.80.E6.9C.89.E6.A8.A9.E3.81.A8.E5.8F.82.E7.85.A7.E3.82.AB.E3.82.A6.E3.83.B3.E3.83.88">[XP]COM の基本: 所有権と参照カウント</h4> -<p>これは、 <a href="/ja/XPCOM">XPCOM</a> の基本的な事項に関する軽い記事です。あなたはすでに(<a href="/ja/XPCOM">XPCOM</a> について)知っている必要がありますし、この短いセクションにざっと目を通せるようにすべきです。もしあまり馴染みのない事が書いてあるのであれば、あなたはまだ <code>nsCOMPtr</code> を読む準備ができていません。COM の背後の基本的ルールと論証については、以下の情報が有用です。<a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201634465">Essential COM</a> (<a class="external" href="http://www.develop.com/dbox/">Don Box</a> 著)。Don Box は、COM について、より詳細なこと、わな、落とし穴について、<a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201379686">Effective COM</a> で述べています。あなたは C++ についての適切な知識も持っているべきです。おそらくこのトピックについてとても助けになる 3 冊の本は、Bjarne Stroustrup の <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201889544">The C Programming Language</a>、Scott Meyers の <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201924889">Effective C</a>、<a class="external" href="http://www.amazon.com/exec/obidos/ASIN/020163371X">More Effective C</a> です。</p> -<p>すべての <a href="/ja/XPCOM">XPCOM</a> オブジェクトは、ヒープに割り当てられます。クライアントは、そのようなオブジェクトの実装について多くを知ることはできません。クライアントは「インタフェース」へのポインタを通じてのみ、それを参照します。すなわち、ポインタの静的な型は抽象基底クラスへのポインタであり、指されている実際のオブジェクトは、抽象基底クラスから派生しているクラスです。その <a href="/ja/XPCOM">XPCOM</a> オブジェクトは、「インタフェースを実装する」と言われます。クライアントのオブジェクトへの参照は、一般的に「インタフェースポインタ」と呼ばれています。</p> -<p>オブジェクトは、たくさんのインタフェースを実装するかもしれません。それぞれのインタフェースについて、(少なくとも概念的には) 別々に、「参照のカウント」が行われます。つまり、インタフェースはそれを参照しているクライアントの数を保持しているということです。カウントが 0 になった時、インタフェースは自分自身を<code>削除する</code>ことができます。クライアントには、この参照カウントの厳密さを保つことが求められています。そのため、インタフェースへの参照が獲得された時は参照カウントのインクリメントを行い、またそれを使わなくなった時は参照カウントのデクリメントを行わなければなりません。これを容易にするため、すべてのインタフェースは、メンバ関数 <code>AddRef</code>、<code>Release</code> を提供する抽象基底クラスから継承しています。</p> -<p><a href="/ja/XPCOM">XPCOM</a> の一つの規則は、インタフェースポインタを作成するか、返すかするどの関数もそれに対して、すでに <code>AddRef</code> を実行していなければならないことです。呼び出し側は、参照をいつまでも保持することができ、いらなくなったら、<code>Release</code> を呼びます。インタフェースへの最後のポインタに対して、<code>Release</code> が呼ばれると、インタフェース (従って、通常は基となるオブジェクトも) は、自分自身を削除します。インタフェースに対する未解決の <code>AddRef</code> がある限り、オブジェクトは存在し続けます。<code>Release</code> を呼び忘れると、オブジェクトはリークし、すなわち、オブジェクトの記憶領域は決して取り戻されません。リークは、悪いことです。<code><span class="nowiki">:-)</span></code></p> -<p><code>AddRef</code> と <code>Release</code> の呼び出しを通じた参照を<strong>所有する参照</strong>と呼びます。それは、基となるオブジェクトに権利を持ちます。そのオブジェクトは、所有する参照がその権利を放棄するまで無くなりません。全ての参照が所有する参照である必要はありません。実際、もし二つのオブジェクトが何らかの形で (一時的にでも) お互いを所有しあうことになった場合、所有の輪を断ち切るなんらかの`例外的'メカニズムなしで、それらのオブジェクトを取り戻すのは、難しくなります。ドキュメント <a href="/ja/XPCOM_ownership_guidelines" title="ja/XPCOM_ownership_guidelines">COM の所有のガイドライン</a> は、所有権が必要になった時に、いくつかヒントを与えてくれます。以下のリストは、開始地点としていいですが、しかし決して完全ではありません。</p> -<p>所有する参照を使うのは、</p> -<ul> <li>オブジェクトを生成した時。</li> <li>オブジェクトを生成した可能性のある関数からオブジェクトを受け取った場合。 例えば、<code>QueryInterface</code> や <code>CreateInstance</code> のような、任意の「getter」関数。 望ましい getter はすべて、それらがつくり出したインタフェースポインタに対して <code>AddRef</code> を実行し、所有する参照を提供します。</li> <li>その参照を、あなたがそれを取得した関数のスコープよりも長く保持する場合。 例えば、パラメタとして受け取り、それをメンバ変数として保持する場合。 [例えば、以下の <a href="#Comparison_1">比較 1</a> を見てください]。</li> -</ul> -<p>所有する参照を使わなくてもよいのは、</p> -<ul> <li>オブジェクトがパラメタとして渡され、かつその関数のスコープよりも長くそれを保持する必要がない場合。</li> <li>上手く定義されていることによって、当該オブジェクトの生存期間があなたのオブジェクトの生存期間を含んでいると分かっている場合。 例えば、ツリーのノードにおいて、 親のノードは、それらの子どもに対する所有する参照を保持しており、 子は、その親を所有する参照で保持する必要はありません。</li> -</ul> -<p>これらにより、参照カウントをプログラマが手動で正しくするのは、大変であることが分かります。それは、簡単そうに見えますが、しかし実際には <code>Release</code> を適切な時に実行するのは忘れやすいのです。あるいは、 <code>AddRef</code> を多く呼びすぎたり、呼び出しが足りなかったりすることもあります。</p> -<h4 id="nsCOMPtr_.E3.81.AF.E3.80.81.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.8B.3F" name="nsCOMPtr_.E3.81.AF.E3.80.81.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.8B.3F"><code>nsCOMPtr</code> は、どのように役に立つのか?</h4> -<p><code>nsCOMPtr</code> は、<code>AddRef</code>、<code>Release</code>、その他の煩わしい仕事をあなたのために管理します。<code>nsCOMPtr</code>は、見掛けも振舞いも C が許している生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタのようです。しかし、<code>nsCOMPtr</code> は、自分が指しているオブジェクトを所有していることを知っています。少し慣れる必要はありますが、しかし結果的に、タイピングが少なくて済み、きれいで、安全なコードを書くことができ、そしてリークが少なくなります。</p> -<p>例えば、ここに典型的な (とてもコンパクトな) コードの断片があります。これは、<a href="/ja/XPCOM">XPCOM</a> インタフェースポインタをメンバ変数に代入しています。つまり、「setter」関数の本体です。生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタと <code>nsCOMPtr</code> を並べて使用しています。</p> -<p> </p> -<table> <caption>比較 1. メンバ変数を設定する </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ...</span> -<span class="comment">// 仮定: |nsIFoo* mFooPtr;|</span> - -<span class="comment"><span class="nowiki">/* もし |NULL| でなく新しい値なら、|AddRef| し それを代入します。もし古い値があれば、 |Release| します (そうやってリークを防ぎます)。 この割り当て順序は特別で、特定の所有者バグを防ぐために 使われなくてはなりません。 */</span></span> - -<strong>NS_IF_ADDREF(aFooPtr); nsIFoo* temp = mFooPtr;</strong> -mFooPtr = aFooPtr; -<strong>NS_IF_RELEASE(temp);</strong> -</pre> </td> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|...</span> -<span class="comment">// 仮定: |nsCOMPtr<nsIFoo> mFooPtr;|</span> - -<span class="comment"><span class="nowiki">/* この代入は、|mFooPtr| に古い値が あれば自動的にそれを |Release| し、 新しい値に対して、先ほど触れた所有者バグを 防ぐために適切な順序で |AddRef| を 呼び出します。 */</span></span> - - - - - -mFooPtr = aFooPtr; - -</pre> </td> </tr> </tbody> -</table> -<p>付け加えると、生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタを使うクラスは、<code>mFooPtr</code> を <code>Release</code> するためのデストラクタを必要とします。そして、<code>mFooPtr</code> が <code>NULL</code> (または何らかの正当な値) で初期化されることを保証するコンストラクタを必要とします。</p> -<p><code>nsCOMPtr</code>は、あなたが生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタを使うよりリークへの耐性があり、例外に対して安全で、だらだらとしないコードを書くのに役立ちます。<code>nsCOMPtr</code> を使う時は、<code>AddRef</code>、<code>QueryInterface</code> を手動で呼ぶ必要はないでしょう。</p> -<p>それでもなお、 <a href="/ja/XPCOM">XPCOM</a> を理解する必要があります。また、どの関数が<code>AddRef</code>されたインタフェースポインタを返し、どの関数がそうでないものを返すのかを知っていなければなりません。また、あなたのプログラムロジックが循環参照によるゴミを作り出さないことを保障しなければなりません。<code>nsCOMPtr</code> は、万能薬ではありません。しかしながら、それは、役に立ち、簡単に使え、よくテストされ、そして洗練されています。関数の作者があなたと協調することを必要としません。またあなたがそれを使うことにより、他人にそれを使うよう強制することもありません。</p> -<h3 id="nsCOMPtr_.E3.82.92.E4.BD.BF.E3.81.86" name="nsCOMPtr_.E3.82.92.E4.BD.BF.E3.81.86"><code>nsCOMPtr</code> を使う</h3> -<h4 id=".E5.9F.BA.E6.9C.AC" name=".E5.9F.BA.E6.9C.AC">基本</h4> -<p>ほとんどの場合、あなたは<code>nsCOMPtr</code>を生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタと全く同じように使うでしょう。宣言時のわずかな違いに注意してください。</p> -<p> </p> -<table> <caption>比較 2. 類似性: <code>nsCOMPtr</code>は、文法的に生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタに似ている。 </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ...</span> - -nsIFoo<strong><span class="nowiki">*</span></strong> fooPtr <strong><span class="nowiki">= 0</span></strong><span class="nowiki">; </span><span class="comment">// ...</span> -fooPtr->SomeFunction(x, y, z); -AnotherFunction(fooPtr); - -if ( fooPtr ) - <span class="comment">// ...</span> - -if ( fooPtr == foo2Ptr ) - <span class="comment">// ...</span> -</pre> </td> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|...</span> - -<strong>nsCOMPtr<</strong>nsIFoo<strong>></strong> fooPtr; -<span class="comment">// ...</span> -fooPtr->SomeFunction(x, y, z); -AnotherFunction(fooPtr); - -if ( fooPtr ) - <span class="comment">// ...</span> - -if ( fooPtr == foo2Ptr ) - <span class="comment">// ...</span> -</pre> </td> </tr> </tbody> -</table> -<p>二つの主な違いがあります。最初の違い: あなたはもはや <code>AddRef</code> や <code>Release</code> を呼ぶ必要がありません。また呼んでもいけません。</p> -<p> </p> -<table> <caption>Comparison 3. Differences: <code>AddRef</code> and <code>Release</code> are illegal for <code>nsCOMPtr</code>s. </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生の [XP] COMインタフェースポインタ...</span> -<span class="comment">// 仮定: |nsIFoo* mFooPtr;|</span> - - <span class="comment">/* 注意: この順序はどっちみち生のポインタが 代入された正しい順序ではありません (<a href="#Comparison_1">比較 1</a> を参照してください) しかし、 ここでは、この比較が必要です。 */</span> - -NS_IF_RELEASE(mFooPtr); - -mFooPtr = aFooPtr; -NS_IF_ADDREF(mFooPtr); - -</pre> </td> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|...</span> -<span class="comment">// 仮定: |nsCOMPtr<nsIFoo> mFooPtr;|</span> - - <span class="comment">/* もはや |AddRef| や |Release| を呼ぶ 必要もありませんし、コンパイラはそれを エラーにします。 */</span> - - - -<span class="warning">NS_IF_RELEASE(mFooPtr);</span> - <span class="comment">// エラー: |Release| はプライベートです。</span> -mFooPtr = aFooPtr; -<span class="warning">NS_IF_ADDREF(mFooPtr);</span> - <span class="comment">// エラー: |AddRef| はプライベートです。</span> -</pre> </td> </tr> </tbody> -</table> -<p>二番目の違い: あなたは、生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタのパラメタを通じて、結果を返すことを期待して、<code>nsCOMPtr</code> のアドレスを getter に渡すことができません。あなたは、<a href="/ja/Using_nsCOMPtr/Reference_Manual#.E3.80.8C.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF:_getter_AddRefs" title="ja/Using_nsCOMPtr/Reference_Manual#.E3.80.8C.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF:_getter_AddRefs"><code>getter_AddRefs</code></a> 指示子で、<code>nsCOMPtr</code> を注釈する必要があります。</p> -<p> </p> -<table> <caption>比較 4.違い: <code>nsCOMPtr</code>を`出力パラメタ'として使う時に、<code>getter_AddRefs</code>を適用する。 </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ...</span> - -nsIFoo* foo; - -GetFoo(<strong>&</strong>foo); -</pre> </td> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|s...</span> - -nsCOMPtr<nsIFoo> foo; - -GetFoo(<strong>getter_AddRefs(</strong>foo<strong>)</strong>); -</pre> </td> </tr> </tbody> -</table> -<p>これで終りです。あなたは、もう<code>nsCOMPtr</code>を使い始めるのに十分な知識を持っています。この他に<code>nsCOMPtr</code>をもっと複雑な状況で使う時にあなたが知りたいであろう、いくつかの詳細な事柄があります。でもあなたが学んだことは、あなたが使う状況の 90% をカバーしています。</p> -<h4 id=".E3.81.84.E3.81.8F.E3.81.A4.E3.81.8B.E3.81.AE.E8.A9.B3.E7.B4.B0" name=".E3.81.84.E3.81.8F.E3.81.A4.E3.81.8B.E3.81.AE.E8.A9.B3.E7.B4.B0">いくつかの詳細</h4> -<p>あなたが <code>nsCOMPtr</code> から最大限のことを引き出すのを手伝ういくつかの事があります。</p> -<p>しばしば、まず <code>QueryInterface</code> を呼ぶことで、あなたはインタフェースポインタを得ます。 <code>QueryInterface</code> は、他と同様に getter です。そして、上述したように <code>getter_AddRefs</code> ルールを適用して、それを呼び出す一つの方法をすでに知っています。</p> -<table> <caption><code>nsCOMPtr</code> に <code>QueryInterface</code> する難しい方法 </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| に |QuertyInterface| するやり方 (最良のやり方ではないですが)...</span> - -nsCOMPtr<nsIFoo> foo; - -nsresult rv = bar->QueryInterface(NS_GET_IID(nsIFoo), getter_AddRefs(foo)); - - <span class="comment">// または、あなたが [XP]COM をよく知っているプログラマ</span> - <span class="comment">// ならば、タイプセーフ版を使ってください...</span> -nsresult rv = CallQueryInterface(bar, getter_AddRefs(foo)); -</pre> </td> </tr> </tbody> -</table> -<p><code>QueryInterface</code> はしばしば使われるので、<code>nsCOMPtr</code> には、それを呼び出すための特別に便利なものがあります。この便利なものは、タイプセーフで、これにより、<code>nsCOMPtr</code> が <code>QueryInterface</code> の結果から直接構築されます。正しい値からの構築は、構築後に代入するよりも効率的です。 この便利なものは、<a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"><code>do_QueryInterface</code></a> 指示子です。<code>do_QueryInterface</code> を使うと、上記のサンプルはこのようになります。</p> -<table> <caption><code>nsCOMPtr</code> への <code>QueryInterface</code> の仕方 </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| へ |QueryInterface| するベストな方法...</span> - -nsresult rv; -nsCOMPtr<nsIFoo> foo( <strong>do_QueryInterface(</strong>bar, &rv<strong>)</strong> ); - - <span class="comment">// または、もし |nsResult| について気にしないのであれば</span> -nsCOMPtr<nsIFoo> foo( <strong>do_QueryInterface(</strong>bar<strong>)</strong> ); -</pre> </td> </tr> </tbody> -</table> -<p><code>nsCOMPtr</code> は、嬉しいことに <code>AddRef</code> と <code>Release</code> を暗黙的に呼び出します。同じような方法は、<code>QueryInterface</code> には、拡張され<em>ません</em>。<code>nsCOMPtr</code> は、代入において、<code>do_QueryInterface</code> 指示子を使った明示的な許可がなければ、<code>QueryInterface</code> を実行しません。あなたは、もう隠れた問い合わせについて心配する必要はありません。しかしながら、もしあなたが問い合わせをする<em>べき</em>なのに、しなかった場合に注意してください。例えば、生のポインタを代入する場合で、C が代入を許可しているが <a href="/ja/XPCOM">XPCOM</a> は許可していない場合。<code>nsCOMPtr</code> は、<a href="/ja/Using_nsCOMPtr/Reference_Manual#Type_Safeguards" title="ja/Using_nsCOMPtr/Reference_Manual#Type_Safeguards">実行時にアサートする</a> でしょう。異なった型の <a href="/ja/XPCOM">XPCOM</a> インタフェースに代入する時にはいつでも、<code>do_QueryInterface</code> を使ってください。たとえ、その型がたまたま <code>nsCOMPtr</code> の基底型から派生していてもです。</p> -<p> </p> -<table> <caption>比較 6. <code>do_QueryInterface</code> が <a href="/ja/XPCOM">XPCOM</a> の型のエラーを防ぐ。 </caption> <tbody> <tr> <td> <pre class="eval"> -class nsIBar - : public nsIFoo ... { ... }; - -nsIBar* p = ...; - - <span class="comment">// C は、すべての |nsIBar*| が</span> - <span class="comment">// |nsIFoo*| であるとみなします。そのため、C は</span> - <span class="comment">// これを許可します...</span> -nsCOMPtr<nsIFoo> <span class="warning">foo = p;</span> - <span class="comment">// ...たとえそれが [XP]COM の型の</span> - <span class="comment">// エラーだとしてもそうです。</span> -</pre> </td> <td> <pre class="eval"> -class nsIBar - : public nsIFoo ... { ... }; - -nsIBar* p = ...; - - - - <span class="comment">// ここでは、型のエラーはありません...</span> -nsCOMPtr<nsIFoo> foo( <strong>do_QueryInterface(</strong>p<strong>)</strong> ); - - -</pre> </td> </tr> </tbody> -</table> -<p>覚えておいてください。C の型のシステムと <a href="/ja/XPCOM">XPCOM</a> の型のシステムは、互いに独立しているものです。<a href="/ja/XPCOM">XPCOM</a> インタフェースは、C の抽象基底クラスとして表現されているため、C に違いを処理させたり、あるいはインタフェースの型の間を取り持つために C のキャストを使ったりしたくなるかもしれません。これは、間違いです。<a href="/ja/XPCOM">XPCOM</a> の型の間で許されているのは、<code>QueryInterface</code> を使うことだけです。上記の例では、C が <code>p</code> から引き出す <code>nsIFoo*</code> が <code>p->QueryInterface()</code> が返すものと同一のものであると仮定する理由はありません。</p> -<p><a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"><code>dont_AddRef</code></a> は、同じような指示子で、例えば、その関数の結果としてポインタを返す getter を呼んだなどの理由で、すでに <code>AddRef</code> を実行したポインタを代入する時に役に立ちます。</p> -<table> <caption><code>dont_AddRef</code> の使用 </caption> <tbody> <tr> <td> <pre class="eval"> -nsCOMPtr<nsIFoo> foo( <strong>dont_AddRef(</strong>CreateFoo()<strong>)</strong> ); - <span class="comment">// |CreateFoo| は、すべての望ましい getter が行うように、その結果を |AddRef| します。 </span></pre> </td> </tr> </tbody> -</table> -<h4 id="nsCOMPtr_.E3.81.8C.E3.81.97.E3.81.AA.E3.81.84.E3.81.93.E3.81.A8" name="nsCOMPtr_.E3.81.8C.E3.81.97.E3.81.AA.E3.81.84.E3.81.93.E3.81.A8"><code>nsCOMPtr</code> が<em>しない</em>こと</h4> -<p><code>nsCOMPtr</code> は、所有する参照として振舞うために必要なすべてのことを行います。しかしながら、与えられた <code>nsCOMPtr</code> は、<em>他の</em>所有ポインタを作ることには協力しません。どうやって <code>nsCOMPtr</code> が<em>代入</em>される時に自動的にポインタを <code>AddRef</code> するかを学習した後、それが<em>参照</em>される時にも同じことをすると仮定するのは、自然です。この誤解を示すコード断片を載せます。</p> -<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| に関する間違った仮定...</span> - -nsresult -nsCacheRecord::GetFileSpec( nsIFileSpec** aFileSpecResult ) - <span class="comment">/* ...呼び出し側の |nsFileSpec*| (呼び出し側がアドレスを設定します) に 私のメンバ変数の |mFileSpec| (|nsCOMPtr型|) のコピーが代入されます。 つまり、この関数は「getter」です。 覚えてください: 望ましい [XP]COM getter は、いつも結果に対して |AddRef| を実行します。 */</span> - { - <span class="comment">// ...</span> - *aFileSpec = mFileSpec; - <span class="warning"><span class="comment">// |nsCOMPtr| は、参照カウントに気をつけるべきです。いいですか?</span></span> - return NS_OK; - } -</pre> </td> </tr> </tbody> -</table> -<p>明らかに、作者は (いくつかの疑問を持ちながらかもしれませんが)、<code>nsCOMPtr</code> つまり <code>mFileSpec</code> は、<code>*aFileSpec</code> への代入される時、自動的に <code>AddRef</code> を呼ぶと信じています。この場合は<em>違います</em>。<code>nsCOMPtr</code> は、<em>自分の</em>ため (だけ) に、自動的に <code>AddRef</code> と <code>Release</code> を呼び出します。その他のすべての状況において、それは、生の <a href="/ja/XPCOM">XPCOM</a> ポインタを置き換えるスロットとして設計されています。<code>nsCOMPtr</code> が生のポインタが必要とされているところで使われていたら、<code>nsCOMPtr</code> は自動的にそれを提供します。</p> -<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| は、生のポインタが必要とされている場合は、それを提供します...</span> - -nsCOMPtr<nsIFoo> foo = ...; - - <span class="comment">// 1. 生のポインタに代入</span> -nsIFoo* raw_foo = foo; - - <span class="comment">// 2. 別の |nsCOMPtr| に代入</span> -nsCOMPtr<nsIFoo> foo2 = foo; - - <span class="comment">// 3. パラメタとして</span> -SetFoo(foo); - - <span class="comment">// 4. |if| 式の中で値をテスト</span> - <span class="comment">// 5. メンバ関数の呼び出し</span> -if ( foo ) - foo->DoSomething(); -</pre> </td> </tr> </tbody> -</table> -<p>これらすべての場合において、かなり正確に同じコードが実行されます (2 番目のケースは、少し違いますが、意図は同じです)。それぞれの場合において、あなたは本質的に自分の目的のために生のポインタの値を取り出しています。もし <code>nsCOMPtr</code> が値に対して、その都度 <code>AddRef</code> を実行すると、4 番目のケースと 5 番目のケースではあきらかにいつもリークを作り出してしまいます。ケース 3 の <code>SetFoo</code> は、場合によって、二つの異なった書き方で書かれる必要があります。それは、<code>nsCOMPtr</code> が与えられた場合は、値に対してすでに <code>AddRef</code> が実行されていることが分かり、そして生のポインタが与えられた場合、値に対して <code>AddRef</code> は実行されていないことがわかるためです。実際、矛盾はこれらよりもっと深くまで広がります。これらすべてのケースは、「出力」に対して自動的に <code>AddRef</code> を実行すると、<code>nsCOMPtr</code> と生のポインタがクライアントの視点から見て異なる振舞いをすることになるということを示しています。同じように振舞うようにさせるのが目的であり、そのため <code>nsCOMPtr</code> は、置き換えのスロットになりうるのです(自分の「所有権」について管理することを守らせることにより)。</p> -<p>あなたが今知ったことから、ルールは明らかです。上述したように、そうしないように指示しない限り、<code>nsCOMPtr</code> は、<em>代入</em>される時に <code>AddRef</code> を実行します。<code>nsCOMPtr</code> は、<em>参照</em>される時は何もしません。</p> -<h4 id=".E3.81.A9.E3.81.93.E3.81.A7nsCOMPtr.E3.82.92.E4.BD.BF.E3.81.86.E3.81.B9.E3.81.8D.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name=".E3.81.A9.E3.81.93.E3.81.A7nsCOMPtr.E3.82.92.E4.BD.BF.E3.81.86.E3.81.B9.E3.81.8D.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F">どこで<code>nsCOMPtr</code>を使うべきでしょうか?</h4> -<p>インタフェースポインタを所有する参照として使うところでは、どこでも <code>nsCOMPtr</code> を使うべきです。つまり、あなたがそれに対して <code>AddRef</code> と <code>Release</code> を呼び出す所です。setter を単純にする場合、そしてコンストラクタ、デストラクタ、代入演算子を除去する場合、<code>nsCOMPtr</code> をメンバ変数として使うべきです。<code>QueryInterface</code> の呼び出しをおおむね快適にし、エラー処理を避けるための複雑なロジックを除去する場合、<code>nsCOMPtr</code> をスタック上で使うべきです。</p> -<h4 id=".E3.81.A9.E3.81.93.E3.81.A7nsCOMPtr.E3.82.92.E4.BD.BF.E3.81.86.E3.81.B9.E3.81.8D.E3.81.A7.E3.81.AF.E3.81.AA.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.81.A9.E3.81.93.E3.81.A7nsCOMPtr.E3.82.92.E4.BD.BF.E3.81.86.E3.81.B9.E3.81.8D.E3.81.A7.E3.81.AF.E3.81.AA.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F">どこで<code>nsCOMPtr</code>を使うべきではないですか?</h4> -<p>所有する参照を必要としないところでは、<code>nsCOMPtr</code>を使わないでください。<a href="/ja/XPCOM_ownership_guidelines" title="ja/XPCOM_ownership_guidelines">COM の所有のガイドライン</a> を見てください。<code>nsCOMPtr</code> は <a href="/ja/XPCOM">XPCOM</a> インタフェースとともに使われるように設計されています。そのため、<a href="/ja/Using_nsCOMPtr/Getting_Started_Guide#.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A7.E3.81.AA.E3.81.84.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_nsCOMPtr" title="ja/Using_nsCOMPtr/Getting_Started_Guide#.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A7.E3.81.AA.E3.81.84.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_nsCOMPtr">以下</a> に示すように特定の例外を伴うインタフェースでないものと一緒には使わないでください。<a href="/ja/XPCOM">XPCOM</a> の中で <code>nsCOMPtr</code> を使わないでください。それらをプレーンな古い C コード上で使わないでください。もちろん、<code>nsCOMPtr</code>は C だけの構築物です。<code>nsCOMPtr</code> を決して <a href="/ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88" title="ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88">キャストしないで</a> ください。それをすると、ほとんどリークが保証されたようなものです。</p> -<h4 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A7.E3.81.AA.E3.81.84.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_nsCOMPtr" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A7.E3.81.AA.E3.81.84.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_nsCOMPtr">インタフェースでないクラスのための <code>nsCOMPtr</code></h4> -<p>適切にフォーマットした解答を追加する予定です。当面の間、詳細全体は <a class="link-news" href="news://news.mozilla.org/scc-3E1526.12182423042001@h-204-29-187-152.netscape.com">この news 投稿</a> で利用可能です。</p> -<h4 id=".E9.96.A2.E6.95.B0.E8.AD.98.E5.88.A5.E5.AD.90.E5.86.85.E3.81.AE_nsCOMPtr" name=".E9.96.A2.E6.95.B0.E8.AD.98.E5.88.A5.E5.AD.90.E5.86.85.E3.81.AE_nsCOMPtr">関数識別子内の <code>nsCOMPtr</code></h4> -<p>一般的に、XPCOM (つまり、「スクリプタブル」) 関数の識別子内で、<code>nsCOMPtr</code> を使いたいとは思わないでしょう。<code>nsCOMPtr</code> は現在 IDL により直接サポートはされていません。しかし、あなたは時々スクリプタブルでない関数内で <code>nsCOMPtr</code> を使いたくなるかもしれません。</p> -<h5 id="nsCOMPtr.3CT.3E_f.28.29_nsCOMPtr_.E3.82.92.E3.83.AA.E3.82.BF.E3.83.BC.E3.83.B3.E5.80.A4.E3.81.A8.E3.81.97.E3.81.A6.E8.BF.94.E3.81.95.E3.81.AA.E3.81.84" name="nsCOMPtr.3CT.3E_f.28.29_nsCOMPtr_.E3.82.92.E3.83.AA.E3.82.BF.E3.83.BC.E3.83.B3.E5.80.A4.E3.81.A8.E3.81.97.E3.81.A6.E8.BF.94.E3.81.95.E3.81.AA.E3.81.84"><code>nsCOMPtr<T> f()</code> <code>nsCOMPtr</code> をリターン値として返さない</h5> -<p>この方法は危険です。<code>AddRef</code> されたポインタを関数のリターン値として返すことは、ほとんどどの様な形で行なっても、リークや無効なポインタなどの、かなりひどい潜在的エラーに行きつきます。 <code>nsCOMPtr</code> をリターンすることは (クライアントがそれに所有権を与えたことをクライアントに教えるので) よい考えのように見えますが、これは無効なポインタを引き起こします。以下のコードを考えてみてください。</p> -<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|を返してはいけません...</span> -nsCOMPtr<nsIFoo> CreateFoo(); -<span class="comment">// ...</span> - -<span class="warning">nsIFoo* myFoo = CreateFoo();</span> <span class="comment">// おっと: |myFoo| はもう無効!</span> - <span class="comment">// |CreateFoo| は |nsCOMPtr| を返すけれど、</span> - <span class="comment">// |nsCOMPtr| はこの代入のあと正しく自動的に |Release| する</span> - <span class="comment">// 今 |myFoo| は削除されたオブジェクト</span> - <span class="comment">// を参照している。</span> -</pre> </td> </tr> </tbody> -</table> -<p><code>already_AddRefed<T></code> をリターンすることにより、呼び出し側に、この危険なしにそれらに所有権を与えたことを通知できます (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59212" title="FIXED: leaks with nsCOMPtr<nsIAtom> foo = NS_NewAtom(...)">バグ 59212</a>参照)。<code>nsCOMPtr</code> は、<code>already_AddRefed</code> された値は、<code>AddRef</code> すべきではない事を知るようになります。</p> -<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 好ましい方法: もし、ポインタを返す必要があるなら、|already_AddRefed| を使うこと...</span> -already_AddRefed<nsIFoo> CreateFoo(); -<span class="comment">// ...</span> - -nsIFoo* myFoo1 = CreateFoo(); <span class="comment">// 無効にならない</span> -nsCOMPtr<nsIFoo> myFoo2( CreateFoo() ); <span class="comment">// リークしない</span> -nsCOMPtr<nsIFoo> myFoo3( dont_AddRef(CreateFoo()) ); <span class="comment">// 冗長だが認められており正しい</span> -</pre> </td> </tr> </tbody> -</table> -<p>これを、既に <code>AddRef</code> した生ポインタをリターンすることを原因とする、最も頻繁に起こりうるリークと比べてみてください。</p> -<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生のポインタを返さないでください、リークを誘発します...</span> -nsIFoo* CreateFoo(); <span class="comment">// |AddRef| されたポインタを返してください</span> -<span class="comment">// ...</span> - -<span class="warning">nsCOMPtr<nsIFoo> myFoo = CreateFoo();</span> <span class="comment">// おっと: リークだ</span> -nsCOMPtr<nsIFoo> myFoo( <span class="notice">dont_AddRef(</span>CreateFoo()<span class="notice">)</span> ); - <span class="comment">// |CreateFoo| その結果を既に |AddRef| しているため、私たちは |nsCOMPtr|</span> - <span class="comment">// をそうしないように覚えておかなくてはなりません。それは忘れやすいことです。</span> - <span class="comment">// 関数の戻り値としてポインタを返さないか、さもなければ上記のように</span> - <span class="comment">// |already_AddRefed<T>| を返すかしてあらかじめ防いでください。</span> -</pre> </td> </tr> </tbody> -</table> -<p> </p> -<h5 id="void_f.28_nsCOMPtr.3CT.3E_.29_nsCOMPtr.E3.82.92.E5.80.A4.E6.B8.A1.E3.81.97.E3.81.97.E3.81.AA.E3.81.84" name="void_f.28_nsCOMPtr.3CT.3E_.29_nsCOMPtr.E3.82.92.E5.80.A4.E6.B8.A1.E3.81.97.E3.81.97.E3.81.AA.E3.81.84"><code>void f( nsCOMPtr<T> )</code> <code>nsCOMPtr</code>を値渡ししない</h5> -<p>この方法は役に立たないどころか、実害があります。引き数は関数コールと同じ生存期間を保証されるので、引き数を <code>AddRef</code> する必要はありません。関数コールを超えて生き残る構造体のメンバに値を格納する時のみ、<code>AddRef</code> が必要になります。これは、関数の引き数ではなく、構造体の適切なメンバが <code>nsCOMPtr</code> であるべきことを意味します。更にこの書き方は、呼び出し側に、単に関数をコールするために <code>nsCOMPtr</code> が必要なのではないかと思わせ、混乱させます。</p> -<h5 id="void_f.28_const_nsCOMPtr.3CT.3E_.29_nsCOMPtr_.E3.82.92const_.E5.8F.82.E7.85.A7.E6.B8.A1.E3.81.97.E3.81.97.E3.81.AA.E3.81.84" name="void_f.28_const_nsCOMPtr.3CT.3E&_.29_nsCOMPtr_.E3.82.92const_.E5.8F.82.E7.85.A7.E6.B8.A1.E3.81.97.E3.81.97.E3.81.AA.E3.81.84"><code>void f( const nsCOMPtr<T>& )</code> <code>nsCOMPtr</code> を<code>const</code> 参照渡ししない</h5> -<p>上の書き方と全く同じで、この方法は役に立たないどころか、実害があります。もし呼び出し側が生ポインタを渡した場合には、<code>nsCOMPtr</code> を値渡しするのと同じ良く無いことが起こります。</p> -<h5 id="void_f.28_nsCOMPtr.3CT.3E.2A_.29_.E3.81.A7.E3.81.8D.E3.82.8C.E3.81.B0_nsCOMPtr_.E3.81.AE.E3.82.A2.E3.83.89.E3.83.AC.E3.82.B9.E6.B8.A1.E3.81.97.E3.81.AF.E9.81.BF.E3.81.91.E3.82.8B" name="void_f.28_nsCOMPtr.3CT.3E.2A_.29_.E3.81.A7.E3.81.8D.E3.82.8C.E3.81.B0_nsCOMPtr_.E3.81.AE.E3.82.A2.E3.83.89.E3.83.AC.E3.82.B9.E6.B8.A1.E3.81.97.E3.81.AF.E9.81.BF.E3.81.91.E3.82.8B"><code>void f( nsCOMPtr<T>* )</code> できれば <code>nsCOMPtr</code> のアドレス渡しは避ける</h5> -<p>この方法は、呼び出し側に、それが <code>nsCOMPtr</code> を使用することと、ちょっとした余分な仕事を要求します。と言うのは、<code>nsCOMPtr</code> の <code>operator&</code> は (<a href="/ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88" title="ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88">キャストによるリーク</a> を防ぐために: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59414" title="FIXED: misuse of nsCOMPtr::operator&">バグ 59414</a> 参照) <code>private</code> だからです。この方法は、「入出力」引き数として宣言する事により、以下のように可能ですが、<code>nsCOMPtr</code> を参照渡しする方が好ましいでしょう。</p> -<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| のポインタ渡しは余計な仕事を増やすk...</span> -void f( nsCOMPtr<nsIFoo>* ); -<span class="comment">// ...</span> - -nsCOMPtr<nsIFoo> myFoo = ...; - -f( <span class="notice">address_of(</span>myFoo<span class="notice">)</span> ); -</pre> </td> </tr> </tbody> -</table> -<h5 id="void_f.28_nsCOMPtr.3CT.3E_.29_.E3.81.A1.E3.82.83.E3.82.93.E3.81.A8nsCOMPtr.E3.82.92.E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E5.BC.95.E3.81.8D.E6.95.B0.E3.81.A8.E3.81.97.E3.81.A6.E5.8F.82.E7.85.A7.E6.B8.A1.E3.81.97.E3.81.99.E3.82.8B" name="void_f.28_nsCOMPtr.3CT.3E&_.29_.E3.81.A1.E3.82.83.E3.82.93.E3.81.A8nsCOMPtr.E3.82.92.E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E5.BC.95.E3.81.8D.E6.95.B0.E3.81.A8.E3.81.97.E3.81.A6.E5.8F.82.E7.85.A7.E6.B8.A1.E3.81.97.E3.81.99.E3.82.8B"><code>void f( nsCOMPtr<T>& )</code> ちゃんと<code>nsCOMPtr</code>を「入出力」引き数として参照渡しする</h5> -<p>これは「入出力」引き数を提供するために好ましい方法です。もし代りに生ポインタを使った場合、関数内部では、入力値として呼び出し側がどの所有する関係を持っているかが、分らなくなります。結果として、新しい値を代入する前に <code>Release</code> すべきかどうかが分らなくなります。引き数を <code>nsCOMPtr&</code>、として宣言する事により、関係が明確になります。</p> -<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3> -<p><code>nsCOMPtr</code> は、所有する参照です。それが指すものはなんであれ <code>AddRef</code> され、<code>nsCOMPtr</code> をその「所有者」の一つとしてカウントします。<code>nsCOMPtr</code> は、<code>nsCOMPtr</code> が違うオブジェクトを指すために解放されるか、<code>nsCOMPtr</code> がスコープを抜けようとしているためかいずれにしろ、解放される前に必ず <code>Release</code> を呼び出します。新しい値が <code>nsCOMPtr</code> に割り当てられる時は、<code>nsCOMPtr</code> は、いつも自動的に、もし古い参照があれば、それを <code>Release</code> し、(そしてあなたがすでに実行済であると明示しなければ) 新しい方を <code>AddRef</code> します。</p> -<p>あなたは<code>nsCOMPtr</code>を厳密にほとんどすべての場合で生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタとして使うことができます [<a href="#Comparison_5">|比較 5</a> で示すようなコンパイラの問題にも、注意しなければいけないですが]。あなたは、それを通じて明示的に <code>AddRef</code> や <code>Release</code> を呼ばなくてよいです。また、コンパイラもそれを許しません。あなたが <code>nsCOMPtr</code> を変更しなければ使うところのできない唯一の場所は、生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタが`出力'引数である場所です。この場合、あなたは <code>nsCOMPtr</code> を <a href="/ja/Using_nsCOMPtr/Reference_Manual#.60Out.27_Parameters:_getter_AddRefs" title="ja/Using_nsCOMPtr/Reference_Manual#.60Out.27_Parameters:_getter_AddRefs"><code>getter_AddRefs</code></a> でラップします [<a href="#Comparison 4">比較 4</a>を見てください]。</p> -<p><code>nsCOMPtr</code> に代入した時に、(生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタであっても <code>nsCOMPtr</code> であっても、) 通常は、追加の指示子なしに単にもう一つのポインタを渡すだけです [例えば、<a href="#Comparison_1">比較 1</a> の <code>nsCOMPtr</code> の方を見てください]。上述したように、指示子なしに、<code>nsCOMPtr</code> は、もし古い対象があれば、それに対して、<code>Release</code> を呼び出し、そして新しい方に対して、<code>AddRef</code> を呼び出します。このようにするのが適切なのは、新しい参照に対して責任をとるために、あなたが代入したものに対してまだ <code>AddRef</code> を実行していない時です。これは、あなたが取得する関数を呼び出したのでは<em>ない</em>ポインタを代入する時によくある場合です。例えば、引き数として渡されたものや、構造体から抜きだしたものなどです。</p> -<p>あなたは、<code>nsCOMPtr</code> に、新しい値を <a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"><code>dont_AddRef</code></a> でラップすることにより、代入において新しい値を <code>AddRef</code> する必要がないことを伝えることができます。例えば、すべての望ましい <a href="/ja/XPCOM">XPCOM</a> getter のように、あなたのためにすでに <code>AddRef</code> を呼び出している関数から新しい値を得た場合に、これを行ってください。</p> -<p>あなたは、ポインタを異なったインタフェース型に代入してはいけません。あなたは、まず正しい型に問い合わせる必要があります [例えば、<a href="#Comparison_6">比較 6</a> と周辺の議論を見てください]。<code>nsCOMPtr</code> は、決して <code>QueryInterface</code> を暗黙的に呼び出し<em>ません</em>。つまり、あなたは自分でそれを呼ばなければいけません。あるいは、明示的に <a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"><code>do_QueryInterface</code></a> を使って、<code>nsCOMPtr</code> にそれを呼ぶように依頼しなければいけません。<code>do_QueryInterface</code> 指示子は、あなたが代入の一部として問い合わせをするのを許します。このよりよい便利な機構により、構築してから正しい値を後で代入するのではなく、(代入での) 右の値から <code>nsCOMPtr</code> を直接構築されます。構築に続いて代入するより、構築だけで済ませる方が効率的です。合理的である限り、代入と同時に構築する方を選んでください。<code>AddRef</code> したポインタを返す関数に対して、<code>do_QueryInterface</code> を適用しないように注意してください。[説明のために <a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_.2F.2A_call_QueryInterface_but_don.27t_AddRef_.2A.2F" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_.2F.2A_call_QueryInterface_but_don.27t_AddRef_.2A.2F">この短いセクション</a> を見てください。]</p> -<p>より詳しいことについては、<a href="/ja/Using_nsCOMPtr/Reference_Manual" title="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a> に続きます。</p> - -<p> </p> diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/index.html deleted file mode 100644 index 5d821dfeca..0000000000 --- a/files/ja/mozilla/tech/xpcom/using_nscomptr/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Using nsCOMPtr -slug: Mozilla/Tech/XPCOM/Using_nsCOMPtr -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Using_nsCOMPtr ---- -<p>このドキュメントは、<code>nsCOMPtr</code> について書かれたすべてを集めたものです。もしあなたが <code>nsCOMPtr</code> について疑問があり、このドキュメントでは分からないのであれば、 おそらくそれに答えられるドキュメントはないでしょう。<a class="external" href="news:mozilla.dev.tech.xpcom">XPCOM ニュースグループ</a>、または他のベテランの <code>nsCOMPtr</code> ユーザに尋ねる、あるいは実験して答えを見つける、などの別の手段で答えを得るしかありません。 </p><p>もしあなたがまだ <code>nsCOMPtr</code> 使ったことがないのであれば、ここは始めるのに適した場所です。そのまま読み進んでください。いつ止めるかは、あなた次第です。<code>nsCOMPtr</code> をしばらく使った後で、未知の領域に到達したり、コンパイルエラーになったりしたら、このドキュメントに戻ってきて、<a href="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a>、あるいは <a href="ja/Using_nsCOMPtr/Frequently_Asked_Questions">FAQ</a> から助けを得たいと思うでしょう。 -</p> -<h2 id="目次"> 目次 </h2> -<ol><li> <a href="ja/Using_nsCOMPtr/Status%2c_Recent_Changes%2c_and_Plans">状況、最近の更新と計画</a> -</li><li> <a href="ja/Using_nsCOMPtr/Getting_Started_Guide">スタートガイド</a> -</li><li> <a href="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a> -</li><li> <a href="ja/Using_nsCOMPtr/Frequently_Asked_Questions">よく聞かれる質問</a> -</li></ol> -<div class="originaldocinfo"> -<h2 id="原文書の情報"> 原文書の情報 </h2> -<ul><li> 著者: <a class="link-mailto" href="mailto:scc@mozilla.org">Scott Collins</a> -</li><li> 最終更新日: December 11, 2001 -</li><li> 著作権: Copyright © 1999, 2000 by the Mozilla organization; use is subject to the <a class="external" href="http://www.mozilla.org/MPL/">MPL</a>. Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a> -</li></ul> -</div> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/reference_manual/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/reference_manual/index.html deleted file mode 100644 index c5c82f9fdd..0000000000 --- a/files/ja/mozilla/tech/xpcom/using_nscomptr/reference_manual/index.html +++ /dev/null @@ -1,523 +0,0 @@ ---- -title: Reference Manual -slug: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Reference_Manual -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Reference_Manual ---- -<p> -</p><p>このセクションは、あなたが、すでに <code>nsCOMPtr</code> に慣れ親しんでいるけれども、もっと詳細な事柄を知りたい場合に役立つでしょう。もし、まだ <code>nsCOMPtr</code> を前に使っていないのであれば、まず <a href="ja/Using_nsCOMPtr/Getting_Started_Guide">スタートガイド</a> を読みたいかもしれません。もし、壊れたビルドを直そうとしているのであれば、<a href="ja/Using_nsCOMPtr/Frequently_Asked_Questions">FAQ</a> によって、もっと素早く答えを得られるかもしれません。 -</p> -<h3 id=".E5.9F.BA.E6.9C.AC" name=".E5.9F.BA.E6.9C.AC"> 基本 </h3> -<h4 id=".E8.A8.AD.E8.A8.88" name=".E8.A8.AD.E8.A8.88"> 設計 </h4> -<p><code>nsCOMPtr</code> は、所有する参照として使われる所で、生の [XP]COM インタフェースポインタを完全に置き換えるように設計されました。生の [XP]COM インタフェースポインタを使うことができるところであれば、ほとんどの場合、<code>nsCOMPtr</code> を使うことができるはずです。<code>nsCOMPtr</code>は、生の [XP]COM インタフェースポインタと正確な同じ大きさと形です。それは、容量を食いすぎることもなく、メンバ変数として使うことができます。 -</p><p>所有する参照のほとんどの作業は、<code>nsCOMPtr</code> のコンストラクタ、デストラクタと代入演算子で行われます。あなたが(代入や初期化により) <code>nsCOMPtr</code> を異なる [XP]COM オブジェクトで「指す」場合、もし古い値があれば、それを <code>Release</code> しなければなりません。そして、新しい値を <code>AddRef</code> しなければなりません。自分のデストラクタ実行時には、同様に <code>Release</code> しなければなりません。<code>nsCOMPtr</code> は、もしあなたがいつも正しいことを覚えているのであれば、ちょうどあなたがしていた作業しかしません。 -</p> -<h4 id=".E5.AE.89.E5.85.A8.E6.80.A7.E3.81.AE.E7.89.B9.E5.BE.B4" name=".E5.AE.89.E5.85.A8.E6.80.A7.E3.81.AE.E7.89.B9.E5.BE.B4"> 安全性の特徴 </h4> -<h5 id=".E5.9E.8B.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5" name=".E5.9E.8B.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5"> 型の保護手段 </h5> -<p>元の型のための正しい [XP]COM インタフェースポインタを保持しているのは、<code>nsCOMPtr</code> の不変性です。例えば、<code>nsCOMPtr<nsIFoo></code> は、[XP]COM オブジェクトに <code>nsIFoo</code> インタフェースを問い合わせる時に、code>QueryInterface</code> によって返されるポインタを常に保持しています。デバッグビルドでは、もし代入時に <code>QueryInterface</code> を呼ばずに、この不変性を覆すと、<code>nsCOMPtr</code> は、間違った代入として実行時にアサートするでしょう。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 二つの無関係なインタフェース |nsIFoo| と |nsIBar| があるものとします...</span> -nsIBar* bar = ...; -<span class="comment">// ...</span> - -<span class="warning">nsCOMPtr<nsIFoo> foo = bar;</span> - <span class="comment">// NS_ASSERTION: "QueryInterface needed"</span> - - <span class="comment">// ...あなたは、この行をコンパイルできるとみなすかもしれませんが</span> - <span class="comment">// (キャストでもそうです。なぜなら型が C に関係づけられているからです)</span> -</pre> -</td></tr></tbody></table> -<p>この不変性は、<code>nsCOMPtr<nsISupports></code> では、緩められます。<code>nsISupports*</code>(あるいは<code>void*</code>)のように、人々は一般的に<code>nsCOMPtr<nsISupports></code> を「任意の [XP]COM インタフェース」とみなして使います。もし実際の型を気にしないようなオブジェクトに対して、<code>nsCOMPtr</code> が [XP]COM として正しい <code>nsISupports</code> に <code>QueryInterface</code> することを強制するのであれば、煩わしいかもしれません。 -</p> -<h5 id="NULL_.E9.96.93.E6.8E.A5.E5.8F.82.E7.85.A7.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5" name="NULL_.E9.96.93.E6.8E.A5.E5.8F.82.E7.85.A7.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5"> <code>NULL</code> 間接参照の保護手段 </h5> -<p>もし中が空の時に間接参照しようとすると、<code>nsCOMPtr</code> は、実行時にアサートします。例えば、 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval">nsCOMPtr<nsIFoo> foo; - <span class="comment">// 注: デフォルトでは、|0| に初期化されます。</span> - -<span class="warning">foo->DoSomething();</span> - <span class="comment">// NS_PRECONDITION: "You can't dereference a NULL nsCOMPtr with operator->()"</span> -</pre> -</td></tr></tbody></table> -<p>同様の事前条件が <code>operator*</code> のために、介在します。 -</p> -<h5 id=".E5.8F.82.E7.85.A7.E3.82.AB.E3.82.A6.E3.83.B3.E3.83.88.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5" name=".E5.8F.82.E7.85.A7.E3.82.AB.E3.82.A6.E3.83.B3.E3.83.88.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5"> 参照カウントの保護手段 </h5> -<p><code>nsCOMPtr</code> から元の生のポインタを取り出すすべての操作に対して、安全な特徴を実装するための C の別のトリックを使います。返ってきたポインタに対して、<code>AddRef</code>、<code>Release</code>、<code>delete</code>を実行することができません。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval">nsCOMPtr<nsIFoo> foo = ...; - -<span class="warning">foo->AddRef();</span> <span class="comment">// エラー: |AddRef| はプライベートです。</span> -<span class="warning">delete foo.get();</span> <span class="comment">// エラー: |operator delete| はプライベートです。</span> -<span class="warning">NS_RELEASE(foo);</span> <span class="comment">// エラー: |Release| はプライベートです。</span> -</pre> -</td></tr></tbody></table> -<p>もちろん、<code>nsCOMPtr</code> によって提供される安全性に関する最も重要な特徴は、それが適切な時期に自動的に <code>AddRef</code> と <code>Release</code> を実行することです。 -</p> -<h4 id=".E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88" name=".E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88"> キャスト </h4> -<p><code>nsCOMPtr</code> では、旧式の C のキャストを使わないでください。旧式のキャストは、たとえそれが正しくないとしても、コンパイルできることが保障されています。旧式のキャストは、もし変換が定義されていないのであれば、<code>reinterpret_cast</code> と同じものにしてしまいます。そのようなキャストは、<code>nsCOMPtr</code> の機構を容易にバイパスしてしまい、リークの発生、型の不一致、その他の不幸な出来事を招きます。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 旧式の C のキャストが |nsCOMPtr| 機構をバイパスし、リークを発生させる...</span> - -nsresult rv; -nsCOMPtr<nsIFoo> foo = ...; - -<span class="comment">// ...</span> -rv = GetFoo( <span class="warning">(nsIFoo**)&foo</span> ); -rv = GetFoo( <span class="warning">&(nsIFoo*)foo</span> ); - <span class="comment">// もちろん、これらはコンパイルできます。でもリークしてしまいます。</span> -</pre> -</td></tr></tbody></table> -<p>これを防ぐのを助けるために、上記のように <code>operator&</code> を <code>private</code> にすることにより、最初の形を不法とすることを試みます。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59414" title="FIXED: misuse of nsCOMPtr::operator&">バグ 59414</a> を参照してまださい。 -</p> -<h4 id=".E5.AE.9F.E8.A3.85.E3.81.AE.E8.A9.B3.E7.B4.B0.E3.81.A8.E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E6.A9.9F.E6.A7.8B" name=".E5.AE.9F.E8.A3.85.E3.81.AE.E8.A9.B3.E7.B4.B0.E3.81.A8.E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E6.A9.9F.E6.A7.8B"> 実装の詳細とデバッグ機構 </h4> -<p><code>nsCOMPtr</code> はクラスですが、virtual なメソッドを持っていません。つまり、vtable または vptr を持っていません。キーとなるいくつかのルーチンが共通の非テンプレートの基底クラスに分解されるので、実際の元のポインタは、<code>nsISupports*</code> として保存されます (ただしデバッグビルドで <code>NSCAP_FEATURE_DEBUG_PTR_TYPES</code> がオンになっている場合は除きます)。それは、これらの分解されたルーチンのために、<code>nsCOMPtr</code> のユーザが XPCOM ライブラリとリンクしなければいけないからです。 -</p><p><code>NSCAP_FEATURE_DEBUG_PTR_TYPES</code> がオンになっている時、<code>nsISupports*</code> 型の変数に元のポインタを保持する代わりに、<code>nsCOMPtr</code> は、元の型に適合するポインタに保持します。これにより、ソースレベルのデバッガがより簡単にポインタを「追跡」できるようになります。しかしながら、基底クラスに分解されるルーチンは、今やテンプレート特有のインラインコードとなります。分解される基底クラスはありません。これは、すべてのアプリケーションが <code>NSCAP_FEATURE_DEBUG_PTR_TYPES</code> について同じ設定でコンパイルされなければならないことを意味します。そうでないと、いくつかの部分では基底クラスを期待し、他の部分ではそうでないことを期待することになります。アプリケーションは、リンクできないでしょう。 -</p> -<h4 id=".E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.83.86.E3.82.B9.E3.83.88" name=".E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.83.86.E3.82.B9.E3.83.88"> ユニットテスト </h4> -<p><code>nsCOMPtr</code>のためのユニットテストは、このファイルにあります。 -</p> -<ul><li> <code><a href="https://dxr.mozilla.org/mozilla-central/source//xpcom/tests/TestCOMPtr.cpp" rel="custom">/xpcom/tests/TestCOMPtr.cpp</a></code> -</li></ul> -<h3 id=".E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.A8.E4.BB.A3.E5.85.A5" name=".E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.A8.E4.BB.A3.E5.85.A5"> 初期化と代入 </h3> -<h4 id=".E7.B5.84.E3.81.BF.E8.BE.BC.E3.81.BF.E5.BD.A2.E5.BC.8F" name=".E7.B5.84.E3.81.BF.E8.BE.BC.E3.81.BF.E5.BD.A2.E5.BC.8F"> 組み込み形式 </h4> -<p><code>nsCOMPtr</code> への代入や初期化は、簡単に理解できます。<code>nsCOMPtr</code> は、その古い値がもしあれば <code>Release</code> し、そして新しい値を代入し、<code>AddRef</code> を呼び出し、および/または、あなたが直接「注釈」することによって <code>dont_AddRef</code> のような指示子で代入する <code>QueryInterface</code> を呼び出します。このセクションでは、それぞれ起こりうる場合を記述します。ただし、指示子については、より簡潔に以下の表で記述しています。 -</p><p>あなたは、<code>nsCOMPtr</code> を以下のものから構築するか、以下のものから代入することができます。 -</p> -<ul><li> 値 <code>0</code> -</li><li> 同じ型の他の <code>nsCOMPtr</code> -</li><li> 同じ型の生の [XP]COM インタフェースポインタ -</li><li> 同じ型の生の [XP]COM インタフェースポインタで、かつ <a href="#nsCOMPtr.3CT.3E_.3D_T.2A.2CnsCOMPtr.3CT.3E_.3D_dont_QueryInterface.28_T.2A_.29"><code>dont_QueryInterface</code></a> 指示子により注釈されたもの。 -</li><li> 同じ型の生の [XP]COM インタフェースポインタで、かつ <a href="#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"><code>dont_AddRef</code></a> 指示子や同様のものにより注釈されたもの。 -</li><li> 任意の型の任意のインタフェースポインタ (<code>nsCOMPtr</code> でも、生の [XP]COM インタフェースポインタでも) で、かつ <a href="#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"><code>do_QueryInterface</code></a> 指示子により注釈されたもの。 -</li><li> <a href="#nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29"><code>do_QueryReferent</code></a> 指示子 -</li></ul> -<p>最初の三つは、単純で明らかです。4 番目のもの (<code>dont_QueryInterface</code> 指示子の適用) は、同じ型の生の [XP]COM インタフェースポインタの代入と同じことです。残りの指示子は、特殊な状況において、いくつかの付加的な制御を提供するものです。さらに、<code>nsCOMPtr</code> を初期値なしで構築することができ、その場合は、<code>0</code> で初期化されます。ちょうどプリミティブなポインタのように、値が<code>0</code>の<code>nsCOMPtr</code> は、どのオブジェクトも指しません。そして、<code>if (foo)</code> や <code>if (!foo)</code> のように式をテストすることができます。 -</p><p>上述した指示は、この表によりもっとはっきりするでしょう。 -</p> -<table> -<caption> 表 1. <code>nsCOMPtr</code>に代入するオプション -</caption> -<tbody><tr> -<td> -</td><td> QueryInterface しない -</td><td> QueryInterface する -</td></tr> -<tr> -<td> <code>AddRef</code> する -</td><td> -<p><a href="#nsCOMPtr.3CT.3E_.3D_T.2A.2CnsCOMPtr.3CT.3E_.3D_dont_QueryInterface.28_T.2A_.29">T*,<br><code>dont_QueryInterface(T*)</code></a> -</p> -</td><td> -<p><a href="#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"><code>do_QueryInterface(nsISupports*)</code>, <br><code>do_QueryInterface(nsISupports*, nsresult*)</code></a> <a href="#nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29"><code>do_QueryReferent(nsIWeakReference*)</code>, <br><code>do_QueryReferent(nsIWeakReference*, nsresult*)</code></a> -</p> -</td></tr> -<tr> -<td> <code>AddRef</code> しない -</td><td> -<p><a href="#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"><code>dont_AddRef(T*)</code>,<br><code>getter_AddRefs(T*)</code></a> -</p> -</td><td> -<p><a href="#nsCOMPtr.3CT.3E_.3D_.2F.2A_call_QueryInterface_but_don.27t_AddRef_.2A.2F">n/a</a> -</p> -</td></tr></tbody></table> -<p>例えば、<code>nsCOMPtr</code> への代入において、(なんらかの理由ですでに <code>AddRef</code> を実行したために)代入するポインタに対して <code>AddRef</code> を実行したくない場合、「<code>AddRefしない</code>」と「QueryInterface しない」の交差する所にある <code>dont_AddRef(T*)</code> を使うのは一つの可能性です。以下に、<code>dont_AddRef</code>を使い、様々な位置にそれらの「注釈」が表れるサンプルを示します。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// |nsCOMPtr| への代入を管理する...</span> - - <span class="comment">// コンストラクタにおいて...</span> -nsCOMPtr<nsIFoo> foo1( <span class="notice">dont_AddRef(</span>rawFoo1Ptr<span class="notice">)</span> ); -nsCOMPtr<nsIFoo> foo2 = <span class="notice">dont_AddRef(</span>rawFoo2Ptr<span class="notice">)</span><span class="nowiki">; - </span><span class="comment">// (直接の初期化と呼ばれる) 関数の形式と (コピーの初期化と呼ばれる)</span> - <span class="comment">// コンストラクタの代入の形式は、微妙に異なる意味を</span> - <span class="comment">// 持つことに注意してください。直接の初期化の方が好ましい。</span> - -nsCOMPtr<nsIFoo> foo3; - - <span class="comment">// 通常の代入において...</span> -foo3 = <span class="notice">dont_AddRef(</span>rawFoo3Ptr<span class="notice">)</span><span class="nowiki">; - - </span><span class="comment">// 表で記述されている注釈をコンストラクタと</span> - <span class="comment">// 単純で古いタイプの代入に適用しています。</span> -</pre> -</td></tr></tbody></table> -<p>表に示されたどの注釈も <code>dont_AddRef()</code> を使って示されたすべての場所に出現可能です。続くセクションでそれぞれの可能性を記述します。 -</p> -<h5 id="nsCOMPtr.3CT.3E_.3D_T.2A.2CnsCOMPtr.3CT.3E_.3D_dont_QueryInterface.28_T.2A_.29" name="nsCOMPtr.3CT.3E_.3D_T.2A.2CnsCOMPtr.3CT.3E_.3D_dont_QueryInterface.28_T.2A_.29"> <code>nsCOMPtr<T> = T*</code>,<br><code>nsCOMPtr<T> = dont_QueryInterface( T* )</code> </h5> -<p>表で <code>T*</code> として示されるデフォルトの振舞いでは、新しい値に対して、<code>AddRef</code> を実行します。しかし、それに対して、<code>QueryInterface</code> は実行しません。「注釈」がない時に何が起きるかという例を示します。例えば、 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval">nsCOMPtr<nsIFoo> foo( aFooPtr ); <span class="comment">// もしくは</span> -foo = aFooPtr; - <span class="comment">// ...|AddRef| は呼び出しますが、|QueryInterface| は呼び出しません。|</span> - - <span class="comment">// 同じものをより明示的に表すと...</span> -nsCOMPtr<nsIFoo> foo( <span class="notice">dont_QueryInterface(</span>aFooPtr<span class="notice">)</span> ); <span class="comment">// もしくは</span> -foo = <span class="notice">dont_QueryInterface(</span>aFooPtr<span class="notice">)</span><span class="nowiki">; - </span> -</pre> -</td></tr></tbody></table> -<p>この形式を使うことにより、あなたが代入しているポインタがすでに、<code>nsCOMPtr</code> の元の型、この場合は、<code>nsIFoo</code> に適合している、[XP]COMとして正しいインタフェースへのポインタであることを約束していることになります。 -</p> -<h5 id="nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29" name="nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"> <code>nsCOMPtr<T> = do_QueryInterface( nsISupports* )</code>,<br><code>nsCOMPtr<T> = do_QueryInterface( nsISupports*, nsresult* )</code> </h5> -<p>もし、上記の約束を果たせない時は、<code>nsCOMPtr</code> に対して、代入において <code>QueryInterface</code> を呼び出す必要があると、「注釈」をすることができます。例えば、 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval">nsCOMPtr<nsIFoo> foo( <span class="notice">do_QueryInterface(</span>aBarPtr<span class="notice">)</span> ); <span class="comment">// もしくは</span> -foo = <span class="notice">do_QueryInterface(</span>aBarPtr<span class="notice">)</span><span class="nowiki">; - </span><span class="comment">// ...|QueryInterface| が呼ばれる _でしょう_。(その結果 |AddRef| も呼ばれます)</span> - - <span class="comment">// もちろん、|QueryInterface| を呼んでいるので、</span> - <span class="comment">// エラー結果も必要になるでしょう...</span> -nsresult rv; -nsCOMPtr<nsIFoo> foo( <span class="notice">do_QueryInterface(</span>aBarPtr<span class="notice">, &rv)</span> ); <span class="comment">// もしくは</span> -foo = <span class="notice">do_QueryInterface(</span>aBarPtr<span class="notice">, &rv)</span><span class="nowiki">; - </span> -</pre> -</td></tr></tbody></table> -<h5 id="nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29" name="nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"> <code>nsCOMPtr<T> = dont_AddRef( T* )</code>,<br><code>nsCOMPtr<T> = getter_AddRefs( T* )</code> </h5> -<p>時々、すでに <code>AddRef</code> が実行されたポインタをたまたま持っていて、それを <code>nsCOMPtr</code> に代入したい場合があるでしょう。これは、しばしば、(<code>nsresult</code> を結果とするのではなく) <code>AddRef</code> が実行されたポインタを結果として返す getter を使った時に起きます。あるいは、効率性のための変形により起きる場合もあります。<code>dont_AddRef</code> は、このような場合の完璧な治療法です。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval">nsIFoo* temp; -nsresult rv = GetFoo(&temp); -nsCOMPtr<nsIFoo> foo( <span class="notice">dont_AddRef(</span>temp<span class="notice">)</span> ); - <span class="comment">// |temp| はすでに |AddRef| を実行済ですが、我々はこれを</span> - <span class="comment">// |nsCOMPtr| で管理しようとしています。.</span> - -nsCOMPtr<nsIFoo> foo( <span class="notice">getter_AddRefs(</span>CreateAFoo()<span class="notice">)</span> ); - <span class="comment">// |getter_AddRefs| は |dont_AddRef| の同意語です。</span> - <span class="comment">// これは、|AddRef| が実行されたポインタを返す関数に適用する時に分かりやすくするものです。</span> - -nsCOMPtr<nsIFoo> foo( <span class="notice">dont_AddRef(</span>CreateAFoo()<span class="notice">)</span> ); - <span class="comment">// あるいは、あなたはそれが好きではないかもしれません...</span> -</pre> -</td></tr></tbody></table> -<h5 id="nsCOMPtr.3CT.3E_.3D_.2F.2A_QueryInterface_.E3.82.92.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.BE.E3.81.99.E3.81.8C.E3.80.81AddRef_.E3.81.AF.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.BE.E3.81.9B.E3.82.93.E3.80.82_.2A.2F" name="nsCOMPtr.3CT.3E_.3D_.2F.2A_QueryInterface_.E3.82.92.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.BE.E3.81.99.E3.81.8C.E3.80.81AddRef_.E3.81.AF.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.BE.E3.81.9B.E3.82.93.E3.80.82_.2A.2F"> <code>nsCOMPtr<T> = </code>/* <code>QueryInterface</code> を呼び出しますが、<code>AddRef</code> は呼び出しません。 */ </h5> -<p>表のこの象限が「n/a (not applicable)」とマークされているのに気づくでしょう。「<code>QueryInterface</code> を呼び出すが、<code>AddRef</code> を行わないこと」を意味する明示的な指令はありません。このオプションは、間違った型のオブジェクトを返す getter を呼び出す状況に対応します。すでに <code>AddRef</code> を実行したオブジェクトを持っているので、もう AddRef を実行したくないが、違うインタフェースを得る必要がある場合です。それはできません。<code>QueryInterface</code> は、常に <code>AddRef</code> をその結果に対して実行します。そして、正しい型を得るための <code>QueryInterface</code> の呼び出しの代用品は存在しません。解決するには、2 段階のプロセスを実行します。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// ...</span> - - <span class="comment">// getter は (間違った型の) すでに |AddRef| を実行したオブジェクトを返します...</span> -nsCOMPtr<nsIBar> bar( <span class="notice">getter_AddRefs(</span>CreateBar()<span class="notice">)</span> ); - <span class="comment">// ...(このオブジェクトに対して) 正しい型を問い合わせる必要があります。</span> -nsCOMPtr<nsIFoo> foo( <span class="notice">do_QueryInterface(</span>bar<span class="notice">)</span> ); -</pre> -</td></tr></tbody></table> -<p>この場合において、人々が陥る不運なワナは、getter 関数が結果を <code>AddRef</code> していることを忘れることです。こんな感じのコードをタイプしてしまいます: -</p> -<table> -<tbody><tr> -<td> -<pre class="eval">nsCOMPtr<nsIFoo> foo( <span class="warning">do_QueryInterface(CreateBar())</span> ); - <span class="comment">// おっと! |CreateBar| によって返ってくるインタフェースがリークしてしまいます。</span> - <span class="comment">// この場合、あなたは上に示した二つのステップの解決法で処理する_必要_があります。</span> - - <span class="comment">// ありそうもないですか? こんな感じの形で見ることはあるでしょう。</span> -nsCOMPtr<nsIFoo> foo( <span class="warning">do_QueryInterface(aList->ElementAt(i))</span> ); - <span class="comment">// すべての良い getter のように、|ElementAt| は、</span> - <span class="comment">// インタフェースからの必要性に応じて問い合わせを行なった後、</span> - <span class="comment">// 破棄されるかも知れない結果を |AddRef| します。</span> -</pre> -</td></tr></tbody></table> -<p>Bugzilla <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=8221" title="FIXED: MLK - Mem Leak's found with the scc wonder query - nsCOMPtr = do_QueryInterface..">バグ 8221</a> は、この特定のリークの発見と修正に限定されたものです。 -</p> -<h4 id="nsCOMPtr_.E3.83.98.E3.83.AB.E3.83.91.E3.83.BC" name="nsCOMPtr_.E3.83.98.E3.83.AB.E3.83.91.E3.83.BC"> <code>nsCOMPtr</code> ヘルパー </h4> -<h5 id="nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29" name="nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29"> <code>nsCOMPtr<T> = do_QueryReferent( nsIWeakReference* )</code>,<br><code>nsCOMPtr<T> = do_QueryReferent( nsIWeakReference*, nsresult* )</code> </h5> -<p><a href="ja/Weak_reference"><code>nsIWeakReference</code></a> に基づく弱い参照を容易にする <code>do_QueryReferent</code> というのがあります。<code>nsIWeakReference</code> は、他のオブジェクトのプロキシとして振舞う [XP]COM オブジェクトです。<code>nsIWeakReference</code> と (上記の) 他のオブジェクトは、特別な関係にあります。それらは、お互いのことを知っています。しかし、どちらももう一方への所有する参照を保持していません。二つのオブジェクトは、もう一方へのダングリングポインタを持たないことを保障するように協調しています。<code>nsIWeakReference</code> オブジェクトにおいて所有する参照を保持することにより、この他のオブジェクトを必要な時に得ることができ、しかし、それ (他のオブジェクト) が生きていなくてもよいのです。そのオブジェクトを得るためには、<code>nsIWeakReference</code> オブジェクトに、あなたの代わりに <code>QueryInterface</code> するように依頼します。もしオブジェクトがまだ存在しており、要求されたインタフェースをサポートしているのであれば、あなたは (できれば、一時的に) それに対する所有する参照を持つことができます。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval">nsIWeakReference* weakPtr = ...; - -weakPtr->QueryReferent( -</pre> -</td></tr></tbody></table> -<h3 id="T.2A_.E3.81.A8.E3.81.97.E3.81.A6_nsCOMPtr.3CT.3E_.E3.82.92.E4.BD.BF.E3.81.86" name="T.2A_.E3.81.A8.E3.81.97.E3.81.A6_nsCOMPtr.3CT.3E_.E3.82.92.E4.BD.BF.E3.81.86"> <code>T*</code> として <code>nsCOMPtr<T></code> を使う</h3> -<h4 id="nsCOMPtr.E3.82.92.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E3.81.86" name="nsCOMPtr.E3.82.92.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E3.81.86"> <code>nsCOMPtr</code>をポインタとして使う </h4> -<h4 id=".E3.80.8C.E5.85.A5.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF" name=".E3.80.8C.E5.85.A5.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF"> 「入力」パラメタ </h4> -<h4 id=".E3.80.8C.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_getter_AddRefs" name=".E3.80.8C.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF:_getter_AddRefs"> 「出力」パラメタ: <code>getter_AddRefs</code> </h4> -<p><code>nsCOMPtr</code> への代入は、とても理解しやすいです。<code>nsCOMPtr</code> は、古い値がもしあれば、それを <code>Release</code> します。そして、代入した新しい値を <code>AddRef</code> し、および/または上述した指令に示された<code>QueryInterface</code> を呼び出します。これらの規則は、<code>nsCOMPtr</code> として宣言されたパラメタや関数の復帰値のコピーにおいて起こる「代入」でも同じく適用されます。もし <code>nsCOMPtr</code> を生の [XP]COM インタフェースポインタの実用的な代用品としたいのであれば、しかしながら、「出力」パラメタの問題に対処する必要があります。多くの [XP]COM 関数は、結果のインタフェースポインタをパラメタを通じて返します。例えば、 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// Getter は、インタフェースポインタを「出力」パラメタを通じて返すことができます。...</span> - -nsresult GetFoo( nsIFoo** ); <span class="comment">// 標準的 getter</span> -nsresult GetFoo2( nsIFoo*& ); <span class="comment">// 非標準的 getter</span> -nsresult GetSomething( void** ); <span class="comment">// 「型無し」の getter</span> - <span class="comment">// 注: |QueryInterface| は、「型無し」の getter の例です。</span> -</pre> -</td></tr></tbody></table> -<p>我々は、「出力」パラメタを使うルーチンへポインタや参照によって <code>nsCOMPtr</code> を渡せなければいけません。問題は、getter 内部には、<code>nsCOMPtr</code> に対する情報がないことです。それは、生の [XP]COM インタフェースポインタへのポインタ (または参照) を得ていると考えます。<code>nsCOMPtr</code> のスマートな代入演算子は、呼ばれません。古い値があれば、リークしてしまいます。 -</p><p>ここで、<code>getter_AddRefs( nsCOMPtr& )</code>が役に立ちます。<code>getter_AddRefs</code> は、古い値があれば <code>Release</code> し、それをクリアします。そして、それに対するポインタを返し、getter は <code>nsCOMPtr</code>に<code>AddRef</code> を実行した新しい値を設定します。我々は、これらの状況で、生の [XP]COM インタフェースポインタに適用していた <code>&</code> を置き換えるものとして、<code>getter_AddRef</code> を使用します。<code>getter_AddRefs</code> は、通常 <code>nsCOMPtr</code> のコンストラクタと代入演算子から得ていた魔法を詰めこんだものです。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ...</span> - -nsIFoo<span class="notice"><span class="nowiki">*</span></span> foo; - -GetFoo(<span class="notice">&</span>foo); -GetFoo2(foo); -GetSomething(<span class="notice">(void**)&</span>foo); -</pre> -</td><td> -<pre class="eval"><span class="comment">// |nsCOMPtr|...</span> - -<span class="notice">nsCOMPtr<</span>nsIFoo<span class="notice">></span> foo; - -GetFoo(<span class="notice">getter_AddRefs(</span>foo<span class="notice">)</span>); -GetFoo2(<span class="notice"><span class="nowiki">*getter_AddRefs(</span></span>foo<span class="notice">)</span>); -GetSomething(<span class="notice">getter_AddRefs(</span>foo<span class="notice">)</span>); -</pre> -</td></tr></tbody></table> -<p>これを実現するのに、なぜ単に <code>operator&</code> をオーバーロードしないのでしょうか? いくつかの理由: 他の状況では、<code>nsCOMPtr</code> のアドレスを取るのは、不便なことになります。「<code>getter_AddRefs</code>」という名前は、getter としてある一定の振舞いを強制します。そして、かつては、他の可能性がありました (あなたがまさに学ぼうとしているように)。 -</p><p>パラメタを通じて復帰値を返しますが、<code>AddRef</code> を実行していない getter のために、<code>getter_doesnt_AddRef( nsCOMPtr& )</code> というのは、ありますか? いいえ、ありません。かつてありましたが、それは 3 つの理由でなくなりました: -</p> -<ul><li> getter がパラメタを通じて <code>AddRef</code> を実行していないインタフェースポインタを返すのは、[XP]COM の規則に反しています。(もしそれを見つけたら、バグ報告をしてください。) -</li><li> <code>getter_doesnt_AddRef</code> は、<code>nsCOMPtr</code> を生の [XP]COM インタフェースポインタよりも大きく、または遅くしてしまう複雑な波及効果があります。 -</li><li> とりあえず、そのような getter を呼んで、一時的に<code>nsCOMPtr</code>に結果を入れることもできます。例えば、 -</li></ul> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// その結果に対して、|AddRef| を (違法に) 呼び出さない getter を呼び出します...</span> - -nsIFoo* temp; -nsresult rv = <span class="warning">GetFoo_WithoutAddRef(</span>&temp<span class="warning">)</span><span class="nowiki">; - </span><span class="comment">// 自分への注: |GetFoo_WithoutAddRef| をバグとして報告しなければならない。</span> - <span class="comment">// すべての getter は、 |AddRef| しなければならない。</span> -nsCOMPtr<nsIFoo> foo = temp; -</pre> -</td></tr></tbody></table> -<h4 id=".E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF" name=".E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF"> 「入出力」パラメタ </h4> -<p>「入力/出力」パラメタについては、どうなんでしょう? -</p> -<h3 id=".E5.8A.B9.E7.8E.87.E6.80.A7.E3.81.A8.E6.AD.A3.E7.A2.BA.E6.80.A7" name=".E5.8A.B9.E7.8E.87.E6.80.A7.E3.81.A8.E6.AD.A3.E7.A2.BA.E6.80.A7"> 効率性と正確性 </h3> -<h4 id="nsCOMPtr.E3.81.AE.E3.82.B3.E3.82.B9.E3.83.88" name="nsCOMPtr.E3.81.AE.E3.82.B3.E3.82.B9.E3.83.88"> <code>nsCOMPtr</code>のコスト </h4> -<p><code>nsCOMPtr</code> は、生の [XP]COM インタフェースポインタに対する実用的な置き換えとなるべく調整されています。所有する参照として使うのであれば、どの場所においてもです。<code>nsCOMPtr</code>s のパフォーマンスについては一般的に、スペース的には少し効率が<em>よく</em>、時間的には、ごくわずかに効率が悪いです。パフォーマンスに関することにより、<code>nsCOMPtr</code> を使わないのは良くありません。このセクションを通じて提示するパターンが<code>nsCOMPtr</code> からより多くのものを引き出すのを手伝ってくれるでしょう。 -</p> -<h5 id=".E3.82.B9.E3.83.9A.E3.83.BC.E3.82.B9" name=".E3.82.B9.E3.83.9A.E3.83.BC.E3.82.B9"> スペース </h5> -<p>一般的に、<code>nsCOMPtr</code>は、生の [XP]COM ポインタを使うよりもスペース的には、効率がよくなる<i>可能性</i>があります。これは主にそのデストラクタの分解とより複雑なコンストラクタと代入演算子のためです。このセクションの最適化の tips に従うことで、生のポインタで使用するのよりもオブジェクトの生成するバイトがより少ないコードを書くことができるでしょう。これらの忠告に従わないとしても、<code>nsCOMPtr</code> のコードは、依然として、より小さくなり、あるいは最悪でも生のポインタ版よりもごくわずか増えるだけです。詳細については、<a class="external" href="http://www.mozilla.org/projects/xpcom/nsCOMPtr/bloat.html">Code Bloat [長文、要約が最初にあります</a>] を見てください。もっとも、ここでは、そのドキュメントからの推奨事項を繰り返しています。 -</p> -<h5 id=".E6.99.82.E9.96.93" name=".E6.99.82.E9.96.93"> 時間 </h5> -<p><span class="editor-note"><span class="nowiki">[[もっと時間パフォーマンスの測定が必要です。]]</span></span> -</p><p>二つ以上のサブルーチン、すなわち <code>AddRef</code>、<code>Release</code>、<code>QueryInterface</code> が必要な場所では、いくつかの <code>nsCOMPtr</code>ル ーチンが分解され、そのためサブルーチンを呼び出しと対応する付加的な時間を必要とします。この時間は、特に <code>QueryInterface</code> により行われる作業や <code>Release</code> により行われるかもしれない作業にもかかわらず、極わずかです。 -</p><p>その他のすべての場合、<code>nsCOMPtr</code> は手で行われる作業をするだけです。<code>nsCOMPtr</code> が使用される作業の大部分は、<code>operator-></code> での間接参照であり、原始的なポインタが行うものと同じです。この操作は、すべてのプラットフォームで、生の [XP]COM インタフェースポインタでの操作とちょうど同じコードを作り出し、そして同じ時間を消費します。デストラクタは、クライアントコードが生の [XP]COM インタフェースポインタに対して、<code>Release</code> を呼び出すのに対応しますが、処理が分解されているため、サブルーチンを呼び出すための余分な時間が必要となります。もっとも、これは、<code>delete</code> を実行するかもしれない <code>Release</code> の呼び出しと参照する方のデストラクタの両方の場合においてすでに存在するコストに対して、バランスが取れています。すべての <code>nsCOMPtr</code> のコンストラクタと代入演算子は、インラインです。単純なコンストラクタ、すなわち問い合わせをしないもの、は、あなたが手で書いたものと同じ作業だけを行います。<code>AddRef</code>、<code>Release</code>、<code>QueryInterface</code> の中の一つ以上の呼び出しを行うすべてのルーチンは、分解されており、そのため、サブルーチン呼び出しの余分なコストを含んでいます。 -</p><p>いくつかのルーチンが分解されているという事実により、余分なサブルーチン呼び出しのオーバーヘッドが生じます。そして、その事実および初期化がバイパスできないという事実によって、生の [XP]COM インタフェースポインタに対して、<code>nsCOMPtr</code> が余分な実行時間のコストを生じるのです。スペースと時間のトレードオフは、<code>nsCOMPtr</code> において見事にバランスが取れています。分解されたルーチンは、膨張に関する測定の直接的な結果です。 -</p> -<h4 id=".E4.BB.A3.E5.85.A5.E3.81.AE.E5.A5.BD.E3.81.BE.E3.81.97.E3.81.84.E6.A7.8B.E7.AF.89" name=".E4.BB.A3.E5.85.A5.E3.81.AE.E5.A5.BD.E3.81.BE.E3.81.97.E3.81.84.E6.A7.8B.E7.AF.89"> 代入の好ましい構築 </h4> -<p>時間においてもスペースにおいても、<code>nsCOMPtr</code> への値の代入の最も効率的な方法は、構築時におけるものです。合理的である限り、代入しながら構築する方が好ましいです。<code>nsCOMPtr</code> のメンバをコンストラクタのメンバ初期化節で初期化すべきです。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// |nsCOMPtr| のメンバをコンストラクタの</span> -<span class="comment">// メンバ初期化節で初期化する...</span> - -class Bar - { - public: - Bar( nsIFoo* initial_fooPtr ); - <span class="comment">// ...</span> - private: - nsCOMPtr<nsIFoo> mFooPtr; - }; - -Bar::Bar( nsIFoo* initial_fooPtr ) - : <span class="notice">mFooPtr(initial_fooPtr)</span> <span class="comment">// _ここで_ 初期化します</span> - { - <span class="comment">// ここではありません。</span> - } -</pre> -</td></tr></tbody></table> -<p>付け加えておくと、代入の形式を構築の形式に変換する一時的オブジェクトを使う、最適化のパターンがあります。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 後に代入が続くデフォルトの</span> -<span class="comment">// 構築は非効率的です...</span> - -nsCOMPtr<nsIFoo> foo; -nsresult rv=GetFoo(getter_AddRefs(foo)); - - - - - -</pre> -</td><td> -<pre class="eval"><span class="comment">// ...構築だけをします。</span> - -<span class="notice">nsIFoo* temp;</span> -nsresult rv=GetFoo(<span class="notice">&temp</span>); -nsCOMPtr<nsIFoo> foo<span class="notice"><span class="nowiki">=dont_AddRef(temp);</span></span> - - <span class="comment">// この「生のポインタ、getter の呼び出し、</span> - <span class="comment">// |dont_AddRef| の代入」パターンを覚えて</span> - <span class="comment">// ください。それは、多くの効率に関する</span> - <span class="comment">// 議論で出てきたものです。</span> -</pre> -</td></tr></tbody></table> -<p>どちらの場合も、あなたは、正当な <code>nsCOMPtr</code> で、その値として <code>GetFoo</code> の結果が設定された <code>foo</code> というオブジェクト、および <code>GetFoo</code> により返された <code>rv</code> という状態を得ます。しかしながら、一時的変数を使う場合は、<code>nsCOMPtr</code> への値の設定をする構築を使っており、(ソース上では、少し複雑になっていますが)、代入に続くデフォルトの構築よりは、効率的になっています。そして、より簡単な例によって、このイベントの過程は理解されるでしょう。 -</p> -<h4 id=".E4.BB.A3.E5.85.A5.E3.81.AB.E3.81.8A.E3.81.91.E3.82.8B.E5.A5.BD.E3.81.BE.E3.81.97.E3.81.84.E7.A0.B4.E5.A3.8A" name=".E4.BB.A3.E5.85.A5.E3.81.AB.E3.81.8A.E3.81.91.E3.82.8B.E5.A5.BD.E3.81.BE.E3.81.97.E3.81.84.E7.A0.B4.E5.A3.8A"> 代入における好ましい破壊 </h4> -<h4 id="QueryInterface_.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.82.88.E3.82.8A.E3.82.82_do_QueryInterface_.E3.81.AE.E6.96.B9.E3.81.8C.E6.9C.9B.E3.81.BE.E3.81.97.E3.81.84.E3.81.A7.E3.81.99.E3.80.82" name="QueryInterface_.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.82.88.E3.82.8A.E3.82.82_do_QueryInterface_.E3.81.AE.E6.96.B9.E3.81.8C.E6.9C.9B.E3.81.BE.E3.81.97.E3.81.84.E3.81.A7.E3.81.99.E3.80.82"> <code>QueryInterface</code> の呼び出しよりも <code>do_QueryInterface</code> の方が望ましいです。 </h4> -<h4 id=".E7.B9.B0.E3.82.8A.E8.BF.94.E3.81.97" name=".E7.B9.B0.E3.82.8A.E8.BF.94.E3.81.97"> 繰り返し </h4> -<p>これは、普通のポインタでデータ構造の繰り返しをする時の共通のイディオムです。例えば、 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// [XP]COM オブジェクトでないものに対してポインタで繰り返しを行う...</span> - -Node* p = ...; -while ( p ) - { - <span class="comment">// ...</span> - p = p->next; - } -</pre> -</td></tr></tbody></table> -<p>同様に、このパターンが <code>for</code> ループとしても表現されるのをしばしば見かけます。しかしながら、これを生の [XP]COM インタフェースポインタに対して行うとどうなるか、考えてみてください。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタで繰り返しを行います...</span> - -nsIDOMNode* p = ...; -while ( p ) - { - <span class="comment">// ...</span> - <span class="warning">p->GetNext(&p);</span> - <span class="comment">// 問題です! |p| を |Release| せずに上書きしてしまいました。</span> - } -</pre> -</td></tr></tbody></table> -<p>おっと! <code>p</code> に対して、新しいポインタを設定する前に、<code>Release</code> し損ねてしまいました。みんながこれを多く行うため、これが通常の [XP]COM コードのリークの大きな原因となってしまいました。では、代わりにこうすることはできるのでしょうか ? -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタで繰り返しを行います...</span> - -nsIDOMNode* p = ...; -while ( p ) - { - <span class="comment">// ...</span> - <span class="warning">NS_RELEASE(p); - p->GetNext(&p);</span> - <span class="comment">// 問題です! ダングリングしているか |NULL| であるポインタの</span> - <span class="comment">// メンバ関数を呼ぼうとしています。</span> - } -</pre> -</td></tr></tbody></table> -<p>残念ながらダメです。<code>Release</code> した後、<code>nsCOMPtr</code> は、ダングリングしている状態になるかもしれません。実は、<code>NS_RELEASE</code> マクロを使うと、<code>p</code> は、<code>GetNext</code> を呼び出すまでは、<code>NULL</code> になるでしょう。 -</p><p>では、同じことを <code>nsCOMPtr</code> で書いてあると想像してみてください。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// |nsCOMPtr| で繰り返しを行います...</span> - -nsCOMPtr<nsIDOMNode> p = ...; -while ( p ) - { - <span class="comment">// ...</span> - <span class="warning">p->GetNext( getter_AddRefs(p) );</span> - <span class="comment">// 問題です! |NULL| ポインタを通じてメンバ関数を呼び出そうとしました。</span> - } -</pre> -</td></tr></tbody></table> -<p>ここでは、<code>nsCOMPtr</code> の使用は、生の [XP]COM インタフェースポインタの使用とほとんど同じです。<code>getter_AddRefs</code> は、 <code>Release</code> し、そしてそれに代入する前に <code>p</code> をクリアします。すなわち、<code>GetNext</code> が呼ばれる前にそれを行います。これは、<code>GetNext</code> の呼び出しを行う前に、<code>NULL</code> ポインタを通じて、呼び出そうとしてしまうことを意味します。生の [XP]COM インタフェースポインタと違い、<code>nsCOMPtr</code> は、盲目的に <code>NULL</code> ポインタを通じて <code>GetNext</code> を呼び出そうとする代わりに、<code>assert</code> を実行します。 -</p><p>これは問題です。では、解決法は、なんでしょうか。もしこれが生の [XP]COM インタフェースであれば、おそらく一時的変数を導入するでしょう。我々は、<code>nsCOMPtr</code>で同じことをすることができます。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ</span> -<span class="comment">// での安全な繰り返し...</span> - -nsIDOMNode<span class="notice"><span class="nowiki">*</span></span> p = ...; -while ( p ) - { - <span class="comment">// ...</span> - - <span class="comment">// 一時的変数を導入することで、</span> - <span class="comment">// |p| で足踏みをすることもありません。</span> - nsIDOMNode<span class="notice"><span class="nowiki">*</span></span> temp = p; - temp->GetNext(<span class="notice">&</span>p); - <span class="notice">NS_RELEASE(temp);</span> - } -</pre> -</td><td> -<pre class="eval"><span class="comment">// |nsCOMPtr| での安全な繰り返し...</span> - - -<span class="notice">nsCOMPtr<</span>nsIDOMNode<span class="notice">></span> p = ...; -while ( p ) - { - <span class="comment">// ...</span> - - <span class="comment">// 一時的変数を導入することで、</span> - <span class="comment">// |p| で足踏みをすることもありません。</span> - <span class="notice">nsCOMPtr<</span>nsIDOMNode<span class="notice">></span> temp = p; - temp->GetNext(<span class="notice">getter_AddRefs(</span>p<span class="notice">)</span>); - } - -</pre> -</td></tr></tbody></table> -<p><code>nsCOMPtr</code> をパラレルにするのは、容易に理解できますが、生のポインタの枠組に比べて、余分な <code>AddRef</code> と <code>Release</code> を一回ずつしなければなりません。少し変形することで、コードは見づらくなりますが、(おそらく、ごくわずかですが) より効率的になります。 -</p> -<table> -<tbody><tr> -<td> -<pre class="eval"><span class="comment">// 安全で、効率的な、|nsCOMPtr| での繰り返し...</span> - -nsCOMPtr<nsIDOMNode> p = ...; -while ( p ) - { - <span class="comment">// ...</span> - nsIDOMNode* next; - p->GetNext(&next); - p = dont_AddRef(next); - } - - <span class="comment">// 見てください! これはおなじみの「生のポインタ、getterの呼び出し、</span> - <span class="comment">// |dont_AddRef| の代入」パターンです。</span> -</pre> -</td></tr></tbody></table> -<h4 id="getter_.E3.82.92.E6.9B.B8.E3.81.8F" name="getter_.E3.82.92.E6.9B.B8.E3.81.8F"> getter を書く </h4> -<h3 id=".E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.A9.E3.81.AE.E6.82.A9.E3.81.BF.E3.81.AE.E7.A8.AE" name=".E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.A9.E3.81.AE.E6.82.A9.E3.81.BF.E3.81.AE.E7.A8.AE"> コンパイラの悩みの種 </h3> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/status,_recent_changes,_and_plans/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/status,_recent_changes,_and_plans/index.html deleted file mode 100644 index 590fcab98c..0000000000 --- a/files/ja/mozilla/tech/xpcom/using_nscomptr/status,_recent_changes,_and_plans/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: 'Status, Recent Changes, and Plans' -slug: 'Mozilla/Tech/XPCOM/Using_nsCOMPtr/Status,_Recent_Changes,_and_Plans' -tags: - - XPCOM -translation_of: 'Mozilla/Tech/XPCOM/Using_nsCOMPtr/Status,_Recent_Changes,_and_Plans' ---- -<p> -</p><p>このセクションが、初めて読む人に邪魔になって申し訳ありません。 目次にとばしたり、直接 <a href="ja/Using_nsCOMPtr/Getting_Started_Guide">スタートガイド</a> や <a href="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a>、 <a href="ja/Using_nsCOMPtr/Frequently_Asked_Questions">FAQ</a> に行きたいかもしれません。 このセクションは、最近の更新をチェックするのが簡単になるようにトップに設けています。 -</p><p><br> -</p> -<h3 id="nsCOMPtr_.E3.81.AB.E5.AF.BE.E3.81.99.E3.82.8B.E6.9C.80.E8.BF.91.E3.81.AE.E6.9B.B4.E6.96.B0" name="nsCOMPtr_.E3.81.AB.E5.AF.BE.E3.81.99.E3.82.8B.E6.9C.80.E8.BF.91.E3.81.AE.E6.9B.B4.E6.96.B0"> <code>nsCOMPtr</code> に対する最近の更新 </h3> -<p>新しいものから順に -</p> -<ul><li> <code>nsCOMPtr</code> と生のポインタ(もしくはリテラル 0 や nsnull)の間の <code>==</code> と <code>!=</code> がすべてのコンパイラで正しく働くようにしました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=65664" title="FIXED: nsCOMPtr: make operator== always work with gcc">バグ 65664</a> を参照してください -</li><li> <a href="ja/Using_nsCOMPtr/Reference_Manual#.60.E5.87.BA.E5.8A.9B.27.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF:_getter_AddRefs"><code>getter_AddRefs( nsCOMPtr& )</code></a> に対して、簡単な代入式が行うのと同じ [[Using_nsCOMPtr:Reference_Manual#型の保護手段|type-safety check] を適用します。 -</li><li> <code>do_CreateInstance</code> を追加しました。 -</li><li> <code>do_GetService</code> を追加しました。 -</li><li> <code>nsISupports**</code> が必要な時に <code>getter_AddRefs</code> をキャストする必要性がなくなりました。 -</li><li> <code>nsCOMPtr<nsISupports></code> の不変性を緩和したので、 任意の [XP]COMインタフェースへのポインタを使うことができるようなりました。 -</li><li> <a href="ja/Weak_reference"><code>nsIWeakReference</code></a> を簡単に使えるように、<a href="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29"><code>do_QueryReferent</code></a> を追加しました。 -</li></ul> -<h4 id="nsCOMPtr_.E3.81.AE.E8.A8.88.E7.94.BB" name="nsCOMPtr_.E3.81.AE.E8.A8.88.E7.94.BB"> <code>nsCOMPtr</code> の計画 </h4> -<ul><li> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59212" title="FIXED: leaks with nsCOMPtr<nsIAtom> foo = NS_NewAtom(...)">バグ 59212</a>: 私たちがより多くのコンパイラでテストできるようになり次第、 <code>already_AddRefed</code> を関数の戻り値として推奨する事を始めます。 -</li><li> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59414" title="FIXED: misuse of nsCOMPtr::operator&">バグ 59414</a>: <code>operator&</code> を <code>private</code> とすることで、<a href="ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88">キャストによるリーク</a> のいくつかを防ぐのを助けるでしょう -</li><li> nsCOMPtr</code>を複数のルーチンに分解してライブラリに入れます。それにより、<code>nsCOMPtr</code>のクライアントの XPCOM ライブラリへの依存性を減らします。 -</li></ul> -<h4 id=".E6.9C.80.E8.BF.91.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AE.E6.9B.B4.E6.96.B0" name=".E6.9C.80.E8.BF.91.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AE.E6.9B.B4.E6.96.B0"> 最近のドキュメントの更新 </h4> -<ul><li> <code>nsCOMPtr</code> と生のポインタ、リテラル <code>0</code> との間にある <code><span class="nowiki">==</span></code> と <code><span class="nowiki">!=</span></code> が一部のコンパイラで正しく働かないという記述は、既に問題が解決されたので削除しました。 -</li><li> スタートガイドに <a href="ja/Using_nsCOMPtr/Getting_Started_Guide#.E9.96.A2.E6.95.B0.E8.AD.98.E5.88.A5.E5.AD.90.E5.86.85.E3.81.AE_nsCOMPtr">関数識別子内の <code>nsCOMPtr</code></a> セクション全体を追加しました。 -</li><li> <code>nsCOMPtr</code> 機構を使うことに影響を及ぼす現在のバグへの言及を加えました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59212" title="FIXED: leaks with nsCOMPtr<nsIAtom> foo = NS_NewAtom(...)">バグ 59212</a> と <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59414" title="FIXED: misuse of nsCOMPtr::operator&">バグ 59414</a> -</li><li> Morten Welinder のコメントのように、<a href="ja/Using_nsCOMPtr/Getting_Started_Guide#Comparison1">1</a> と<a href="ja/Using_nsCOMPtr/Getting_Started_Guide#Comparison3">3</a> の比較を修正しました。 -</li><li> コピー初期化よりも直接の初期化の方が好ましい例を更新しました。 -</li></ul> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/weak_reference/index.html b/files/ja/mozilla/tech/xpcom/weak_reference/index.html deleted file mode 100644 index 4a64488deb..0000000000 --- a/files/ja/mozilla/tech/xpcom/weak_reference/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Weak reference -slug: Mozilla/Tech/XPCOM/Weak_reference -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/Weak_reference ---- -<p>In <a href="ja/XPCOM">XPCOM</a>, a <b>weak reference</b> is a special object that contains a pointer to an XPCOM object, but does <i>not</i> keep that object alive. If the referent object is destroyed before the weak reference, the pointer inside the weak reference is set to <code>nsnull</code>. -</p> -<h3 id="なぜこれを使う必要があるのでしょうか?"> なぜこれを使う必要があるのでしょうか? </h3> -<p>When you hold an owning reference on an object (i.e., you have <code>AddRef</code>ed it), you are holding that object in existence for the duration of your reference. This isn't always appropriate, and can lead to trouble. If, for instance, this owning reference is part of a cycle of owning references (e.g., if the referenced object also holds a owning reference back to you), then none of the objects in the cycle can be reclaimed without taking special measures. -</p><p>There are less severe situations. A naive design for an observer/observable relationship would require the observable to hold a owning reference to the observer. After all, the observable must send messages to each observer, notifying it of the appropriate state changes. To do that, it will call a method on the observer, so it needs a pointer. And the call would fail if the pointer were allowed to dangle, therefore, the pointer should be a owning reference. This design, however, is flawed, as it holds the observer in existence longer than would otherwise be necessary. The observer may only need a short life compared to the thing being observed. It might go away after the first interesting event, even. But in this design, by hitching its life to the observable, it is kept on life-support long past any need or use. -</p><p>What is actually needed in this case, is either out-of-band signaling, where when the observer wants to go away, it unregisters itself from the observable, which then releases its owning reference, allowing the observer to die, or else a new kind of reference. This document describes an implementation of <i>weak references</i>. A weak reference does not hold its referent in existence, but also will not dangle. When the referent is destroyed, the weak reference automatically becomes <code>nsnull</code>. This technique can significantly simplify certain relationships, and you should consider it when an owning reference is inappropriate, but where a raw pointer might end up dangling. -</p> -<h3 id="どのように使うのでしょうか?"> どのように使うのでしょうか? </h3> -<p>サンプルをここに挙げます。新しい所と興味を引きそうな所は、強調して表現します。 -</p> -<pre class="eval"><strong>#include "nsWeakPtr.h"</strong> - -// ... - -// 弱い参照を得るのは、簡単です... -<strong>nsWeakPtr</strong> weakPtr = getter_AddRefs( <strong>NS_GetWeakReference(</strong>aFooPtr<strong>)</strong> ); - -// ... - -{ // ...しかし、弱い参照を使うには、(短命の) 所有する参照を必要とします。 - nsCOMPtr<nsIFoo> tempFooPtr = <strong>do_QueryReferent</strong>(weakPtr); - if ( tempFooPtr ) - tempFooPtr->SomeFooMethod(...); - // そうでないと、「本当の」オブジェクトが無くなってしまいます。 -} -</pre> -<p>しかし、実際の例では、弱い参照はメンバー変数として保持される場合が多いでしょう。以下の例では、<code>nsObservable</code> は、イベントを報告するために、それぞれのオブザーバーへの参照を保持する必要があります。しかし、<code>nsObservable</code> は、ダングリングポインターを防ぐためだけにオブザーバーを保持するのは、望ましくありません。そのため、<code><a href="ja/NsIObserver">nsIObserver</a></code> への所有する参照を保持する代わりに、弱い参照を保持します。弱い参照は、人為的にオブザーバーの生存期間を伸ばしたりしません。その上、ダングリングすることもしないのです。 -</p><p>以下では、渡されてくる <code>nsIObserver</code> が <code>nsISupportsWeakReference</code> も実装していると仮定しています。一つのオブザーバーの管理の仕方を参考にすれば、オブザーバーのリストの管理の仕方について推測することはできるでしょう。 -</p> -<pre class="eval">class nsObservable - { - public: - // ... - nsresult AddObserver( nsIObserver* ); - nsresult NotifyObservers( nsIMessage* ); - // ... - private: - nsWeakPtr mObserver; - // ...あるいはここにオブザーバーのリストがあると想像してください - }; - -// ... - -nsresult -nsObservable::AddObserver( nsIObserver* aObserver ) - { - mObserver = getter_AddRefs( NS_GetWeakReference(aObserver) ); - // ...あるいはこれをオブザーバーのリストに追加してください - return NS_OK; - } - -nsresult -nsObservable::NotifyObservers( nsIMessage* aMessage ) - { - nsCOMPtr<nsIObserver> observer = do_QueryReferent(mObserver); - if ( observer ) - observer->NoticeMessage(aMessage); - else - mObserver = 0; - // あるいはこのオブザーバーをリストから取り除くことで、それはなくなってしまうでしょう - return NS_OK; - } - -// ... -</pre> -<p><code>nsWeakPtr</code> が <code>nsCOMPtr</code> とちょうど同じインタフェースを持つことがキーになります。実は、<code>nsWeakPtr</code> はこのように定義されています。 -</p> -<pre class="eval">typedef nsCOMPtr<nsIWeakReference> nsWeakPtr; -</pre> -<h3 id="こりゃ最低だ!"> こりゃ最低だ! </h3> -<p>この弱い参照の実装があなたが望むインタフェースを提供しないことに、おそらく今までに気づいたでしょう。 -</p> -<h4 id="なぜ、弱い参照の上の私のインタフェースメソッドを直接呼べないのでしょうか?"> なぜ、弱い参照の上の私のインタフェースメソッドを直接呼べないのでしょうか? </h4> -<p>あなたは、この弱い参照の仕組みを使って、あなたが実際に使いたいインタフェースを実装するポインターを得られることを望んでいるでしょう。例えば、 -</p> -<pre class="eval">// 注: 実際にはこのような実装ではありません -nsWeakPtr<nsIFoo> weakFooPtr = fooPtr; -// ... -if ( weakFooPtr ) - status = weakFooPtr->SomeFooMethod(...); -</pre> -<p>これは、合理的な要求です。しかし、自動的に実装するのは、とても高くつくのです。継承でも、テンプレートでも、マクロでも自動的にすべてのメソッド呼び出しを実際のオブジェクトへ転送するのを支援してくれません。XPIDL は、(もし修正すれば) そのような実装を作成できるかもしれません。そうでなければ、上で議論したようなことを手で書くことができます。極わずかですが、その他のコストもあります。それは、間接呼び出しにより、呼び出しごとにかかる余分なコストです。そして単純な実装では、対象実装へのインタフェースごとに余分なポインターを追加します。 -</p> -<h4 id="なぜペアの間で単に_QueryInterface_できないのでしょうか?"> なぜペアの間で単に <code>QueryInterface</code> できないのでしょうか? </h4> -<p>あなたが保持している <code><a href="ja/NsIWeakReference">nsIWeakReference</a></code> は、本当に単に対象のオブジェクト上のインタフェースのように感じられるでしょう。二つの間で単に <code>QueryInterface</code> を実行したいのは、合理的なことです。なぜ余分な呼び出し <code>GetWeakReference</code> と <code>QueryReferent</code> が必要なのでしょうか ? 弱い参照が実際に対象のオブジェクトに集約されていれば可能なように思えます。 -</p><p>ここでの問題は、<code>QueryInterface</code> です。<code>QueryInterface</code> は、COM が動作するのに必要な多くのことを満たす必要があります。これらの要求の元では、同じ (集約する) オブジェクトに対して同じインタフェースの QueryInterface を呼び出した場合は、同じ結果にならなければなりません。これは、どのインタフェースポインターを通じて呼び出そうとも、いつ呼び出そうとも要求されることです。我々の状況では、これは不可能です。なぜなら、それは、明らかに集約の部分を破壊可能であるという事実があるためです。後続の処理で、その部分へ到着しようとしても <code>nsnull</code> が返ります。時々、弱いポインターを通じた <code>QueryInterface</code> が「本当の」インタフェースを返すでしょう。そして時々 <code>nsnull</code> を返すのです。それは、単に COM を壊すことになります。 -</p><p>このように、弱い参照が対象オブジェクトへと集約されないのは明らかです。それため、それらの間を動くのに <code>QueryInterface</code> を使うことはできません。これは、より便利に感じられると思いますが、グローバルルーチンの <code>NS_GetWeakReference</code> を使うと、対象のオブジェクトから弱い参照を得ることができます。そして、<code>nsIWeakReference::QueryReferent</code> が、逆の方向に対して <code>QueryInterface</code> と同じ機能を提供します。付け加えると、現在、<code>nsCOMPtr</code> は、新しいキーの <code>do_QueryReferent</code> をサポートするようになり、人生をいくぶんシンプルにしてくれています。 -</p> -<h3 id="クラスが弱い参照をサポートするようにするにはどうすればよいでしょうか?"> クラスが弱い参照をサポートするようにするにはどうすればよいでしょうか? </h3> -<p>単に <code><a href="ja/NsSupportsWeakReference">nsSupportsWeakReference</a></code> を継承するだけです。ミックスインクラスがすべての作業を行ってくれます。そして、あなたの <code>QueryInterface</code> を適宜変えてください。例えば、 -</p> -<pre class="eval">//... -<strong>#include "nsWeakReference.h"</strong> - -class nsFoo : public nsIFoo, ...<strong>, public nsSupportsWeakReference</strong> { ... }; - - -// ...if you used the table macros to implement |QueryInterface|, add an entry - -NS_INTERFACE_MAP_BEGIN(nsFoo) - // ... - <strong>NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)</strong> - // ... -NS_INTERFACE_MAP_END - - -// ...if you used a |NS_IMPLE_QUERYINTERFACEn| macro, move up to the next higher one and add a term - -NS_IMPL_QUERYINTERFACE<strong>n+1</strong>( ...<strong>,nsISupportsWeakReference</strong>) - - -// ...if you implemented |QueryInterface| by hand, add a clause - -NS_IMETHODIMP -nsFoo::QueryInterface( REFNSIID aIID, void** aInstancePtr ) - { - // ... - <strong>else if ( aIID.Equals(nsCOMTypeInfo<nsISupportsWeakReference>::GetIID()) ) - *aInstancePr = NS_STATIC_CAST(nsISupportsWeakReference*, this);</strong> - // ... - } -</pre> -<h3 id="代替手段"> 代替手段 </h3> -<p>This technique is useful, but in situations where you need this, there are two alternatives which you may want to consider: -</p> -<ul><li> You might hold an owning reference, but arrange to <code>Release</code> it out-of-band; this must be before the destructor, which would otherwise never be called. -</li><li> You might hold a raw pointer (without <code>AddRef</code>ing and <code>Release</code>ing it), and avoid using it in cases where it might dangle. -</li></ul> -<h3 id="参考資料"> 参考資料 </h3> -<ul><li> The source -<ul><li> <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nsIWeakReference.idl" rel="custom">xpcom/base/nsIWeakReference.idl</a></code> -</li><li> <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsWeakReference.h" rel="custom">xpcom/glue/nsWeakReference.h</a></code> -</li><li> <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsWeakReference.cpp" rel="custom">xpcom/glue/nsWeakReference.cpp</a></code> -</li></ul> -</li><li> <a href="ja/XPCOM_ownership_guidelines">XPCOM ownership guidelines</a> -</li><li> <a href="ja/Using_nsCOMPtr">Using nsCOMPtr</a> -</li></ul> -<div class="originaldocinfo"> -<h2 id="原文書の情報"> 原文書の情報 </h2> -<ul><li> 著者: <a class="external" href="http://ScottCollins.net/">Scott Collins</a> -</li><li> 最終更新日: September 23, 2000 -</li><li> 著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a> -</li></ul> -</div> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/wrappedjsobject/index.html b/files/ja/mozilla/tech/xpcom/wrappedjsobject/index.html deleted file mode 100644 index a51dd2a630..0000000000 --- a/files/ja/mozilla/tech/xpcom/wrappedjsobject/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: wrappedJSObject -slug: Mozilla/Tech/XPCOM/wrappedJSObject -tags: - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/wrappedJSObject ---- -<p><code>wrappedJSObject</code>は<a href="ja/XPConnect">XPConnect</a>ラッパで利用できることがあるプロパティです。利用できる場合、それはあなたに、ラッパによって隠蔽されたJavaScriptオブジェクトへのアクセスを可能にします。 -</p><p><code>wrappedJSObject</code>プロパティをサポートするXPConnectラッパには2つの種類があります: -</p> -<ul><li> 内容領域のオブジェクトを操作する際にクロムのコードを保護するために使われる<a href="ja/XPCNativeWrapper">XPCNativeWrapper</a>。詳細な情報は<a href="ja/XPCNativeWrapper">XPCNativeWrapper</a>のページを参照してください。 -</li><li> 例えばJavaScriptによって実装されたXPCOMコンポーネントを使う時などに遭遇する、一般的なXPConnectラッパ。 -</li></ul> -<p>この項では後者、つまり、コンポーネントが持つプロパティやメソッドのうちxpidlによってサポート済みと宣言されたインターフェースには含まれていない物を隠蔽する種類のラッパについて解説しています。 -</p><p>以下、XPConnectラッパが何をするものなのかという事と、<code>wrappedJSObject</code>がそれを迂回するためにどのように使われるのかについて紹介しましょう。 -</p><p><span id="Example_component"></span> -</p> -<h3 id="例となるコンポーネント"> 例となるコンポーネント </h3> -<p><code>wrappedJSObject</code>プロパティがどのように働くのかを見るためには、JavaScriptによって実装されたXPCOMコンポーネントの例が必要です。コンポーネントの作成方法の詳細については<a href="ja/How_to_Build_an_XPCOM_Component_in_Javascript">JavaScriptでのXPCOMコンポーネントの作成方法</a>を参照してください。 -</p><p>簡単のため、コンポーネントを登録するためのコードは省略します。以下のコンポーネントが<code>@myself.com/my-component;1</code>というコントラクトIDで登録されているものと仮定してください。 -</p> -<pre class="eval">// コンストラクタ -function HelloWorld() { -}; - -HelloWorld.prototype = { - hello: function() { - return "Hello World!"; - }, - - QueryInterface: function(aIID) - { - if (!aIID.equals(Components.interfaces.nsISupports) && - !aIID.equals(Components.interfaces.nsIHelloWorld)) - throw Components.results.NS_ERROR_NO_INTERFACE; - return this; - } -}; -</pre> -<p><span id="XPConnect_wrapping"></span> -</p> -<h3 id="XPConnectによるラッピング"> XPConnectによるラッピング </h3> -<p>それでは上記のコンポーネントへの参照を取得してみましょう。この例では <code>getService</code>を使用していますが、XPCOMから参照を取得する限りにおいては、コンポーネントは常に、XPConnectによってこれと同様にラップされます: -</p> -<pre class="eval">var comp = Components.classes["@myself.com/my-component;1"].getService(); -</pre> -<p>コンポーネントの実装において定義した<code>hello()</code>メソッドを呼び出そうとした場合、このような結果が得られます: -</p> -<pre class="eval">> comp.hello(); -TypeError on line 1: comp.hello is not a function -</pre> -<p>これは、前述した説明のとおり、<code>comp</code>が<code>HelloWorld</code>のインスタンスのJavaScriptオブジェクトそのものではなく、XPConnectラッパによって包まれた物であるために起こります: -</p> -<pre class="eval">> dump(comp); -[xpconnect wrapped nsISupports] -</pre> -<p>これらのラッパは、JavaScriptによって実装されたXPCOMコンポーネントを他のXPCOMコンポーネントと全く同じようにユーザに対して見せるようにするという発想に基づいています。これはそのコンポーネントの公開されたインターフェースを明確にし、コンポーネントの内部データを保護する役割も提供します。 -</p><p>このラッパに対しては<code>QueryInterface</code>メソッドの呼び出しが利用できますが、それはこのメソッドが<code>nsISupports</code>インターフェースにおいて定義されており、ラッパ自身が、自分がラップしているオブジェクトが<code>nsISupports</code>インターフェースを実装している事を知っているからです: -</p> -<pre class="eval">> comp.QueryInterface(Components.interfaces.nsIHelloWorld); -[xpconnect wrapped (nsISupports, nsIHelloWorld)] -</pre> -<p>この例に見られるように、<code>QueryInterface</code>の呼び出しは、そのラッパに対して、そのコンポーネントが他のインターフェースを実装している事を教えます。<code>nsIHelloWorld</code>インターフェースにおいて<code>hello</code>メソッドが定義されていると仮定すると、それは以下のように呼び出せます: -</p> -<pre class="eval">> comp.hello() -Hello World! -</pre> -<p>この挙動は、そのコンポーネントに対してアクセスするために使われるべきインターフェースを明示的に定義し、コードの開発においてそれを使うよう強制する上で、良い仕組みと言えます。しかし、コンポーネントを試作する場合においてまでインターフェースの定義をいちいち書かなくてはならない(そしてそれを変更する度に再コンパイルしないといけない)のは不便です。 -</p><p><span id="Meet_<code>wrappedJSObject</code>"></span> -</p> -<h3 id="wrappedJSObjectの利用"> <code>wrappedJSObject</code>の利用 </h3> -<p>XPConnectは、それによってラップされたオブジェクト自身が許可している場合、<code>wrapper.wrappedJSObject</code>プロパティを用いて、ラッパを迂回してその中にあるJavaScriptオブジェクトに直接アクセスすることを許容します。 -</p><p>より具体的に言うと、<a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/idl/nsIXPConnect.idl" rel="custom">XPConnectのソース中のコメント</a>にあるとおり、<code>comp.wrappedJSObject</code>は以下の3つの条件が満たされている場合に利用できます: -</p> -<ul><li> <code>comp</code>が本当にJavaScriptオブジェクトをラップしたXPConnectラッパであること。JavaScriptオブジェクト以外に対するラッパはこのプロパティを持ちません。 -</li><li> ラップされたオブジェクトが<code>wrappedJSObject</code>プロパティを持っており、そのプロパティが値としてJavaScriptオブジェクトを返すこと。 -</li><li> <code>nsIXPCSecurityManager</code>がアクセスを許可していること。(詳細はソース中のコメントを参照してください。Mozilla拡張機能やアプリケーションにおいては大抵の場合は問題ありません。) -</li></ul> -<p>これは、コンポーネントを実装しているJavaScriptオブジェクトに直接アクセスできるようにするためにコンポーネントを修正する必要があるということです。例えば以下のようにします: -</p> -<pre class="eval">function HelloWorld() { - <b>this.wrappedJSObject = this;</b> -}; -</pre> -<p>これで、コンポーネントを直接取得できるようになりました: -</p> -<pre class="eval">var comp = Components.classes["@myself.com/my-component;1"] - .getService()<b>.wrappedJSObject</b>; -</pre> -<p>これは本物のJavaScriptオブジェクトです: -</p> -<pre class="eval">> comp -[object Object] -</pre> -<p>なので、あらゆるプロパティにアクセスすることができます: -</p> -<pre class="eval">> comp.hello(); -Hello World! -</pre> -<p>この機能は、試作を手軽に行うために利用できるほか、型が不定なJavaScriptの値をコンポーネントに簡単に渡すためにも利用できます。(具体的には、<a href="ja/Working_with_windows_in_chrome_code#Using_an_XPCOM_singleton_component">完全なJavaScriptのデータを共有する</a>など。) -</p> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/xpcom_abi/index.html b/files/ja/mozilla/tech/xpcom/xpcom_abi/index.html deleted file mode 100644 index fe6136238f..0000000000 --- a/files/ja/mozilla/tech/xpcom/xpcom_abi/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: XPCOM ABI -slug: Mozilla/Tech/XPCOM/XPCOM_ABI -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/XPCOM_ABI ---- -<p><a href="ja/XPCOM">XPCOM</a> <abbr title="Application Binary Interface">ABI</abbr>は、XPCOMコンポーネントのバイナリインターフェースです。スクリプト言語(<a href="ja/JavaScript">JavaScript</a>など)によって書かれたXPCOMコンポーネントは、特に改変をしなくてもプラットフォーム(WindowsやOS Xなど)を越えて動作させられますが、コンパイルが必要な言語(C++など)で書かれたコンポーネントの場合、異なるプラットフォームで動かすためには再コンパイルが必要です。コンパイルされたXPCOMコンポーネントは多くの場合、「バイナリ」や「ネイティブ」などと呼ばれます。 -</p><p>一つのバイナリXPCOMコンポーネントは、すべてのプラットフォームで利用できる<code>.xpt</code>ファイルと、特定のプラットフォーム用で且つ特定のABIを持った<abbr title="Dynamic Link Library">DLL</abbr>(Windowsでは<code>.dll</code>、Linuxでは<code>.so</code>)から成ります。このABIを利用するアプリケーションだけが、このXPCOMコンポーネントを利用することができます。簡単に言えば、特定のABI用にビルドされたXPCOMコンポーネントは、同じABI用にビルドされたFirefox、Thunderbird、その他のXULRunnerアプリケーションに対してのみ互換性があります。 -</p><p><span id="ABI_Naming"></span> -</p> -<h2 id="ABIのネーミング">ABIのネーミング</h2> -<p>各々のABIは、以下の形式の<sup><a href="https://developer.mozilla.org/ja/docs/XPCOM_ABI#endnote_TARGET_XPCOM_ABI">[TARGET_XPCOM_ABI]</a></sup>文字列によって名付けられています。: -</p> -<pre class="eval"><i>{CPU_ARCH}</i>-<i>{TARGET_COMPILER_ABI}</i> -</pre> -<p><i>{CPU_ARCH}</i><sup><a href="https://developer.mozilla.org/ja/docs/XPCOM_ABI#endnote_Platforms">[Platforms]</a></sup>は、以下のいずれかのCPUのアーキテクチャを意味します: -</p> -<ul><li> <code>x86</code> - i386およびそれ以降のシリーズ(x86-64 CPUの32bitモードも含みます) -</li><li> <code>ppc</code> - PowerPCシリーズ -</li><li> <code>Alpha</code> - Alphaシリーズ -</li><li> <code>x86_64</code> - 64bitモードのAMD64/EMT64シリーズ(32bitモードの場合は<code>x86</code>と見なされます) -</li><li> <code>sparc</code> - SPARCシリーズ -</li><li> <code>ia64</code> - Itaniumシリーズ -</li></ul> -<p><i>{TARGET_COMPILER_ABI}</i><sup><a href="https://developer.mozilla.org/ja/docs/XPCOM_ABI#endnote_Platforms">[Platforms]</a></sup>は、以下のいずれかのコンパイラのABIを意味します: -</p> -<ul><li> <code>msvc</code> - Microsoft Visual C++ -</li><li> <code>n32</code> - IRIX 6 C++ Compiler -</li><li> <code>gcc2</code> - GNU C++ Compiler 2.x -</li><li> <code>gcc3</code> - GNU C++ Compiler 3.x or 4.x -</li><li> <code>sunc</code> - Sun C++ Compiler -</li><li> <code>ibmc</code> - IBM C++ Compiler -</li></ul> -<p>例: -</p> -<ul><li> Intel Pentiumプロセッサ用のGNU C++ Compiler 4.0.0によってビルドされたFirefoxは、<code>x86-gcc3</code>というXPCOM ABIを持ちます。 -</li></ul> -<p>XPCOM ABI文字列は、<a href="ja/NsIXULRuntime">nsIXULRuntime</a>を使うことによってプログラムから取得できます。あなたのFirefoxあるいはThunderbirdのABIを取得するには、エラーコンソールを開いて(<code>ツール | エラーコンソール</code>から開けます)以下のJavaScriptコードを実行してください: -</p> -<pre class="eval">Components.classes["@mozilla.org/xre/app-info;1"] - .getService(Components.interfaces.nsIXULRuntime) - .XPCOMABI -</pre> -<p>もしCPUのアーキテクチャもしくはC++コンパイラのいずれかが未知の場合は、アプリケーションはXPCOM ABI文字列を持たず、それを取得しようと試みた際にはNS_ERROR_NOT_AVAILABLEというエラーを起こすでしょう。それは特徴的なABIだと思われますが、しかし私たちはそれに対して付ける名前を持っていません。 -</p><div class="blockIndicator note"><strong>註:</strong> Platforms</div> これは利用可能なCPUアーキテクチャやコンパイラのABIの完全なリストではありません。最新の情報は常に、ビルドシステムの中を探索することで見つけられるでしょう。 -<div class="blockIndicator note"><strong>註:</strong> TARGET_XPCOM_ABI</div> Mozillaのビルドシステムでは、XPCOM ABIを保持している変数は<code>TARGET_XPCOM_ABI</code>です。(これは内部の詳細情報で、拡張機能の開発者にとっては無関係です。) -<p><span id="Extension_Installation"></span> -</p> -<h2 id="Extension_Installation_2">Extension Installation</h2> -<p>アプリケーション(例:Firefox)がサポートするABIの名前は、ビルド時に埋め込まれます。その後、アプリケーションはサードパーティ製のバイナリXPCOMコンポーネントの互換性を調べるためにその値を使います。 -</p><p>互換性チェックとの共通点は、拡張機能のインストールの間にあります。もし、ある拡張機能がバイナリXPCOMを提供する場合、<a href="ja/Install_Manifests#targetPlatform">インストール定義</a>においてそれらのXPCOM ABIが宣言されているべきです。拡張機能の作者は、XPCOMコンポーネントをサポートしているマシンすべてのためにそれぞれビルド(コンパイル)して、<a href="ja/Bundles#Platform-specific_Subdirectories">プラットフォームごとのサブディレクトリ</a>に入れ、すべてのビルドを一つのXPIの中にパッケージングすることができます。拡張機能がインストールされる時、アプリケーションはそれ自身のABIに最も適したコンポーネントのビルドを選択します。もし適合するビルドが見つからなければ、その拡張機能は互換性がないと見なされ、アプリケーションはインストールを中断するでしょう。 -</p><p>もし、(<a href="#ABI_Naming">ABIのネーミング</a>で説明しているとおり、CPUアーキテクチャかC++コンパイラのいずれかが不明であった結果として)そのアプリケーションがXPCOM ABI文字列を持っていない場合、あなたはインストール定義などに記述するプラットフォーム名としてOSの名前を(XPCOM ABIを付けずに)使うべきです。 -</p> diff --git a/files/ja/mozilla/tech/xpcom/xpcom_ownership_guidelines/index.html b/files/ja/mozilla/tech/xpcom/xpcom_ownership_guidelines/index.html deleted file mode 100644 index a1f4a717dc..0000000000 --- a/files/ja/mozilla/tech/xpcom/xpcom_ownership_guidelines/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: XPCOM ownership guidelines -slug: Mozilla/Tech/XPCOM/XPCOM_ownership_guidelines -tags: - - XPCOM -translation_of: Mozilla/Tech/XPCOM/XPCOM_ownership_guidelines ---- -<h3 id="もしあなたがそれを作ったのであれば、それを所有している"> もしあなたがそれを作ったのであれば、それを所有している </h3> -<p>...自然なことです。もしあなたが一時的なオブジェクトを作ったのであれば、明らかにそれを破壊するのはあなたの責任です。それは確かに所有の徴候です。もしあなたがより長い生存期間を持つオブジェクトを作ったのであれば、あなたは所有権を失うまでそれを所有することになるでしょう。 -</p><p>すべての「factory」と「getter」関数は所有するポインターを作り出す。 -</p><p>そのような関数は、より長い生存期間を持つオブジェクトを作る絶好の例です。そして、(すでに <code>AddRef</code> を実行したポインターをつくり出すことで) 所有権を (この場合は呼び出し元に) 与えます。これはファクトリ関数にとってすばらしいことです。しかし単なる「getter」にとっては問題となりうるかもしれません。しばらくの間しかアクセスが必要ないのであれば、運が悪いということになります。後者の場合、ポインタをキャッシュした場合、あなたはデフォルトの所有者になります。これは、適切でないかも知れません。そして、問題のオブジェクトがあなたのクエリに対して作られのかどうかを知らずに修正するのは大変かもしれません。 -</p> -<h3 id="それを必要としているかどうかは、それを所有していることの正当な理由にはならない"> それを必要としているかどうかは、それを所有していることの正当な理由にはならない </h3> -<p><b>あなた</b>が<b>オブジェクト</b>を必要としているからと言って、そのオブジェクトを所有しているわけではありません。実際、しばしば<b>オブジェクト</b>が<b>あなた</b>を必要としているために、そのオブジェクトを所有していることがあります。 -</p> -<h3 id="もしあなたがオブジェクトを所有しているのならば、それはあなたを所有すべきではない。"> もし<b>あなた</b>が<b>オブジェクト</b>を所有しているのならば、それはあなたを所有すべきではない。</h3> -<p>推移的な意味でもそのことが言えます。<span style="color: darkgreen; background: #ef9;">【訳注: A が B を所有し、B が C を所有する場合、C が A を所有してはいけない】</span> 違う表現をすると: どんなシステムにおいても所有権のグラフは非循環的でなければなりません。所有権の循環が存在する場合、デストラクターによって自動的に処理されない場合があります。循環を断ち切るには、参加者が個別に解放する前に、特別なコードが提供されて呼ばれなければなりません。 -</p> -<h3 id="オブジェクトの生存期間があなたより長いことが保証されているのであれば、そのオブジェクトを所有する必要はない"> オブジェクトの生存期間があなたより長いことが保証されているのであれば、そのオブジェクトを所有する必要はない </h3> -<p>例えば、それがあなたを所有している時です。 -</p> -<h3 id="親は自分の子を所有する_そして逆ではない"> 親は自分の子を所有する (そして逆ではない) </h3> -<p>親は自分の子を所有する<b>必要</b>はないかもしれませんが。例えば、ツリーはその中にあるすべてのノードを所有するかもしれません。ツリーのすべてのノードが、お互いを非所有的なポインターでポイントしているかもしれません。しかしながら、最も単純な枠組では、親は自分の子を所有的なポインターでポイントし、子は自分の親を非所有的なポインターで指し返します。 -</p> -<h3 id="コンテナは、自分が含むものを所有する_そして逆ではない"> コンテナは、自分が含むものを所有する (そして逆ではない) </h3> -<h3 id="所有するポインターを実装するために、nsCOMPtr_を使いなさい"> 所有するポインターを実装するために、<code>nsCOMPtr</code> を使いなさい </h3> -<p>それは、明示的で効果的、かつとても頑丈です。「getter」と「setter」を書くのは簡単です。そしてあなたはデストラクターに何も書く必要がありません。 -</p> -<div class="originaldocinfo"> -<h2 id="原文書の情報"> 原文書の情報 </h2> -<ul><li> 著者: <a class="external" href="http://www.meer.net/ScottCollins/">Scott Collins</a> -</li><li> 最終更新日: May 8, 2003 -</li><li> 著作権: Copyright© 1999 by Netscape; use is subject to the <a class="external" href="http://www.mozilla.org/NPL/">NPL</a>. Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a> -</li></ul> -</div> -<div class="noinclude"> -</div> diff --git a/files/ja/mozilla/tech/xpcom/xptcall_faq/index.html b/files/ja/mozilla/tech/xpcom/xptcall_faq/index.html deleted file mode 100644 index 340d8c6940..0000000000 --- a/files/ja/mozilla/tech/xpcom/xptcall_faq/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: xptcall FAQ -slug: Mozilla/Tech/XPCOM/xptcall_FAQ -tags: - - XPCOM - - 'XPCOM:Language Bindings' - - XPConnect -translation_of: Mozilla/Tech/XPCOM/xptcall_FAQ ---- -<h2 id="_What_is_xptcall.3F_" name="_What_is_xptcall.3F_"><code>xptcall</code> とは何ですか?</h2> -<p><code>xptcall</code> は、低レベルの XPCOM メソッド呼び出しのための小さなライブラリです。プラットフォーム固有の C/C++ とアセンブラ言語のコードを使って実装されています。異なる言語間の呼び出しと異なるスレッドへのメソッド呼び出しを容易にするためのものです。 Mozillaをあらゆるプラットフォーム上で動作させるためには、このコードを移植する必要があります。</p> - - - -<h2 id="_Why_does_xptcall_exist.3F_" name="_Why_does_xptcall_exist.3F_">なぜ <code>xptcall</code> があるのですか?</h2> -<p><code>xptcall</code> があるのは、以下の二つの理由によります:</p> -<ol> - <li>XPCOM インタフェースの任意のメソッドを実行できるようにするため。</li> - <li>任意の XPCOM インタフェースを実装しているかのように、動的に振舞いを変えられるようにするため。</li> -</ol> -<p>どちらの仕組みも <a href="/ja/docs/XPConnect">XPConnect</a> にとって必要なものです。また、<code><a href="/ja/docs/NsISupports_proxies">xpcom/proxy</a></code> もこれらの仕組みを利用しています。将来的には、他のサブシステムでも使われるかもしれません。</p> -<p><code>xptcall</code> のアプローチの方が、スタブコードの生成により、すべてのインタフェースの呼び出しと実装をサポートするアプローチよりも良いということで、選択されました。この <code>xptcall</code> のアプローチは、コアなプラットフォーム固有のコードを必要とします。しかし、メモリ使用量が最小で済み、そして任意の正当な XPCOM インタフェースとともに動作できるように拡張できます。しかも各プラットフォームごとに追加のコンパイル済みコードを付加する必要がないのです。</p> - - - -<h2 id="_What_does_xptcall_really_do.3F_" name="_What_does_xptcall_really_do.3F_"><code>xptcall</code> は、実際には何をするのでしょうか?</h2> -<p>これが、コアとなる <i>invoke</i> 関数の宣言です:</p> - -<pre class="brush:text">XPTC_PUBLIC_API(nsresult) -XPTC_InvokeByIndex(nsISupports* that, - PRUint32 methodIndex, - PRUint32 paramCount, - nsXPTCVariant* params); -</pre> - -<p><code>nsXPTCVariant</code> は、共用体のデータです。これは、目的の関数にパラメータとして渡される型で区別されます (型として <code>void*</code> も使えるので、任意のポインター型を表現することができます)。</p> -<p>正しいパラメータセットを与えることで、この関数を使って任意の XPCOM インタフェースの任意のメソッドを呼び出すことができます。 XPConnect は、<a href="http://www.mozilla.org/scriptable/typelib_file.html">タイプライブラリ</a> ファイルの情報を使用して、任意の XPCOM インタフェースを JavaScript にマッピングし、<code>XPTC_InvokeByIndex</code> を使って JavaScript から XPCOM を呼び出すことができるようになります。タイプライブラリの情報を使うことで、 XPConnect は、関数のパラメータを変換でき、そしてこの呼び出しをするのに必要な <code>nsXPTCVariant</code> 型の配列を組み立てることができます。</p> -<p><code>xptcall</code> の <i>スタブ</i> (あるいは偽装) の仕組みにより、実行時に、任意の XPCOM インタフェースのふりをすることができるクラスを実装できるようになります。これは、<code>xptcall</code> が、関数の汎用的なスタブへのポインタが並べられた vtbl を提供することで実現されます。これらのスタブは、呼び出しを共通の関数に転送します。この共通の関数は、タイプライブラリの情報を使って、パラメータを取り出します。そして、プラットフォーム固有の呼び出し規約に従って、パラメータを保持するバリアント型の配列を組み立てます。その後、継承したメソッドを呼び出すことで、任意の処理を実行することができます。このコードは、呼び出しから戻る時に、プラットフォーム固有の後始末も行います。</p> -<p>これらはすべて動作しており、現在、<a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall/status.html" rel="custom">様々なプラットフォーム</a> 上の Mozilla で使われています。</p> - - - -<h2 id="_Why_cant_xptcall_just_be_implemented_in_C_or_C.2B.2B.3F_" name="_Why_can't_xptcall_just_be_implemented_in_C_or_C.2B.2B.3F_">なぜ <code>xptcall</code> を、単に C や C++ で実装することができないのですか?</h2> -<p>これらの二つの仕組みでは、完全にクロスプラットフォームにできないからです。あるいは、汎用的にすべて C や C++ で行うこともできないからです。それがどうしてなのかを、ひとつずつ見てみましょう。</p> -<p><i>invoke</i> では、任意の呼び出しのフレームを組み立てて、それを実行できるコードが必要になります。C++ のコンパイラは、そのような呼び出しのフレームをいつも組み立てています。しかし、コンパイラは、呼び出し先の固有のシグネチャーのためにカスタマイズしたフレームを <i>コンパイル時に</i> 組み立てます。 <code>xptcall</code> は、任意の正当な XPCOM メソッドシグネチャーを呼び出せなければなりません。そしてシグネチャーは実行時に特定する必要があるのです。</p> -<p><i>stubs</i> は、任意の XPCOM インタフェースのすべてのメソッド (祖先のメソッドも含む) の全ての vtbl を実装しているかのように振舞わなければなりません。これを行ういくつかの方法があります。実行時にコンパイラを動かして、スタブの動的に組み立てとロードを行うことができます。あるいは、プラットフォーム固有のコードを書いて、インタフェース固有の vtbl とメソッドのスタブを組み立てる方法もあります。私は、ひとつの巨大な vtbl と多くの小さな汎用のスタブを使う方法を選びました。これにより、プラットフォーム固有のコードは可能な限り小さくなるのです。もう一度言うと、これをすべて行うコードを C で書くことはできません。 varargs を使って一部実現することはできますが、それでは十分ではありません。</p> -<p>もし、何か確実な方法があって、クロスプラットフォームな方法で、かつ/またはアセンブラ言語のコードを使わずに必要な機能を実現することができるのであれば、教えてください。</p> - - - -<h2 id="_Is_xptcall_a_platform_requirement_for_Mozilla.3F_" name="_Is_xptcall_a_platform_requirement_for_Mozilla.3F_"><code>xptcall</code> は、Mozilla のプラットフォームとして必要なものですか?</h2> -<p>はい。Mozilla は、<code>xptcall</code> がきちんと移植されていないと、正しく動作しないでしょう。無機能のスタブコードがあるので、サポートされていないプラットフォーム上でも <code>xptcall</code> をビルドできるようになっています。しかし XPConnect に依存しているブラウザ機能は、すべて実行に失敗するでしょう。プラットフォーム上で <code>xptcall</code> が機能しないと、問題が起きるでしょう。 <code>xptcall</code> が、どこででも動作するように取り組んでいく必要があります!</p> - - - -<h2 id="_What_platforms_are_supported.3F_" name="_What_platforms_are_supported.3F_">どのプラットフォームがサポートされていますか?</h2> -<p>増加中のリストです:</p> -<ul> - <li><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall/status.html" rel="custom">移植状況</a></li> -</ul> - - - -<h2 id="Where_can_I_find_other_resources.3F" name="Where_can_I_find_other_resources.3F">他のリソースは、どこにあるでしょう?</h2> -<p>コードは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall" rel="custom">xpcom/reflect/xptcall</a></code> にあります。</p> -<p>新しい移植のためのガイドは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall/porting.html" rel="custom">xpcom/reflect/xptcall/porting.html</a></code> にあります。</p> -<p>実装前の提案が <a href="http://www.mozilla.org/scriptable/zero-generated-code-proposal.html">ここ</a> と <a href="http://www.mozilla.org/scriptable/zero-ASM-proposal.html">ここ</a> にあります。</p> - - -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information">原文書の情報</h2> - <ul> - <li>著者: <a class="link-mailto" href="mailto:jband@netscape.com">John Bandhauer <jband@netscape.com></a></li> - <li>初出: 1999 年 09 月 02 日</li> - </ul> -</div> diff --git a/files/ja/mozilla/tech/xpidl/generating_xpt_on_windows/index.html b/files/ja/mozilla/tech/xpidl/generating_xpt_on_windows/index.html deleted file mode 100644 index e89dc3bf46..0000000000 --- a/files/ja/mozilla/tech/xpidl/generating_xpt_on_windows/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Generating xpt on Windows -slug: Mozilla/Tech/XPIDL/Generating_xpt_on_Windows -tags: - - Embedding Mozilla - - Guide - - XULRunner -translation_of: Mozilla/Tech/XPIDL/Generating_xpt_on_Windows ---- -<p>Windows の <a href="/en-US/docs/Gecko_SDK">Gecko \ XUL Runner SDK</a> の最近のバージョンで <code>.idl</code> ファイルから <code>.xpt</code> ファイルを生成するには、 <code>typelib.py</code> スクリプトを使用する必要があります。 XULRunner SDK を <code><MOZSDKDIR></code> にインストールしたとすると、次の様なコマンドを実行する必要があります</p> - -<pre class="notranslate">C:\working-dir> <MOZSDKDIR>\sdk\bin\typelib.py <InputFile.idl> -o <OutputFile.xpt> -I <MOZSDKDIR>\idl -</pre> diff --git a/files/ja/mozilla/tech/xpidl/index.html b/files/ja/mozilla/tech/xpidl/index.html deleted file mode 100644 index 475f27e8b3..0000000000 --- a/files/ja/mozilla/tech/xpidl/index.html +++ /dev/null @@ -1,560 +0,0 @@ ---- -title: XPIDL -slug: Mozilla/Tech/XPIDL -tags: - - Developing Mozilla - - Guide - - NeedsContent - - XPCOM - - xpidl -translation_of: Mozilla/Tech/XPIDL ---- -<p><strong>XPIDL</strong> は <a href="ja/XPCOM">XPCOM</a> インターフェースクラスを指定するためのインターフェース記述言語 (Interface Description Language) です。</p> - -<div class="boxed translate-rendered"> -<p>インターフェース記述言語 (IDL) は言語やマシンから独立したインターフェースの記述に使われます。IDL は言語に依存しないインターフェース定義をツールで自動生成するために利用されるような、インターフェースの記述を可能にします。 XPIDL は、将来的に WebIDL に収束する予定です。</p> - -<div class="note"> -<p><strong>Note:</strong> Starting in {{Gecko("9.0")}}, the older <a href="https://developer.mozilla.org/en-US/docs/XPIDL/xpidl" title="XPIDL/xpidl">xpidl</a> utility, which was previously used to generate C++ header files, typelib information, and so forth has been replaced with <a href="https://developer.mozilla.org/en-US/docs/XPIDL/pyxpidl" title="XPIDL/pyxpidl">pyxpidl</a> in the <a href="https://developer.mozilla.org/en-US/docs/Gecko_SDK" title="Gecko SDK">Gecko SDK</a>. <a href="https://developer.mozilla.org/en-US/docs/XPIDL/pyxpidl" title="XPIDL/pyxpidl">pyxpidl</a> has been used for some time now, but now the older tool has been fully retired.</p> -</div> - -<h2 id="Writing_XPIDL_interface_files" name="Writing_XPIDL_interface_files">Writing XPIDL interface files</h2> - -<p>XPIDL は <a class="external external-icon" href="http://www.omg.org/gettingstarted/omg_idl.htm">OMG IDL</a> によく似ており、 IID と追加の型を処理する拡張構文があります。いくつかの例は Mozilla tree の {{Source("xpcom/base")}} と {{Source("xpcom/ds")}} ディレクトリにあります。</p> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/XPIDL/Syntax" title="XPIDL/Syntax">XPIDL:Syntax</a> (Now up to date again)</li> - <li><a class="external external-icon" href="http://www.mozilla.org/scriptable/xpidl/syntax.html">XPIDL syntax</a> (Out of date)</li> - <li><a class="external external-icon" href="http://www.mozilla.org/scriptable/xpidl/idl-authors-guide/index.html">XPIDL Author's Guide</a> (Not as out of date)</li> -</ul> - -<h2 id="Explanation_of_IDL_semantics" name="Explanation_of_IDL_semantics">Explanation of IDL semantics</h2> - -<p>A full guide to the syntax can be found at <a href="https://developer.mozilla.org/en-US/docs/XPIDL/Syntax" title="XPIDL/Syntax">XPIDL:Syntax</a>, which is written in an ABNF form.</p> - -<p>An xpidl file is essentially just a series of declarations. At the top level, we can define typedefs, native types, or interfaces. Interfaces may furthermore contain typedefs, natives, methods, constants, or attributes. Most declarations can have properties applied to them.</p> - -<h3 id="Types">Types</h3> - -<p>There are three ways to make types: a typedef, a native, or an interface. In addition, there are a few built-in native types. The built-in native types are those listed under the type_spec production above. The following is the correspondence table:</p> - -<table class="standard-table"> - <caption>Table 1: Standard IDL types</caption> - <thead> - <tr> - <th scope="col">IDL</th> - <th scope="col">C++ in parameter</th> - <th scope="col">C++ out parameter</th> - <th scope="col">JS type</th> - <th scope="col">Notes</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>boolean</code></td> - <td><code>bool</code></td> - <td><code>bool *</code></td> - <td>boolean</td> - <td></td> - </tr> - <tr> - <td><code>char</code></td> - <td><code>char</code></td> - <td><code>char *</code></td> - <td>string</td> - <td>Only chars in range \u0000-\u00ff permitted</td> - </tr> - <tr> - <td><code>double</code></td> - <td><code>double</code></td> - <td><code>double *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>float</code></td> - <td><code>float</code></td> - <td><code>float *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>long</code></td> - <td><code>int32_t</code></td> - <td><code>int32_t *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>long long</code></td> - <td><code>int64_t</code></td> - <td><code>int64_t *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>octet</code></td> - <td><code>uint8_t</code></td> - <td><code>uint8_t *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>short</code></td> - <td><code>int16_t</code></td> - <td><code>int16_t *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>string</code></td> - <td><code>const char *</code></td> - <td><code>char **</code></td> - <td>string</td> - <td> - <p>Only chars in range \u0000-\u00ff permitted</p> - - <p>Most of the time you don't want to use this type but AUTF8String or ACString</p> - </td> - </tr> - <tr> - <td><code>unsigned long</code></td> - <td><code>uint32_t</code></td> - <td><code>uint32_t *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>unsigned long long</code></td> - <td><code>uint64_t</code></td> - <td><code>uint64_t *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>unsigned short</code></td> - <td><code>uint16_t</code></td> - <td><code>uint16_t *</code></td> - <td>number</td> - <td></td> - </tr> - <tr> - <td><code>wchar</code></td> - <td><code>PRUnichar</code></td> - <td><code>PRUnichar *</code></td> - <td>string</td> - <td>Full Unicode set permitted</td> - </tr> - <tr> - <td><code>wstring</code></td> - <td><code>const PRUnichar *</code></td> - <td><code>PRUnichar **</code></td> - <td>string</td> - <td> - <p>Full Unicode set permitted</p> - - <p>Most of the time you don't want to use this type but AString.</p> - </td> - </tr> - </tbody> -</table> - -<p>In addition to this list, nearly every IDL file includes <code>nsrootidl.idl</code> in some fashion, which also defines the following types:</p> - -<table class="standard-table"> - <caption>Table 2: Types provided by nsrootidl.idl</caption> - <thead> - <tr> - <th scope="col">IDL typedef</th> - <th scope="col">C++ in parameter</th> - <th scope="col">C++ out parameter</th> - <th scope="col">JS type</th> - <th scope="col">Notes</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>PRTime</code></td> - <td colspan="2" rowspan="1">(XPIDL <code>unsigned long long</code> typedef, 64 bits)</td> - <td rowspan="1">number</td> - <td rowspan="1">PRTime is in microseconds, while JS date assumes time in milliseconds</td> - </tr> - <tr> - <td><code>nsresult</code></td> - <td colspan="2" rowspan="1">(XPIDL <code>unsigned long</code> typedef, 32 bits)</td> - <td rowspan="1">number</td> - <td rowspan="1"></td> - </tr> - <tr> - <td><code>nsrefcnt</code></td> - <td colspan="2" rowspan="1">(XPIDL <code>unsigned long</code> typedef, 32 bits)</td> - <td rowspan="1">number</td> - <td rowspan="1"></td> - </tr> - <tr> - <td><code>size_t</code></td> - <td colspan="2" rowspan="1">(XPIDL <code>unsigned long</code> typedef, 32 bits)</td> - <td rowspan="1">number</td> - <td rowspan="1"></td> - </tr> - <tr> - <td><code>voidPtr</code></td> - <td><code>void *</code></td> - <td><code>void *</code></td> - <td>not allowed</td> - <td></td> - </tr> - <tr> - <td><code>charPtr</code></td> - <td><code>char *</code></td> - <td><code>char **</code></td> - <td>not allowed</td> - <td></td> - </tr> - <tr> - <td><code>unicharPtr</code></td> - <td><code>PRUnichar *</code></td> - <td><code>PRUnichar **</code></td> - <td>not allowed</td> - <td></td> - </tr> - <tr> - <td><code>nsIDRef</code></td> - <td><code>const nsID &</code></td> - <td><code>nsID *</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsIIDRef</code></td> - <td><code>const nsIID &</code></td> - <td><code>nsIID *</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsCIDRef</code></td> - <td><code>const nsCID &</code></td> - <td><code>nsCID *</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsIDPtr</code></td> - <td><code>const nsID *</code></td> - <td><code>nsID **</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsIIDPtr</code></td> - <td><code>const nsIID *</code></td> - <td><code>nsIID **</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsCIDPtr</code></td> - <td><code>const nsCID *</code></td> - <td><code>nsCID **</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsIID</code></td> - <td><code>const nsIID</code></td> - <td><code>nsIID *</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsID</code></td> - <td><code>const nsID</code></td> - <td><code>nsID *</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsCID</code></td> - <td><code>const nsCID</code></td> - <td><code>nsCID *</code></td> - <td>?</td> - <td></td> - </tr> - <tr> - <td><code>nsQIResult</code></td> - <td><code>void *</code></td> - <td><code>void **</code></td> - <td>object</td> - <td>Should only be used with methods that act like QueryInterface</td> - </tr> - <tr> - <td><code>DOMString</code></td> - <td><code>const nsAString &</code></td> - <td><code>nsAString &</code></td> - <td>string</td> - <td>Full Unicode set permitted</td> - </tr> - <tr> - <td><code>AUTF8String</code></td> - <td><code>const nsACString &</code></td> - <td><code>nsACString &</code></td> - <td>string</td> - <td>Full Unicode set permitted (translated to UTF-8)</td> - </tr> - <tr> - <td><code>ACString</code></td> - <td><code>const nsACString &</code></td> - <td><code>nsACString &</code></td> - <td>string</td> - <td>Only chars in range \u0000-\u00ff permitted</td> - </tr> - <tr> - <td><code>AString</code></td> - <td><code>const nsAString &</code></td> - <td><code>nsAString &</code></td> - <td>string</td> - <td>Full Unicode set permitted</td> - </tr> - <tr> - <td><code>jsval</code></td> - <td><code>const jsval &</code></td> - <td><code>jsval *</code></td> - <td>anything</td> - <td></td> - </tr> - <tr> - <td><code>jsid</code></td> - <td><code>jsid</code></td> - <td><code>jsid *</code></td> - <td>not allowed</td> - <td></td> - </tr> - </tbody> -</table> - -<p>Typedefs in IDL are basically as they are in C or C++: you define first the type that you want to refer to and then the name of the type. Types can of course be one of the fundamental types, or any other type declared via a typedef, interface, or a native type.</p> - -<p>Native types are types which correspond to a given C++ type. Most native types are not scriptable: if it is not present in the list above, then it is certainly not scriptable (some of the above, particularly jsid, are not scriptable).</p> - -<p>The contents of the parentheses of a native type declaration (although native declarations without parentheses are parsable, I do not trust that they are properly handled by the xpidl handlers) is a string equivalent to the C++ type. XPIDL itself does not interpret this string, it just literally pastes it anywhere the native type is used. The interpretation of the type can be modified by having properties on the native declaration:</p> - -<table class="standard-table"> - <caption>Table 3: Native type definitions</caption> - <tbody> - <tr> - <td>astring</td> - <td>This is an nsAString declaration. Overrides native string.</td> - </tr> - <tr> - <td>cstring</td> - <td>This is an nsACString declaration. Overrides native string.</td> - </tr> - <tr> - <td>domstring</td> - <td>This is an nsAString declaration. Overrides native string.</td> - </tr> - <tr> - <td>jsval</td> - <td>This type gets const when an in type. Special in typelib.</td> - </tr> - <tr> - <td>nsid</td> - <td>This type gets const when an in type. Special in typelib.</td> - </tr> - <tr> - <td>ptr</td> - <td>The type is really (native str)*</td> - </tr> - <tr> - <td>ref</td> - <td>The type is really (native str)&</td> - </tr> - <tr> - <td>utf8string</td> - <td>This is an nsACString declaration whose text is UTF-8.</td> - </tr> - </tbody> -</table> - -<p class="warning">As far as I can tell, these properties also apply to typedefs. Need to verify.</p> - -<h3 id="Constants">Constants</h3> - -<p>Constants are technically legal at the top level, but xpidl I forbids them from being placed there; instead, they must be in an interface. The only constants supported are those which become integer types when compiled to source code; string constants and floating point constants, though parseable, cannot be made into a header or xpt file.</p> - -<p>Constants are emitted in header files using anonymous enums, although there is an outstanding patch that combines adjacent constants into the same anonymous enums to quiet enum mismatch warnings.</p> - -<h3 id="Interfaces">Interfaces</h3> - -<p>Specifying interfaces is the primary purpose of using xpidl. Interfaces are basically a collection of constants, methods, and attributes; in Mozilla, these are the primary ways in which JavaScript code can interact with native C++ code. Furthermore, interfaces can also inherit from another interface. Every interface should inherit <a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsISupports" title="nsISupports">nsISupports</a> in some fashion. However, it is generally not recommended to have a chain of interfaces inheriting from each other if you intend to have a chain of implementations for each interface, as it can cause problems in C++ code.</p> - -<table class="standard-table"> - <caption>Table 4: Basic interface attributes</caption> - <thead> - <tr> - <th scope="col">Attribute</th> - <th scope="col">Interpretation</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>uuid(12345678-fedc-ba98-7654-0123456789ab)</code></td> - <td>This is the internal way this interface is accessed; it must be unique, and the uuid must be generated when creating the interface. After that, it doesn't need to be changed any more. For instructions on how to generate an UUID see <a href="https://developer.mozilla.org/en-US/docs/Generating_GUIDs" title="Generating GUIDs">Generating GUIDs</a>.</td> - </tr> - <tr> - <td><code>builtinclass</code></td> - <td>JavaScript classes are forbidden from implementing this interface. All children must also be marked with this property.</td> - </tr> - <tr> - <td><code>function</code></td> - <td>The JavaScript implementation of this interface may be a function that is invoked on property calls instead of an object with the given property</td> - </tr> - <tr> - <td><code>scriptable</code></td> - <td>This interface is usable by JavaScript classes. Must inherit from a <code>scriptable</code> interface.</td> - </tr> - <tr> - <td><code>deprecated</code></td> - <td>This interface should no longer be used. The compiler will emit warnings if you attempt to use this.</td> - </tr> - </tbody> -</table> - -<h3 id="Methods_and_attributes">Methods and attributes</h3> - -<p>Interfaces declare a series of attributes and methods. Attributes in IDL are akin to JavaScript properties, in that they are a getter and (optionally) a setter pair. In JavaScript contexts, attributes are exposed as a regular property access, while native code sees attributes as a Get and possibly a Set method.</p> - -<p>Attributes can be declared readonly, in which case setting causes an error to be thrown in script contexts and native contexts lack the Set method, by using the "readonly" keyword.</p> - -<p>To native code, on attribute declared 'attribute type foo;' is syntactic sugar for the declaration of two methods 'type getFoo();' and 'void setFoo(in type foo);'. If foo were declared readonly, the latter method would not be present. Attributes support all of the properties of methods with the exception of <code>optional_argc</code>, as this does not make sense for attributes.</p> - -<p>There are some special rules for attribute naming. As a result of vtable munging by the MSVC++ compiler, an attribute with the name `IID' is forbidden. In addition, any attribute whose name matches the regex /^[a-z]{2,3}I[A-Z][a-z]/ is emitted with a warning, as its name looks like an nsIInterface or a mozIInterface declaration. Also like methods, if the first character of an attribute is lowercase in IDL, it is made uppercase in native code only.</p> - -<p>Methods define a return type and a series of in and out parameters. When called from a JavaScript context, they invocation looks as it is declared for the most part; some parameter properties can adjust what the code looks like. The calls are more mangled in native contexts.</p> - -<p>An important attribute for methods and attributes is scriptability. A method or attribute is scriptable if it is declared in a <code>scriptable</code> interface and it lacks a <code>noscript</code> or <code>notxpcom</code> property. Any method that is not scriptable can only be accessed by native code. However, scriptable methods must contain parameters and a return type that can be translated to script: any native type, save those declared with an <code>nsid</code>, <code>domstring</code>, <code>utf8string</code>, <code>cstring</code>, <code>astring</code>, or <code>jsval</code> property, may not be used in a scriptable method or attribute. An exception to the above rule is if the parameter has the <code>iid_is</code> property (a special case for some QueryInterface-like operations). In general, this means that the only usable native types are those declared in nsrootidl.idl (see above).</p> - -<p>Methods and attributes are mangled on conversion to native code. If a method is declared <code>notxpcom</code>, the mangling of the return type is prevented, so it is called mostly as it looks. Otherwise, the return type of the native method is nsresult, and the return type acts as a final outparameter if it is not void. The name is translated so that the first character is unconditionally uppercase; subsequent characters are unaffected. However, the presence of the <code>binaryname</code> property allows the user to select another name to use in native code (to avoid conflicts with other functions). For example, the method '[binaryname(foo)] void bar();' becomes 'nsresult Foo()' in native code (note that capitalization is still applied). However, the capitalization is not applied when using <code>binaryname</code> with attributes; i.e., <code>[binaryname(foo)] readonly attribute Quux bar;</code> becomes <code>Getfoo(Quux**)</code> in native code. Attributes named 'IID' and methods named 'GetIID' are forbidden, although this is checked before binaryname conversion.</p> - -<p>The <code>implicit_jscontext</code> and <code>optional_argc</code> parameters are properties which help native code implementations determine how the call was made from script. If <code>implicit_jscontext</code> is present on a method, then an additional JSContext *cx parameter is added just after the regular list which receives the context of the caller. If <code>optional_argc</code> is present, then an additional uint8_t _argc method is added at the end which receives the number of optional arguments that were actually used (obviously, you need to have an optional argument in the first place). Note that if both properties are set, the JSContext *cx is added first, followed by the uint8_t _argc, and then ending with return value parameter. Finally, as an exception to everything already mentioned, for attribute getters and setters the JSContext *cx comes before any other arguments.</p> - -<p>In addition, methods and attributes can be both marked as deprecated with the <code>deprecated</code> property, which causes compilers to emit deprecation usage warnings. Note that this is only verified in native code and not script code.</p> - -<p>The final native-only property is <code>nostdcall</code>. Normally, declarations are made in the stdcall ABI on Windows to be ABI-compatible with COM interfaces. Any non-scriptable method or attribute with <code>nostdcall</code> instead uses the thiscall ABI convention. Methods without this property generally use NS_IMETHOD in their declarations and NS_IMETHODIMP in their definitions to automatically add in the stdcall declaration specifier on requisite compilers; those that use this method may use a plain `nsresult' instead.</p> - -<h4 id="Source_and_Binary_Compatibility">Source and Binary Compatibility</h4> - -<p>Some consumers of IDL interfaces create binary plugins that expect the interfaces to be stored in a specific way in memory. In other words, some changes made to IDL interfaces require the author to modify the unique identifier (IID) in order to make it clear to plugins that utilize these interfaces that they have changed, and thus their plugin must be recompiled.</p> - -<p>Common changes to an interface, such as changes to a method signature, number of arguments, and number or type of attributes, automatically require an IID change. In addition, some changes to interface attributes require that an IID be changed, as well. When a change to an interface made by an XPIDL developer requires that third-party binary addons be recompiled, we say that it affects <em>binary compatibility</em>. When a change to an interface made by an XPIDL developer requires that third-party binary addons change their source code, we say that it affects <em>source compatibility. </em>In table 5, the columns on the far right indicate whether changes to a specific attribute affect source compatibility, binary compatibility, or both.</p> - -<table> - <caption>Table 5: Optional interface attributes</caption> - <thead> - <tr> - <th scope="row">Attribute</th> - <th scope="col">Valid for methods</th> - <th scope="col">Valid for attributes</th> - <th scope="col">Effect</th> - <th scope="col">Changes Source Compatibility?</th> - <th scope="col">Changes Binary Compatibility?</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>binaryname(foo)</code></td> - <td>Y</td> - <td>Y</td> - <td>Results in the C++ method being called "<code>Foo</code>"</td> - <td>Y</td> - <td>N</td> - </tr> - <tr> - <td><code>deprecated</code></td> - <td>Y</td> - <td>Y</td> - <td>Emits a compiler warning if used in C++ code</td> - <td>N</td> - <td>N</td> - </tr> - <tr> - <td><code>implicit_jscontext</code></td> - <td>Y</td> - <td>Y</td> - <td>Adds an additional <code>JSContext *cx</code> parameter to the C++ implementation</td> - <td>Y</td> - <td>Y</td> - </tr> - <tr> - <td><code>noscript</code></td> - <td>Y</td> - <td>Y</td> - <td>Prohibits the method/attribute from being accessible in JS code</td> - <td>N</td> - <td>N</td> - </tr> - <tr> - <td><code>nostdcall</code></td> - <td>Y</td> - <td>Y</td> - <td>The C++ implementation uses <code>virtual nsresult</code> instead of <code>NS_IMETHOD</code>/<code>NS_IMETHODIMP</code></td> - <td>Y</td> - <td>Y</td> - </tr> - <tr> - <td><code>notxpcom</code></td> - <td>Y</td> - <td>Y</td> - <td>The C++ implementation does not return <code>nsresult</code> (implies <code>noscript</code>)</td> - <td>Y</td> - <td>Y</td> - </tr> - <tr> - <td><code>optional_argc</code></td> - <td>Y</td> - <td>N</td> - <td>Adds an additional <code>uint8_t _argc</code> parameter to the C++ implementation</td> - <td>Y</td> - <td>Y</td> - </tr> - </tbody> -</table> - -<h4 id="Method_parameters">Method parameters</h4> - -<p>Each method parameter can be specified in one of three modes: <code>in</code>, <code>out</code>, or <code>inout</code>. An out parameter is essentially an auxiliary return value, although these are moderately cumbersome to use from script contexts and should therefore be avoided if reasonable. An inout parameter is an in parameter whose value may be changed as a result of the method; these parameters are rather annoying to use and should generally be avoided if at all possible.</p> - -<p>Out and inout parameters are reflected as objects having the .value property which contains the real value of the parameter; it is not initialized in the case of out parameters and is initialized to the passed-in-value for inout parameters. The script code would need to set this property to assign a value to the parameter. Regular in parameters are reflected more or less normally, with numeric types all representing numbers, booleans as true or false, the various strings (including AString et al) as a JavaScript string, and nsid types as a Components.ID instance. In addition, the jsval type is translated as the appropriate JavaScript value (since a jsval is the internal representation of all JavaScript values), and objects that are marked nsIVariant have their<br> - types automatically boxed and unboxed as appropriate.</p> - -<p>The equivalent representations of all IDL types in native code is given in the earlier tables; parameters of type inout follow their out form. Native code should pay particular attention to not passing in null values for out parameters (although some parts of the codebase are known to violate this, it is strictly enforced at the JS<->native barrier), and also ensuring that boolean types only receive values of 0 (false) or 1 (true).</p> - -<p>Representations of types additionally depend on some of the many types of properties they may have. The <code>array</code> property turns the parameter into an array; the parameter must also have a corresponding <code>size_is</code> property whose argument is the parameter that has the size of the array. In native code, the type gains another pointer indirection, and JavaScript arrays are used in script code. Script code callers can ignore the value of array parameter, but implementors must still set the values appropriately.</p> - -<p>The <code>const</code> and <code>shared</code> properties are special to native code. As its name implies, the const property makes its corresponding argument const. The shared property is only meaningful for out or inout parameters and it means that the pointer value should not be freed by the caller. Only the string, wstring, and native types having the nsid, domstring, utf8string, cstirng, astring, or jsval properties may be declared shared, and, even then, only if the parameter is not an array parameter. The shared property also makes its corresponding argument const.<br> - <br> - The <code>retval</code> property indicates that the parameter is actually acting as the return value, and it is only the need to assign properties to the parameter that is causing it to be specified as a parameter. It has no effect on native code, but script code uses it like a regular return value. Naturally, a method which contains a retval parameter must be declared void, and the parameter itself must be an out parameter and the last parameter.</p> - -<p>Other properties are the <code>optional</code> and <code>iid_is</code> property. The optional property indicates that script code may omit the property without problems; all subsequent parameters must either by optional themselves or the retval parameter. Note that optional out parameters still pass in a variable for the parameter, but its value will be ignored. The iid_is parameter indicates that the real IID of an nsQIResult parameter may be found in the corresponding parameter, to allow script code to automatically unbox the type.</p> - -<p>Not all type combinations are possible. Native types with the various string properties are all forbidden from being used as an inout parameter or as an array parameter. In addition, native types with the nsid property but lacking either a ptr or ref property are forbidden unless the method is notxpcom and it is used as an inparameter.</p> - -<p>For types that reference heap-allocated data (strings, arrays, interface pointers, etc), you must follow the XPIDL data ownership conventions in order to avoid memory corruption and security vulnerabilities:</p> - -<ul> - <li>For <code>in</code> parameters, the caller allocates and deallocates all data. If the callee needs to use the data after the call completes, it must make a private copy of the data, or, in the case of interface pointers, AddRef it.</li> - <li>For <code>out</code> parameters, the callee creates the data, and transfers ownership to the caller. For buffers, the callee allocates the buffer with NS_Alloc, and the caller frees the buffer with NS_Free. For interface pointers, the callee does the AddRef on behalf of the caller, and the caller must call Release.</li> - <li>For <code>inout</code> parameters, the callee must clean up the old data if it chooses to replace it. Buffers must be deallocated with NS_Free, and interface pointers must be Release'd. Afterwards, the above rules for <code>out</code> apply.</li> - <li>Shared out-parameters should not be freed, as they are intended to refer to constant string literals.</li> -</ul> - -<h2 id="Resources" name="Resources">Resources (mostly outdated)</h2> - -<ul> - <li><a class="external external-icon" href="http://www.mozilla.org/scriptable/xpidl/notes/">Some unsorted notes</a> including a <a class="external external-icon" href="http://www.mozilla.org/scriptable/xpidl/notes/keywords.txt">keyword list</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/XPIDL/xpidl" title="XPIDL/xpidl">xpidl</a> is a tool for generating C++ headers, Java interfaces, <a href="https://developer.mozilla.org/en-US/docs/XPConnect" title="XPConnect">XPConnect</a> typelibs, and HTML documentation from XPIDL files</li> - <li><a href="https://developer.mozilla.org/en-US/docs/XPIDL/Generating_xpt_on_Windows" title="XPIDL/Generating_xpt_on_Windows">Generating xpt files on Windows</a></li> - <li><a class="external external-icon" href="http://groups.google.com/group/mozilla.dev.extensions/browse_thread/thread/371b5f04e4ecdcfb/a9d48a45c9453d16?q=idl+OR+xpidl+variable+argument+group:mozilla.dev.*#a9d48a45c9453d16" title="http://groups.google.com/group/mozilla.dev.extensions/browse_thread/thread/371b5f04e4ecdcfb/a9d48a45c9453d16?q=idl+OR+xpidl+variable+argument+group:mozilla.dev.*#a9d48a45c9453d16">A Google groups post</a> with instructions on how to use variable-length argument lists using XPIDL.</li> -</ul> -</div> diff --git a/files/ja/mozilla/tech/xpidl/xpidl/index.html b/files/ja/mozilla/tech/xpidl/xpidl/index.html deleted file mode 100644 index 41f94f5e71..0000000000 --- a/files/ja/mozilla/tech/xpidl/xpidl/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: xpidl -slug: Mozilla/Tech/XPIDL/xpidl -tags: - - Developing Mozilla - - 'Developing_Mozilla:Tools' - - Tools - - XPCOM - - xpidl -translation_of: Mozilla/Tech/XPIDL/xpidl ---- -<p><b>xpidl</b> は XPIDL インタフェース記述ファイルに基づいた XPCOM インタフェース情報を生成するためのツールです。</p> -<ul> - <li>インタフェースの完全な C++ 実装のためのコメントアウトされたテンプレートを含む C++ ヘッダファイル (<tt>.h</tt>)</li> - <li>Java インタフェースファイル (<tt>.java</tt>)</li> - <li><a href="ja/XPConnect">XPConnect</a> を通して動的に XPCOM オブジェクトを呼び出すランタイム種類の情報を含む <a href="ja/XPConnect">XPConnect</a> typelib ファイル(<tt>.xpt</tt>)</li> - <li>HTML 形式の文書 (<tt>.html</tt>)</li> -</ul> -<h3 id="xpidl_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89" name="xpidl_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89">xpidl のビルド</h3> -<p>xpidl は <a class="external" href="http://www.gnome.org/">Gnome</a> プロジェクト由来の idl コンパイラである <a class="external" href="http://andrewtv.org/libIDL/">libIDL idl コンパイラ</a> をベースにしています。libIDL コンパイラは、やはり Gnome プロジェクト由来の glib をベースにしています。XPCOM コンポーネントに使われるヘッダを生成するために xpidl コンパイラを使うことができるため、現在 xpidl コンパイラはビルドプロセスの一部になっています。libIDL と glib の情報を<a href="ja/Build_Documentation">ビルド文書</a>で確認してください。</p> -<p>UNIX: もし、あなたが xpidl をビルドしたい<b>だけ</b>なら、ビルドするのにはわずかなディレクトリだけが必要です。Mozilla のソースを取得して、'configure'を実行したのち、以下のようにして dist/bin ディレクトリに xpidl をビルドすることができるでしょう。</p> -<pre class="eval">make -C config -make -C nsprpub -make -C xpcom/typelib -</pre> -<p>Windows: 静的リンクされた xpidl.exe のビルドか VC 2005 Express でビルドをしたいなら、<a>Windows で静的 xpidl をビルドする</a>を参照してください。</p> -<h3 id="xpidl_.E3.82.92.E4.BD.BF.E3.81.86" name="xpidl_.E3.82.92.E4.BD.BF.E3.81.86">xpidl を使う</h3> -<p>Mozilla をビルドする手順に XPIDL ファイルをどのように加えるかについての説明のために <a class="external" href="http://www.mozilla.org/scriptable/xpidl/xpidl-in-the-build.html">xpidl ビルドページ</a> を参照してください。xpidl は UNIX と Windows のコマンドラインからも利用可能です。</p> -<pre class="eval">Usage: ./xpidl -m mode [-w] [-v] [-t version number] - [-I path] [-o basename | -e filename.ext] filename.idl - -a emit annotations to typelib - -w turn on warnings (recommended) - -v verbose mode (NYI) - -t create a typelib of a specific version number - -I add entry to start of include path for ``#include "nsIThing.idl" - -o use basename (e.g. ``/tmp/nsIThing<i>) for output</i> - -e use explicit output filename - -m specify output mode: - header Generate C++ header (.h) - typelib Generate XPConnect typelib (.xpt) - doc Generate HTML documentation (.html) - java Generate Java interface (.java) -</pre> -<h3 id=".E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9" name=".E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9">リソース</h3> -<ul> - <li>xpidl に対する <a class="external" href="http://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=xpidl">開かれたバグ</a></li> -</ul> -<p>苦情は <a class="link-mailto" href="mailto:mike+mozilla@meer.net,mang@subcarrier.org?Subject=xpidl">docs mike+mozilla@meer.net & mang@subcarrier.org</a> まで (英語で)</p> -<div class="originaldocinfo"> - <h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - <ul> - <li>Author(s): <a class="link-mailto" href="mailto:mike+mozilla@meer.net">mike+mozilla@meer.net</a>, <a class="link-mailto" href="mailto:mang@subcarrier.org">mang@subcarrier.org</a></li> - <li>Last Updated Date: May 29, 2002</li> - <li>Copyright Information: Copyright (C) <a class="link-mailto" href="mailto:mike+mozilla@meer.net">mike+mozilla@meer.net</a>, <a class="link-mailto" href="mailto:mang@subcarrier.org">mang@subcarrier.org</a></li> - </ul> -</div> -<p>{{ languages( { "en": "en/XPIDL/xpidl" } ) }}</p> diff --git a/files/ja/mozilla/tech/xslt_2.0/index.html b/files/ja/mozilla/tech/xslt_2.0/index.html deleted file mode 100644 index ad3898b988..0000000000 --- a/files/ja/mozilla/tech/xslt_2.0/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: XSLT 2.0 -slug: Mozilla/Tech/XSLT_2.0 -tags: - - Java - - JavaScript - - XML - - XSLT - - XSLT 2.0 - - 拡張 -translation_of: Mozilla/Tech/XSLT_2.0 ---- -<p>Firefox では XSLT 2.0 がネイティブにサポートされていませんが、<a href="http://saxonica.com/">Saxon-B</a> (Java) や最近では <a href="http://www.saxonica.com/documentation/index.html#!about/whatis">Saxon-CE</a> (JavaScript) を使用して XSLT 2.0 を実行することは可能です。</p> - -<h3 id="For_users" name="For_users">ユーザー向け</h3> - -<p>Saxon-CE</p> - -<p>拡張は必要ありませんが、Saxon-CE JavaScript ライブラリにリンクする HTML ページがロードされると Saxon-CE が実行されます。</p> - -<p>Saxon-B</p> - -<p><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/5023">XSL Results</a> 拡張機能は、Java ベースの Saxon-B ライブラリに接続し、(Firefox 自身の XSLT 1.0 プロセッサでは処理されない) XSLT 処理命令 で適切なページを訪問したときに XSLT が自動的に実行されるようサポートするために (Mozilla 固有のコードの代わりにJava 1.6v12+によって処理される) LiveConnect の新バージョンを使用します。</p> - -<h3 id="For_developers" name="For_developers">開発者向け</h3> - -<p>Saxon-CE</p> - -<p>Web ページから XSLT 2.0 変換を開始するための JavaScript API が用意されています。Saxon-CE からのエラーと診断出力は、Firefox 開発者コンソールまたは Firebug で確認できます。</p> - -<p>Saxon-B</p> - -<p>この拡張機能は LiveConnect コードを使って Saxon-B ライブラリと通信する方法を示していますが、JavaScript コードモジュールのアプローチが拡張機能 <a href="https://addons.mozilla.org/ja/firefox/addon/xquery-use-me-xquseme/">XqUSEme</a> の中でより再利用可能なアプローチとして使用されることがあります。</p> - -<p>このコードは Java のサポート (および LiveConnect のサポート) が遅れているため、Mac (Java 1.6 をサポートするサーバー版を除く) では現在動作しません。</p> diff --git a/files/ja/mozilla/thunderbird/autoconfiguration/index.html b/files/ja/mozilla/thunderbird/autoconfiguration/index.html deleted file mode 100644 index 68a7839afc..0000000000 --- a/files/ja/mozilla/thunderbird/autoconfiguration/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Thunderbird のアカウント情報自動設定機能 -slug: Mozilla/Thunderbird/Autoconfiguration -tags: - - Administration - - enterprise -translation_of: Mozilla/Thunderbird/Autoconfiguration ---- -<p>著者: Ben Bucksch<br>著者へ相談せずに文書の内容を変更しないで下さい</p> <p>Thunderbird 3.1 以降から追加された自動設定機能の一つに,アカウントの情報を自動で設定する機能があります(一部の機能は 3.0 から利用できます).この機能は,ユーザがメールサーバの通信設定をとても簡単に設定できるようにする,という目的のもと開発されました.これにより,Thunderbird をダウンロードしてインストールを行ない,アカウントのセットアップウィザードから本名と Email アドレス,そしてパスワードを入力するだけで,できる限り安全にメールを送受信することができるようになります.</p> <p>参考:</p> <ul> <li><a class=" link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration" title="https://wiki.mozilla.org/Thunderbird:Autoconfiguration">Mozilla wiki におけるプロジェクトのページ</a> には背景,デザイン,実装をはじめとした自動設定機能の詳しい説明が存在します.</li> <li>ユーザ向けの利用方法については Thunderbird Knowledge Base の<a class=" external" href="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration" title="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration">Automatic Account Configuration</a> を参照して下さい.</li> <li>設定ファイルの <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">説明</a> と <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">定義</a> に関するページも存在します.</li> -</ul> <p>この文書は,いかにして自動設定機能が動作するか,そして何を行えばメールサーバが自動で設定機能されるか,について説明を行ないます.</p> <h1 id="メカニズム">メカニズム</h1> <p>Thunderbird は様々なユースケースにあわせ,色々な方法でサーバの情報を取得します:</p> <ul> <li>ISPDB<br> IPSDB は Mozilla Messaging によって管理されているデータベースで,誰でもその中にある情報を利用することができます.現在は非常に大規模な ISP 向けの設定を中心に保持していますが,早く全ユーザの 50 % 程度をカバーできるぐらいの情報を提供したいと考えています.<br> この ISPDB は,マイクロソフトなどの巨大な ISP が,後述する Mozilla 用の情報をすぐに提供してくれるとは考えられなかったために用意されました.</li> <li>ISP での設定ファイルサーバ<br> ISP は autoconfig.<domain> というドメインで設定情報提供サーバを用意することができます.このサーバは,ユーザからのリクエストを受け付けると,静的な XML 形式(詳細は後述します)で設定ファイルを返却します.ユーザのメールアドレスにサーバへのログイン名が含まれないなど複雑な場合には,(内部でメールアドレスからのログイン名ルックアップなどを行ない)XML ファイルを動的に生成する必要があります.このような場合には,この設定ファイルサーバを用意する方式が,自動設定機能用の情報を提供するための唯一の方法となります.</li> <li>ディスク上の設定ファイル<br> 管理者が Thunderbird のインストールディレクトリに設定ファイルを配置するという方法も存在します. この方法は,企業が社員の PC へ Thunderbird を導入する際,設定ファイル用のサーバを用意せずに自動設定を行えるようにする,というユースケースを想定して用意されました.そのため,それ以外の場面ではこの方法はあまり実用的ではありません.というのも,設定ファイルを一度配置してしまうと,その後で更新を行なうことが難しいためです.よって,公共の ISP は設定ファイルサーバを準備する必要があるでしょう.</li> <li>推測<br> 上で述べた方式が全て失敗した場合,Thunderbird はサーバの設定を推測します.imap.<domain>, smtp.<domain>, mail.<domain> のように,一般的なサーバの名前を試し,サーバから応答があったら,そのサーバが SSL や STARTTLS, そして暗号化パスワード (CRAM-MD5) をサポートするかをチェックします.</li> <li>手動設定<br> 推測にも失敗してしまった場合は,ユーザに手動で設定を行なってもらう必要があります.また,上記の自動取得によってうまく情報が設定された場合にも,ユーザはあとからその情報を修正することができます.</li> -</ul> <p>全てのルックアップ (lookup) メカニズムは「Email アドレスのドメイン部分」をベースとして使います.例えばメールアドレスが <a class="moz-txt-link-abbreviated link-mailto" href="mailto:fred@example.com">fred@example.com</a> であったときルックアップは次のような順番で行われます:</p> <ol> <li>PC 内から <em>Thunderbird のインストール先</em>/isp/example.com.xml を探す</li> <li>autoconfig.example.com をチェック</li> <li>"example.com" を ISPDB 中から探す</li> <li>DNS から"MX example.com" を探し, mx1.mail.hoster.com 向けに ISPDB 中から "hoster.com" を探す</li> <li>それでも駄目なら imap.example.com, smtp.example.com などを試す(推測)</li> -</ol> <p>将来的には DNS SRV もサポートする予定です.</p> <h1 id="自動設定機能をサポートする方法">自動設定機能をサポートする方法</h1> <h2 id="分類">分類</h2> <p> ユーザ数が 100,000 人を超えるような大きな ISP で,"example.com" や "example.de" など数種類のドメインしか提供しない場合は,ISPDB へ設定を登録しても良いですし,設定ファイルサーバを立てても良いでしょう. しかし,サーバが Email アドレスのエイリアスをサポートしていたり,ログイン名がメールアドレスに含まれてないような場合(例えば,メールアドレスは <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a> なのに IMAP/POP/SMTP のログイン名が "hero" でも <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a> でもなく, "u67578" であるような場合など)は Email アドレスからログイン名をルックアップしてくれるような設定サーバを用意する必要があります. -</p> <p>サーバがカスタマードメインをサポートしている場合(例えば ISP としては"hoster.com" を提供しているのに,ユーザが "<a class=" link-mailto" href="mailto:fred@flintstone.com" rel="freelink">fred@flintstone.com</a>" と"<a class=" link-mailto" href="mailto:louis@kent.com" rel="freelink">louis@kent.com</a>" を利用する場合)は,設定ファイルサーバを用意する必要があります.この場合,DNS MX に頼っても良いでしょう.</p> <p>比較的小さな企業が社員の PC へ Thunderbird をインストールしようとしている場合は,設定ファイルを Thunderbird のインストール先に配置しておくのが良いでしょう.</p> <h2 id="ISPDB">ISPDB</h2> <p>データベースの URL は <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/" title="https://live.mozillamessaging.com/autoconfig/v1.1/"><https://live.mozillamessaging.com/autoconfig/v1.1/></a> にドメイン名を付け加えたものとなります(例: <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de" title="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de"><https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de></a>).</p> <p>現段階での登録方法は,次のとおりです: まず Bugzilla にバグを立てて下さい.このとき Product に "Mozilla Messaging", Component に "ispdb" を指定します.そして,以下で説明する要件を満たした設定ファイルを添付します.その後 bwinton, gozer, ben.bucksch の内の誰かへレビューを依頼して下さい.</p> <p>将来的には,単純に設定ファイルを <a class=" link-https" href="https://ispdb.mozillamessaging.com">ISPDB サーバ</a>へアップロードして登録するだけで良いようにしたいと考えています.</p> <h2 id="ISP_サーバにおける設定ファイル">ISP サーバにおける設定ファイル</h2> <p>Email アドレスが <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@example.com">"fred@example.com"</a> のとき,Thunderbird はまず <<span class="external free"><a class="moz-txt-link-freetext external" href="http://autoconfig.example.com/mail/config-v1.xml?emailaddress=fred@example.com">http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</a></span>> をチェックし,次に <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml" title="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml"><http://example.com/.well-known/autoconfig/mail/config-v1.1.xml></a> をチェックします.</p> <h3 id="小さな企業">小さな企業</h3> <p>小さな企業では,<a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml"><http://example.com/.well-known/autoconfig/mail/config-v1.1.xml></a> といったアドレスで XML 形式の設定ファイルを単にサーバへ配置するだけで OK です.</p> <h3 id="ドメイン保有者_(ISP)">ドメイン保有者 (ISP)</h3> <p>ISP 自体は hoster.com というアドレスを提供しているが,ISP のユーザは fancy.com や example.com といったアドレスを登録しており,そういったアドレス向けにメールを扱う必要がある,といった場合には自動設定サーバを用意する必要があります.</p> <h4 id="DNS">DNS</h4> <p>ISP ユーザのドメイン毎に DNS レコードを追加します(MX, A www など,既存のものに加えてください):<br> <code>autoconfig IN A 10.2.3.4</code><br> や<br> <code>autoconfig IN CNAME autoconfig.hoster.com</code>.<br> 10.2.3.4 や autoconfig.hoster.com は自分の IP アドレス / ホスト名へ変更してください.<br> こうすることにより Thunderbird へ自分が hoster であることを伝えることができます.</p> <h4 id="Web_サーバ">Web サーバ</h4> <p>物理的な IP アドレスへ割り当てられた Web サーバを準備する必要があります.他の Web サーバと同じマシンで稼働させることも可能ですが,<br> <br> Web サーバは,独自ドメインを利用している全ての IPS ユーザのドメイン(autoconfig.*)へマッチするバーチャルホストを使用する必要があります.このとき Apache 用語で言うところの "IP ベースなバーチャルホスト" を利用することができます.これは Apache の設定ファイルにおける「Listen 10.2.3.4:80」を意味します(もちろん,自分の持っている IP アドレスを使うようにしてください)</p> <pre> <VirtualHost 10.2.3.4:80> # バーチャルホスト設定は,一つの IP に対して必ず一つだけ用意してください! - DocumentRoot /var/www/autoconfig/ - ServerName autoconfig.hoster.com - <Directory /var/www/autoconfig> - Order allow,deny - allow from all - </Directory> - </VirtualHost></pre> <p>設定ファイルを,サーバの /mail/config-v1.1.xml といった URL に配置します.</p> <p>設定ファイルは <code>Content-Type: text/xml</code> (もしくは <code>application/xml</code>)で送信するようにして下さい.それ以外の Content Type で提供されたファイルは無視されます.また,設定ファイルが非 ASCII 文字を含む場合は UTF-8 をエンコーディングとして利用してください.</p> <p>ネームベースのバーチャルホストを使用する場合,全ユーザのドメイン向けに autoconfig サブドメインを用意するのは面倒です.このような場合は,autoconfig.* subdomains にマッチする Rewriterule をデフォルトのバーチャルホスト(Debian では /etc/apache2/sites-enabled/000-default)に用意しておけば良いでしょう:</p> <pre> <VirtualHost *:80> # バーチャルホスト - ServerAdmin webmaster@hoster.com - ServerName www - DocumentRoot /var/www - RewriteEngine On - RewriteCond %{HTTP_HOST} ^autoconfig\. [NC] - RewriteRule ^/(.*) http://autoconfig.hoster.com/$1 [L,R=301] - #... - </VirtualHost> - <VirtualHost *:80> - DocumentRoot /var/www/autoconfig/ - ServerName autoconfig.hoster.com - <Directory /var/www/autoconfig> - Order allow,deny - allow from all - </Directory> - </VirtualHost> -</pre> <h2 id="設定ファイル">設定ファイル</h2> <p><a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">設定ファイルの作成方法</a> と <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">設定ファイルの定義</a> に詳しい情報があります.</p> <p>{{ languages( { "en": "en/Thunderbird/Autoconfiguration" } ) }}</p> diff --git a/files/ja/mozilla/thunderbird/content_tabs/index.html b/files/ja/mozilla/thunderbird/content_tabs/index.html deleted file mode 100644 index 17005908dc..0000000000 --- a/files/ja/mozilla/thunderbird/content_tabs/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Content Tabs -slug: Mozilla/Thunderbird/Content_Tabs -translation_of: Mozilla/Thunderbird/Content_Tabs ---- -<div class="blockIndicator standardNote"> -<p>この記事は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Thunderbird/Releases/3">Thunderbird 3</a> の新機能について述べています</p> -</div> -<p>Content Tab を使うと Thunderbird でタブの中に、ユーザがブラウザと(ほとんど)同じように閲覧可能なリモートコンテンツを表示できるようになります。例えば、Thunderbird の <strong>ヘルプ | 新着情報</strong> メニューオプションはウェブコンテンツを表示するタブを開きます。Thunderbird チームはウェブサイトを経由してこのコンテンツをいつでも更新することができます。</p> -<p>Content Tabs はフォーム、自動補完、パスワードマネージャ、Cookie、クイック検索、その他のブラウザの機能を活用することができます。</p> -<h2 id="Content_Tab_を開く">Content Tab を開く</h2> -<p>Content Tab は <a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/tabmail.xml">tabmail</a> インタフェースを経由して開かれます。以下の例では、新着メッセージをタブに開くかメッセージウィンドウに開くかのユーザ設定を調べ、Thunderbird のナイトリービルドのための「新着情報」ページを(ユーザの設定に応じて、Content Tab または新規メッセージウィンドウに)表示します。</p> -<pre class="brush: js">let url = "http://www.mozillamessaging.com/en-US/thunderbird/nightly/whatsnew/"; -let tabmail = document.getElementById("tabmail"); -if (!tabmail) { - // Try opening new tabs in an existing 3pane window - let mail3PaneWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator) - .getMostRecentWindow("mail:3pane"); - if (mail3PaneWindow) { - tabmail = mail3PaneWindow.document.getElementById("tabmail"); - mail3PaneWindow.focus(); - } -} - -if (tabmail) - tabmail.openTab("contentTab", {contentPage: url}); -else - window.openDialog("chrome://messenger/content/", "_blank", - "chrome,dialog=no,all", null, - { tabType: "contentTab", - tabParams: {contentPage: url} }); -</pre> -<p>Content Tab に何かを開くのをテストするには、以下の内容をエラーコンソールに入力して <strong>コードを評価</strong> をクリックします:</p> -<pre class="brush: js">Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("mail:3pane").document.getElementById("tabmail").openTab("contentTab", {contentPage: "http://www.mozillamessaging.com/en-US/thunderbird/nightly/whatsnew/"}); -</pre> -<p>上の例はいずれもデフォルトのクリックハンドラで Content Tab を開きます。</p> -<h2 id="クリックのハンドリング">クリックのハンドリング</h2> -<p>Content Tab を指定されたクリックハンドラを用いずに開くには <code><a class=" external" href="http://mxr.mozilla.org/comm-central/search?string=defaultClickHandler&find=/mail" title="http://mxr.mozilla.org/comm-central/search?string=defaultClickHandler&find=/mail">defaultClickHandler</a></code> を使用します。デフォルトのクリックハンドラはすべての <code>about:、</code><code>http:、</code><code>https:</code> リンクを外部のブラウザに送り、それ以外は <code>network.protocol-handler.expose.*</code> の設定に応じて内部なたは外部にロードします。</p> -<p>Contents Tab を開くときに <code>clickHandler</code> 引数を与えることによって明示的に <code>defaultClickHandler</code> を定義することができます。これは <code>clickHandler を定義しない場合と等価であることに注意してください</code>:</p> -<pre class="brush: js">tabmail.openTab("contentTab", {contentPage: url, - clickHandler: "specialTabs.defaultClickHandler(event);" }); -</pre> -<p><code>clickHandler</code> は <code>contentTab</code> のために生成されたブラウザ要素の <code>onclick</code> 属性に挿入される値です。</p> -<h3 id="閲覧するサイトを制限する">閲覧するサイトを制限する</h3> -<p>Thunderbird は <a href="/ja/Core_JavaScript_1.5_Guide/Regular_Expressions" title="ja/Core JavaScript 1.5 Guide/Regular Expressions">正規表現</a> を引数に持つ <a class=" external" href="http://mxr.mozilla.org/comm-central/search?string=siteClickHandler&find=/mail" title="http://mxr.mozilla.org/comm-central/search?string=siteClickHandler&find=/mail">siteClickHandler</a> を提供します。これにより以下の機能が実現されます:</p> -<ul> <li>クリックされたリンクが <code>http</code> または <code>https</code> スキームを持っており、正規表現がそのリンクにマッチしない場合、リンクは外部ブラウザで開かれます。</li> <li>それ以外は、リンクはブラウザ要素の内部に開かれます(そして <code>network.protocol-handler.expose.*</code> 設定にしたがって)。</li> -</ul> -<div class="blockIndicator note"><strong>註:</strong> <code>http</code> の制限とリダイレクトの可能性により、サイトが変わったり JavaScript を使用したりすると、<code>onclick</code> ハンドラは <code>contentTab</code> がひとつのサイトにとどまることを保証することができなくなるかもしれません。この機能を使用する拡張機能はハンドラを実装するときにこのことを考慮すべきです。</div> -<p>サイト制限の良い例が <a class=" link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/10900" title="https://addons.mozilla.org/en-US/thunderbird/addon/10900">Personas</a> 拡張機能です。これはギャラリーを閲覧するための Content Tab を開きますが、ユーザがサイトの外に出ようとするとそれは外部ブラウザに飛ばされ、一般的な閲覧のためにより良いサポートを提供します。これを実現するコードは比較的単純であり、簡単に書くと以下のようになります:</p> -<pre class="brush: js">let PersonasController = { - get _thunderbirdRegExp() { - delete this._thunderbirdRegExp; - return this._thunderbirdRegExp = new RegExp("^http://www.getpersonas.com/"); - }, - - - openURLInTab: function (url) { - ... - openTab("contentTab", { contentPage: url, - clickHandler: "specialTabs.siteClickHandler(event, PersonaController._thunderbirdRegExp);" }); - ... - } -}; -</pre> -<h3 id="その他のクリックハンドラ">その他のクリックハンドラ</h3> -<p>拡張機能は自分自身のクリックハンドラを提供できますが、それは <a class=" external" href="http://mxr.mozilla.org/comm-central/search?string=siteClickHandler&find=/mail" title="http://mxr.mozilla.org/comm-central/search?string=siteClickHandler&find=/mail">siteClickHandler</a> を元にすべきであり、バグを修正する更新を定期的にチェックするべきです。</p> -<h3 id="クリックハンドラを保存する">クリックハンドラを保存する</h3> -<p>Content Tabs は <a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/tabmail.xml">tabmail</a> が提供するセッション保存コードによってフックアップされます。クリックハンドラは Content Tab の URL と一緒に保存され、アプリケーションが再起動したときに復元されます。</p> -<h2 id="Content_Tab_を拡張する">Content Tab を拡張する</h2> -<p>拡張機能は Content Tab を二つの方法で拡張できます: 現在の Content Tab コードを拡張する事によって(これはすべての拡張機能に影響します)または、自信のテンプレートとサポートコードによって。</p> -<p>専用タイプを実装するには、以下を参照してください:</p> -<ul> <li><a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/specialTabs.xul">specialTabs.xul</a> - Content Tab の XUL テンプレート</li> <li><a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/specialTabs.js">specialTabs.js</a> - Content Tab の JavaScript 実装(<code>contentTabType</code> を参照)</li> -</ul> -<h2 id="セキュリティ">セキュリティ</h2> -<p>拡張機能はセキュリティに注意すべきです。Thunderbird はデフォルトではブラウジングをサポートしていないので、今のところは最小限のセキュリティ UI しか提供していません。考慮すべきセキュリティ課題には以下が含まれます:</p> -<ul> <li>URL バーを提供する</li> <li>セキュリティレベルを表示する</li> <li>このページ(<a href="/En/Displaying_web_content_in_an_extension_without_security_issues" title="En/Displaying web - content in an extension without security issues">displaying web content in an extension</a>)には関連情報が含まれています。</li> -</ul> -<h2 id="参照">参照</h2> -<p>Thunderbird の Content Tab 実装に関するバグは <a class=" link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird">Bugzilla</a> に登録してください。最初に <a class=" link-https" href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&product=Thunderbird&component=Toolbars+and+Tabs&resolution=---" title="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&product=Thunderbird&component=Toolbars+and+Tabs&resolution=---">existing known bugs</a> をチェックしてください。あなたのバグが新しいものであれば、バグを作成するときに "Thunderbird" プロダクトと "Toolbars and Tabs" コンポーネントを指定してください。</p> diff --git a/files/ja/mozilla/thunderbird/cookies_in_thunderbird/index.html b/files/ja/mozilla/thunderbird/cookies_in_thunderbird/index.html deleted file mode 100644 index 04b0da043f..0000000000 --- a/files/ja/mozilla/thunderbird/cookies_in_thunderbird/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Cookies In Thunderbird -slug: Mozilla/Thunderbird/Cookies_In_Thunderbird -tags: - - Cookies - - thunderbird -translation_of: Mozilla/Thunderbird/Cookies_In_Thunderbird ---- -<div class="blockIndicator standardNote"> -<p>この記事は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Thunderbird/Releases/3">Thunderbird 3</a> の新機能について述べています</p> -</div> -<p>Thunderbird 3 より前のバージョンの Cookie ポリシーは、(RSS に対するものだけで) とても限定的でした。Thunderbird 3 では、<a class="internal" href="/ja/Gecko" title="ja/Gecko">Gecko</a> の Cookie ポリシーをいくつかの変更を加えて利用します。</p> -<ul> <li>mailnews でない URL または場所 (リモートコンテンツ) の Cookie は有効になります。</li> <li>メール内のリモートコンテンツは Cookie を使用できますが、ユーザがメール内のリモートコンテンツの表示を許可した場合に限ります。</li> <li>RSS フィードアイテムの表示は、Web ページと同様に Cookie が許可されます。</li> -</ul> -<p>これらはすべて、Gecko の Cookie ポリシーが、その内部のポリシーとユーザ設定を基に Cookie を許可していることを条件とします。</p> -<h2 id="危険性">危険性</h2> -<p>新しい Cookie ポリシーは、次の領域や方法において、危険性やリスクを引き起こすかもしれません:</p> -<ul> <li>メールに、メールアドレスと関連付けられた Cookie を許可する <ul> <li><img src="<a class=" external" href="http://tracker.net/?email=you@example.com" rel="freelink">http://tracker.net/?email=you@example.com</a>"> は、tracker.net が Cookie をセットし、後でページを表示することで Cookie とメールアドレスまたはプロファイルを読む。</li> <li>シナリオ: nytimes.com がメールに Web バグを埋め込んで日刊ニュースを送信し、そこから RSS を読んだすべてのメールアドレスまたは識別子を追跡する。</li> </ul> </li> -</ul> -<h3 id="リファレンス">リファレンス</h3> -<ul> <li><a class="internal" href="/ja/Gecko" title="ja/Gecko">Gecko</a> における Cookie の詳しい情報は、<a class="internal" href="/Special:Tags?tag=Cookies" title="Special:Tags?tag=Cookies">Cookies</a> タグの付いたページを参照してください。</li> -</ul> -<div class="noinclude"> - -</div> diff --git a/files/ja/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html b/files/ja/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html deleted file mode 100644 index 04aef45824..0000000000 --- a/files/ja/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Thunderbird の法人導入 -slug: Mozilla/Thunderbird/Deploying_Thunderbird_in_the_Enterprise -tags: - - Thunderbird 3 - - enterprise - - thunderbird -translation_of: Mozilla/Thunderbird/Deploying_Thunderbird_in_the_Enterprise ---- -<h2 id="ドキュメント">ドキュメント</h2> -<ul> <li><a href="/en/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Upgrading_Thunderbird_in_the_Enterprise" title="ja/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Upgrading_Thunderbird_in_the_Enterprise">企業における Thunderbird のアップグレード</a> (英語)</li> <li><a href="/en/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Thunderbird_Preferences_Relevant_to_Enterprises" title="ja/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Thunderbird_Preferences_Relevant_to_Enterprises">企業での利用を想定した Thunderbird の設定項目</a> (英語)</li> <li><a href="/ja/Thunderbird/LDAP_Support" title="ja/Thunderbird/LDAP_Support">Thunderbird の LDAP 対応を利用したカスタマイズ</a></li> <li><a href="/ja/Thunderbird/Autoconfiguration" title="ja/Thunderbird/Autoconfiguration">Thunderbird のアカウント情報自動設定機能</a></li> <li><a href="/ja/Thunderbird/Mail_Account_Setup_Wizard" title="ja/Thunderbird/Mail_Account_Setup_Wizard">メールアカウント設定ウィザードの概要とカスタマイズ</a></li> <li><a href="/ja/MCD/Getting_Started" title="ja/MCD/Getting_Started">Firefox や Thunderbird の設定項目を管理者が一括指定する方法</a></li> <li><a href="/ja/Setting_up_an_update_server" title="ja/Setting_up_an_update_server">企業内で独自にソフトウェアの更新管理を行うサーバを構築する方法</a></li> -</ul><h2 id="関連情報">関連情報</h2> -<ul> <li><a class=" external" href="http://mozilla.jp/business/">Mozilla Japan の法人向け情報 - 導入事例、よくある質問など</a></li> <li><a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Enterprise">企業導入を推進するコミュニティ、資料、ニュースを掲載した Wiki</a></li> -</ul> -<p>{{ languages( { "en": "en/Thunderbird/Deploying_Thunderbird_in_the_Enterprise" } ) }}</p> diff --git a/files/ja/mozilla/thunderbird/index.html b/files/ja/mozilla/thunderbird/index.html deleted file mode 100644 index 90d72cc02b..0000000000 --- a/files/ja/mozilla/thunderbird/index.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Thunderbird -slug: Mozilla/Thunderbird -tags: - - thunderbird -translation_of: Mozilla/Thunderbird ---- -<p><span class="seoSummary"><a href="https://www.thunderbird.net/">Thunderbird</a> は、<a href="https://wiki.mozilla.org/Thunderbird:Home">Thunderbird コミュニティ</a>によって管理され、開発されたメール/メッセージングアプリケーションです。これらのページには、<a href="http://www.seamonkey-project.org/">Seamonkey</a> や <a href="http://postbox-inc.com/">Postbox</a> などの他のプロジェクトでも使用されている Thunderbird と<a href="https://developer.mozilla.org/en-US/docs/tag/MailNews" title="tag/MailNews">MailNews</a> バックエンドが記載されています。</span></p> - -<p>Thunderbird is built on the same technical platform as the Firefox web browser. Currently one of the most popular open source email clients, it is used by tens of millions of people around the world to bring together all their email accounts, chat, newsgroup and feed reading in a familiar high-productivity environment. (From early 2007 to early 2011 Thunderbird was developed by <a class="link-https" href="https://en.wikipedia.org/wiki/Mozilla_Messaging" title="https://en.wikipedia.org/wiki/Mozilla_Messaging">Mozilla Messaging</a>, a subsidiary owned by Mozilla.)</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> - - <dl> - <dt><a href="https://developer.mozilla.org/en-US/docs/Simple_Thunderbird_build" title="Simple Thunderbird build">Building Thunderbird</a></dt> - <dd>Information about building Thunderbird with the <a href="/en-US/docs/comm-central" title="comm-central">comm-central</a> repository. There's also information about <a href="/en-US/docs/How_comm-central%27s_build_system_works" title="How_comm-central's_build_system_works">how comm-central works</a>, how the <a href="/en-US/docs/Mailnews_and_Mail_code_review_requirements" title="Mailnews and Mail code review requirements">review process works</a> and how to use the <a href="/en-US/docs/Using_the_Mozilla_symbol_server" title="Using the Mozilla symbol server">Mozilla symbol server</a> to help with debugging.</dd> - <dt><a href="/en-US/docs/MailNews_Protocols" title="MailNews_Protocols">MailNews Protocols</a></dt> - <dd>Rough documentation about mail protocols..</dd> - <dt><a href="/en-US/docs/DB_Views_%28message_lists%29" title="DB_Views_(message_lists)">Database views</a></dt> - <dd>Backend information about {{ Interface("nsIMsgDBView") }} and related interfaces..</dd> - <dt><a href="/en-US/docs/Thunderbird/Thunderbird_API_documentation" title="Thunderbird API documentation">Thunderbird API documentation</a></dt> - <dd>Thunderbird API documentation</dd> - <dt><a href="/en-US/docs/Extensions/Thunderbird" title="Extensions/Thunderbird/">Extension documentation</a></dt> - <dd>Tutorials and tips for building Thunderbird extensions</dd> - <dt><a href="/en-US/docs/Thunderbird/Thunderbird_Automated_Testing" title="Thunderbird Automated Testing">Automated Testing</a></dt> - <dd>Details of Thunderbird's automated testing facilities</dd> - <dt><a href="/en-US/docs/Thunderbird/Thunderbird_in_the_Enterprise" title="Thunderbird in the Enterprise">Thunderbird in the Enterprise</a></dt> - <dd>Help with deploying Thunderbird in large organizations</dd> - </dl> - - <p><span class="alllinks"><a href="/en-US/docs/tag/Thunderbird" title="tag/Thunderbird">View All...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community">Community</h2> - - <ul> - <li><a href="https://www.thunderbird.net/">Thunderbird product home page</a></li> - <li><a href="https://wiki.mozilla.org/Thunderbird:Home">Thunderbird project community pages</a></li> - <li>User support is handled at <a href="https://support.mozilla.org/en-US/products/thunderbird">Mozilla Support</a></li> - <li>Extensions questions are frequently discussed on the dev-apps-thunderbird group: {{ DiscussionList("dev-apps-thunderbird", "mozilla.dev.apps.thunderbird") }}</li> - <li>Development discussion happens on the tb-planning mailing list: - <ul> - <li><a class="link-https" href="https://mail.mozilla.org/listinfo/tb-planning" title="https://mail.mozilla.org/listinfo/tb-planning">subscribe</a></li> - <li><a class="link-https" href="https://mail.mozilla.org/pipermail/tb-planning/" title="https://mail.mozilla.org/pipermail/tb-planning/">archives</a></li> - </ul> - </li> - <li><a href="http://forums.mozillazine.org/viewforum.php?f=50">Mozillazine forums</a></li> - <li><a href="http://www.mozillamessaging.com/">Mozilla Messaging web page</a></li> - <li><a class="link-irc" href="irc://irc.mozilla.org/thunderbird">#thunderbird on irc.mozilla.org</a> (for Users)</li> - <li><a class="link-irc" href="irc://irc.mozilla.org/maildev">#maildev on irc.mozilla.org</a> (for Developers)</li> - <li>a list of all <a href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="Thunderbird communication channels">Thunderbird communication channels</a></li> - </ul> - - <h2 class="Tools" id="Tools" name="Tools">Tools</h2> - - <ul> - <li><a href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extension developer's extension</a></li> - <li><a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li> - </ul> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/thunderbird/ldap_support/index.html b/files/ja/mozilla/thunderbird/ldap_support/index.html deleted file mode 100644 index b34d723e56..0000000000 --- a/files/ja/mozilla/thunderbird/ldap_support/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Thunderbird の LDAP 対応を利用したカスタマイズ -slug: Mozilla/Thunderbird/LDAP_Support -tags: - - Administration - - enterprise - - thunderbird ---- -<p>このドキュメントは、ビジネスユーザが Mozilla Thunderbird の LDAP 対応を活用しカスタマイズする方法を補足するために書かれました。LDAP や Mozilla 製品そのものの解説ではありません。読者が、Thunderbird で LDAP ディレクトリを使用する設定に加えて、社内に展開している製品の設定項目を変更する方法について既に知っていることを前提としています。なお、このドキュメントに書かれているすべての情報は、Thunderbird と SeaMonkey アプリケーションスイートの両方で有効です。</p> -<h2 id="メール編集画面での自動補完">メール編集画面での自動補完</h2> -<p>メール編集画面では、メールアドレスの一部を入力するだけで、アドレス帳や LDAP ディレクトリに登録されている項目に一致するアドレスの候補がドロップダウンリストで表示されます。大企業では、同じ姓のユーザが多数ディレクトリに登録されている場合もあるでしょう。そうした場合、どの人物が実際にメッセージを送りたい相手なのかを見分けることが難しくなります。Thunderbird では、このドロップダウンリストをカスタマイズして、任意の LDAP 属性を表示させることができます。これは以下のような設定を行うことで実現可能です。</p> -<pre> user_pref("mail.autoComplete.commentColumn", 2); - user_pref("ldap_2.servers.<em>ディレクトリ名</em>.autoComplete.commentFormat", "[ou]"); -</pre> -<p>最初の設定項目は、ドロップダウンリストにコメント欄を表示させるという意味で (初期値は 0 でコメントは表示されません)、コメントの値は各ディレクト固有のカスタム文字列です。次の commentFormat という設定は、必ず各ディレクトリごとに設定する必要があります。この設定はテンプレートの働きをして、コメント欄に追加させたい追加の LDAP 属性と、その属性をどのような形式で表示するかを指定します。これは以下のような書式で記述します。</p> -<ul> <li>目的の LDAP 属性は角括弧で囲みます。上の例では、LDAP 属性の部署名を設定しています。</li> <li>また、任意の文字列を挿入して、LDAP 属性を明示することもできます。例えば「所属: [ou]」と記述した場合、ドロップダウンリストには「山田太郎 所属: 営業部」のように表示されます。</li> -</ul><h2 id="LDAP_スキーマ">LDAP スキーマ</h2> -<p>次の表は、Thunderbird が LDAP 属性とアドレス帳内の属性をマッピングするのに使用しているスキーマを要約したものです。この関係には以下のような注意点があります。</p> -<ul> <li>LDAP 属性とそれに相当するアドレス帳属性には、多対一の関係が存在します。</li> <li>アドレス帳属性とそれに相当する LDAP 属性には、一対一の関係が存在します。ひとつのアドレス帳属性に複数の項目があった場合、最初の項目が優先します。</li> -</ul> -<p>これらの関係は、LDAP 属性をアドレス帳属性にマッピングする際に普遍性が維持され、LDAP サーバに保存されているアドレス帳属性を編集する際にも逆の一貫性が保たれるように配慮されています。</p> -<table> <tbody> <tr> <th>アドレス帳の属性</th> <th>LDAP 属性</th> </tr> <tr> <td>FirstName</td> <td>givenname</td> </tr> <tr> <td>LastName</td> <td>sn</td> </tr> <tr> <td>LastName</td> <td>surname</td> </tr> <tr> <td>DisplayName</td> <td>cn</td> </tr> <tr> <td>DisplayName</td> <td>commonname</td> </tr> <tr> <td>DisplayName</td> <td>displayname</td> </tr> <tr> <td>NickName</td> <td>xmozillanickname</td> </tr> <tr> <td>PrimaryEmail</td> <td>mail</td> </tr> <tr> <td>SecondEmail</td> <td>xmozillasecondemail</td> </tr> <tr> <td>WorkPhone</td> <td>telephonenumber</td> </tr> <tr> <td>HomePhone</td> <td>homephone</td> </tr> <tr> <td>FaxNumber</td> <td>fax</td> </tr> <tr> <td>FaxNumber</td> <td>facsimiletelephonenumber</td> </tr> <tr> <td>PagerNumber</td> <td>pager</td> </tr> <tr> <td>PagerNumber</td> <td>pagerphone</td> </tr> <tr> <td>CellularNumber</td> <td>mobile</td> </tr> <tr> <td>CellularNumber</td> <td>cellphone</td> </tr> <tr> <td>CellularNumber</td> <td>carphone</td> </tr> <tr> <td>WorkAddress</td> <td>postofficebox</td> </tr> <tr> <td>WorkAddress</td> <td>streetaddress</td> </tr> <tr> <td>WorkCity</td> <td>l</td> </tr> <tr> <td>WorkCity</td> <td>locality</td> </tr> <tr> <td>WorkState</td> <td>st</td> </tr> <tr> <td>WorkState</td> <td>region</td> </tr> <tr> <td>WorkZipCode</td> <td>postalcode</td> </tr> <tr> <td>WorkZipCode</td> <td>zip</td> </tr> <tr> <td>WorkCountry</td> <td>countryname</td> </tr> <tr> <td>JobTitle</td> <td>title</td> </tr> <tr> <td>Department</td> <td>ou</td> </tr> <tr> <td>Department</td> <td>orgunit</td> </tr> <tr> <td>Department</td> <td>department</td> </tr> <tr> <td>Department</td> <td>departmentnumber</td> </tr> <tr> <td>Company</td> <td>o</td> </tr> <tr> <td>Company</td> <td>company</td> </tr> <tr> <td>WorkCountry</td> <td>countryname</td> </tr> <tr> <td>_AimScreenName</td> <td>nscpaimscreenname</td> </tr> <tr> <td>WebPage1</td> <td>workurl</td> </tr> <tr> <td>WebPage2</td> <td>homeurl</td> </tr> <tr> <td>BirthYear</td> <td>birthyear</td> </tr> <tr> <td>Custom1</td> <td>custom1</td> </tr> <tr> <td>Custom2</td> <td>custom2</td> </tr> <tr> <td>Custom3</td> <td>custom3</td> </tr> <tr> <td>Custom4</td> <td>custom4</td> </tr> <tr> <td>Notes</td> <td>notes</td> </tr> <tr> <td>Notes</td> <td>description</td> </tr> <tr> <td>PreferMailFormat</td> <td>xmozillausehtmlmail</td> </tr> <tr> <td>LastModifiedDate</td> <td>modifytimestamp</td> </tr> </tbody> -</table> -<h2 id="独自の_LDAP_属性">独自の LDAP 属性</h2> -<p>Thunderbird は様々なアドレス帳属性に対する独自の LDAP 属性に対応しています。詳しくは <a class=" external" href="http://bugzilla.mozilla.org/show_bug.cgi?id=119291">Bug 119291</a> をご覧ください。</p> -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information">原文書の情報</h2> - -<ul> <li>著者: Scott MacGregor</li> <li>著作権情報: Portions of this content are © 1998–2010 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li> -</ul> -</div> -<p>{{ languages( { "en": "en/LDAP_Support_in_Thunderbird" } ) }}</p> diff --git a/files/ja/mozilla/thunderbird/mail_account_setup_wizard/index.html b/files/ja/mozilla/thunderbird/mail_account_setup_wizard/index.html deleted file mode 100644 index 94ab2aae4c..0000000000 --- a/files/ja/mozilla/thunderbird/mail_account_setup_wizard/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: メールアカウント設定ウィザードの概要とカスタマイズ -slug: Mozilla/Thunderbird/Mail_Account_Setup_Wizard -tags: - - Administration - - enterprise - - thunderbird ---- -<p><strong>このドキュメントはドラフトです。</strong></p> -<p>Thunderbird 3 には、新しい「メールアカウント設定ウィザード」が備わっています。ここでは、名前とメールアドレス、パスワードさえ入力すれば、ISP データベースなどが参照され、サーバ設定情報が見つかった場合は自動的に設定が完了します。</p> -<p>注: ISP には、フリーメールサービス事業者も含まれます。</p> -<h2 id="アカウント設定の流れ">アカウント設定の流れ</h2> -<p>Thunderbird は以下の順番で XML 形式のサーバ設定情報を確認します。実際の処理は <a class=" external" href="http://mxr.mozilla.org/comm-central/source/mailnews/base/prefs/content/accountcreation/emailWizard.js">emailWizard.js</a> と <a class=" external" href="http://mxr.mozilla.org/comm-central/source/mailnews/base/prefs/content/accountcreation/fetchConfig.js">fetchConfig.js</a> で確認できます。</p> -<ol> <li>ローカルディスク内の設定ファイルを参照</li> <li>ISP が公開しているのデータベースを参照 (Thunderbird 3.1 以上)</li> <li>Mozilla のデータベースを参照</li> <li>ポートスキャンを行ってサーバを特定</li> -</ol> -<h3 id="ローカルディスク内の設定ファイルを参照">ローカルディスク内の設定ファイルを参照</h3> -<p>Thunderbird はまず、インストールディレクトリの isp フォルダにある XML ファイルを探します。例えばあなたの会社 (メールアドレス) のドメイン名が <code>example.com</code> だった場合、これは Windows では</p> -<ul> <li><code>C:¥Program Files¥Mozilla Thunderbird¥isp¥example.com.xml</code></li> -</ul> -<p>になります。このファイルは通常存在しません。ファイルが見つかって設定が確認できた場合、Thunderbird はアカウント設定を完了します。</p> -<p>企業の情報システム部門では、この仕組みを利用してあらかじめ設定ファイルを組み込んだ Thunderbird 配布することで、社員や学生がすばやく確実にアカウント設定を行えるようにすることができます。</p> -<h3 id="ISP_が公開しているのデータベースを参照_(Thunderbird_3.1_以上)">ISP が公開しているのデータベースを参照 (Thunderbird 3.1 以上)</h3> -<p>次に Thunderbird は、あなたの ISP に設定を問い合わせます。例えばあなたの ISP (メールアドレス) のドメイン名が <code>example.net</code> だった場合、</p> -<ul> <li><code><a class=" external" href="http://autoconfig.example.net/mail/config-v1.1.xml" rel="freelink">http://autoconfig.example.net/mail/config-v1.1.xml</a></code></li> <li><code><a class=" external" href="http://autoconfig.example.net/.well-known/autoconfig/mail/config-v1.1.xml" rel="freelink">http://autoconfig.example.net/.well-...onfig-v1.1.xml</a></code></li> -</ul> -<p>が順に参照されます。Thunderbird はアカウント設定を完了します。</p> -<p>特に規模の大きい ISP では、最新の設定を効率良く提供したいと思う場合もあるでしょう。この URL の形式に合わせて設定ファイルを設置することで、会員がすばやく確実にアカウント設定を行えるようにすることができます。</p> -<h3 id="Mozilla_のデータベースを参照">Mozilla のデータベースを参照</h3> -<p>次に Thunderbird は、Mozilla Messaging のサーバにある ISP データベースを参照します。例えばあなたの ISP (メールアドレス) のドメイン名が <code>example.net</code> だった場合、</p> -<ul> <li><code><a class=" link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/example.net" rel="freelink">https://live.mozillamessaging.com/au....1/example.net</a></code></li> -</ul> -<p>が参照されます。</p> -<p>データベースには、既に <a class=" external" href="http://ispdb.mozillamessaging.com/list">様々な ISP の設定</a> が登録されています。あなたが ISP の管理者で設定を登録したい場合、あるいはあなたがお使いの ISP の設定がまだ登録されていない場合は、<a class=" external" href="http://ispdb.mozillamessaging.com/add/">ISP データベース</a> もしくは <a class=" link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Mozilla%20Messaging&component=ispdb">Bugzilla</a> で追加を依頼することもできます。</p> -<h3 id="ポートスキャンを行ってサーバを特定">ポートスキャンを行ってサーバを特定</h3> -<p>それでもなお設定が見つからない場合、Thunderbird は可能性のあるサーバを自動検出しようとします。例えばあなたの ISP (メールアドレス) のドメイン名が <code>example.net</code> だった場合、<code>pop.example.net</code>、<code>imap.example.net</code>、<code>mail.example.net</code>、<code>smtp.example.net</code> などに対し、ポートスキャンを試みます。送受信が可能なポートが見つかった場合はその設定を使用し、見つからなかった場合はユーザに手作業での設定入力を求めます。</p> -<h2 id="設定ファイルの形式">設定ファイルの形式</h2> -<p>上記の通り、サーバ設定情報ファイルは XML 形式となっています。詳しくは <a class=" link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat">Config File Format</a> をご覧ください。また、<a class=" link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/gmail.com">Gmail</a>、<a class=" link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/yahoo.com">Yahoo! Mail</a>、<a class=" link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/aol.com">AOL</a> といった実際の設定ファイルも参考にしてください。</p> -<p>Thunderbird 2 以前も、ローカルディスク内の設定ファイルを参照する仕組みはあり、Gmail と .Mac (現 MobileMe) の設定ファイルがあらかじめ組み込まれていました。詳しい情報は <a href="/ja/Thunderbird_ISP_hooks" title="ja/Thunderbird_ISP_hooks">Thunderbird ISP hooks</a> にあります。</p> -<h2 id="参考資料">参考資料</h2> -<ul> <li><a class=" link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration">https://wiki.mozilla.org/Thunderbird:Autoconfiguration</a></li> -</ul> diff --git a/files/ja/mozilla/thunderbird/releases/24/index.html b/files/ja/mozilla/thunderbird/releases/24/index.html deleted file mode 100644 index 7a25c3d534..0000000000 --- a/files/ja/mozilla/thunderbird/releases/24/index.html +++ /dev/null @@ -1,411 +0,0 @@ ---- -title: Thunderbird 24 for developers -slug: Mozilla/Thunderbird/Releases/24 -tags: - - Release - - thunderbird -translation_of: Mozilla/Thunderbird/Releases/24 ---- -<h2 id="Interfaces">Interfaces</h2> - -<h4 id="nsIImportService">nsIImportService</h4> - -<p>CreateRFC822Message: removed argument aBodyLength</p> - -<h4 id="nsIMimeConverter">nsIMimeConverter</h4> - -<p>encodeMimePartIIStr: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=834757" title="https://bugzilla.mozilla.org/show_bug.cgi?id=834757">removed</a></p> - -<h4 id="nsIMimeHeaders">nsIMimeHeaders</h4> - -<p>initialize: removed function argument allHeadersSize</p> - -<h4 id="nsIMsgAccount">nsIMsgAccount</h4> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">identities: type changed from nsISupportsArray to nsIArray</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=314806" title="https://bugzilla.mozilla.org/show_bug.cgi?id=314806">setDefaultIdentity: method now changes identity order permanently</a></li> -</ul> - -<h4 id="nsIMsgAccountManager">nsIMsgAccountManager</h4> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">accounts: type changed from nsISupportsArray to nsIArray</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">allIdentities: type changed from nsISupportsArray to nsIArray</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">allServers: type changed from nsISupportsArray to nsIArray</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">GetIdentitiesForServer: renamed to getIdentitiesForServer and type changed from nsISupportsArray to nsIArray</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">GetServersForIdentity: renamed to getServersForIdentity and type changed from nsISupportsArray to nsIArray</a></li> -</ul> - -<h4 id="nsIMsgCompFields">nsIMsgCompFields</h4> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=68784" title="https://bugzilla.mozilla.org/show_bug.cgi?id=68784">The boolean attribute hasRecipients has been added.</a></li> - <li>newshost: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=133605" title="https://bugzilla.mozilla.org/show_bug.cgi?id=133605">removed</a></li> -</ul> - -<h4 id="nsIMsgFilter">nsIMsgFilter</h4> - -<ul> - <li>actionList: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=821743" title="https://bugzilla.mozilla.org/show_bug.cgi?id=821743">removed</a></li> - <li>getSortedActionList: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=821253" title="https://bugzilla.mozilla.org/show_bug.cgi?id=821253">changed type</a></li> -</ul> - -<h4 id="nsIMsgFilterService">nsIMsgFilterService</h4> - -<p>applyFiltersToFolders: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=822131" title="https://bugzilla.mozilla.org/show_bug.cgi?id=822131">changed function argument type</a></p> - -<h4 id="nsIMsgFolder">nsIMsgFolder</h4> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=882502" title="https://bugzilla.mozilla.org/show_bug.cgi?id=882502">allowsPosting: removed</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=882502" title="https://bugzilla.mozilla.org/show_bug.cgi?id=882502">knowsSearchNntpExtension: removed</a></li> - <li>getExpansionArray: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=821236" title="https://bugzilla.mozilla.org/show_bug.cgi?id=821236">removed</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=544621" title="https://bugzilla.mozilla.org/show_bug.cgi?id=544621">clearRequiresCleanup: removed</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=544621" title="https://bugzilla.mozilla.org/show_bug.cgi?id=544621">requiresCleanup: removed</a></li> - <li>ListDescendants: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=436089" title="https://bugzilla.mozilla.org/show_bug.cgi?id=436089">function argument type changed from nsISupportsArray to nsIMutableArray</a></li> -</ul> - -<h4 id="nsIMsgProtocolInfo">nsIMsgProtocolInfo</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=832034" title="https://bugzilla.mozilla.org/show_bug.cgi?id=832034">The boolean attribute foldersCreateAsync has been added.</a></p> - -<h4 id="nsIMsgSearchAdapter">nsIMsgSearchAdapter</h4> - -<p>CurrentUrlDone: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=801383" title="https://bugzilla.mozilla.org/show_bug.cgi?id=801383">Type of function argument changed</a></p> - -<h4 id="nsIMsgSend">nsIMsgSend</h4> - -<ul> - <li>createAndSendMessage: removed argument aBodyLength</li> - <li>createRFC822Message: removed argument aBodyLength</li> -</ul> - -<h4 id="nsISmtpService">nsISmtpService</h4> - -<ul> - <li>createSmtpServer: renamed to createServer</li> - <li>deleteSmtpServer: renamed to deleteServer</li> - <li>GetSmtpServerByIdentity: renamed to getServerByIdentity</li> - <li>smtpServers: renamed to servers</li> -</ul> - -<h4 id="nsISupportsArray">nsISupportsArray</h4> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">EnumerateForwards and EnumerateBackwards: removed</a></li> -</ul> - -<h4 id="prplIAccount">prplIAccount</h4> - -<p>noNewlines: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=799068" title="https://bugzilla.mozilla.org/show_bug.cgi?id=799068">removed</a></p> - -<h2 id="Global_Functions_and_Objects">Global Functions and Objects</h2> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=776705" title="https://bugzilla.mozilla.org/show_bug.cgi?id=776705">accountManagerContractID: Removed from accountUtils.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=827017" title="https://bugzilla.mozilla.org/show_bug.cgi?id=827017">addEditorClickEventListener: removed from /editor/ui/composer/content/editor.js</a></li> - <li>AlertWithTitle: removed from /editor/ui/composer/content/editorUtilities.js, use Services.prompt instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=861767" title="https://bugzilla.mozilla.org/show_bug.cgi?id=861767">ArrangeAccountCentralItems: changed in /mailnews/base/prefs/content/AccountWizard.js</a></li> - <li>cleanUpHostname|removed from aw-incoming.js</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839279" title="https://bugzilla.mozilla.org/show_bug.cgi?id=839279">CreateHTTPEquivElement: removed from /editor/ui/dialogs/content/EdDialogCommon.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839279" title="https://bugzilla.mozilla.org/show_bug.cgi?id=839279">CreateHTTPEquivMetaElement: removed from /editor/ui/dialogs/content/EdDialogCommon.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775665" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775665">determineFilterType: removed from FilterEditor.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=271730" title="https://bugzilla.mozilla.org/show_bug.cgi?id=271730">disableEditableFields: removed from MsgComposeCommands.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=271730" title="https://bugzilla.mozilla.org/show_bug.cgi?id=271730">enableEditableFields: removed from MsgComposeCommands.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=807101" title="https://bugzilla.mozilla.org/show_bug.cgi?id=807101">enabling: renamed to LDAPenabling in am-addressing.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=252423" title="https://bugzilla.mozilla.org/show_bug.cgi?id=252423">FinishHTMLSource: removed from /editor/ui/composer/content/editor.js</a></li> - <li>FocusManager: removed from quickFilterManager.js, use Services.focus instead</li> - <li>gAccountManager: removed from /mail/components/compose/content/MsgComposeCommands.js, use MailServices.accounts instead</li> - <li>gAccountManager: removed from am-server-advanced.js, use MailServices.accounts instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=792979" title="https://bugzilla.mozilla.org/show_bug.cgi?id=792979">gAttachmentNotifier.EditAction(): Removed from MsgComposeCommands.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=823009" title="https://bugzilla.mozilla.org/show_bug.cgi?id=823009">gAttachmentNotifier.handleMutations: removed from MsgComposeCommands.js</a></li> - <li>GetHTTPEquivMetaElement: removed /editor/ui/dialogs/content/EdDialogCommon.js, use <a href="/en-US/docs/Web/API/document.querySelector" title="/en-US/docs/Web/API/document.querySelector">document.querySelector </a>instead</li> - <li>GetWindowByWindowType: removed form mailWindowOverlay.js, use Services.wm.getMostRecentWindow instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=861767" title="https://bugzilla.mozilla.org/show_bug.cgi?id=861767">getInterfaceForType: removed from /mailnews/base/prefs/content/AccountWizard.js</a></li> - <li>GetIOService: removed from /editor/ui/composer/content/editorUtilities.js, use Services.io instead</li> - <li>GetPromptService: removed from /editor/ui/composer/content/ComposerCommands.js, use Services.prompt instead</li> - <li>GetLoginManager: removed from /editor/ui/composer/content/publishprefs.js, use Services.logins instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775665" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775665">gFilterContext: removed from FilterEditor.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=807101" title="https://bugzilla.mozilla.org/show_bug.cgi?id=807101">gIdentity: removed from am-addressing.js</a></li> - <li>gIOService: removed from MsgComposeCommands.js, use Services.io instead</li> - <li>gIsOffline: removed from MsgComposeCommands.js, use Services.io.offline instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812921" title="https://bugzilla.mozilla.org/show_bug.cgi?id=812921">gLastPurpleConvId: renamed to gLastPrplConvId in imConversations.js</a></li> - <li>gMailSession: removed from /mail/components/compose/content/MsgComposeCommands.js, use MailServices.mailSession instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=852690" title="https://bugzilla.mozilla.org/show_bug.cgi?id=852690">gMimeHeaderParser: removed from /mail/components/compose/content/addressingWidgetOverlay.js</a></li> - <li>gObserver: removed from am-server.js, use Services.obs instead</li> - <li>gPrefBranch: removed from am-junk.js, use Services.prefs instead</li> - <li>gPrefBranch: removed form mailWindowOverlay.js, use Services.prefs instead</li> - <li>gPrefBranch: removed from am-copies.js, use Services.prefs instead</li> - <li>gPrefInt: removed from am-addressing.js, use Services.prefs.getIntPref instead</li> - <li>gPrefs: removed from mailnewsMigrator.js, , use Services.prefs instead</li> - <li>gPromptService: removed from MsgComposeCommands.js, use Services.prompt instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=179033" title="https://bugzilla.mozilla.org/show_bug.cgi?id=179033">gSelectionSummaryStrings.Nmessages: removed from /mailnews/base/public/nsIMsgFolder.idl</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=577775" title="https://bugzilla.mozilla.org/show_bug.cgi?id=577775">gServer: Removed from am-serverwithnoidentities.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=80855" title="https://bugzilla.mozilla.org/show_bug.cgi?id=80855">gSmtpHostNameIsIllegal: removed from AccountManager.js</a></li> - <li>hasOnlyWhitespaces: removed from /mailnews/addrbook/prefs/content/pref-directory-add.js, use (<string>.trim() == "") instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=80855" title="https://bugzilla.mozilla.org/show_bug.cgi?id=80855">hostnameIsIllegal: removed from amUtils.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=80855" title="https://bugzilla.mozilla.org/show_bug.cgi?id=80855">hostnameIsIllegal: removed from aw-incoming.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=814956" title="https://bugzilla.mozilla.org/show_bug.cgi?id=814956">InitAppEditMessagesMenu: renamed to InitAppFolderViewsMenu in /mail/base/content/mailWindowOverlay.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775105" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775105">initContactList: Removed from chat-messenger-overlay.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=799068" title="https://bugzilla.mozilla.org/show_bug.cgi?id=799068">ircChannel.prototype.setMode: Non backwards compatible change to parameters (second parameter changed)</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839279" title="https://bugzilla.mozilla.org/show_bug.cgi?id=839279">IsEventHandler: removed from /editor/ui/dialogs/content/EdAEJSEAttributes.js</a></li> - <li>IsWhitespace: removed from /editor/ui/composer/content/editorUtilities.js, use <string>.trim() == "" instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=793599" title="https://bugzilla.mozilla.org/show_bug.cgi?id=793599">KEY_ISP_DIRECTORY_LIST: removed from am-junk.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=810680" title="https://bugzilla.mozilla.org/show_bug.cgi?id=810680">kHighestPort: removed from /mailnews/base/prefs/content/accountcreation/emailWizard.js</a></li> - <li>nsIWindowMediator: removed from nsMailDefaultHandler.js, use Services.wm instead</li> - <li>nsIWindowWatcher: removed from nsMailDefaultHandler.js, use Services.ww instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=878604" title="https://bugzilla.mozilla.org/show_bug.cgi?id=878604">onChooseFolder: removed from /mail/base/content/SearchDialog.js</a></li> - <li>pref: removed from mailWindow.js, use Services.prefs instead</li> - <li>prefs: removed from nsMsgTraitService.js, use Services.prefs instead</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=679696" title="https://bugzilla.mozilla.org/show_bug.cgi?id=679696">queryISupportsArray(supportsArray, iid): Removed from MsgComposeCommands.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=878604" title="https://bugzilla.mozilla.org/show_bug.cgi?id=878604">selectFolder: removed from /mail/base/content/SearchDialog.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=785980" title="https://bugzilla.mozilla.org/show_bug.cgi?id=785980">SetUpToolbarButtons(uri): Removed from mailWindowOverlay.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.getApplicationUpgradeVersions: removed function argument in specialTabs.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.shouldShowTelemetryNotification: removed function argument in specialTabs.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.showTelemetryNotification: removed function argument in specialTabs.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.shouldShowAboutRightsNotification: removed function argument in specialTabs.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.showAboutRightsNotification: removed function argument in specialTabs.js</a></li> - <li>toggleFilter: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=783491" title="https://bugzilla.mozilla.org/show_bug.cgi?id=783491">Removed second function argument</a></li> - <li>trim: removed from amUtils.js, use <string>.trim() instead</li> - <li>updateInboxAccount: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=389139" title="https://bugzilla.mozilla.org/show_bug.cgi?id=389139">changed</a> in /mailnews/base/prefs/content/am-server-advanced.js</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=725488" title="https://bugzilla.mozilla.org/show_bug.cgi?id=725488">updateMoveTargetMode(aEnable): Removed from am-junk.js</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=725488" title="https://bugzilla.mozilla.org/show_bug.cgi?id=725488">updatePurgeSpam(aEnable): Removed from am-junk.js</a></li> - <li>updateSearchFolderPicker: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=878604" title="https://bugzilla.mozilla.org/show_bug.cgi?id=878604">changed</a> in /mail/base/content/SearchDialog.js</li> -</ul> - -<h2 id="Further_changes">Further changes</h2> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=327812" title="https://bugzilla.mozilla.org/show_bug.cgi?id=327812">Server name validation for incoming servers has been added</a>: If an add-on created a fake account with an incoming server which does not validate, this can cause issues on re-validation.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=749200" title="https://bugzilla.mozilla.org/show_bug.cgi?id=749200">The sort order of accounts has been defined for new account types changed</a> and centralized. Extensions can also use the allAccountsSorted() function to retrieve this common sort order of the accounts in the profile. In all list widgets the accounts should be shown in this order: - <ul> - <li><span class="quote">default account</span></li> - <li><span class="quote">other mail accounts</span></li> - <li><span class="quote">Local Folders</span></li> - <li><span class="quote">chat accounts</span></li> - <li><span class="quote">feeds</span></li> - <li><span class="quote">newsgroups</span></li> - </ul> - </li> - <li>The Local directory used for mail storage <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=750781" title="https://bugzilla.mozilla.org/show_bug.cgi?id=750781">is now checked for validity and safeness</a>. Filesystem directories deemed inappropriate are rejected by the account manager. Extensions can <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=848477" title="https://bugzilla.mozilla.org/show_bug.cgi?id=848477">add theirs own lists of file directories which can (or should not) be used for mail</a> storage by extending the global <span class="difflineplus">gDangerousLocalStorageDirs</span> array in <span class="difflineplus">/mailnews/base/prefs/content/AccountManager.js</span>.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=834911" title="https://bugzilla.mozilla.org/show_bug.cgi?id=834911">Support for nsIEnumerator has been removed /from mailnews/base/util/iteratorUtils.jsm</a></li> -</ul> - -<h2 id="Platform_changes_and_web_standards_support">Platform changes and web standards support</h2> - -<p>For information about changes to the underlying Gecko platform and changes to the support of web technologies, please read the following information for developers:</p> - -<ul> - <li><a href="/en-US/docs/Mozilla/Firefox/Releases/18" title="/en-US/docs/Mozilla/Firefox/Releases/18">Firefox 18 for developers</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Releases/19" title="/en-US/docs/Mozilla/Firefox/Releases/19">Firefox 19 for developers</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Releases/20" title="/en-US/docs/Mozilla/Firefox/Releases/20">Firefox 20 for developers</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Releases/21" title="/en-US/docs/Mozilla/Firefox/Releases/21">Firefox 21 for developers</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Releases/22" title="/en-US/docs/Mozilla/Firefox/Releases/22">Firefox 22 for developers</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Releases/23" title="/en-US/docs/Mozilla/Firefox/Releases/23">Firefox 23 for developers</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox/Releases/24" title="/en-US/docs/Mozilla/Firefox/Releases/24">Firefox 24 for developers</a></li> -</ul> - -<h2 id="Strings">Strings</h2> - -<h4 id="advanced.dtd">advanced.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=804001" title="https://bugzilla.mozilla.org/show_bug.cgi?id=804001">checkNow.acesskey renamed to checkDefaultsNow.accesskey<br> - checkNow.label renamed to checkDefaultsNow.label</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=892255" title="https://bugzilla.mozilla.org/show_bug.cgi?id=892255">viewCRLs.label removed<br> - viewCRLs.accesskey removed</a></p> - -<h4 id="am-identities-list.dtd">am-identities-list.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=314806" title="https://bugzilla.mozilla.org/show_bug.cgi?id=314806">identitiesListDesc.label removed</a></p> - -<h4 id="am-server-advanced.dtd">am-server-advanced.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=389139" title="https://bugzilla.mozilla.org/show_bug.cgi?id=389139">globalInbox.label removed<br> - globalInbox.accesskey removed</a></p> - -<h4 id="am-smime.properties">am-smime.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=465351" title="https://bugzilla.mozilla.org/show_bug.cgi?id=465351">ErrorCanNotEncrypt renamed to ErrorEncryptMail</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=465351" title="https://bugzilla.mozilla.org/show_bug.cgi?id=465351">ErrorCanNotSign renamed to ErrorCanNotSignMail</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=800877" title="https://bugzilla.mozilla.org/show_bug.cgi?id=800877">mime_multipartSignedBlurb removed</a></p> - -<h4 id="composeMsgs.properties">composeMsgs.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=801383" title="https://bugzilla.mozilla.org/show_bug.cgi?id=801383">12564 removed</a></p> - -<h4 id="display.dtd">display.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=845807" title="https://bugzilla.mozilla.org/show_bug.cgi?id=845807">color.label removed<br> - color.accesskey removed<br> - colors.label removed<br> - overrideColors.label removed<br> - fontsAndColors.label removed</a></p> - -<h4 id="editorOverlay.dtd">editorOverlay.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=813295" title="https://bugzilla.mozilla.org/show_bug.cgi?id=813295">decreaseFontSize.key renamed to decrementFontSize.key<br> - decreaseFontSize.key2 renamed to decrementFontSize.key2<br> - increaseFontSize.key renamed to incrementFontSize.key<br> - increaseFontSize.key2 renamed to incrementFontSize.key2</a></p> - -<h4 id="filter.properties">filter.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=561762" title="https://bugzilla.mozilla.org/show_bug.cgi?id=561762">searchTermsInvalidMessage renamed to searchTermsInvalidRule</a></p> - -<h4 id="FilterEditor.dtd">FilterEditor.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775665" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775665">contextDesc.accesskey renamed to contextIncomingMail.accesskey<br> - contextIncoming.label renamed to contextIncomingMail.label</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775665" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775665">contextBoth.label removed<br> - contextPostPlugin.label removed<br> - contextPostPluginBoth.label removed</a></p> - -<h4 id="imapMsgs.properites">imapMsgs.properites</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=448624" title="https://bugzilla.mozilla.org/show_bug.cgi?id=448624">5061 removed</a></p> - -<h4 id="irc.properties">irc.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812921" title="https://bugzilla.mozilla.org/show_bug.cgi?id=812921">command.mode removed<br> - message.mode removed</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=799068" title="https://bugzilla.mozilla.org/show_bug.cgi?id=799068">command.wallops removed</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=842183" title="https://bugzilla.mozilla.org/show_bug.cgi?id=842183">command.whois removed</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=792046" title="https://bugzilla.mozilla.org/show_bug.cgi?id=792046">connection.error.certError removed</a></p> - -<h4 id="localMsgs.properties">localMsgs.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=858238" title="https://bugzilla.mozilla.org/show_bug.cgi?id=858238">321 renamed to pop3OutOfDiskSpace<br> - 4000 renamed to buildingSummary<br> - 4001 renamed to localStatusDocumentDone<br> - 4003 renamed to pop3ServerError<br> - 4004 renamed to pop3UsernameFailure<br> - 4005 renamed to pop3PasswordFailure<br> - 4006 renamed to pop3MessageWriteError<br> - 4012 renamed to pop3RetrFailure<br> - 4013 renamed to pop3PasswordUndefined<br> - 4014 renamed to pop3UsernameUndefined<br> - 4015 renamed to pop3ListFailure<br> - 4016 renamed to pop3DeleFailure<br> - 4024 renamed to pop3StatFail<br> - 4025 renamed to pop3ServerSaid<br> - 4027 renamed to copyingMessagesStatus<br> - 4028 renamed to movingMessagesStatus<br> - 4029 renamed to pop3MessageFolderBusy<br> - 4033 renamed to movemailCantOpenSpoolFile<br> - 4034 renamed to movemailCantCreateLock<br> - 4035 renamed to movemailCantDeleteLock<br> - 4036 renamed to movemailCantTruncateSpoolFile<br> - 4037 renamed to movemailSpoolFileNotFound<br> - 4038 renamed to pop3TmpDownloadError<br> - 4040 renamed to pop3ServerDoesNotSupportUidlEtc<br> - 4041 renamed to pop3ServerDoesNotSupportTopCommand<br> - 4043 renamed to nsErrorCouldNotConnectViaTls<br> - 4044 renamed to pop3MoveFolderToTrash<br> - 4045 renamed to pop3DeleteFolderDialogTitle<br> - 4046 renamed to pop3DeleteFolderButtonLabel<br> - 4047 renamed to pop3AuthInternalError<br> - 4048 renamed to pop3AuthChangeEncryptToPlainNoSSL<br> - 4049 renamed to pop3AuthChangeEncryptToPlainSSL<br> - 4050 renamed to pop3AuthChangePlainToEncrypt<br> - 4051 renamed to pop3AuthMechNotSupported<br> - 4052 renamed to pop3GssapiFailure</a></p> - -<h4 id="main.properties">main.properties</h4> - -<p>source: /mail/locales/en-US/feedback/main.properties<br> - File removed</p> - -<h4 id="messenger.dtd">messenger.dtd</h4> - -<p>moved to viewZoomOverlay.dtd:<br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=738194" title="https://bugzilla.mozilla.org/show_bug.cgi?id=738194">fullZoomEnlargeCmd.label<br> - fullZoomReduceCmd.label<br> - fullZoomResetCmd.label<br> - fullZoomToggleCmd.label</a><br> - <br> - internal:<br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812630" title="https://bugzilla.mozilla.org/show_bug.cgi?id=812630">appmenuButton.tooltip renamed to appmenuButton1.tooltip</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=508250" title="https://bugzilla.mozilla.org/show_bug.cgi?id=508250">contextForwardAsAttachment.label renamed to contextMultiForwardAsAttachment.label<br> - contextForwardAsAttachment.accesskey renamed to contextMultiForwardAsAttachment.accesskey</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=179033" title="https://bugzilla.mozilla.org/show_bug.cgi?id=179033">contextKillSubthreadMenu.accesskey<br> - contextWatchThreadMenu.accesskey</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=878933" title="https://bugzilla.mozilla.org/show_bug.cgi?id=878933">folderContextOpenNewWindow.label renamed to folderContextOpenInNewWindow.label<br> - folderContextOpenNewWindow.accesskey renamed to folderContextOpenInNewWindow.accesskey</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=599036" title="https://bugzilla.mozilla.org/show_bug.cgi?id=599036">openFeedMessage.label renamed to openFeedMessage1.label<br> - openFeedMessage.accesskey renamed to openFeedMessage1.accesskey</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=853135" title="https://bugzilla.mozilla.org/show_bug.cgi?id=853135">openAttachmentCmd.label renamed to openAttachmentListCmd.label<br> - openAttachmentCmd.accesskey renamed to openAttachmentListCmd.accesskey</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=599036" title="https://bugzilla.mozilla.org/show_bug.cgi?id=599036">openFeedWebPageInWindow.label removed<br> - openFeedWebPageInWindow.accesskey removed<br> - openFeedSummaryInWindow.label removed<br> - openFeedSummaryInWindow.accesskey removed</a></p> - -<h4 id="messenger.properties">messenger.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=308690" title="https://bugzilla.mozilla.org/show_bug.cgi?id=308690">applyNowButton removed<br> - applyToCollapsedAlwaysAskCheckbox removed<br> - applyToCollapsedMsgsTitle removed<br> - applyToCollapsedMsgs removed</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=883485" title="https://bugzilla.mozilla.org/show_bug.cgi?id=883485">confirmMsgDelete.shiftDel.desc renamed to confirmMsgDelete.deleteNoTrash.desc</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=595104" title="https://bugzilla.mozilla.org/show_bug.cgi?id=595104">getNextNMessages renamed to getNextNewsMessages</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=852461" title="https://bugzilla.mozilla.org/show_bug.cgi?id=852461">growlNotification removed</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=595104" title="https://bugzilla.mozilla.org/show_bug.cgi?id=595104">openWindowWarningText renamed to openWindowWarningConfirmation</a></p> - -<h4 id="messengercompose.dtd">messengercompose.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=339887" title="https://bugzilla.mozilla.org/show_bug.cgi?id=339887">outputFormatMenu.label renamed to deliveryFormatMenu.label<br> - deliveryFormatMenu.accesskey renamed to deliveryFormatMenu.acesskey</a></p> - -<h4 id="msgHdrViewOverlay.dtd">msgHdrViewOverlay.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=686427" title="https://bugzilla.mozilla.org/show_bug.cgi?id=686427">bccField3.label renamed to bccField4.label<br> - ccField3.label renamed to ccField4.label<br> - dateField3.label renamed to dateField4.label<br> - followupToField3.label renamed to followupToField4.label<br> - fromField3.label renamed to fromField4.label<br> - inReplyToField3.label renamed to inReplyToField4.label<br> - messageIdField3.label renamed to messageIdField4.label<br> - newsgroupsField3.label renamed to newsgroupsField4.label<br> - organizationField3.label renamed to organizationField4.label<br> - originalWebsite3.label renamed to originalWebsite4.label<br> - referencesField3.label renamed to referencesField4.label<br> - replyToField3.label renamed to replyToField4.label<br> - senderField3.label renamed to senderField4.label<br> - subjectField3.label renamed to subjectField4.label<br> - tagsHdr3.label renamed to tagsHdr4.label<br> - toField3.label renamed to toField4.label<br> - userAgentField3.label renamed to userAgentField4.label</a></p> - -<h4 id="multimessageview.properties">multimessageview.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=179033" title="https://bugzilla.mozilla.org/show_bug.cgi?id=179033">Nmessages removed</a></p> - -<h4 id="preferences.properties">preferences.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=595723" title="https://bugzilla.mozilla.org/show_bug.cgi?id=595723">alreadyDefaultClientTitle removed<br> - alreadyDefault removed</a></p> - -<h4 id="prefs.properties">prefs.properties</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=734034" title="https://bugzilla.mozilla.org/show_bug.cgi?id=734034">confirmDeferAccount renamed to confirmDeferAccountWarning</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=577775" title="https://bugzilla.mozilla.org/show_bug.cgi?id=577775">directoryUsedByOtherAccount renamed to directoryAlreadyUsedByOtherAccount</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=327812" title="https://bugzilla.mozilla.org/show_bug.cgi?id=327812">serverNameEmpty removed</a></p> - -<h4 id="sanitize.dtd">sanitize.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=807699" title="https://bugzilla.mozilla.org/show_bug.cgi?id=807699">clearDataSettings2.label removed<br> - clearTimeDuration.dateColumn removed<br> - clearTimeDuration.nameColumn removed<br> - column.width removed<br> - dataSection.label removed<br> - historySection.label removed<br> - sanitizePrefs2.title removed<br> - sanitizeItems.label removed</a></p> - -<h4 id="SearchDialog.dtd">SearchDialog.dtd</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=325777" title="https://bugzilla.mozilla.org/show_bug.cgi?id=325777">fileHereMenu.label renamed to moveHereMenu.label<br> - fileHereMenu.accesskey renamed to moveHereMenu.accesskey<br> - fileButton.label renamed to moveButton.label<br> - fileButton.accesskey renamed to moveButton.accesskey</a></p> diff --git a/files/ja/mozilla/thunderbird/releases/3/index.html b/files/ja/mozilla/thunderbird/releases/3/index.html deleted file mode 100644 index 15794f1fbb..0000000000 --- a/files/ja/mozilla/thunderbird/releases/3/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Thunderbird 3 for developers -slug: Mozilla/Thunderbird/Releases/3 -tags: - - Thunderbird 3 - - thunderbird -translation_of: Mozilla/Thunderbird/Releases/3 ---- -<p>このページでは、Thunderbird 3 の開発者のための関連する変更点を列挙しています。ユーザに関連する変更点については、<a class="internal" href="/ja/Thunderbird_3_for_users" title="ja/Thunderbird 3 for users">Thunderbird 3 for users</a> を参照してください。</p> -<h2 id="アクティビティ・マネージャ">アクティビティ・マネージャ</h2> -<p>アクティビティ・マネージャは Thunderbird が行っている処理の進捗具合を表示する新しい機能です。 これはステータスバーに埋め込まれており、処理を行っている最中にユーザへ処理の状況を通知します。<a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Activity_Manager" title="https://wiki.mozilla.org/Thunderbird:Activity_Manager">ドキュメント</a> (関連性がありますが、情報が古い可能性があります。)</p> -<h2 id="アドレス帳">アドレス帳</h2> -<h3 id="インタフェースの改善">インタフェースの改善</h3> -<p style="text-align: left;"><a class="internal" href="/Ja/Address_Book_Interfaces" title="Ja/Address Book Interfaces">様々なインタフェース</a>が追加、削除、更新されました。これらの変更の主な目的は、個々のアドレス帳の種類について専門性を低減することと、インタフェースをより一般的で汎用性なものにするということです。使い方については、<a class="internal" href="/ja/Address_Book_Examples" title="ja/Address Book Examples">使用例</a>を参照してください。</p> -<h3 id="メニューポップアップ・ウィジェット">メニューポップアップ・ウィジェット</h3> -<p>いつかのパラメータを基にしてアドレス帳のリストを提供する、新しい <a class="external" href="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/addrbook/content/addrbookWidgets.xml" title="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/addrbook/content/addrbookWidgets.xml">menupopup バインディング</a>が追加されました。</p> -<h2 id="自動補完">自動補完</h2> -<p><a class="internal" href="/ja/XUL/textbox_(Mozilla_autocomplete)" title="Ja/XUL/Textbox (XPFE autocomplete)">xpfe 自動補完要素</a>は、属性や機能をすべて実装するために、<a class="internal" href="/ja/XUL/textbox_(Firefox_autocomplete)" title="Ja/XUL/Textbox (Toolkit autocomplete)">toolkit 自動補完要素</a>へ更新されました。これにより、拡張機能は <a class="internal" href="/ja/XUL/textbox_(Firefox_autocomplete)" title="Ja/XUL/Textbox (Toolkit autocomplete)">toolkit 自動補完要素</a>と同様の属性を使えるようになり、<a class="internal" href="/ja/How_to_implement_custom_autocomplete_search_component" title="ja/How to implement custom autocomplete search component">toolkit 自動補完インタフェース</a> を実装して独自の自動補完機構をつくることが可能になります。</p> -<h3 id="アドレス帳自動補完">アドレス帳自動補完</h3> -<p>いくつかのアドレス帳の自動補完機能が同様に更新されました。インタフェースの使い方については、<a class="internal" href="/Ja/Address_Book_Examples#How_do_I.c2.a0set_up_autocomplete_to_use_the_address_book.3f" title="Ja/Address Book Examples#How do I.c2.a0set up autocomplete to use the address book.3f">例</a>を参照してください。</p><h2 id="コンテンツブラウジング">コンテンツブラウジング</h2> -<p>Thunderbird 3 では、(メッセージパネルと並んでいる) メールウインドウでのブラウザ要素のコンテンツ表示を改善しました。詳細な背景については、<a href="/ja/Thunderbird/Content_Tabs" title="ja/Thunderbird/Content Tabs">コンテンツタブ</a>ページを参照してください。Thunderbird 3 でのもっとも大きな変更点は以下になります。</p> -<ul> <li><code>network.protocol-handler.expose.{about,http,https} 設定が true に設定されました。</code><br> <ul> <li> <div class="warning">これにより、コンテンツポリシーが許可されていれば、 <browser> または <iframe> 要素は初期設定で http:/ または https:/ リンクとして動作します (以前は、リンクをクリックするとデフォルトに設定されているブラウザが起動しました)。</div> </li> </ul> </li> <li> <p>拡張機能としては <browser> と <iframe> 要素に onclick ハンドラを実装するべきです。<a href="/ja/Thunderbird/Content_Tabs" title="ja/Thunderbird/Content Tabs">コンテンツタブ</a>ページにいくつかの例があります。</p> </li> -</ul> -<h2 id="Cookie">Cookie</h2> -<p>Thunderbird 3 は緩やかな Cookie ポリシーを採用しています。詳細な情報は、<a class="internal" href="/ja/Thunderbird/Cookies_In_Thunderbird" title="ja/Thunderbird/Cookies In Thunderbird">Thunderbird の Cookie</a> を参照してください。</p> -<h2 id="エラー報告ツール">エラー報告ツール</h2> -<p>Thunderbird 3 は別の<a href="/ja/Extensions/Thunderbird/Error_reporting_tools" title="ja/Extensions/Thunderbird/Error reporting tools">エラー報告ツール</a>を内部用と拡張機能用に用意しています。</p><h2 id="フォームの自動補完">フォームの自動補完</h2> -<p>Gecko は (satchel として知られている) フォームの自動補完をサポートしており、Thunderbird 3 ではこの機能が有効にされています。これにより、以前訪れたページのフォームに入力した内容が保存され、自動補完されます。Thunderbird のコンテンツタブは、<a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/specialTabs.xul">browser 要素上でフォームの自動補完を有効にする例</a> の<a class="internal" href="/ja/Code_snippets/Autocomplete" title="ja/Code snippets/Autocomplete">コードスペニット</a>を持っています。</p> -<p>注意: この機能は、複数の情報が入力される可能性のあるユーザ名およびパスワードのフォームに対しても有効に働きます。</p><h2 id="JavaScript">JavaScript</h2> -<p>様々なセキュリティ上の観点から、メッセージコンテンツでは JavaScript が完全に無効にされています (<code>javascript.allow.mailnews を変更しても設定は変わりません)。JavaScript は、RSS フィードを含んだリモートコンテンツに対して有効にされます。</code></p> -<h2 id="パスワード">パスワード</h2> -<p>Thunderbird 3 は、<a class="internal" href="/ja/XPCOM_Interface_Reference/nsILoginManager" title="ja/XPCOM Interface Reference/nsILoginManager">パスワードマネージャ</a>を使うようになりました。</p> -<h2 id="検索">検索</h2> -<p>Thunderbird には新しいメッセージ検索データベース (Gloda) が搭載されています。Gloda により、検索速度が向上し、洗練された全文検索機能や絞り込み機能つきの検索結果表示が実装されました。"Gloda" は Thunderbird "global database" の略称です。Gloda コンセプトの概要と実装についての情報は、<a href="/ja/Thunderbird/gloda" title="ja/Thunderbird/gloda">Gloda</a> のページを参照してください。拡張機能で Gloda を使う場合の情報は、<a href="/ja/Thunderbird/Creating_a_Gloda_message_query" rel="internal" title="ja/Thunderbird/Creating a Gloda message query">Gloda メッセージクエリを作成する</a>を参照してください。Gloda のユースケースについては、<a href="/ja/Thunderbird/Gloda_examples" rel="internal" title="ja/Thunderbird/Gloda examples">Gloda の例</a>を参照してください。</p> -<h2 id="STEEL">STEEL</h2> -<p><a class="internal" href="/ja/Toolkit_API/STEEL" title="ja/STEEL">STEEL</a> とは、<strong>S</strong>criptable <strong>T</strong>hunderbird <strong>E</strong>asy <strong>E</strong>xtension <strong>L</strong>ibrary の略称です。これは、Thunderbird の拡張機能開発を容易にする、<a class="internal" href="/ja/Toolkit_API/FUEL" title="ja/Toolkit API/FUEL">FUEL</a> の様なインタフェースセットです。</p> -<h2 id="タブ">タブ</h2> -<p>Thunderbird 3 ではメインビューでタブをサポートしました。拡張機能は新しいタブの種類を作成できます。現在のドキュメントが、<a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/tabmail.xml">tabmail.xml</a> だった場合に、小さな例としては、<a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/specialTabs.js">specialTabs.js</a> をコンテンツタブタイプとして呼び出すというものがあります。</p> -<h2 id="その他の改善">その他の改善</h2> -<ul> <li>Thunderbird 3 では多くのインタフェースにおいて様々な変更点が存在します。Thunderbird 2 で使用されていたいくつかの機能は、パラメータを渡す新しいメソッドを使用するようにインタフェースが置き換えられたため、これらの古い機能が使用された場合は例外が投げられるようになりました。<a class="external" href="http://mxr.mozilla.org/comm-1.9.1/" title="http://mxr.mozilla.org/comm-1.9.1/">mxr</a> をチェックしてみてください。コードを向上させるために行われた、典型的な置換は以下のようなものです。<br> <ul> <li>nsISupportsArray は <a class="internal" href="/ja/XPCOM_Interface_Reference/nsIArray" title="ja/XPCOM Interface Reference/nsIArray">nsIArray</a> と <a class="internal" href="/ja/XPCOM_Interface_Reference/nsIMutableArray" title="ja/XPCOM Interface Reference/nsIMutableArray">nsIMutableArray</a> になりました。</li> <li><a class="internal" href="/ja/XPCOM_Interface_Reference/nsIFileSpec" title="ja/XPCOM Interface Reference/nsIFileSpec">nsIFileSpec</a> は <a class="internal" href="/ja/XPCOM_Interface_Reference/nsIFile" title="ja/XPCOM Interface Reference/nsIFile">nsIFile</a> (および <a class="internal" href="/ja/nsILocalFile" title="ja/nsILocalFile">nsILocalFile</a>) になりました。</li> <li>wstring は AString になりました。</li> <li>string は ACString または AUTF8String になりました。</li> </ul> </li> <li>様々なフラグセットは、C++ の #define から idl ファイルでの設定に転向し、JavaScript からアクセスできるようにします。変更されたファイルは以下を含みます。<br> <ul> <li><a class="external" href="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/base/public/nsMsgMessageFlags.idl" title="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/base/public/nsMsgMessageFlags.idl">nsMsgMessageFlags.idl</a> (メッセージの中の <code>X-Mozilla-Status ヘッダフィールドで使われてるフラグ</code>)</li> <li><a class="external" href="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/base/public/nsMsgFolderFlags.idl" title="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/base/public/nsMsgFolderFlags.idl">nsMsgFolderFlags.idl</a> (フォルダやニュースグループに関するフラグ)</li> </ul> </li> <li>メッセージペインのコンテキストオプションに追加した popup の id は、<code>messagePaneContext</code> から <code>mailContext</code> に変更されました。<a href="/ja/Extensions/Thunderbird/HowTos/Common_Thunderbird_Extension_Techniques/Add_Option_to_Context_Menu" title="ja/Extensions/Thunderbird/HowTos/Common Thunderbird Extension Techniques/Add Option to Context Menu">Add Option to Context Menu</a> を参照してください。</li> <li>gContextMenu.isTextSelected は Thunderbird 3 から削除されました - 代替となるコードは、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=463003" title="FIXED: Context menu for selected text in content shows all items">バグ 463003</a> を参照してください。</li> -</ul> -<h3 id="ビデオ">ビデオ</h3> -<p><a class="internal" href="/Ja/HTML/Element/Video" title="ja/HTML/Element/Video"><video></a> 要素が Gecko で有効になりました。メール中では JavaScript が無効化されたためコントロールが表示されませんが、右クリックメニューからビデオの操作が可能です。リモートコンテンツの <a class="internal" href="/Ja/HTML/Element/Video" title="ja/HTML/Element/Video"><video></a> 要素 (たとえば、ウェブページで見かけられる RSS フィード) では、コントロールは標準で表示されます。</p> -<p>メール中の <a class="internal" href="/Ja/HTML/Element/Audio" title="Ja/HTML/Element/Audio"><audio></a> 要素は、コントロールが JavaScript を要求する (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=449358" title="FIXED: Add test to confirm that video/audio UI controls function when JavaScript is disabled">バグ 449358</a>) ため、動作しません (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=515082" title="Investigate enabling UI to control audio elements in email messages">バグ 515082</a>)。media.autoplay.enabled 設定は、混乱を避けるため初期設定で off に設定されます。<a class="internal" href="/Ja/HTML/Element/Audio" title="Ja/HTML/Element/Audio"><br> -</a></p><h2 id="他のリソース">他のリソース</h2> -<h3 id="リリースノートとアナウンスメント">リリースノートとアナウンスメント</h3> -<p>リリースノートには、それぞれのベータリリース時の変更点に関する詳細な情報が記載されています。</p> -<ul> <li><a class=" external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0rc1/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0rc1/releasenotes/">Thunderbird 3.0 RC 1 release notes</a></li> <li><a class=" external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0b4/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0b4/releasenotes/">Thunderbird 3.0 beta 4 release notes</a></li> <li><a class="external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0b3/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0b3/releasenotes/">Thunderbird 3.0 beta 3 release notes</a></li> <li><a class="external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0b2/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0b2/releasenotes/">Thunderbird 3.0 beta 2 release notes</a></li> <li><a class="external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0b1/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0b1/releasenotes/">Thunderbird 3.0 beta 1 release notes</a></li> -</ul> -<h3 id="MozillaZine">MozillaZine</h3> -<p>詳細な記事は MozillaZine ナレッジベースを参照してください。ナレッジベースには Thunderbird 3 の変更点の要約や議論、仕様と (Bugzilla、Mozilla wiki や様々なブログ上の) 文書へのリンクがあります。詳しくは、<a class="external" href="http://kb.mozillazine.org/Thunderbird_3.0_-_New_Features_and_Changes" rel="external nofollow" title="http://kb.mozillazine.org/Thunderbird_3.0_-_New_Features_and_Changes">Thunderbird 3.0 - New Features and Changes</a> を見てください。</p> diff --git a/files/ja/mozilla/thunderbird/releases/5/index.html b/files/ja/mozilla/thunderbird/releases/5/index.html deleted file mode 100644 index 56cc79dfd8..0000000000 --- a/files/ja/mozilla/thunderbird/releases/5/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Thunderbird 5 for developers -slug: Mozilla/Thunderbird/Releases/5 -tags: - - Thunderbird 5 -translation_of: Mozilla/Thunderbird/Releases/5 ---- -<div class="blockIndicator draft"> - <p><strong>草案</strong><br> - このページは完成していません。</p> - -</div><span><br> -</span> -<div class="blockIndicator standardNote"> -<p>この記事は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Thunderbird/Releases/5">Thunderbird 5</a> の新機能について述べています</p> -</div> -<p><span>このページは、Thunderbird 5 における開発者向けの変更点のリストです。エンドユーザ向けの変更点は、<a class=" external" href="http://support.mozillamessaging.com/kb/new-thunderbird-5/" title="http://support.mozillamessaging.com/kb/new-thunderbird-5/">Thunderbird サポートの記事</a>をご覧ください。<br> -</span></p> -<h2 id="Gecko_5.0">Gecko 5.0</h2> -<p>Thunderbird 5 は、Gecko 5.0 をベースにしています。<a href="/ja/Firefox_4_for_developers" title="ja/Firefox 4 for developers">Firefox 4</a> および <a href="/ja/Firefox_5_for_developers" title="ja/Firefox 5 for developers">Firefox 5</a> のページに、Gecko に対する重要な変更の詳細があります。</p> -<h2 id="Mozilla_とアドオン開発者向けの変更">Mozilla とアドオン開発者向けの変更</h2> -<p>既存の拡張機能を Thunderbird 5 向けに更新するための役立つヒントについては、<a href="/ja/Extensions/Updating_extensions_for_Firefox_4" title="ja/Extensions/Updating extensions for Firefox 4">Updating extensions for Firefox 4</a> を参照してください。既存の拡張機能の互換性を損なういくつかの鍵となる変更点があるため、この記事を必ずお読みください。</p> -<h2 id="STEEL">STEEL</h2> -<ul> <li>Thunderbird 5 には新しいアドオンマネージャが搭載されています。その副作用として、グローバルな <a href="/ja/Toolkit_API/extIApplication" title="ja/Toolkit API/extIApplication">Application</a> オブジェクトは、もはや拡張機能のプロパティを持ちません。詳細は、<a class=" external" href="http://www.oxymoronical.com/blog/2010/03/How-were-breaking-some-extensions-in-the-near-future" title="http://www.oxymoronical.com/blog/2010/03/How-were-breaking-some-extensions-in-the-near-future">このブログ記事</a>を参照してください。</li> -</ul> -<h3 id="JavaScript_コードモジュール">JavaScript コードモジュール</h3> -<dl> <dt><a href="/ja/JavaScript_code_modules/Services.jsm" title="ja/JavaScript code modules/Services.jsm">Services.jsm</a></dt> <dd><code>Services.jsm</code> コードモジュールは、preferences サービスや window mediator、その他多くの一般的に使用されるサービスへの参照を簡単に取得できる getter を提供します。</dd> <dt><a href="http://mxr.mozilla.org/comm-central/source/mailnews/base/util/mailServices.js">mailServices.js</a></dt> <dd>mailServices.js コードは Services.jsm と似ていますが、メール機能固有のサービスのためのものです。</dd> <dt><a href="/ja/JavaScript_code_modules/ctypes.jsm" title="ja/JavaScript code modules/ctypes.jsm">JS-ctypes API</a></dt> <dd>JS-ctypes API は、XPCOM を使用せずに C 互換の外部ライブラリ関数を呼び出すことを可能にします。</dd> <dt><a href="/ja/Addons/Add-on_Manager" title="ja/Addons/Add-on Manager">アドオンマネージャ</a></dt> <dd>新しいアドオンマネージャは、インストールされたアドオンについての情報、それらを管理するためのサポート、アドオンのインストールと削除を行う機能を提供します。</dd> <dt><a href="/ja/JavaScript_code_modules/Using#Locating_the_code_module" title="ja/JavaScript code modules/Using JavaScript code modules#Locating the code module">chrome: URL からのコードモジュールの読み込み</a></dt> <dd>JAR ファイル内であっても、<strong>chrome:</strong> URL を使用して JavaScript コードモジュールを読み込めるようになりました。</dd> <dt>DownloadLastDir.jsm</dt> <dd><a href="/ja/JavaScript_code_modules/DownloadLastDir.jsm" title="ja/JavaScript/Code modules/DownloadLastDir.jsm"><code>DownloadLastDir.jsm</code></a> コードモジュールは、<code>gDownloadLastDir</code> グローバル変数を提供します。これは、最後にダウンロードされたファイルの保存先ディレクトリのパスを取得できる文字列を含みます。このモジュールは、プライベートブラウジングに関連する問題を扱います。</dd> -</dl> -<h4 id="コードモジュールに対する変更">コードモジュールに対する変更</h4> -<p><code>NetUtil.jsm</code> コードモジュールに <a href="/ja/JavaScript_code_modules/NetUtil.jsm#readInputStreamToString()" title="ja/JavaScript/Code modules/NetUtil.jsm#readInputStreamToString()"><code>readInputStreamToString()</code></a> メソッドが追加されました。これは、ストリームから任意のバイト数だけ文字列に読み込みます。ストリームに 0 (ゼロ) が含まれていても可能です。</p> -<h3 id="MimeMessage_API">MimeMessage API</h3> -<p><code>Cu.import("<a class=" external" rel="freelink">resource:///modules/gloda/mimemsg.js</a>");</code> からの <a class=" external" href="http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#171" title="http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#171"><code>MsgHdrToMimeMessage</code></a> 関数が、追加のプロパティを持つ <a class=" external" href="http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#322" title="http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#322"><code>MimeMessage</code></a> を返すようになりました。これは、メッセージを簡単に解析して構造的な MIME ツリーにし、検査するための推奨された方法です。API に制限が多いと思ったら、ぜひ<a class=" link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=MailNews%20Core&component=Database" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=MailNews Core&component=Database">バグ報告してお知らせください</a>!</p> -<ol> <li> <p><code>MimeMessageAttachment</code> インスタンスに、メッセージの添付ファイルのサイズへアクセスできるようにする <code>size</code> プロパティが追加されました。</p> </li> <li> <p><code>MimeMessage</code> インスタンスに、新機能の <code>allUserAttachments</code> プロパティが追加されました。これは、メッセージ画面に表示される添付ファイルの情報を提供します。このプロパティは、"添付ファイル" を扱う場合に覚えておくべきものです。<code>allAttachments</code> プロパティは、添付されたメールなどの MIME パートは含みません。</p> </li> <li> <p>動作を高速化するため、メッセージがリモートの IMAP サーバにだけある場合は、<code>MsgHdrToMimeMessage</code> へ渡す <code>options</code> オブジェクトに <code>partsOnDemand: true</code> メンバを追加してください。画像ファイルなどの添付ファイルがバックエンドでダウンロードされなくなります。</p> </li> -</ol> -<h3 id="Gloda_API">Gloda API</h3> -<p>Gloda に索引が付けられたメッセージは、<code>attachmentInfos</code> と呼ばれる追加のプロパティが使用できるようになりました。これは、与えられたメッセージの添付ファイルを、<code>MsgHdrToMimeMessage</code> に再び流すことなく手軽に操作できるようにします。<code>attachmentInfos</code> は、オブジェクトのリストであり、各オブジェクトは <code>url, size, contentType, name</code> のプロパティを持っています。バージョン 5a1 の時点では、データベーススキーマを変更する計画はありません。これは、バージョン 5 がインストールされた後に索引が付けられたメッセージだけが、このプロパティを持つことを意味します。しかしながら、Gloda の索引を再作成することで、すべてのメッセージに <code>attachmentTypes</code> プロパティを持たせることができます。<code>Cu.import("<a class=" external" rel="freelink">resource:///modules/gloda/index_msg.js</a>")</code> の <code>GlodaMsgIndexer</code> が、この操作のために必要になるでしょう。</p> -<h3 id="バックエンドの変更">バックエンドの変更</h3> -<ul> <li><code>DisplayMessage</code> を通してメッセージをストリーミングする場合、<code>&markRead=false</code> パラメータを URI に追加することにより、(IMAP 上の) メッセージを表示した時、バックエンドでメッセージが既読になることを防げるようになりました。</li> <li>Thunderbird のタブメールが、onbeforeunload イベントハンドラを尊重するようになりました。content または chrome タブ内の何かを開発する場合に、タブが閉じられることを防げるようになります。</li> <li>chrome タブが favicon を持てるようになりました。</li> <li>content タブを開いた時、追加の onload 引数で、タブが読み込み中であることを知ることができるようになりました。</li> <li>新しい "偽ヘッダ (fake header)" 機構が導入されました。偽ヘッダは、メッセージが送信された後に挿入され、autosync が実際のヘッダをリモート IMAP サーバから取得している間の placeholder として使用されます。これらのメッセージキーは、2**32 - 128 から 2**32 -1 の範囲内になります。偽ヘッダは、実際のヘッダの取得が完了すると破棄されます。一部のメッセージヘッダを操作するアドオンでは、不正なメッセージヘッダとして扱われる可能性があります。</li> -</ul> -<h2 id="XPCOM">XPCOM</h2> -<p>さらに詳しい変更点は、以下のページを参照してください。もはや、どのインタフェースも凍結されない点に注意することが重要です。ドキュメントにどのように書いてあろうとも、すべてのインタフェースは凍結されなくなりました (unfrozen)。ドキュメントは随時更新されます。</p> -<dl> <dt><a href="/ja/XPCOM/XPCOM_changes_in_Gecko_2.0" title="ja/XPCOM/XPCOM changes in Gecko 2.0">Gecko 2.0 における XPCOM の変更点</a></dt> <dd>Firefox 4 で互換性に影響を与える XPCOM の変更点の詳細。</dd> <dt><a href="/ja/Components.utils.getGlobalForObject" title="ja/Components.utils.getGlobalForObject">Components.utils.getGlobalForObject()</a></dt> <dd>この新しいメソッドは、オブジェクトが関連付けられたグローバルオブジェクトを返します。これは、破棄された <code>__parent__</code> の一般的な使用例を置き換えるものです。</dd> -</dl> -<h2 id="その他の変更点">その他の変更点</h2> -<ul> <li>Thunderbird のビルドは、静的ビルドから libxul スタイルのビルドへ変更されました。</li> <li>Thunderbird が、Firefox がサポートするものと同じ out-of-process プラグインをサポートするようになりました。</li> <li>Thunderbird 内に含まれるリソースのほとんどが、単一の JAR アーカイブファイルである <code>omni.jar</code> にまとめられました。ファイルの I/O が減ったことにより、起動時間が短縮されました。詳しくは、<a href="/ja/About_omni.jar" rel="internal">omni.jar について</a>を参照してください。</li> <li>Content タブが Firefox と同じ方法で favicon をサポートするようになりました。</li> <li>Thunderbird のリリース番号が Gecko のリリース番号と一致するようになりました。詳しい情報は、<a class=" external" href="http://groups.google.com/group/tb-planning/browse_thread/thread/521988f37b611174" title="http://groups.google.com/group/tb-planning/browse_thread/thread/521988f37b611174">tb-planning list の議論</a>を参照してください。</li> -</ul> -<h2 id="他のリソース">他のリソース</h2> -<p>Thunderbird 5 のコードネームは 'Miramar' です。</p> -<ul> <li><a href="/ja/Firefox_5_for_developers" title="ja/Firefox 5 for developers">Firefox 5 for developers</a></li> <li><a href="/ja/Firefox_4_for_developers" title="ja/Firefox 4.0 for developers">Firefox 4 for developers</a></li> <li><a href="/ja/Thunderbird_3_for_developers" title="ja/Thunderbird 3 for - developers">Thunderbird 3.1 for developers</a></li> <li><a class="external" href="http://ccgi.standard8.plus.com/blog/archives/322" title="http://ccgi.standard8.plus.com/blog/archives/322">build details</a></li> <li><a class=" link-https" href="https://wiki.mozilla.org/Thunderbird:Testing" title="https://wiki.mozilla.org/Thunderbird:Testing">how to help with testing</a></li> -</ul> -<div class="noinclude"> - -</div> diff --git a/files/ja/mozilla/thunderbird/releases/index.html b/files/ja/mozilla/thunderbird/releases/index.html deleted file mode 100644 index f16a1d845e..0000000000 --- a/files/ja/mozilla/thunderbird/releases/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Thunderbird 開発者向けリリースノート -slug: Mozilla/Thunderbird/Releases -tags: - - Landing - - Mozilla - - Release - - thunderbird -translation_of: Mozilla/Thunderbird/Releases ---- -<p>このページは、各 Thunderbird リリース版の "Thunderbird X for developers" の記事へのリンクを提供します。これらのリリースノートでは、Thunderbird の各バージョンで追加された機能や修正されたバグの一覧を見ることができます。</p> - -<div class="multiColumnList">{{ListSubpages("/ja/docs/Mozilla/Thunderbird/Releases",1,1,1)}}</div> - -<h2 class="multiColumnList" id="See_also" name="See_also">関連情報</h2> - -<ul> - <li><a href="/ja/docs/Mozilla/Firefox/Releases">Firefox 開発者向けリリースノート</a></li> -</ul> diff --git a/files/ja/mozilla/toolkit_version_format/index.html b/files/ja/mozilla/toolkit_version_format/index.html deleted file mode 100644 index 8eb2e46a17..0000000000 --- a/files/ja/mozilla/toolkit_version_format/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Toolkit version format -slug: Mozilla/Toolkit_version_format -tags: - - Toolkit API -translation_of: Mozilla/Toolkit_version_format ---- -<p>このドキュメントは Firefox 1.5 (<a href="ja/XULRunner">XULRunner</a> 1.8)以降で使われているバージョン形式のリファレンスです。この形式は拡張マネージャ、ソフトウェアの更新、およびプラットフォームのその他の部分で使われています。 最低限、以下の場所のバージョンはこの形式に従っていなければなりません。</p> - -<ul> - <li><a href="ja/Install_Manifests">install</a> および <a href="ja/Update_Manifest">update</a> manifests にある<a href="ja/Install_Manifests#version">Addon</a> および <a href="ja/Install_Manifests#targetApplication">target application</a>のバージョン</li> - <li>設定値 <code>app.extensions.version</code>, <code>extensions.lastAppVersion</code></li> - <li><a href="ja/NsIXULAppInfo">nsIXULAppInfo</a>が返すバージョン</li> - <li><a href="ja/XULRunner">XULRunner</a>アプリケーションの<a href="ja/XUL_Application_Packaging"><code>application.ini</code></a></li> - <li><a href="ja/Chrome_Registration">chrome manifests</a>にある<a href="ja/Chrome_Registration#appversion">appversion flag</a>.</li> -</ul> - -<p><a href="ja/NsIVersionComparator">nsIVersionComparator</a> をあなたのアプリケーションからバージョンの比較に使うことができます。</p> - -<p>Firefox/Thunderbird 1.0 で使われていた古いバージョン形式については下の {{ Anch("古いバージョン形式") }} を参照してください。</p> - -<p>{{ 英語版章題("Version format") }}</p> - -<h3 id=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.BD.A2.E5.BC.8F" name=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.BD.A2.E5.BC.8F">バージョン形式</h3> - -<p><strong>バージョン文字列</strong> はドットで区切られた1つ以上の<em>バージョンパート</em>から成ります。</p> - -<p>それぞれの <strong>バージョンパート</strong> はそれ自身が <code><数値-a><文字列-b><数値-c><文字列-d></code> という4つのパートの並びに解析されます。それぞれのパートは任意です。 数値は10進整数で (マイナスかもしれない)、文字列は ASCII です。</p> - -<p>有効なバージョンパートのいくつかの例:</p> - -<ul> - <li><code>0</code> (as in <code>1.0</code>): <code><数値-a>=0</code></li> - <li><code>5a</code> (as in <code>1.5a</code>): <code><数値-a>=5</code>, <code><文字列-b>=a</code></li> - <li><code>5pre4</code> (as in <code>3.5pre4</code>): <code><数値-a>=5</code>, <code><文字列-b>=pre</code>, <code><数値-c>=4</code></li> - <li><code>*</code> (as in <code>1.0.*</code>): <code><string-b>=*</code></li> -</ul> - -<p>可読性と後方互換性のために、以下のような特別な解析ルールが適用されます。</p> - -<ul> - <li>バージョンパートがアスタリスク一つならば、 無限に大きい数字として解釈される:<br> - <code>1.5.0.*</code> は <code>1.5.0.<em>(無限)</em></code> という意味です。</li> - <li>文字列-b がプラス記号ならば, 数値-a は Firefox 1.0.x のバージョンフォーマットとの互換性のため1増加される:<br> - <code>1.0+</code> は <code>1.1pre</code> と同じです。</li> -</ul> - -<p>バージョンパートを文字列と数値の並びに分ける原理は、バージョンパートを比較する際、数値部分は数値として比較され(例: '1.0pre1' < '1.0pre10')、文字列部分はバイト単位で比較されるというものです。 バージョンがどの様にして比較されるかについての詳細は次のセクションを参照してください。</p> - -<p>{{ 英語版章題("Comparing versions") }}</p> - -<h3 id=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.81.AE.E6.AF.94.E8.BC.83" name=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.81.AE.E6.AF.94.E8.BC.83">バージョンの比較</h3> - -<p>二つのバージョン文字列が比較される時、 左のバージョンパートから順に右に向かって比較されます。 空であったり欠けているバージョンパートは <code>0</code> と同義です。</p> - -<p>あるポイントで、一方のバージョン文字列のバージョンパートが、もう一方のバージョン文字列の対応するバージョンパートよりも大きければ、最初のバージョン文字列は他方のバージョン文字列よりも大きいということになります。</p> - -<p>そうでなければ、バージョン文字列は同一です。欠落しているバージョンパートは <code>0</code> であるのと同じように扱われるので、次のバージョン文字列は全て同じであるということに注意してください。<br> - <code>1</code> 、 <code>1.0</code> 、 <code>1.0.</code> 、 <code>1.0.0</code> 、 そして <code>1.0...</code> も</p> - -<p>{{ 英語版章題("Comparing version parts") }}</p> - -<h4 id=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.83.91.E3.83.BC.E3.83.88.E3.81.AE.E6.AF.94.E8.BC.83" name=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.83.91.E3.83.BC.E3.83.88.E3.81.AE.E6.AF.94.E8.BC.83">バージョンパートの比較</h4> - -<p>バージョンパートも同様に左から右に比較されます。 パート A と C は数値として比較され、パート B と D はバイト単位で比較されます。文字列が存在する場合は存在しない場合よりも必ず小さくなります。 (<code>1.6a</code> は <code>1.6</code> よりも小さい)。</p> - -<p>{{ 英語版章題("Examples") }}</p> - -<h3 id=".E4.BE.8B" name=".E4.BE.8B">例</h3> - -<pre class="eval notranslate">1.-1 -< 1 == 1. == 1.0 == 1.0.0 -< 1.1a < 1.1aa < 1.1ab < 1.1b < 1.1c -< 1.1whatever -< 1.1pre == 1.1pre0 == 1.0+ -< 1.1pre1a < 1.1pre1aa < 1.1pre1b < 1.1pre1 -< 1.1pre2 -< 1.1pre10 -< 1.1.-1 -< 1.1 == 1.1.0 == 1.1.00 -< 1.10 -< 1.* < 1.*.1 -< 2.0 -</pre> - -<p>{{ 英語版章題("Older version formats") }}</p> - -<h3 id=".E5.8F.A4.E3.81.84.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.BD.A2.E5.BC.8F" name=".E5.8F.A4.E3.81.84.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.BD.A2.E5.BC.8F">古いバージョン形式</h3> - -<p>Firefox/Thunderbird 1.0 では、次のようなより単純なバージョン形式を用いていました。</p> - -<pre class="eval notranslate">major[.minor[.release[.build]]][+] -</pre> - -<p><code>{{ mediawiki.external('..') }}</code> は任意の要素であることを意味しており, <code>major</code>, <code>minor</code>, <code>release</code>, <code>build</code> はすべて正の整数です。</p> - - - -<div class="noinclude"></div> - -<p>{{ languages( { "en": "en/Toolkit_version_format", "es": "es/Formato_para_la_versi\u00f3n_del_Toolkit", "zh-cn": "cn/\u7248\u672c\u683c\u5f0f\u8bf4\u660e" } ) }}</p> diff --git a/files/ja/mozilla/webidl_bindings/index.html b/files/ja/mozilla/webidl_bindings/index.html deleted file mode 100644 index 054e4653c6..0000000000 --- a/files/ja/mozilla/webidl_bindings/index.html +++ /dev/null @@ -1,1232 +0,0 @@ ---- -title: WebIDL bindings -slug: Mozilla/WebIDL_bindings -translation_of: Mozilla/WebIDL_bindings ---- -<div class="note"> -<p>注記: このドキュメントは getters/setters/creators/deleters の名前付け及びインデックス付けが必要です</p> -</div> - -<p><a class="external" href="http://www.w3.org/TR/WebIDL/" title="http://www.w3.org/TR/WebIDL/">WebIDL </a>バインディングはビルド時に2つの物を生成します: 実際の WebIDL ファイルと WebIDL が Gecko の内部コードとどのように紐付けされるかを定義したメタデータのリストが入った設定ファイルです。</p> - -<p>すべてのWebIDLファイルは<a class="external external-icon" href="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/" title="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/"><code>dom/webidl</code></a> に配置され、このディレクトリにある <a class="external external-icon" href="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/moz.build" title="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/moz.build">moz.build</a> のリストに追加されます。</p> - -<p>Note that if you're adding new interfaces, then the test at <code><span class="s0"><a href="http://mxr.mozilla.org/mozilla-central/source/dom/tests/mochitest/general/test_interfaces.html">dom/tests/mochitest/general/test_interfaces.html</a> </span></code>will most likely fail. This is a signal that you need to get a review from a DOM peer. Resist the urge to just add your interfaces to the list without the review; it will just annoy the DOM peers and they'll make you get the review anyway.</p> - -<p>設定ファイルの <code><a class="external external-icon" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Bindings.conf" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Bindings.conf">dom/bindings/Bindings.conf</a></code> は一般的な Python の辞書で、インタフェースの名前とインタフェースの情報の紐付けをし、これらは <em>descriptor</em> と呼ばれています これらは様々なエッジケースをハンドルする可能なすべての種類のオプションが記述されますが、多くの descriptor はとてもシンプルです。</p> - -<p>全ての生成されたコードは <code>mozilla::dom</code> 名前空間に配置されます 一つのインタフェースにつきインタフェースの名前と <code>Binding</code> がついた名前空間が生成され、インタフェースのバインディングに関連した全ての物事はこの名前空間で処理されます。</p> - -<p><code>dom/bindings</code> にある多くのヘルパーオブジェクトやユーティリティメソッドは全て <code>mozilla::dom</code> 名前空間を持ち、これらのヘッダーは全て <code>mozilla/dom</code> にエクスポートされます。</p> - -<h2 id="Adding_WebIDL_bindings_to_a_class" name="Adding_WebIDL_bindings_to_a_class">WebIDL バインディングをクラスに追加する</h2> - -<p><code>MyInterface</code>というインタフェースの WebIDL バインディングをインタフェースの実装をしている <code>mozilla::dom::MyInterface</code> クラスに追加するには、次の作業が必要になります::</p> - -<ol> - <li> - <p>もしほかのインターフェイスを継承しなければ、nsWrapperChache を継承しプロパティのキャッシュラッパーをトレースするための cycle collector クラスをフックします。オブジェクトの生成だけする場合や、他のオブジェクトを使わない場合などは、この手順は必要ありません。<br> - If your interface doesn't inherit from any other interfaces, inherit from <code>nsWrapperCache</code> and hook up the class to the cycle collector so it will trace the wrapper cache properly. Note that you may not need to do this if your objects can only be created, never gotten from other objects. If you also inherit from <code>nsISupports</code>, make sure the <code>nsISupports</code> comes before the <code>nsWrapperCache</code> in your list of parent classes. If your interface <em>does</em> inherit from another interface, just inherit from the C++ type that the other interface corresponds to.</p> - - <p>If you do need to hook up cycle collection, it will look like this in the common case of also inheriting from nsISupports:</p> - - <pre class="brush: cpp">// Add strong pointers your class holds here. If you do, change to using -// NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE. -NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(MyClass) -NS_IMPL_CYCLE_COLLECTING_ADDREF(MyClass) -NS_IMPL_CYCLE_COLLECTING_RELEASE(MyClass) -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MyClass) - NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY - NS_INTERFACE_MAP_ENTRY(nsISupports) -NS_INTERFACE_MAP_END</pre> - </li> - <li>あなたのクラスのインスタンスを与えるために毎回同じオブジェクトを返す<code>GetParentObject</code>のオーバーライドを実装してください (あなたが明示的に再編されたJSラッパーによる親オブジェクトの変更をハンドルするコードを書かない限りは)。そのアイデアは<code>GetParentObject</code>を辿れば最終的にはWindowsが得られ、すべてのWebIDLオブジェクトは特定のWindowと関連付けられることを示します。例えば、<code>nsINode:: GetParentObject</code>は、ノードの所有者ドキュメントを返します。GetParentObjectの返り値は<code>nsISupports</code>を単独で継承しているか対応する<code>nsISupports</code>を生成することができる<code>ToSupports()</code>メソッドを持っている必要があります。<code>MyInterface</code>の多くのインスタンスを迅速に作成することが予想される場合、<code>GetParentObject</code>の戻り値は、最適なパフォーマンスを得るため<code>nsWrapperCache<code>から自分自身を継承しなければなりません。<code>GetParentObject</code>か らnullを返すことは返却されるオブジェクトをセキュリティのためのランダムなグローバルオブジェクトを関連付けることがOKである場合に許可されてい ますが、これはWebコンテンツが無防備になるので通常OKではありません。ラッパーのキャッシュを必要としない場合は、再度、この操作を行う必要はありません。</code></code></li> - <li>Add the WebIDL for <code>MyInterface</code> in <code>dom/webidl</code> and to the list in <code>dom/webidl/moz.build</code>.</li> - <li>Add an entry to <code>dom/bindings/Bindings.conf</code> that sets some basic information about the implementation of the interface. If the C++ type is not <code>mozilla::dom::MyInterface</code>, you need to set the <code>'nativeType'</code> to the right type. If the type is not in the header file one gets by replacing '::' with '/' and appending '<code>.h</code>', then add a corresponding <code>'headerFile'</code> annotation (or <a href="#HeaderFile" title="#HeaderFile"><code>HeaderFile</code></a> annotation to the .webidl file). If you don't have to set any annotations, then you don't need to add an entry either and the code generator will simply assume the defaults here.</li> - <li>Add external interface entries to <code>Bindings.conf</code> for whatever non-WebIDL interfaces your new interface has as arguments or return values.</li> - <li>Implement a <code>WrapObject</code> override on <code>mozilla::dom::MyInterface</code> that just calls through to <code>mozilla::dom::MyInterfaceBinding::Wrap</code>. Note that if your C++ type is implementing multiple distinct Web IDL interfaces, you need to choose which <code>mozilla::dom::MyInterfaceBinding::Wrap</code> to call here. See <code>AudioContext::Wrap</code>, for example.</li> - <li>Expose whatever methods the interface needs on <code>mozilla::dom::MyInterface</code>. These can be inline, virtual, have any calling convention, and so forth, as long as they have the right argument types and return types. You can see an example of what the function declarations should look like by running <code>mach webidl-example MyInterface</code>. This will produce two files in <code>dom/bindings</code> in your objdir: <code>MyInterface-example.h</code> and <code>MyInterface-example.cpp</code>, which show a basic implementation of the interface using a class that inherits from <code>nsISupports</code> and has a wrapper cache.</li> -</ol> - -<p>See this <a class="link-https" href="https://hg.mozilla.org/mozilla-central/rev/dd08c10193c6" title="https://hg.mozilla.org/mozilla-central/rev/dd08c10193c6">sample patch that migrates window.performance.* to WebIDL bindings</a>.</p> - -<div class="note"><strong>Note:</strong> If your object can only be reflected into JS by creating it, not by retrieving it from somewhere, you can skip steps 1 and 2 above and instead add <code>'wrapperCache': False</code> to your descriptor. You will need to flag the functions that return your object as <a href="#Creator" title="#Creator"><code>[NewObject]</code></a> in the WebIDL.</div> - -<h2 id="C_reflections_of_WebIDL_constructs">C++ reflections of WebIDL constructs</h2> - -<h3 id="C_reflections_of_WebIDL_operations_methods">C++ reflections of WebIDL operations (methods)</h3> - -<p><br> - A WebIDL operation is turned into a method call on the underlying C++ object. The return type and argument types are determined <a href="#typemapping" title="#typemapping">as described below</a>. In addition to those, all <a href="#Throws">methods that are allowed to throw</a> will get an <code>ErrorResult&</code> argument appended to their argument list. Methods that use certain WebIDL types like <code>any</code> or <code>object</code> will get a <code>JSContext*</code> argument prepended to the argument list. Static methods will be passed a <a href="#GlobalObject" title="#GlobalObject"><code>const GlobalObject&</code></a> for the relevant global. This argument comes before the <code>JSContext*</code> argument, if any.</p> - -<p>The name of the C++ method is simply the name of the WebIDL operation with the first letter converted to uppercase.</p> - -<p>WebIDL overloads are turned into C++ overloads: they simply call C++ methods with the same name and different signatures.</p> - -<p>For example, this webidl:</p> - -<pre>interface MyInterface -{ - void doSomething(long number); - double doSomething(MyInterface? otherInstance); - - [Throws] - MyInterface doSomethingElse(optional long maybeNumber); - [Throws] - void doSomethingElse(MyInterface otherInstance); - - void doTheOther(any something); - - void doYetAnotherThing(optional boolean actuallyDoIt = false); - - static void staticOperation(any arg); -}; -</pre> - -<p>will require these method declarations:</p> - -<pre class="brush: cpp">class MyClass -{ - void DoSomething(int32_t aNumber); - double DoSomething(MyClass* aOtherInstance); - - already_AddRefed DoSomethingElse(Optional aMaybeNumber, - ErrorResult& rv); - void DoSomethingElse(MyClass& aOtherInstance, ErrorResult& rv); - - void DoTheOther(JSContext* cx, JS::Value aSomething); - - void DoYetAnotherThing(bool aActuallyDoIt); - - static void StaticOperation(const GlobalObject& aGlobal, JSContext* cx, JS::Value aSomething); -} -</pre> - -<h3 id="C_reflections_of_WebIDL_attributes">C++ reflections of WebIDL attributes</h3> - -<p>A WebIDL attribute is turned into a pair of method calls for the getter and setter on the underlying C++ object. A readonly attribute only has a getter and no setter.</p> - -<p>The getter's name is the name of the attribute with the first letter converted to uppercase. This has <code>Get</code> prepended to it if any of these conditions hold:</p> - -<ol> - <li>The type of the attribute is nullable.</li> - <li>The getter can throw.</li> - <li>The return value of the attribute is returned via an out parameter in the C++.</li> -</ol> - -<p>The method signature for the getter looks just like an operation with no arguments and the attribute's type as the return type.</p> - -<p>The setter's name is <code>Set</code> followed by the name of the attribute with the first letter converted to uppercase. The method signature looks just like an operation with a void return value and a single argument whose type is the attribute's type.</p> - -<h3 id="C_reflections_of_WebIDL_constructors">C++ reflections of WebIDL constructors</h3> - -<p>A WebIDL constructor is turned into a static class method named <code>Constructor</code>. The arguments of this method will be the arguments of the WebIDL constructor, with a <a href="#GlobalObject" title="#GlobalObject"><code>const GlobalObject&</code></a> for the relevant global prepended. For the non-worker case, the global is typically the inner window for the DOM Window the constructor function is attached to. If a <code>JSContext*</code> is also needed due to some of the argument types, it will come after the global. The return value of the constructor for <code>MyInterface</code> is exactly the same as that of a method returning an instance of <code>MyInterface</code>. Constructors are always allowed to throw.</p> - -<p>For example, this IDL:</p> - -<pre>[Constructor, - Constructor(unsigned long someNumber)] -interface MyInterface -{ -}; -</pre> - -<p>will require the following declarations in <code>MyClass</code>:</p> - -<pre class="brush: cpp">class MyClass { - // Various nsISupports stuff or whatnot - static - already_AddRefed Constructor(const GlobalObject& aGlobal, - ErrorResult& rv); - static - already_AddRefed Constructor(const GlobalObject& aGlobal, - uint32_t aSomeNumber, - ErrorResult& rv); -}; -</pre> - -<h3 id="typemapping" name="typemapping">C++ reflections of WebIDL types</h3> - -<p>The exact C++ representation for WebIDL types can depend on the precise way that they're being used (e.g., return values, arguments, and sequence or dictionary members might all have different representations).</p> - -<p>Unless stated otherwise, a type only has one representation. Also, unless stated otherwise, nullable types are represented by wrapping <a href="#Nullable" title="#Nullable"><code>Nullable<></code></a> around the base type.</p> - -<p>In all cases, optional arguments which do not have a default value are represented by wrapping <a href="#Optional" title="#Optional"><code>const Optional<>&</code></a> around the representation of the argument type. If the argument type is a C++ reference, it will also become a <a href="#NonNull" title="#NonNull">NonNull<></a> around the actual type of the object in the process. Optional arguments which do have a default value are just represented by the argument type itself, set to the default value if the argument was not in fact passed in.</p> - -<p>Variadic WebIDL arguments are treated as a <a href="#Sequence" title="#Sequence"><code>const Sequence<>&</code></a> around the actual argument type.</p> - -<h4 id="any"><code>any</code></h4> - -<p><code>any</code> is represented in three different ways, depending on use:</p> - -<ul> - <li><code>any</code> arguments become <code>JS::Handle</code>. They will be in the compartment of the passed-in JSContext.</li> - <li><code>any</code> return values become a <code>JS::MutableHandle</code> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&</code>, if any, for the method. The return value is allowed to be in any compartment; bindings will wrap it into the context compartment as needed.</li> - <li><code>any</code> dictionary members and sequence elements become <code>JS::Value</code>. The dictionary members and sequence elements are guaranteed to be marked by whomever puts the sequence or dictionary on the stack, using <code>SequenceRooter</code> and <code>DictionaryRooter</code>.</li> -</ul> - -<p>Methods using <code>any</code> always get a <code>JSContext*</code> argument.</p> - -<p>For example, this WebIDL:</p> - -<pre>interface Test { - attribute any myAttr; - any myMethod(any arg1, sequence arg2, optional any arg3); -}; -</pre> - -<p>will correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">void MyAttr(JSContext* cx, JS::MutableHandle retval); -void SetMyAttr(JSContext* cx, JS::Handle value); -void MyMethod(JSContext* cx, JS::Handle arg1, - const Sequence& arg2, - const Optional >& arg3, - JS::MutableHandle retval); -</pre> - -<h4 id="boolean"><code>boolean</code></h4> - -<p>The <code>boolean</code> WebIDL type is represented as a C++ <code>bool</code>.</p> - -<p>For example, this WebIDL:</p> - -<pre>interface Test { - attribute boolean myAttr; - boolean myMethod(optional boolean arg); -}; -</pre> - -<p>will correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">bool MyAttr(); -void SetMyAttr(bool value); -JS::Value MyMethod(const Optional& arg); -</pre> - -<h4 id="Integer_types">Integer types</h4> - -<p>Integer WebIDL types are mapped to the corresponding C99 stdint types.</p> - -<p>For example, this WebIDL:</p> - -<pre>interface Test { - attribute short myAttr; - long long myMethod(unsigned long? arg); -}; -</pre> - -<p>will correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">int16_t MyAttr(); -void SetMyAttr(int16_t value); -int64_t MyMethod(const Nullable& arg); -</pre> - -<h4 id="Floating_point_types">Floating point types</h4> - -<p>Floating point WebIDL types are mapped to the C++ type of the same name. So <code>float</code> and <code>unrestricted float</code> become a C++ <code>float</code>, while <code>double</code> and <code>unrestricted double</code> become a C++ <code>double</code>.</p> - -<p>For example, this WebIDL:</p> - -<pre>interface Test { - float myAttr; - double myMethod(unrestricted double? arg); -}; -</pre> - -<p>will correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">float MyAttr(); -void SetMyAttr(float value); -double MyMethod(const Nullable& arg); -</pre> - -<h4 id="DOMString"><code>DOMString</code></h4> - -<p>Strings are reflected in three different ways, depending on use:</p> - -<ul> - <li>String arguments become <code>const nsAString&</code>.</li> - <li>String return values become a <a href="#DOMString-helper" title="#DOMString-helper"><code>mozilla::dom::DOMString&</code></a> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&</code>, if any, for the method. Note that this allows callees to declare their methods as taking an <code>nsAString&</code> or <code>nsString&</code> if desired.</li> - <li>Strings in sequences, dictionaries, owning unions, and variadic arguments become <code>nsString</code>.</li> -</ul> - -<p>Nullable strings are represented by the same types as non-nullable ones, but the string will return true for <code>DOMStringIsNull()</code>. Returning null as a string value can be done using <code>SetDOMStringToNull</code> on the out param if it's an <code>nsAString</code> or calling <code>SetNull()</code> on a <code>DOMString</code>.</p> - -<p>For example, this WebIDL:</p> - -<pre>interface Test { - DOMString myAttr; - [Throws] - DOMString myMethod(sequence arg1, DOMString? arg2, optional DOMString arg3); -}; -</pre> - -<p>will correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">void GetMyAttr(nsString& retval); -void SetMyAttr(const nsAString& value); -void MyMethod(const Sequence& arg1, const nsAString& arg2, - const Optional& arg3, nsString& retval, ErrorResult& rv); -</pre> - -<h4 id="ByteString"><code>ByteString</code></h4> - -<p><code>ByteString</code> is reflected in three different ways, depending on use:</p> - -<ul> - <li><code>ByteString</code> arguments become <code>const nsACString&</code>.</li> - <li><code>ByteString</code> return values become an <code>nsCString&</code> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&</code>, if any, for the method.</li> - <li><code>ByteString</code> in sequences, dictionaries, owning unions, and variadic arguments becomes <code>nsCString</code>.</li> -</ul> - -<p>Nullable <code>ByteString</code> are represented by the same types as non-nullable ones, but the string will return true for <code>IsVoid()</code>. Returning null as a string value can be done using <code>SetIsVoid()</code> on the out param.</p> - -<h4 id="object"><code>object</code></h4> - -<p><code>object</code> is represented in three different ways, depending on use:</p> - -<ul> - <li><code>object</code> arguments become <code>JS::Handle</code>. They will be in the compartment of the passed-in JSContext.</li> - <li><code>object</code> return values become a <code>JS::MutableHandle</code> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&</code>, if any, for the method. The return value is allowed to be in any compartment; bindings will wrap it into the context compartment as needed.</li> - <li><code>object</code> dictionary members and sequence elements become <code>JSObject*</code>. The dictionary members and sequence elements are guaranteed to be marked by whoever puts the sequence or dictionary on the stack, using <code>SequenceRooter</code> and <code>DictionaryRooter</code>.</li> -</ul> - -<p>Methods using <code>object</code> always get a <code>JSContext*</code> argument.</p> - -<p>For example, this WebIDL:</p> - -<pre>interface Test { - object myAttr; - object myMethod(object arg1, object? arg2, sequence arg3, optional object arg4, - optional object? arg5); -};</pre> - -<p>will correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">void GetMyAttr(JSContext* cx, JS::MutableHandle retval); -void SetMyAttr(JSContext* cx, JS::Handle value); -void MyMethod(JSContext* cx, JS::Handle arg1, JS::Handle arg2, - const Sequence& arg3, - const Optional >& arg4, - const Optional >& arg5, - JS::MutableHandle retval); -</pre> - -<h4 id="Interface_types">Interface types</h4> - -<p>There are four kinds of interface types in the WebIDL bindings. Callback interfaces are used to represent script objects that browser code can call into. External interfaces are used to represent objects that have not been converted to the WebIDL bindings yet. WebIDL interfaces are used to represent WebIDL binding objects. "SpiderMonkey" interfaces are used to represent objects that are implemented natively by the JavaScript engine (e.g., typed arrays).</p> - -<h5 id="Callback_interfaces">Callback interfaces</h5> - -<p>Callback interfaces are represented in C++ as objects inheriting from <a href="#CallbackInterface" title="#CallbackInterface"><code>mozilla::dom::CallbackInterface</code></a>, whose name, in the <code>mozilla::dom</code> namespace, matches the name of the callback interface in the WebIDL. The exact representation depends on how the type is being used.</p> - -<ul> - <li>Nullable arguments become <code>Foo*</code>.</li> - <li>Non-nullable arguments become <code>Foo&</code>.</li> - <li>Return values become <code>already_AddRefed</code> or <code>Foo*</code> as desired. The pointer form is preferred because it results in faster code, but it should only be used if the return value was not addrefed (and so it can only be used if the return value is kept alive by the callee until at least the binding method has returned).</li> - <li>WebIDL callback interfaces in sequences, dictionaries, owning unions, and variadic arguments are represented by <code>nsRefPtr</code> if nullable and <a href="#OwningNonNull" title="#OwningNonNull"><code>OwningNonNull</code></a> otherwise.</li> -</ul> - -<p>If the interface is a single-operation interface, the object exposes two methods that both invoke the same underlying JS callable. The first of these methods allows the caller to pass in a <code>this</code> object, while the second defaults to <code>undefined</code> as the <code>this</code> value. In either case, the <code>this</code> value is only used if the callback interface is implemented by a JS callable. If it's implemented by an object with a property whose name matches the operation, the object itself is always used as <code>this</code>.</p> - -<p>If the interface is not a single-operation interface, it just exposes a single method for every IDL method/getter/setter.</p> - -<p>The signatures of the methods correspond to the signatures for throwing IDL methods/getters/setters with an additional trailing "<code>mozilla::dom::CallbackObject::ExceptionHandling</code> <code>aExceptionHandling</code>" argument, defaulting to <code>eReportExceptions</code>. If <code>aReportExceptions</code> is set to <code>eReportExceptions</code>, the methods will report JS exceptions before returning. If <code>aReportExceptions</code> is set to <code>eRethrowExceptions</code>, JS exceptions will be stashed in the <code>ErrorResult</code> and will be reported when the stack unwinds to wherever the <code>ErrorResult</code> was set up.</p> - -<p>For example, this WebIDL:</p> - -<pre>callback interface MyCallback { - attribute long someNumber; - short someMethod(DOMString someString); -}; -callback interface MyOtherCallback { - // single-operation interface - short doSomething(Node someNode); -}; -interface MyInterface { - attribute MyCallback foo; - attribute MyCallback? bar; -};</pre> - -<p>will lead to these C++ class declarations in the <code>mozilla::dom</code> namespace:</p> - -<pre class="brush: cpp">class MyCallback : public CallbackInterface -{ - int32_t GetSomeNumber(ErrorResult& rv, ExceptionHandling aExceptionHandling = eReportExceptions); - void SetSomeNumber(int32_t arg, ErrorResult& rv, - ExceptionHandling aExceptionHandling = eReportExceptions); - int16_t SomeMethod(const nsAString& someString, ErrorResult& rv, - ExceptionHandling aExceptionHandling = eReportExceptions); -}; - -class MyOtherCallback : public CallbackInterface -{ -public: - int16_t - DoSomething(nsINode& someNode, ErrorResult& rv, - ExceptionHandling aExceptionHandling = eReportExceptions); - - template - int16_t - DoSomething(const T& thisObj, nsINode& someNode, ErrorResult& rv, - ExceptionHandling aExceptionHandling = eReportExceptions); -};</pre> - -<p>and these C++ function declarations on the implementation of <code>MyInterface</code>:</p> - -<pre>already_AddRefed GetFoo(); -void SetFoo(MyCallback&); -already_AddRefed GetBar(); -void SetBar(MyCallback*); -</pre> - -<p>A consumer of MyCallback would be able to use it like this:</p> - -<pre class="brush: cpp">void -SomeClass::DoSomethingWithCallback(MyCallback& aCallback) -{ - ErrorResult rv; - int32_t number = aCallback.GetSomeNumber(rv); - if (rv.Failed()) { - // The error has already been reported to the JS console; you can handle - // things however you want here. - return; - } - - // For some reason we want to catch and rethrow exceptions from SetSomeNumber, say. - aCallback.SetSomeNumber(2*number, rv, eRethrowExceptions); - if (rv.Failed()) { - // The exception is now stored on rv. This code MUST report - // it usefully; otherwise it will assert. - } -} -</pre> - -<h5 id="External_interfaces">External interfaces</h5> - -<p>External interfaces are represented in C++ as objects that XPConnect knows how to unwrap to. This can mean XPCOM interfaces (whether declared in XPIDL or not) or it can mean some type that there's a castable native unwrapping function for. The C++ type to be used should be the <code>nativeType</code> listed for the external interface in the <a href="#Bindings.conf" title="#Bindings.conf"><code>Bindings.conf</code></a> file. The exact representation depends on how the type is being used.</p> - -<ul> - <li>Arguments become <code>nsIFoo*</code>.</li> - <li>Return values can be <code>already_AddRefed</code> or <code>nsIFoo*</code> as desired. The pointer form is preferred because it results in faster code, but it should only be used if the return value was not addrefed (and so it can only be used if the return value is kept alive by the callee until at least the binding method has returned).</li> - <li>External interfaces in sequences, dictionaries, owning unions, and variadic arguments are represented by <code>nsRefPtr.</code></li> -</ul> - -<h5 id="WebIDL_interfaces">WebIDL interfaces</h5> - -<p>WebIDL interfaces are represented in C++ as C++ classes. The class involved must either be refcounted or must be explicitly annotated in <code>Bindings.conf</code> as being directly owned by the JS object. If the class inherits from <code>nsISupports</code>, then the canonical <code>nsISupports</code> must be on the primary inheritance chain of the object. If the interface has a parent interface, the C++ class corresponding to the parent must be on the primary inheritance chain of the object. This guarantees that a <code>void*</code> can be stored in the JSObject which can then be <code>reinterpret_cast</code> to any of the classes that correspond to interfaces the object implements. The C++ type to be used should be the <code>nativeType</code> listed for the interface in the <a href="#Bindings.conf" title="#Bindings.conf"><code>Bindings.conf</code></a> file, or <code>mozilla::dom::InterfaceName</code> if none is listed. The exact representation depends on how the type is being used.</p> - -<ul> - <li>Nullable arguments become <code>Foo*</code>.</li> - <li>Non-nullable arguments become <code>Foo&</code>.</li> - <li>Return values become <code>already_AddRefed</code> or <code>Foo*</code> as desired. The pointer form is preferred because it results in faster code, but it should only be used if the return value was not addrefed (and so it can only be used if the return value is kept alive by the callee until at least the binding method has returned).</li> - <li>WebIDL interfaces in sequences, dictionaries, owning unions, and variadic arguments are represented by <code>nsRefPtr</code> if nullable and <a href="#OwningNonNull" title="#OwningNonNull"><code>OwningNonNull</code></a> otherwise.</li> -</ul> - -<p>For example, this WebIDL:</p> - -<pre>interface MyInterface { - attribute MyInterface myAttr; - void passNullable(MyInterface? arg); - MyInterface? doSomething(sequence arg); - MyInterface doTheOther(sequence arg); - readonly attribute MyInterface? nullableAttr; - readonly attribute MyInterface someOtherAttr; - readonly attribute MyInterface someYetOtherAttr; -}; -</pre> - -<p>Would correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">already_AddRefed MyAttr(); -void SetMyAttr(MyClass& value); -void PassNullable(MyClass* arg); -already_AddRefed doSomething(const Sequence >& arg); -already_AddRefed doTheOther(const Sequence >& arg); -already_Addrefed GetNullableAttr(); -MyClass* SomeOtherAttr(); -MyClass* SomeYetOtherAttr(); // Don't have to return already_AddRefed! -</pre> - -<h5 id="SpiderMonkey_interfaces">"SpiderMonkey" interfaces</h5> - -<p>Typed array, array buffer, and array buffer view arguments are represented by the objects in <a href="#TypedArray" title="#TypedArray"><code>TypedArray.h</code></a>. For example, this WebIDL:</p> - -<pre>interface Test { - void passTypedArrayBuffer(ArrayBuffer arg); - void passTypedArray(ArrayBufferView arg); - void passInt16Array(Int16Array? arg); -} -</pre> - -<p>will correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">void PassTypedArrayBuffer(const ArrayBuffer& arg); -void PassTypedArray(const ArrayBufferView& arg); -void PassInt16Array(const Nullable& arg); -</pre> - -<p>Typed array return values become a <code>JS::MutableHandle</code> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&</code>, if any, for the method. The return value is allowed to be in any compartment; bindings will wrap it into the context compartment as needed.</p> - -<p>Typed arrays store a <code>JSObject*</code> and hence need to be rooted properly. On-stack typed arrays can be declared as <code>RootedTypedArray</code> (e.g. <code>RootedTypedArray</code>). Typed arrays on the heap need to be traced.</p> - -<h4 id="Dictionary_types">Dictionary types</h4> - -<p>A dictionary argument is represented by a const reference to a struct whose name is the dictionary name in the <code>mozilla::dom</code> namespace. The struct has one member for each of the dictionary's members with the same name except the first letter uppercased and prefixed with "m". The members that have default values have types as described under the corresponding WebIDL type in this document. The members that don't have default values have those types wrapped in <a href="#Optional" title="#Optional"><code>Optional<></code></a>.</p> - -<p>Dictionary return values are represented by an out parameter whose type is a non-const reference to the struct described above, with all the members that have default values preinitialized to those default values.</p> - -<p>Note that optional dictionary arguments are always considered to have a default value of <code>null</code>, so dictionary arguments are never wrapped in <code>Optional<></code>.</p> - -<p>If necessary, dictionaries can be directly initialized from a <code>JS::Value</code> in C++ code by invoking their <code>Init()</code> method. Consumers doing this should declare their dictionary as <code>RootedDictionary</code>. When this is done, passing in a null scope object and even a null <code>JSContext*</code> is allowed if the passed-in <code>JS::Value</code> is <code>JS::NullValue()</code>. Likewise, a dictionary struct can be converted to a <code>JS::Value</code> in C++ by calling <code>ToJSValue</code> with the dictionary as the second argument. If <code>Init()</code> or <code>ToJSValue()</code> returns false, they will generally set a pending exception on the JSContext; reporting those is the responsibility of the caller.</p> - -<p>For example, this WebIDL:</p> - -<pre>dictionary Dict { - long foo = 5; - DOMString bar; -}; - -interface Test { - void initSomething(optional Dict arg); -}; -</pre> - -<p>will correspond to this C++ function declaration:</p> - -<pre class="brush: cpp">void InitSomething(const Dict& arg); -</pre> - -<p>and the <code>Dict</code> struct will look like this:</p> - -<pre class="brush: cpp">struct Dict { - bool Init(JSContext* aCx, JS::Handle aVal, const char* aSourceDescription = "value"); - - Optional mBar; - int32_t mFoo; -} -</pre> - -<p>Note that the dictionary members are sorted in the struct in alphabetical order.</p> - -<h4 id="Enumeration_types">Enumeration types</h4> - -<p>WebIDL enumeration types are represented as C++ enums. The values of the C++ enum are named by taking the strings in the WebIDL enumeration, replacing all non-alphanumerics with underscores, and uppercasing the first letter, with a special case for the empty string, which becomes the value <code>_empty</code>.</p> - -<p>For a WebIDL enum named <code>MyEnum</code>, the C++ enum is named <code>MyEnum</code> and placed in the <code>mozilla::dom</code> namespace, while the values are placed in the <code>mozilla::dom::MyEnum</code> namespace. There is also a <code>mozilla::dom::MyEnumValues::strings</code> which is an array of <code>mozilla::dom::EnumEntry</code> structs that gives access to the string representations of the values.</p> - -<p>For example, this WebIDL:</p> - -<pre>enum MyEnum { - "something", - "something-else", - "", - "another" -}; -</pre> - -<p>would lead to this C++ enum declaration:</p> - -<pre class="brush: cpp">MOZ_BEGIN_ENUM_CLASS(MyEnum, uint32_t) - Something, - Something_else, - _empty, - Another -MOZ_END_ENUM_CLASS(MyEnum) - -namespace MyEnumValues { -extern const EnumEntry strings[10]; -} // namespace MyEnumValues -</pre> - -<h4 id="Callback_function_types">Callback function types</h4> - -<p>Callback functions are represented as an object, inheriting from <a href="#CallbackFunction" title="#CallbackFunction"><code>mozilla::dom::CallbackFunction</code></a>, whose name, in the <code>mozilla::dom</code> namespace, matches the name of the callback function in the WebIDL. If the type is nullable, a pointer is passed in; otherwise a reference is passed in.</p> - -<p>The object exposes two <code>Call</code> methods, which both invoke the underlying JS callable. The first <code>Call</code> method has the same signature as a throwing method declared just like the callback function, with an additional trailing "<code>mozilla::dom::CallbackObject::ExceptionHandling</code> <code>aExceptionHandling</code>" argument, defaulting to <code>eReportExceptions</code>, and calling it will invoke the callable with <code>undefined</code> as the <code>this</code> value. The second <code>Call</code> method allows passing in an explicit <code>this</code> value as the first argument. This second call method is a template on the type of the first argument, so the <code>this</code> value can be passed in in whatever form is most convenient, as long as it's either a type that can be wrapped by XPConnect or a WebIDL interface type.</p> - -<p>If <code>aReportExceptions</code> is set to <code>eReportExceptions</code>, the <code>Call</code> methods will report JS exceptions before returning. If <code>aReportExceptions</code> is set to <code>eRethrowExceptions</code>, JS exceptions will be stashed in the <code>ErrorResult</code> and will be reported when the stack unwinds to wherever the <code>ErrorResult</code> was set up.</p> - -<p>For example, this WebIDL:</p> - -<pre>callback MyCallback = long (MyInterface arg1, boolean arg2); -interface MyInterface { - attribute MyCallback foo; - attribute MyCallback? bar; -};</pre> - -<p>will lead to this C++ class declaration, in the <code>mozilla::dom</code> namespace:</p> - -<pre class="brush: cpp">class MyCallback : public CallbackFunction -{ -public: - int32_t - Call(MyInterface& arg1, bool arg2, ErrorResult& rv, - ExceptionHandling aExceptionHandling = eReportExceptions); - - template - int32_t - Call(const T& thisObj, MyInterface& arg1, bool arg2, ErrorResult& rv, - ExceptionHandling aExceptionHandling = eReportExceptions); -};</pre> - -<p>and these C++ function declarations in the <code>MyInterface</code> class:</p> - -<pre>already_AddRefed GetFoo(); -void SetFoo(MyCallback&); -already_AddRefed GetBar(); -void SetBar(MyCallback*); -</pre> - -<p>A consumer of MyCallback would be able to use it like this:</p> - -<pre class="brush: cpp">void -SomeClass::DoSomethingWithCallback(MyCallback& aCallback, MyInterface& aInterfaceInstance) -{ - ErrorResult rv; - int32_t number = aCallback.Call(aInterfaceInstance, false, rv); - if (rv.Failed()) { - // The error has already been reported to the JS console; you can handle - // things however you want here. - return; - } - - // Now for some reason we want to catch and rethrow exceptions from the callback, - // and use "this" as the this value for the call to JS. - number = aCallback.Call(*this, true, rv, eRethrowExceptions); - if (rv.Failed()) { - // The exception is now stored on rv. This code MUST report - // it usefully; otherwise it will assert. - } -} -</pre> - -<h5 id="sect1"></h5> - -<h4 id="Sequences">Sequences</h4> - -<p>Sequence arguments are represented by <a href="#Sequence" title="#Sequence"><code>const Sequence&</code></a>, where <code>T</code> depends on the type of elements in the WebIDL sequence.</p> - -<p>Sequence return values are represented by an <code>nsTArray</code> out param appended to the argument list, where <code>T</code> is the return type for the elements of the WebIDL sequence. This comes after all IDL arguments, but before the <code>ErrorResult&</code>, if any, for the method.</p> - -<h4 id="Arrays">Arrays</h4> - -<p>IDL array objects are not supported yet. The spec on these is likely to change drastically anyway.</p> - -<h4 id="Union_types">Union types</h4> - -<p>Union types are reflected as a struct in the <code>mozilla::dom</code> namespace. There are two kinds of union structs: one kind does not keep its members alive (is "non-owning"), and the other does (is "owning"). Const references to non-owning unions are used for plain arguments. Owning unions are used in dictionaries, sequences, and for variadic arguments. Union return values become a non-const owning union out param. The name of the struct is the concatenation of the names of the types in the union, with "Or" inserted between them, and for an owning struct "Owning" prepended. So for example, this IDL:</p> - -<pre>void passUnion((object or long) arg); -(object or long) receiveUnion(); -void passSequenceOfUnions(sequence<(object or long)> arg); -void passOtherUnion((HTMLDivElement or ArrayBuffer or EventInit) arg); -</pre> - -<p>would correspond to these C++ function declarations:</p> - -<pre class="brush: cpp">void PassUnion(const ObjectOrLong& aArg); -void ReceiveUnion(OwningObjectObjectOrLong& aArg); -void PassSequenceOfUnions(const Sequence& aArg); -void PassOtherUnion(const HTMLDivElementOrArrayBufferOrEventInit& aArg); -</pre> - -<p>Union structs expose accessors to test whether they're of a given type and to get hold of the data of that type. They also expose setters that set the union as being of a particular type and return a reference to the union's internal storage where that type could be stored. The one exception is the <code>object</code> type, which uses a somewhat different form of setter where the <code>JSObject*</code> is passed in directly. For example, <code>ObjectOrLong</code> would have the following methods:</p> - -<pre class="brush: cpp">bool IsObject() const; -JSObject* GetAsObject() const; -void SetToObject(JSContext*, JSObject*); -bool IsLong() const; -int32_t GetAsLong() const; -int32_t& SetAsLong() -</pre> - -<p>Owning unions used on the stack should be declared as a <code>RootedUnion</code>, for example, <code>RootedUnion</code>.</p> - -<h4 id="Date"><code>Date</code></h4> - -<p>WebIDL <code>Date</code> types are represented by a <code>mozilla::dom::Date</code> struct.</p> - -<h3 id="Stringifiers">Stringifiers</h3> - -<p>Named stringifiers operations in WebIDL will just invoke the corresponding C++ method.</p> - -<p>Anonymous stringifiers in WebIDL will invoke the C++ method called <code>Stringify</code>. So, for example, given this IDL:</p> - -<pre>interface FirstInterface { - stringifier; -}; - -interface SecondInterface { - stringifier DOMString getStringRepresentation(); -}; -</pre> - -<p>the corresponding C++ would be:</p> - -<pre>class FirstInterface { -public: - void Stringify(nsAString& aResult); -}; - -class SecondInterface { -public: - void GetStringRepresentation(nsAString& aResult); -}; -</pre> - -<h3 id="Legacy_Callers">Legacy Callers</h3> - -<p>Only anonymous legacy callers are supported, and will invoke the C++ method called <code>LegacyCall</code>. This will be passed the JS "this" value as the first argument, then the arguments to the actual operation. A <code>JSContext</code> will be passed if any of the operation arguments need it. So for example, given this IDL:</p> - -<pre>interface InterfaceWithCall { - legacycaller long (float arg); -}; -</pre> - -<p>the corresponding C++ would be:</p> - -<pre class="brush: cpp">class InterfaceWithCall { -public: - int32_t LegacyCall(JS::Handle aThisVal, float aArgument); -}; -</pre> - -<h3 id="Named_getters">Named getters</h3> - -<p>If the interface has a named getter, the binding will expect several methods on the C++ implementation:</p> - -<ul> - <li>A <code>NamedGetter</code> method. This takes a property name and returns whatever type the named getter is declared to return. It also has a boolean out param for whether a property with that name should exist at all.</li> - <li>A <code>NameIsEnumerable</code> method. This takes a property name and returns a boolean that indicates whether the property is enumerable.</li> - <li>A <code>GetSupportedNames</code> method. This takes an unsigned integer which corresponds to the flags passed to the <code>iterate</code> proxy trap and returns a list of property names. For implementations of this method, the important flags is <code>JSITER_HIDDEN</code>. If that flag is set, the call needs to return all supported property names. If it's not set, the call needs to return only the enumerable ones.</li> -</ul> - -<p>The <code>NameIsEnumerable</code> and <code>GetSupportedNames</code> methods need to agree on which names are and are not enumerable. The <code>NamedGetter</code> and <code>GetSupportedNames</code> methods need to agree on which names are supported.</p> - -<p>So for example, given this IDL:</p> - -<pre>interface InterfaceWithNamedGetter { - getter long(DOMString arg); -}; -</pre> - -<p>the corresponding C++ would be:</p> - -<pre class="brush: cpp">class InterfaceWithNamedGetter -{ -public: - int32_t NamedGetter(const nsAString& aName, bool& aFound); - bool NameIsEnumerable(const nsAString& aName); - void GetSupportedNames(unsigned aFlags, nsTArray& aNames); -}; -</pre> - -<h2 id="Throwing_exceptions_from_WebIDL_methods_getters_and_setters">Throwing exceptions from WebIDL methods, getters, and setters</h2> - -<p>WebIDL methods, getters, and setters that are <a href="#Throws">explicitly marked as allowed to throw</a> have an <code>ErrorResult&</code> argument as their last argument. To throw an exception, simply call <code>Throw()</code> on the <code>ErrorResult&</code> and return from your C++ back into the binding code.</p> - -<p>In cases when the specification calls for throwing a <code>TypeError</code>, you should use <code>ErrorResult::ThrowTypeError()</code> instead of calling <code>Throw()</code>.</p> - -<h2 class="note" id="Custom_extended_attributes">Custom extended attributes</h2> - -<p>Our WebIDL parser and code generator recognize several extended attributes that are not present in the WebIDL spec.</p> - -<h3 id="AliaspropName"><code>[Alias=propName]</code></h3> - -<p>This extended attribute can be specified on a method and indicates that another property with the specified name will also appear on the interface prototype object and will have the same Function object value as the property for the method. For example:</p> - -<pre>interface MyInterface { - [Alias=performSomething] void doSomething(); -}; -</pre> - -<p><code>MyInterface.prototype.performSomething</code> will have the same Function object value as <code>MyInterface.prototype.doSomething</code>.</p> - -<p>Multiple <code>[Alias]</code> extended attribute can be used on the one method. <code>[Alias]</code> cannot be used on a static method, nor on methods on a global interface (such as <code>Window</code>).</p> - -<p>Aside from regular property names, the name of an alias can be <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Well-known_symbols">Symbol.iterator</a>. This is specified by writing <code>[Alias="@@iterator"]</code>.</p> - -<h3 id="ChromeOnly" name="ChromeOnly"><code>[ChromeOnly]</code></h3> - -<p>この拡張された属性はメソッド、属性、インターフェイスの一部・全体に定義することができます。</p> - -<p>[ChromeOnly]がついたインターフェイスメンバーは chrome ウィンドウだけで利用することができます。(webpage には見えません) web コンテンツから見るとインターフェイス自体が存在しないことになります。Xrays を使って chrome スクリプトをコンテンツ上で動かすことでメンバーが見られるようになります。</p> - -<p>インターフェイス全体に適用した場合、 <a href="#Func" title="#Func"><code>[Func]</code></a> を使った時のように、自動でシステムのスクリプトから呼び出されたか(chrome または、chrome ページから開始された Worker かどうか)チェックします。グローバルオブジェクトとして使えるか判断するために C++ の実装を呼び出すことはありません。これは Xrays 経由だと[ChromeOnly]インターフェイスオブジェクトにアクセスできることを意味しています。</p> - -<p>この拡張された属性は、 <code>[<a href="#AvailableIn">AvailableIn</a>]</code>, <code><code>[<a href="#CheckPermissions">CheckPermissions</a>]</code></code>,<code> [<a href="#Func">Func</a>]</code>, <code>[<a href="#Pref">Pref</a>]と併用できます。もし他の属性を定義した場合、すべての条件をみたす時だけ使えるようになります。</code></p> - -<h3 id="Pref" name="Pref"><code>[Pref=prefname]</code></h3> - -<p>This extended attribute can be specified on any method, attribute, or constant on an interface or on an interface as a whole. It takes a value, which must be the name of a boolean preference.</p> - -<p>If specified on an interface member, the interface member involved is only exposed if the preference is set to <code>true</code>. An example of how this can be used:</p> - -<pre>interface MyInterface { - attribute long alwaysHere; - [Pref="my.pref.name"] attribute long onlyHereIfEnabled; -}; -</pre> - -<p>If specifed on an interface as a whole, this functions like <a href="#Func" title="#Func"><code>[Func]</code></a> except that the binding will check the value of the preference directly without calling into the C++ implementation of the interface at all. This is useful when the enable check is simple and it's desirable to keep the prefname with the WebIDL declaration. The implementation can call <code>MyInterfaceBinding::PrefEnabled()</code> to check whether it is enabled or not. An example of how this can be used:</p> - -<pre>[Pref="my.pref.name"] -interface MyConditionalInterface { -}; -</pre> - -<p>This extended attibute can be specified together with <code>[<a href="#AvailableIn">AvailableIn</a>]</code>, <code><code><code>[<a href="#CheckPermissions">CheckPermissions</a>]</code></code></code>, <code>[<a href="#ChromeOnly">ChromeOnly</a>]</code>, and<code>[<a href="#Func">Func</a>]</code>. If more than one of these is specified, all conditions will need to test true for the interface or interface member to be exposed.</p> - -<h3 id="Func" name="Func"><code>[Func="funcname"]</code></h3> - -<p>This extended attribute can be specified on any method, attribute, or constant on an interface or on an interface as a whole. It takes a value, which must be the name of a static function.</p> - -<p>If specified on an interface member, the interface member involved is only exposed if the specified function returns <code>true</code>. An example of how this can be used:</p> - -<pre>interface MyInterface { - attribute long alwaysHere; - [Func="MyClass::StuffEnabled"] attribute long onlyHereIfEnabled; -}; -</pre> - -<p>The function is invoked with two arguments: the <code>JSContext</code> that the operation is happening on and the <code>JSObject</code> for the global of the object that the property will be defined on if the function returns true. In particular, in the Xray case the <code>JSContext</code> is in the caller compartment (typically chrome) but the <code>JSObject</code> is in the target compartment (typically content). This allows the method implementation to select which compartment it cares about in its checks.</p> - -<p>The above IDL would also require the following C++:</p> - -<pre class="brush: cpp">class MyClass { - static bool StuffEnabled(JSContext* cx, JSObject* obj); -}; -</pre> - -<p>If specified on an interface as a whole, then lookups for the interface object for this interface on a DOM Window will only find it if the specified function returns true. For objects that can only be created via a constructor, this allows disabling the functionality altogether and making it look like the feature is not implemented at all.</p> - -<p>An example of how <code>[Func]</code> can be used:</p> - -<pre>[Func="MyClass::MyConditionalInterfaceEnabled"] -interface MyConditionalInterface { -}; -</pre> - -<p>In this case, the C++ function is passed a <code>JS::Handle</code>. So the C++ in this case would look like this:</p> - -<pre class="brush: cpp">class MyClass { - static bool MyConditionalInterfaceEnabled(JSContext* cx, JS::Handle obj); -}; -</pre> - -<p>Just like in the interface member case, the <code>JSContext</code> is in the caller compartment but the <code>JSObject</code> is the actual object the property would be defined on. In the Xray case that means obj is in the target compartment (typically content) and <code>cx</code> is typically chrome.</p> - -<p>This extended attibute can be specified together with <code>[<a href="#AvailableIn">AvailableIn</a>]</code>, <code>[<a href="#CheckPermissions">CheckPermissions</a>]</code>, <code>[<a href="#ChromeOnly">ChromeOnly</a>]</code>, and <code>[<a href="#Pref">Pref</a>]</code>. If more than one of these is specified, all conditions will need to test true for the interface or interface member to be exposed.</p> - -<h3 id="AvailableIn" name="AvailableIn"><code>[AvailableIn=Where]</code></h3> - -<p>This extended attribute can be specified on any method, attribute, or constant on an interface or on an interface as a whole. It takes a value, which must be either <code>PrivilegedApps</code> or <code>CertifiedApps</code>. The former will make the interface or interface member only visible in privileged or certified apps on Firefox OS. The latter will make the interface or interface member only visible in certified apps.</p> - -<p>This extended attibute can be specified together with <code>[<a href="#ChromeOnly">ChromeOnly</a>]</code>, <code>[<a href="#CheckPermissions">CheckPermissions</a>]</code>, <code>[<a href="#Func">Func</a>]</code>, and <code>[<a href="#Pref">Pref</a>]</code>. If more than one of these is specified, all conditions will need to test true for the interface or interface member to be exposed.</p> - -<h3 id="CheckPermissions" name="CheckPermissions"><code>[CheckPermissions="list of permissions"]</code></h3> - -<p>This extended attribute can be specified on any method, attribute, or constant on an interface or on an interface as a whole. It takes a whitespace-separated list of permissions to be checked before making the interface or interface member visible to a page or app. When multiple permission names are specified, <strong>at least one</strong> of them will need to be set to nsIPermissionManager::ALLOW_ACTION for the interface or interface member to be exposed.</p> - -<p>This extended attribute can be specified together with <code>[<a href="#AvailableIn">AvailableIn</a>]</code>, <code>[<a href="#ChromeOnly">ChromeOnly</a>]</code>, <code>[<a href="#Func">Func</a>]</code> and <code>[<a href="#Pref">Pref</a>]. </code>If more than one of these is specified, all conditions will need to test true for the interface or interface member to be exposed.</p> - -<h3 id="Throws" name="Throws"><code>[Throws]</code>, <code>[GetterThrows]</code>, <code>[SetterThrows]</code></h3> - -<p>Used to flag methods or attributes as allowing the C++ callee to throw. This causes the binding generator, and in many cases the JIT, to generate extra code to handle possible exceptions. Possibly-throwing methods and attributes get an <code>ErrorResult&</code> argument.</p> - -<p><code>[Throws]</code> applies to both methods and attributes; for attributes it means both the getter and the setter can throw. <code>[GetterThrows]</code> applies only to attributes. <code>[SetterThrows]</code> applies only to non-readonly attributes.</p> - -<p>For bindings that involve workers, the above can all be specified with <code>MainThread</code> or <code>Workers</code> as a value. When doing this, if <code>[Throws]</code> is specified on an attribute, no matter what its value, then <code>[GetterThrows]</code> and <code>[SetterThrows]</code> will be ignored. So to have an attribute which can throw both when getting and setting on main thread but can only throw from the setter in workers, use <code>[SetterThrows, GetterThrows=MainThread]</code>.</p> - -<p>For interfaces flagged with <code>[JSImplementation]</code>, all methods and properties are assumed to be able to throw and do not need to be flagged as throwing.</p> - -<h3 id="DependsOn" name="DependsOn"><code>[DependsOn]</code></h3> - -<p>Used for a method or attribute to indicate what the return value depends on. Possible values are:</p> - -<dl> - <dt><code>Everything</code></dt> - <dd>This value can't actually be specified explicitly; this is the default value you get when <code>[DependsOn]</code> is not specified. This means we don't know anything about the return value's dependencies and hence can't rearrange other code that might change values around the method or attribute.</dd> - <dt id="DependsOn=DOMState"><code>DOMState</code></dt> - <dd>The return value depends on the state of the "DOM", by which we mean all objects specified via Web IDL. The return value is guaranteed to not depend on the state of the JS heap or other JS engine data structures, and is guaranteed to not change unless some function with <a href="#Affects=Everything"><code>[Affects=Everything]</code></a> is executed.</dd> - <dt><code>DeviceState</code></dt> - <dd>The return value depends on the state of the device we're running on (e.g., the system clock). The return value is guaranteed to not be affected by any code running inside Gecko itself, but we might get a new value every time the method or getter is called even if no Gecko code ran between the calls.</dd> - <dt id="DependsOn=Nothing"><code>Nothing</code></dt> - <dd>The return value is a constant that never changes. This value cannot be used on non-readonly attributes, since having a non-readonly attribute whose value never changes doesn't make sense.</dd> -</dl> - -<p>Values other than <code>Everything</code>, when used in combination with <a href="#Affects=Nothing"><code>[Affects=Nothing]</code></a>, can used by the JIT to perform loop-hoisting and common subexpression elimination on the return values of IDL attributes and methods.</p> - -<h3 id="Affects" name="Affects"><code>[Affects]</code></h3> - -<p>Used for a method or attribute getter to indicate what sorts of state can be affected when the function is called. Attribute setters are, for now, assumed to affect everything. Possible values are:</p> - -<dl> - <dt id="Affects=Everything"><code>Everything</code></dt> - <dd>This value can't actually be specified explicitly; this is the default value you get when <code>[Affects]</code> is not specified. This means that calling the method or getter might change any mutable state in the DOM or JS heap.</dd> - <dt id="Affects=Nothing"><code>Nothing</code></dt> - <dd>Calling the method or getter will have no side-effects on either the DOM or the JS heap.</dd> -</dl> - -<p>Methods and attribute getters with <code>[Affects=Nothing]</code> are allowed to throw exceptions, as long as they do so deterministically. In the case of methods, whether an exception is thrown is allowed to depend on the arguments, as long as calling the method with the same arguments will always either throw or not throw.</p> - -<p>The <code>Nothing</code> value, when used with <code>[DependsOn]</code> values other than <code>Everything</code>, can used by the JIT to perform loop-hoisting and common subexpression elimination on the return values of IDL attributes and methods, as well as code motion past DOM methods that might depend on system state but have no side effects.</p> - -<h3 id="Pure" name="Pure"><code>[Pure]</code></h3> - -<p>This is an alias for <code>[<a href="#Affects=Nothing">Affects=Nothing</a>, <a href="#DependsOn=DOMState">DependsOn=DOMState</a>]</code>. Attributes/methods flagged in this way promise that they will keep returning the same value as long as nothing that has <code>[Affects=Everything]</code> executes.</p> - -<h3 id="Constant" name="Constant"><code>[Constant]</code></h3> - -<p>This is an alias for <code>[<a href="#Affects=Nothing">Affects=Nothing</a>, <a href="#DependsOn=Nothing">DependsOn=Nothing</a>]</code>. Used to flag readonly attributes or methods that could have been annotated with <code>[Pure]</code> and also always return the same value. This should only be used when it's absolutely guaranteed that the return value of the attribute getter will always be the same from the JS engine's point of view.</p> - -<h3 id="NeedResolve" name="NeedResolve"><code>[NeedResolve]</code></h3> - -<p>Used to flag interfaces which have a custom resolve hook. This annotation will cause the <code>DoResolve</code> method to be called on the underlying C++ class when a property lookup happens on the object. The signature of this method is: <code>bool DoResolve(JSContext*, JS::Handle, JS::Handle, JS::MutableHandle)</code>. Here the passed-in object is the object the property lookup is happening on (which may be an Xray for the actual DOM object) and the jsid is the property name. The value that the property should have is returned in the <code>MutableHandle</code>, with <code>UndefinedValue()</code> indicating that the property does not exist.</p> - -<p>If this extended attribute is used, then the underlying C++ class must also implement a method called <code>GetOwnPropertyNames</code> with the signature <code>void GetOwnPropertyNames(JSContext* aCx, nsTArray& aNames, ErrorResult& aRv)</code>. This method will be called by the JS engine's enumerate hook and must provide a superset of all the property names that <code>DoResolve</code> might resolve. Providing names that <code>DoResolve</code> won't actually resolve is OK.</p> - -<h3 id="HeaderFile" name="HeaderFile"><code>[HeaderFile="path/to/headerfile.h"]</code></h3> - -<p>Indicates where the implementation can be found. Similar to the headerFile annotation in Bindings.conf.</p> - -<h3 id="JSImplementation" name="JSImplementation"><code>[JSImplementation="@mozilla.org/some-contractid;1"]</code></h3> - -<p>Used on an interface to provide the contractid of the <a href="#Implementing_WebIDL_using_Javascript" title="#Implementing_WebIDL_using_Javascript">JavaScript component implementing the interface</a>.</p> - -<h3 id="NavigatorProperty" name="NavigatorProperty"><code>[NavigatorProperty="propName"]</code></h3> - -<p>Setting this extended attribute to <code>propName</code> on an interface causes <code>window.navigator.propName</code> to be an instance of the interface.</p> - -<h3 id="StoreInSlot" name="StoreInSlot"><code>[StoreInSlot]</code></h3> - -<p>Used to flag attributes that can be gotten very quickly from the JS object by the JIT. Such attributes will have their getter called immediately when the JS wrapper for the DOM object is created, and the returned value will be stored directly on the JS object. Later gets of the attribute will not call the C++ getter and instead use the cached value. If the value returned by the attribute needs to change, the C++ code should call the <code>ClearCachedFooValue</code> method in the namespace of the relevant binding, where <code>foo</code> is the name of the attribute. This will immediately call the C++ getter and cache the value it returns, so it needs a <code>JSContext</code> to work on. This extended attribute can only be used in on attributes whose getters are <a href="#Pure"><code>[Pure]</code></a> or <a href="#Constant"><code>[Constant]</code></a> and which are not <a href="#Throws"><code>[Throws]</code></a> or <a href="#Throws"><code>[GetterThrows]</code></a>.</p> - -<p>So for example, given this IDL:</p> - -<pre>interface MyInterface { - [Pure, StoreInSlot] attribute long myAttribute; -}; -</pre> - -<p>the C++ implementation of MyInterface would clear the cached value by calling <code>mozilla::dom::MyInterfaceBinding::ClearCachedMyAttributeValue(cx, this)</code>. This function will return false on error and the caller is responsible for handling any JSAPI exception that is set by the failure.</p> - -<p>If the attribute is not readonly, setting it will automatically clear the cached value and reget it again before the setter returns.</p> - -<h3 id="Cached" name="Cached"><code>[Cached]</code></h3> - -<p>Used to flag attributes that, when their getter is called, will cache the returned value on the JS object. This can be used to implement attributes whose value is a sequence or dictionary (which would otherwise end up returning a new object each time and hence not be allowed in WebIDL).</p> - -<p>Unlike <a href="#StoreInSlot"><code>[StoreInSlot]</code></a> this does <em>not</em> cause the getter to be eagerly called at JS wrapper creation time; the caching is lazy. <code>[Cached]</code> attributes must be <a href="#Pure"><code>[Pure]</code></a> or <a href="#Constant"><code>[Constant]</code></a>, because otherwise not calling the C++ getter would be observable, but are allowed to have throwing getters. Their cached value can be cleared by calling the <code>ClearCachedFooValue</code> method in the namespace of the relevant binding, where <code>foo</code> is the name of the attribute. Unlike <code>[StoreInSlot]</code> attributes, doing so will not immediately invoke the getter, so it does not need a <code>JSContext</code>.</p> - -<p>So for example, given this IDL:</p> - -<pre>interface MyInterface { - [Pure, StoreInSlot] attribute long myAttribute; -}; -</pre> - -<p>the C++ implementation of MyInterface would clear the cached value by calling <code>mozilla::dom::MyInterfaceBinding::ClearCachedMyAttributeValue(this)</code>. JS-implemented WebIDL can clear the cached value by calling <code>this.__DOM_IMPL__.clearCachedMyAttributeValue()</code>.</p> - -<p>If the attribute is not readonly, setting it will automatically clear the cached value.</p> - -<h3 id="Frozen" name="Frozen"><code>[Frozen]</code></h3> - -<p>Used to flag attributes that, when their getter is called, will call <a href="/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze"><code>Object.freeze</code></a> on the return value before returning it. This extended attribute is only allowed on attributes that return sequences, and corresponds to returning a frozen <code>Array</code>.</p> - -<h3 id="ChromeConstructor" name="ChromeConstructor"><code>[ChromeConstructor]</code></h3> - -<p><code>[ChromeConstructor]</code> has the same behavior as <code>[Constructor]</code>, but the constructor will throw if it's not called from chrome code. The same usage rules and restrictions as those for <code>[Constructor]</code> apply. Note that <code>[Constructor]</code> and <code>[ChromeConstructor]</code> are mutually exclusive; while there can be multiple of either, there can never be both on the same interface.</p> - -<h3 id="BinaryName" name="BinaryName"><code>[BinaryName]</code></h3> - -<p><code>[BinaryName]</code> can be specified on method or attribute to change the C++ function name that will be used for the method or attribute. It takes a single string argument, which is the name you wish the method or attribute had instead of the one it actually has.</p> - -<p>For example, given this IDL:</p> - -<pre>interface InterfaceWithRenamedThings { - [BinaryName="renamedMethod"] - void someMethod(); - [BinaryName="renamedAttribute"] - attribute long someAttribute; -}; -</pre> - -<p>the corresponding C++ would be:</p> - -<pre class="brush: cpp">class InterfaceWithRenamedThings -{ -public: - void RenamedMethod(); - int32_t RenamedAttribute(); - void SetRenamedAttribute(int32_t); -}; -</pre> - -<h3 id="Exposed" name="Exposed"><code>[Exposed]</code></h3> - -<p><code>[Exposed]</code> is mostly <a href="http://heycam.github.io/webidl/#Exposed">defined by the Web IDL specification.</a> There is one Gecko-specific nonstandard extension: the <code>System</code> value. <code>[Exposed=System]</code> means the interface is available in situations when the global is a BackstagePass object. The most common examples are <a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Building_components_in_JavaScript">JS components</a> and xpcshell.</p> - -<h2 class="note" id="Helper_objects">Helper objects</h2> - -<p>The C++ side of the bindings uses a number of helper objects.</p> - -<h3 id="Nullable" name="Nullable"><code>Nullable</code></h3> - -<p><code>Nullable<></code> is a struct declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Nullable.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Nullable.h"><code>Nullable.h</code></a> and exported to <code>mozilla/dom/Nullable.h</code> that is used to represent nullable values of types that don't have a natural way to represent null.</p> - -<p><code>Nullable</code> has an <code>IsNull()</code> getter that returns whether null is represented and a <code>Value()</code> getter that returns a <code>const T&</code> and can be used to get the value when it's not null.</p> - -<p><code>Nullable</code> has a <code>SetNull()</code> setter that sets it as representing null and two setters that can be used to set it to a value: <code>"void SetValue(T)"</code> (for setting it to a given value) and <code>"T& SetValue()"</code> for directly modifying the underlying <code>T&</code>.</p> - -<h3 id="Optional" name="Optional"><code>Optional</code></h3> - -<p><code>Optional<></code> is a struct declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h"><code>BindingDeclarations.h</code></a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used to represent optional arguments and dictionary members, but only those that have no default value.</p> - -<p><code>Optional</code> has a <code>WasPassed()</code> getter that returns true if a value is available. In that case, the <code>Value()</code> getter can be used to get a <code>const T&</code> for the value.</p> - -<h3 id="NonNull" name="NonNull"><code>NonNull</code></h3> - -<p><code>NonNull</code> is a struct declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h"><code>BindingUtils.h</code></a> and exported to <code>mozilla/dom/BindingUtils.h</code> that is used to represent non-null C++ objects. It has a conversion operator that produces <code>T&</code>.</p> - -<h3 id="OwningNonNull" name="OwningNonNull"><code>OwningNonNull</code></h3> - -<p><code>OwningNonNull</code> is a struct declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h"><code>BindingUtils.h</code></a> and exported to <code>mozilla/dom/BindingUtils.h</code> that is used to represent non-null C++ objects and holds a strong reference to them. It has a conversion operator that produces <code>T&</code>.</p> - -<h3 id="TypedArrays" name="TypedArrays">Typed arrays, arraybuffers, array buffer views</h3> - -<p><code><a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/TypedArray.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/TypedArray.h">TypedArray.h</a></code> is exported to <code>mozilla/dom/TypedArray.h</code> and exposes structs that correspond to the various typed array types, as well as <code>ArrayBuffer</code> and <code>ArrayBufferView</code>, all in the <code>mozilla::dom</code> namespace. Each struct has a <code>Data()</code> method that returns a pointer to the relevant type (<code>uint8_t</code> for <code>ArrayBuffer</code> and <code>ArrayBufferView</code>) and a <code>Length()</code> method that returns the length in units of <code>*Data()</code>. So for example, <code>Int32Array</code> has a <code>Data()</code> returning i<code>nt32_t</code><code>*</code> and a <code>Length()</code> that returns the number of 32-bit ints in the array..</p> - -<h3 id="Sequence" name="Sequence"><code>Sequence</code></h3> - -<p><code>Sequence<></code> is a type declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h"><code>BindingDeclarations.h</code></a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used to represent sequence arguments. It's some kind of typed array, but which exact kind is opaque to consumers. This allows the binding code to change the exact definition (e.g., to use auto arrays of different sizes and so forth) without having to update all the callees.</p> - -<h3 id="CallbackFunction" name="CallbackFunction"><code>CallbackFunction</code></h3> - -<p><code>CallbackFunction</code> is a type declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/CallbackFunction.h">CallbackFunction.h</a> and exported to <code>mozilla/dom/CallbackFunction.h</code> that is used as a common base class for all the generated callback function representations. This class inherits from <code>nsISupports</code>, and consumers must make sure to cycle-collect it, since it keeps JS objects alive.</p> - -<h3 id="CallbackInterface" name="CallbackInterface"><code>CallbackInterface</code></h3> - -<p><code>CallbackInterface</code> is a type declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/CallbackInterface.h">CallbackInterface.h</a> and exported to <code>mozilla/dom/CallbackInterface.h</code> that is used as a common base class for all the generated callback interface representations. This class inherits from <code>nsISupports</code>, and consumers must make sure to cycle-collect it, since it keeps JS objects alive.</p> - -<h3 id="DOMString-helper" name="DOMString-helper"><code>DOMString</code></h3> - -<p><code>DOMString</code> is a class declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h">BindingDeclarations.h</a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used for WebIDL <code>DOMString</code> return values. It has a conversion operator to <code>nsString&</code> so that it can be passed to methods that take that type or <code>nsAString&</code>, but callees that care about performance, have an <code>nsStringBuffer</code> available, and promise to hold on to the <code>nsStringBuffer</code> at least until the binding code comes off the stack can also take a <code>DOMString</code> directly for their string return value and call its <code>SetStringBuffer</code> method with the <code>nsStringBuffer</code> and its length. This allows the binding code to avoid extra reference-counting of the string buffer in many cases, and allows it to take a faster codepath even if it does end up having to addref the <code>nsStringBuffer</code>.</p> - -<h3 id="GlobalObject" name="GlobalObject"><code>GlobalObject</code></h3> - -<p><code>GlobalObject</code> is a class declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h">BindingDeclarations.h</a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used to represent the global object for static attributes and operations (including constructors). It has a <code>Get()</code> method that returns the <code>JSObject*</code> for the global and a <code>GetAsSupports()</code> method that returns an <code>nsISupports*</code> for the global on the main thread, if such is available. It also has a <code>GetContext()</code> method that returns the <code>JSContext*</code> the call is happening on. A caveat: the compartment of the <code>JSContext</code> may not match the compartment of the global!</p> - -<h3 id="Date-struct" name="Date-struct"><code>Date</code></h3> - -<p><code>Date</code> is a class declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h">BindingDeclarations.h</a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used to represent WebIDL Dates. It has a <code>TimeStamp()</code> method returning a double which represents a number of milliseconds since the epoch, as well as <code>SetTimeStamp()</code> methods that can be used to initialize it with a double timestamp or a JS <code>Date</code> object. It also has a <code>ToDateObject()</code> method that can be used to create a new JS <code>Date</code>.</p> - -<h3 id="ErrorResult" name="ErrorResult"><code>ErrorResult</code></h3> - -<p><code>ErrorResult</code> is a class declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/ErrorResult.h">ErrorResult.h</a> and exported to <code>mozilla/ErrorResult.h</code> that is used to represent exceptions in WebIDL bindings. This has the following methods:</p> - -<ul> - <li><code>Throw</code>: allows throwing an <code>nsresult</code>. The <code>nsresult</code> must be a failure code.</li> - <li><code>ThrowTypeError</code>: allows throwing a <code>TypeError</code> with the given error message. The list of allowed <code>TypeError</code>s and corresponding messages is in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Errors.msg" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Errors.msg"><code>dom/bindings/Errors.msg</code></a>.</li> - <li><code>ThrowJSException</code>: allows throwing a preexisting JS exception value. However, the <code>MightThrowJSException()</code> method must be called before any such exceptions are thrown (even if no exception is thrown).</li> - <li><code>Failed</code>: checks whether an exception has been thrown on this <code>ErrorResult</code>.</li> - <li><code>ErrorCode</code>: returns a failure <code>nsresult</code> representing (perhaps incompletely) the state of this <code>ErrorResult</code>.</li> - <li><code>operator=</code>: takes an <code>nsresult</code> and acts like <code>Throw</code> if the result is an error code, and like a no-op otherwise (unless an exception has already been thrown, in which case it asserts). This should only be used for legacy code that has nsresult everywhere; we would like to get rid of this operator at some point.</li> -</ul> - -<h2 id="Bindings.conf" name="Bindings.conf"><code>Bindings.conf</code> details</h2> - -<p>Write me. In particular, need to describe at least use of <code>concrete</code>, <code>prefable</code>, and <code>addExternalInterface</code>.</p> - -<h3 id="How_to_get_a_JSContext_passed_to_a_given_method">How to get a JSContext passed to a given method</h3> - -<p>In some rare cases you may need a <code>JSContext*</code> argument to be passed to a C++ method that wouldn't otherwise get such an argument. To see how to achieve this, search for <code>implicitJSContext</code> in <a href="https://developer.mozilla.org/en-US/docs/Mozilla/WebIDL_bindings#Bindings.conf" title="https://developer.mozilla.org/en-US/docs/Mozilla/WebIDL_bindings#Bindings.conf">dom/bindings/Bindings.conf</a>.</p> - -<h2 id="Implementing_WebIDL_using_Javascript">Implementing WebIDL using Javascript</h2> - -<p>It is possible to implement WebIDL interfaces in JavaScript within Gecko -- however, <strong>this is limited to interfaces that are not exposed in Web Workers</strong>. When the binding occurs, two objects are created:</p> - -<ul> - <li><em>Content-exposed object:</em> what gets exposed to the web page.</li> - <li><em>Implementation object:</em> running as a chrome-privileged script. This allows the implementation object to have various APIs that the content-exposed object does not.</li> -</ul> - -<p>Because there are two types of objects, you have to be careful about which object you are creating.</p> - -<h3 id="Creating_JS-implemented_WebIDL_objects">Creating JS-implemented WebIDL objects</h3> - -<p>To create a JS-implemented WebIDL object, one must create both the chrome-side implementation object and the content-side page-exposed object. There are three ways to do this.</p> - -<h4 id="Using_the_WebIDL_constructor">Using the WebIDL constructor</h4> - -<p>If the interface has a constructor, a content-side object can be created by getting that constructor from the relevant content window and invoking it. For example:</p> - -<pre class="brush: js">var contentObject = new contentWin.RTCPeerConnection();</pre> - -<p>The returned object will be an Xray wrapper for the content-side object. Creating the object this way will automatically create the chrome-side object using its contractID.</p> - -<p>This method is limited to the constructor signatures exposed to webpages. Any additional configuration of the object needs to be done via <a href="#ChromeOnly" title="#ChromeOnly"><code>[ChromeOnly]</code></a> methods on the interface.</p> - -<p>Creating many objects this way can be slow due to the createInstance overhead involved.</p> - -<h4 id="Using_a__create_method">Using a <code>_create</code> method</h4> - -<p>A content-side object can be created for a given chrome-side object by invoking the static <code>_create</code> method on the interface. This method takes two arguments: the content window in which to create the object and the chrome-side object to use. For example:</p> - -<pre class="brush: js">var contentObject = RTCPeerConnection._create(contentWin, - new MyPeerConnectionImpl()); </pre> - -<p>However, if you are in a JS component, you may only be able to get to the correct interface object via some window object. In this case, the code would look more like:</p> - -<pre class="brush: js">var contentObject = contentWin.RTCPeerConnection._create(contentWin, - new MyPeerConnectionImpl()); </pre> - -<p>Creating the object this way will not invoke its <code>__init</code> method or <code>init</code> method.</p> - -<h4 id="By_returning_a_chrome-side_object_from_a_JS-implemented_WebIDL_method">By returning a chrome-side object from a JS-implemented WebIDL method</h4> - -<p>If a JS-implemented WebIDL method is declared as returning a JS-implemented interface, then a non-WebIDL object returned from that method will be treated as the chrome-side part of a JS-implemented WebIdL object and the content-side part will be automatically created.</p> - -<p>Creating the object this way will not invoke its <code>__init</code> method or <code>init</code> method.</p> - -<h3 id="Implementing_a_WebIDL_object_in_JavaScript">Implementing a WebIDL object in JavaScript</h3> - -<p>To implement a WebIDL interface in JavaScript, first add a WebIDL file, in the same way as you would for a C++-implemented interface. To support implementation in JS, you must add an extended attribute <code>JSImplementation="CONTRACT_ID_STRING"</code> on your interface, where CONTRACT_ID_STRING is the XPCOM component contract ID of the JS implementation -- note ";1" is just a Mozilla convention for versioning APIs. Here's an example:</p> - -<pre>[Constructor(optional long firstNumber), JSImplementation="@mozilla.org/my-number;1"] -interface MyNumber { - attribute long value; - readonly attribute long otherValue; - void doNothing(); -};</pre> - -<p>Next, create an XPCOM component that implements this interface. <a href="/en-US/docs/How_to_Build_an_XPCOM_Component_in_Javascript" title="/en-US/docs/How_to_Build_an_XPCOM_Component_in_Javascript">Basic directions</a> for how to do this can be found elsewhere on MDN. Use the same contract ID as you specified in the WebIDL file. The class ID doesn't matter, except that it should be a newly generated one. For <code>QueryInterface</code>, you only need to implement <code>nsISupports</code>, not anything corresponding to the WebIDL interface. The name you use for the XPCOM component should be distinct from the name of the interface, to avoid confusing error messages.</p> - -<p>WebIDL attributes are implemented as properties on the JS object or its prototype chain, whereas WebIDL methods are implemented as methods on the object or prototype. Note that any other instances of the interface that you are passed in as arguments are the full web-facing version of the object, and not the JS implementation, so you currently cannot access any private data.</p> - -<p>The WebIDL constructor invocation will first create your object. If the XPCOM component implements <code>nsIDOMGlobalPropertyInitializer</code><span id="summary_alias_container"><span id="short_desc_nonedit_display">, then the object's </span></span><code>init</code><span id="summary_alias_container"><span id="short_desc_nonedit_display"> method will be invoked with a single argument: the content window the constructor came from. This allows the JS implementation to know which content window it's associated with. The </span></span><code>init</code><span id="summary_alias_container"><span id="short_desc_nonedit_display"> method should not return anything. After this, the content-side object will be created. Then, </span></span>if there are any constructor arguments, the object's <code>__init</code> method will be invoked, with the constructor arguments as its arguments.</p> - -<p>If you want an instance of the class to be added to <code>window.navigator</code>, add an extended attribute<span class="difflineplus"> </span><code>NavigatorProperty="PropertyName"</code> which will make the instance available as <code>window.navigator.PropertyName</code>.</p> - -<h3 id="Checking_for_Permissions_or_Preferences">Checking for Permissions or Preferences</h3> - -<p>With JS-implemented WebIDL, the <code>init</code> method should only return undefined. If any other value, such as <code>null</code>, is returned, the bindings code will assert or crash. In other words, it acts like it has a "void" return type. Preference or permission checking should be implemented by adding an extended attribute to the WebIDL interface. This has the advantage that if the check fails, the constructor or object will not show up at all.</p> - -<p>For preference checking, add an extended attribute <code>Pref="myPref.enabled"</code> where <code>myPref.enabled</code> is the preference that should be checked. <code>SettingsLock</code> is an example of this.</p> - -<p>For permissions or other kinds of checking, add an extended attribute <code>Func="MyPermissionChecker"</code> where <code>MyPermissionChecker</code> is a function implemented in C++ that returns true if the interface should be enabled. This function can do whatever checking is needed. One example of this is <code>PushManager</code>.</p> - -<h3 id="Example">Example</h3> - -<p>Here's an example JS implementation of the above interface. The <code>invisibleValue</code> field will not be accessible to web content, but is usable by the doNothing() method.</p> - -<pre>Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); - -function MyNumberInner() { - this.value = 111; - this.invisibleValue = 12345; -} - -MyNumberInner.prototype = { - classDescription: "Get my number XPCOM Component", - classID: Components.ID("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"), // dummy UUID - contractID: "@mozilla.org/my-number;1", - QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsISupports]), - doNothing: function() {}, - get otherValue() { return this.invisibleValue - 4; }, - __init: function(firstNumber) { - if (arguments.length > 0) { - this.value = firstNumber; - } - } -} - -var components = [MyNumberInner]; -var NSGetFactory = XPCOMUtils.generateNSGetFactory(components);</pre> - -<p>Finally, add a component and a contract and whatever other manifest stuff you need to implement an XPCOM component.</p> - -<h3 id="Guarantees_provided_by_bindings">Guarantees provided by bindings</h3> - -<p>When implementing a WebIDL interface in JavaScript, certain guarantees will be provided by the binding implementation. For example, string or numeric arguments will actually be primitive strings or numbers. Dictionaries will contain only the properties that they are declared to have, and they will have the right types. Interface arguments will actually be objects implementing that interface.</p> - -<p>What the bindings will NOT guarantee is much of anything about <code>object</code> and <code>any</code> arguments. They will get cross-compartment wrappers that make touching them from chrome code not be an immediate security bug, but otherwise they can have quite surprising behavior if the page is trying to be malicious. Try to avoid using these types if possible.</p> - -<h3 id="Accessing_the_content_object_from_the_implementation">Accessing the content object from the implementation</h3> - -<p>If the JS implementation of the WebIDL interface needs to access the content object, it is available as a property called <code>__DOM_IMPL__</code> on the chrome implementation object. This property only appears after the content-side object has been created. So it is available in <code>__init</code> but not in <code>init</code>.</p> - -<h3 id="Determining_the_principal_of_the_caller_that_invoked_the_WebIDL_API">Determining the principal of the caller that invoked the WebIDL API</h3> - -<p>This can be done by calling <code>Component.utils.<span class="d">getWebIDLCallerPrincipal</span>()</code>.</p> - -<h3 id="Throwing_exceptions_from_JS-implemented_APIs">Throwing exceptions from JS-implemented APIs</h3> - -<p>There are two reasons a JS implemented API might throw. The first reason is that some unforeseen condition occurred and the second is that a specification requires an exception to be thrown.</p> - -<p>When throwing for an unforeseen condition, the exception will be reported to the console, and a sanitized NS_ERROR_UNEXPECTED exception will be thrown to the calling content script, with the file/line of the content code that invoked your API. This will avoid exposing chrome URIs and other implementation details to the content code.</p> - -<p>When throwing because a specification requires an exception, you need to communicate to the binding code that this is what you're doing. Right now this is done by throwing a <code>DOMError</code> from the window your WebIDL object is associated with (the one that was passed to your <code>init</code> method). The binding code will then rethrow just the message string of that <code>DOMError</code> to the web page, as a plain JS <code>Error</code>. This does not allow implementing exceptions per spec (e.g., there is no way to explicitly throw a <code>TypeError</code> or other <code>Error</code> subclass), unfortunately; we're still working on that. Since you know for this case the exception is being thrown because a spec requires it, you know you need to create the <code>DOMError</code>. An example of how this could work:</p> - -<pre class="brush: js">if (!isValid(passedInObject)) { - throw new this.contentWindow.DOMError("Error", "Object is invalid"); -} -</pre> - -<p>In some cases you may need to perform operations whose exception message you just want to propagate to the content caller. This can be done like so:</p> - -<pre class="brush: js">try { - someOperationThatCanThrow(); -} catch (e) { - throw new this.contentWindow.DOMError(e.name, e.message); -} -</pre> - -<h3 id="Inheriting_from_interfaces_implemented_in_C">Inheriting from interfaces implemented in C++</h3> - -<p>It's possible to have an interface implemented in JavaScript inherit from an interface implemented in C++. To do so, simply have one interface inherit from the other and the bindings code will auto-generate a C++ object inheriting from the implementation of the parent interface. The class implementing the parent interface will need a constructor that takes an <code>nsPIDOMWindow*</code> (though it doesn't have to do anything with that argument).</p> - -<p>If the class implementing the parent interface is abstract and you want to use a specific concrete class as the implementation to inherit from, you will need to add a <code>defaultImpl</code> annotation to the descriptor for the parent interface in <code>Bindings.conf</code>. The value of the annotation is the C++ class to use as the parent for JS-implemented descendants; if <code>defaultImpl</code> is not specified, the <code>nativeType</code> will be used.</p> - -<p>For example, consider this interface that we wish to implement in JavaScript:</p> - -<pre>[<code>JSImplementation</code>="some-contract"] -interface MyEventTarget : EventTarget { - attribute EventHandler onmyevent; - void dispatchTheEvent(); // Sends a "myevent" event to this EventTarget -} -</pre> - -<p>The implementation would look something like this, ignoring most of the XPCOM boilerplate:</p> - -<pre>function MyEventTargetImpl() { -} -MyEventTargetImpl.prototype = { - // QI to nsIDOMGlobalPropertyInitializer so we get init() called on us. - QueryInterface: XPCOMUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer]), - - init: function(contentWindow) { - this.contentWindow = contentWindow; - } - - get onmyevent() { - return this.__DOM_IMPL__.getEventHandler("onmyevent"); - } - - set onmyevent(handler) { - this.__DOM_IMPL__.setEventHandler("onmyevent", handler); - } - - dispatchTheEvent: function() { - var event = new this.contentWindow.Event("myevent"); - this.__DOM_IMPL__.dispatchEvent(event); - } -}; -</pre> - -<p>The implementation would automatically support the API exposed on <code>EventTarget</code> (so, for example, <code>addEventListener</code>). Calling the <code>dispatchTheEvent</code> method would cause dispatch of an event that content script can see via listeners it has added.</p> - -<p>Note that in this case the chrome implementation is relying on some <code>[ChromeOnly]</code> methods on EventTarget that were added specifically to make it possible to easily implement event handlers. Other cases can do similar things as needed.</p> diff --git a/files/ja/mozilla/working_with_windows_in_chrome_code/index.html b/files/ja/mozilla/working_with_windows_in_chrome_code/index.html deleted file mode 100644 index eee407f580..0000000000 --- a/files/ja/mozilla/working_with_windows_in_chrome_code/index.html +++ /dev/null @@ -1,308 +0,0 @@ ---- -title: chrome コードでウィンドウを取り扱う -slug: Mozilla/Working_with_windows_in_chrome_code -tags: - - Add-ons - - Extensions -translation_of: Mozilla/Working_with_windows_in_chrome_code ---- -<p>この文書では、Mozilla の chrome コード (<a href="/ja/XUL" title="ja/XUL">XUL</a> アプリケーションや <a href="/ja/Extensions" title="ja/Extensions">拡張機能</a>) の中で複数のウィンドウを取り扱う方法を解説します。また、新規ウィンドウを開く、すでにウィンドウが開いているか確認する、異なるウィンドウ間でデータを受け渡すといった場面での tips やサンプルコードを紹介します。</p> -<p>{{ 英語版章題("Opening windows") }}</p> -<h3 id=".E6.96.B0.E8.A6.8F.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E9.96.8B.E3.81.8F" name=".E6.96.B0.E8.A6.8F.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E9.96.8B.E3.81.8F">新規ウィンドウを開く</h3> -<p>新規ウィンドウを開くためには、通常は <code><a href="/ja/DOM/window.open" title="ja/DOM/window.open">window.open</a></code> もしくは <code><a href="/ja/DOM/window.openDialog" title="ja/DOM/window.openDialog">window.openDialog</a></code> の DOM メソッドを次のように呼び出します。</p> -<pre class="eval">var win = window.open("<a class="external" rel="freelink">chrome://myextension/content/about.xul</a>", - "aboutMyExtension", "chrome,centerscreen"); -</pre> -<p><code>window.open</code> の 1 つめのパラメータはウィンドウとその内容を記述した XUL ファイルの URI です。</p> -<p>2 つめのパラメータは、ウィンドウ名です。この名前はリンクやフォームにおいて <code>target</code> 属性として利用することができます。これは、ユーザが見るウィンドウタイトルとは異なります。そちらは、XULを使って指定します。</p> -<p>3 つめは任意のパラメータで、ウィンドウに設定する特別な機能のリストです。</p> -<p><code>window.openDialog</code> 関数は同様に動作しますが、JavaScript コードから参照可能な追加の引数を設定することができます。また、ウィンドウの機能設定についても <code>dialog</code> 機能が常に設定されているように動作するなど、多少異なります。</p> -<p>XPCOM コンポーネントのコードからウィンドウを開く時などのように <code>Window</code> オブジェクトを利用できない場合、 <a href="/ja/NsIWindowWatcher" title="ja/NsIWindowWatcher">nsIWindowWatcher</a> インターフェイスを利用できます。パラメータは <code>window.open</code> に類似しており、実際 <code>window.open</code> の実装では <code>nsIWindowWatcher</code> のメソッドを呼び出しています。</p> -<pre class="eval">var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"] - .getService(Components.interfaces.nsIWindowWatcher); -var win = ww.openWindow(null, "<a class="external" rel="freelink">chrome://myextension/content/about.xul</a>", - "aboutMyExtension", "chrome,centerscreen", null); -</pre> -<p>{{ 英語版章題("Window object") }}</p> -<h3 id="Window_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88" name="Window_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88">Window オブジェクト</h3> -<p>上記セクションで <code>window.open</code> の戻り値を代入されている <code>win</code> 変数に注目してください。これを使って開いたウィンドウにアクセスすることが出来ます。 <code>window.open</code> (やそれに似たメソッド) の戻り値は、 <code>window</code> 変数と同じ型の <code><a class="external" href="http://xulplanet.com/references/objref/Window.html">Window</a></code> オブジェクト (普通は <code><a class="external" href="http://xulplanet.com/references/objref/ChromeWindow.html">ChromeWindow</a></code>) です。</p> -<p>技術的には、この戻り値は <code><a href="/ja/NsIDOMJSWindow" title="ja/NsIDOMJSWindow">nsIDOMJSWindow</a></code> や <code><a href="/ja/NsIDOMWindowInternal" title="ja/NsIDOMWindowInternal">nsIDOMWindowInternal</a></code> を含む多くのインターフェイスを実装していますが、ユーザー定義のグローバル変数のプロパティやウィンドウの関数も持っています。なので、例えば、そのウィンドウに対応する DOM ドキュメントにアクセスするのに <code><a href="/ja/DOM/window.document" title="ja/DOM/window.document">win.document</a></code> を使うことが出来ます。</p> -<p>しかし注意すべきなのは、 <code>open()</code> の呼び出しが返るのは、そのウィンドウが完全にロードされる <em>前</em> なので、 <code><a href="/ja/DOM/document.getElementById" title="ja/DOM/document.getElementById">win.document.getElementById()</a></code> のような幾つかの呼び出しは失敗するであろうという事です。この困難に打ち勝つには、開かれようとしているウィンドウの <code>load</code> ハンドラに初期化コードを移動するか、<a href="#callback">下記</a>にあるようにコールバック関数を渡すのがいいでしょう。</p> -<p><code><a href="/ja/DOM/document.defaultView" title="ja/DOM/document.defaultView">document.defaultView</a></code> を使ってドキュメントから <code>Window</code> オブジェクトを取得できます。</p> -<p>{{ 英語版章題("Content windows") }}</p> -<h3 id=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6" name=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6">コンテンツウィンドウ</h3> -<p>XUL ウィンドウが、 <code><browser></code> や <code><iframe></code> のようなページを表示できるウィジェットを含んでいる時、そのウィジェットのドキュメントは、当然、chrome ウィンドウ自体のドキュメントからは分離されています。個々のサブドキュメントにもまた、一般常識的にはウィンドウが無いにもかかわらず、<code>Window</code> オブジェクトがあります。</p> -<p><code><tabbrowser></code> のタブの中に開かれた chrome ウィンドウにも同じことが当てはまります。タブの中に開かれた chrome ドキュメント上の要素はあなたの chrome ドキュメントから分離されています。</p> -<p>次の二つのサブセクションでは、(異なるコンテキストにあるにもかかわらず) chrome とコンテンツの境界線を越えるどちらかの方法、すなわち、chrome ドキュメントの祖先である要素にアクセスする方法と、chrome ドキュメントの子孫である要素にアクセスする方法を記述します。</p> -<p>{{ 英語版章題("Accessing content documents") }}</p> -<h4 id=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B" name=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B">コンテンツのドキュメントにアクセスする</h4> -<p>ドキュメントの中に <code><tabbrowser></code>、 <code><browser></code>、 もしくは <code><iframe></code> 要素に読み込まれたドキュメントがあるとします。そのドキュメントには <code>browser.contentDocument</code> を、そのドキュメントの <code>Window</code> オブジェクトには <code>browser.contentWindow</code> を使ってアクセスできます。</p> -<p><a href="/ja/XPCNativeWrapper#What_is_a_trusted_window.3F" title="ja/XPCNativeWrapper#What_is_a_trusted_window.3F">信頼できないコンテンツ</a>を扱う時には <a href="/ja/XPCNativeWrapper" title="ja/XPCNativeWrapper">XPCNativeWrapper</a> についてよく知っておくべきです。XPCNativeWrapper が有効 (Firefox 1.5+ ではデフォルト) だと、拡張機能はコンテンツドキュメントの DOM に安全にアクセスできますが、コンテンツの JavaScript にはアクセスできません。コンテンツの JavaScript を直接扱うために XPCNativeWrapper をバイパスすることはセキュリティ上の問題に繋がります。</p> -<p>コンテンツページとやり取りする必要があるならば、 <a href="/ja/Code_snippets/Interaction_between_privileged_and_non-privileged_pages" title="ja/Code_snippets/Interaction_between_privileged_and_non-privileged_pages">特権コードと非特権コードの協調</a> を参照して下さい。</p> -<p>{{ 英語版章題("The content shortcut") }}</p> -<h5 id="content_.E3.82.B7.E3.83.A7.E3.83.BC.E3.83.88.E3.82.AB.E3.83.83.E3.83.88" name="content_.E3.82.B7.E3.83.A7.E3.83.BC.E3.83.88.E3.82.AB.E3.83.83.E3.83.88"><code>content</code> ショートカット</h5> -<p><code><browser type="content-primary"/></code> の場合、 <a href="/ja/DOM/window.content" title="ja/DOM/window.content">content</a> ショートカットプロパティを使ってコンテンツドキュメントの <code>Window</code> オブジェクトにアクセスできます。例えば、</p> -<pre class="eval">// content-primary ウィジェットに表示されているドキュメントのタイトルを警告ダイアログで表示する - -alert(content.document.title); -</pre> -<p>例えば、<code>browser.xul</code> オーバーレイの中で <code>content.document</code> を使うことで、Firefox のウィンドウで選択されているタブのウェブページにアクセスできます。</p> -<div class="note"> - 幾つかの例では <code>_content</code> を <code>content</code> の代わりに使っています。 前者はここ最近非推奨とされているので、新しくコードを書く時には <code>content</code> を使うべきです。</div> -<p>{{ 英語版章題("Accessing a document in the sidebar") }}</p> -<h4 id=".E3.82.B5.E3.82.A4.E3.83.89.E3.83.90.E3.83.BC.E5.86.85.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B" name=".E3.82.B5.E3.82.A4.E3.83.89.E3.83.90.E3.83.BC.E5.86.85.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B">サイドバー内のドキュメントにアクセスする</h4> -<p>Firefox にはサイドバーがあり、id="sidebar" の <code><browser></code> 要素として実装されています。サイドバー内部の要素や変数にアクセスするには、{{ Anch("コンテンツのドキュメントにアクセスする") }}時のように、 <code>document.getElementById("sidebar").contentDocument</code> や <code>.contentWindow</code> を使う必要があります。</p> -<p><a href="/ja/Code_snippets/Sidebar" title="ja/Code_snippets/Sidebar">Code snippets:Sidebar</a> でサイドバーに関するより多くの Tips を参照して下さい。</p> -<p>{{ 英語版章題("Accessing the elements of the top-level document from a child window") }}</p> -<h4 id=".E5.AD.90.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.8B.E3.82.89.E3.83.88.E3.83.83.E3.83.97.E3.83.AC.E3.83.99.E3.83.AB.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AE.E8.A6.81.E7.B4.A0.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B" name=".E5.AD.90.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.8B.E3.82.89.E3.83.88.E3.83.83.E3.83.97.E3.83.AC.E3.83.99.E3.83.AB.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AE.E8.A6.81.E7.B4.A0.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B">子ウィンドウからトップレベルドキュメントの要素にアクセスする</h4> -<p>逆のケースとして、<code><browser></code> や <code><iframe></code> に読み込まれた特権スクリプトから chrome ドキュメントにアクセスしたい場合があります。</p> -<p>これが役に立つ典型的な例は、Firefox のメインウィンドウのサイドバー内でコードを実行して、メインのブラウザウィンドウ内の要素にアクセスしたい時です。</p> -<p><a href="/ja/DOM_Inspector" title="ja/DOM_Inspector">DOM Inspector</a> で見られるような DOM ツリーはこのようになっています。</p> -<pre class="eval">#document - window main-window - ... - browser - #document - window myExtensionWindow -</pre> -<p>子ウィンドウがある場所がコードが実行される場所です。</p> -<p>やるべき事は chrome ドキュメントの上の要素にアクセスすること、すなわち chrome ウィンドウから脱出して祖先にアクセスすることです。これは下記の文によって可能になります。</p> -<pre class="eval">var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIWebNavigation) - .QueryInterface(Components.interfaces.nsIDocShellTreeItem) - .rootTreeItem - .QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); -</pre> -<p>これによって chrome と コンテンツ の境界を越えることができ、メインウィンドウのオブジェクトが返ってきます。</p> -<p>{{ 英語版章題("Finding already opened windows") }}</p> -<h3 id=".E3.81.99.E3.81.A7.E3.81.AB.E9.96.8B.E3.81.84.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E8.A6.8B.E3.81.A4.E3.81.91.E3.82.8B" name=".E3.81.99.E3.81.A7.E3.81.AB.E9.96.8B.E3.81.84.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E8.A6.8B.E3.81.A4.E3.81.91.E3.82.8B">すでに開いているウィンドウを見つける</h3> -<p>ウィンドウメディエータ XPCOM コンポーネント (<a href="/ja/nsIWindowMediator" title="ja/nsIWindowMediator">nsIWindowMediator</a> インターフェイス) は、存在しているウィンドウに関する情報を提供します。現在開かれているウィンドウの情報を得るために、<code>getMostRecentWindow</code> と <code>getEnumerator</code> という二つのメソッドがよく使われます。<a href="/ja/nsIWindowMediator" title="ja/nsIWindowMediator">nsIWindowMediator</a> のページでより多くの情報と <code>nsIWindowMediator</code> の使用例を参照して下さい。 <span class="comment">{{英語版章題("Example: Opening a window only if it's not opened already")}} === Example: Opening a window only if it's not opened already === XXX TBD</span></p> -<p>{{ 英語版章題("Passing data between windows") }}</p> -<h3 id=".E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E9.96.93.E3.81.A7.E3.81.AE.E3.83.87.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.84.E3.82.8A.E5.8F.96.E3.82.8A" name=".E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E9.96.93.E3.81.A7.E3.81.AE.E3.83.87.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.84.E3.82.8A.E5.8F.96.E3.82.8A">ウィンドウ間でのデータのやり取り</h3> -<p>複数のウィンドウを扱っていると、一方のウィンドウからもう一方へ情報を渡さなければならないことがよくあります。ウィンドウが異なると DOM ドキュメントとグローバルオブジェクトも別個のものをスクリプトに対して持っているので、スクリプトの中で違うウィンドウから一つのグローバル JavaScript 変数を単純に使うことはできません。</p> -<p>データを共有するためのテクニックには効力や単純さの点で異なるものが幾つかあります。次の幾つかのセクションで最も単純なものから最も複雑なものまで説明しましょう。</p> -<p>{{ 英語版章題("Example 1: Passing data to window when opening it with openDialog") }}</p> -<h4 id=".E4.BE.8B_1:_openDialog_.E3.81.A7.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E9.96.8B.E3.81.84.E3.81.9F.E6.99.82.E3.81.AB.E3.83.87.E3.83.BC.E3.82.BF.E3.82.92.E6.B8.A1.E3.81.99" name=".E4.BE.8B_1:_openDialog_.E3.81.A7.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E9.96.8B.E3.81.84.E3.81.9F.E6.99.82.E3.81.AB.E3.83.87.E3.83.BC.E3.82.BF.E3.82.92.E6.B8.A1.E3.81.99">例 1: <code>openDialog</code> でウィンドウを開いた時にデータを渡す</h4> -<p><code><a href="/ja/DOM/window.openDialog" title="ja/DOM/window.openDialog">window.openDialog</a></code> または <code>nsIWindowWatcher.openWindow</code> でウィンドウを開く時に、そのウィンドウに任意の<em>引数</em>を渡すことができます。引数は単純な JavaScript オブジェクトで、開かれたウィンドウの中で <code><a href="/ja/DOM/window.arguments" title="ja/DOM/window.arguments">window.arguments</a></code> プロパティからアクセスできます。</p> -<p>この例では、プログレスダイアログを開くのに <code>window.openDialog</code> を使用しています。最大値と現在の進行値だけでなく、現在の状況を示すテキストも渡しています。<code>nsIWindowWatcher.openWindow</code> の使い方は少しだけ変わっているので注意してください 。 <span class="comment">TODO: link to <a href="/ja/How_To_Pass_an_XPCOM_Object_to_a_New_Window">How To Pass an XPCOM Object to a New Window</a> when it has a more useful example</span></p> -<p>開く側のコード:</p> -<pre class="eval">window.openDialog("<a class="external" rel="freelink">chrome://test/content/progress.xul</a>", - "myProgress", "chrome,centerscreen", - {status: "Reading remote data", maxProgress: 50, progress: 10} ); -</pre> -<p><code>progress.xul</code>:</p> -<pre><?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> - -<window onload="onLoad();" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> -<script><![CDATA[ - var gStatus, gProgressMeter; - var maxProgress = 100; - function onLoad() { - gStatus = document.getElementById("status"); - gProgressMeter = document.getElementById("progressmeter"); - - if("arguments" in window && window.arguments.length > 0) { - maxProgress = window.arguments[0].maxProgress; - setProgress(window.arguments[0].progress); - setStatus(window.arguments[0].status); - } - } - - function setProgress(value) { - gProgressMeter.value = 100 * value / maxProgress; - } - - function setStatus(text) { - gStatus.value = "Status: " + text + "..."; - } -]]></script> - -<label id="status" value="(No status)"/> -<hbox> - <progressmeter id="progressmeter" mode="determined"/> - <button label="Cancel" oncommand="close();"/> -</hbox> - -</window> -</pre> -<p>{{ 英語版章題("Example 2: Interacting with the opener") }}</p> -<h4 id=".E4.BE.8B_2:_.E9.96.8B.E3.81.84.E3.81.9F.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.A8.E3.81.AE.E7.9B.B8.E4.BA.92.E3.81.AE.E3.82.84.E3.82.8A.E5.8F.96.E3.82.8A" name=".E4.BE.8B_2:_.E9.96.8B.E3.81.84.E3.81.9F.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.A8.E3.81.AE.E7.9B.B8.E4.BA.92.E3.81.AE.E3.82.84.E3.82.8A.E5.8F.96.E3.82.8A">例 2: 開いたウィンドウとの相互のやり取り</h4> -<p>開かれたウィンドウがそれを開いたウィンドウとやり取りしなければならないことがあります。例えば、ユーザーがウィンドウに変化を加えたことを知らせるためにはその必要があるでしょう。開かれたウィンドウの <a href="/ja/Window.opener" title="ja/Window.opener">window.opener</a> プロパティを使うか、前のセクションで述べた方法でウィンドウに渡されたコールバック関数を介して、ウィンドウを開いたウィンドウを見つける事が出来ます。</p> -<p>先の例に、ユーザーがプログレスダイアログのキャンセルボタンを押した時に、それを開いたウィンドウにそれを知らせるためのコードを追加してみましょう。</p> -<ul> - <li><strong><code>window.opener</code> を使う。</strong><code>opener</code> プロパティはそのウィンドウを開いたウィンドウを返します。さらに言えば、そのウィンドウを開いた {{ Anch("Window オブジェクト") }}です。</li> -</ul> -<p>もしプログレスダイアログを開いたウィンドウが <code>cancelOperation</code> 関数を宣言した事がわかっているなら、ユーザーがキャンセルボタンを押したのを知らせるのにこのように <code>window.opener.cancelOperation()</code> を使うことが出来ます。</p> -<pre class="eval"><button label="Cancel" oncommand="<strong>opener.cancelOperation();</strong> close();"/> -</pre> -<ul> - <li><strong>コールバック関数を使う。</strong>別のやり方として、開いた側のウィンドウは、前の例で状態を表す文字列を渡したのと同じ方法で、プログレスダイアログにコールバック関数を渡すことが出来ます:</li> -</ul> -<pre class="eval">function onCancel() { - alert("Operation canceled!"); -} - -... - -window.openDialog("<a class="external" rel="freelink">chrome://test/content/progress.xul</a>", - "myProgress", "chrome,centerscreen", - {status: "Reading remote data", maxProgress: 50, progress: 10}, - <strong>onCancel</strong>); -</pre> -<p>そうすると、プログレスダイアログはこのようにしてコールバック関数を実行できます:</p> -<pre class="eval"><button label="Cancel" oncommand="<strong>window.arguments[1]();</strong> close();"/> -</pre> -<p>{{ 英語版章題("Example 3: Using nsIWindowMediator when opener is not enough") }}</p> -<h4 id=".E4.BE.8B_3:_opener_.E3.81.A7.E4.BA.8B.E8.B6.B3.E3.82.8A.E3.81.AA.E3.81.91.E3.82.8C.E3.81.B0_nsIWindowMediator_.E3.82.92.E4.BD.BF.E3.81.86" name=".E4.BE.8B_3:_opener_.E3.81.A7.E4.BA.8B.E8.B6.B3.E3.82.8A.E3.81.AA.E3.81.91.E3.82.8C.E3.81.B0_nsIWindowMediator_.E3.82.92.E4.BD.BF.E3.81.86">例 3: <code>opener</code> で事足りなければ <code>nsIWindowMediator</code> を使う</h4> -<p><code>window.opener</code> プロパティはとても簡単に使うことが出来ますが、ウィンドウがいくつかのよく知られた場所から開かれたことが判っている時にしか使えません。より複雑なケースでは、上で紹介された <code><a href="/ja/nsIWindowMediator" title="ja/nsIWindowMediator">nsIWindowMediator</a></code> を使う必要があります。</p> -<p><code>nsIWindowMediator</code> を使いたくなるケースの一つは、拡張機能の設定ウィンドウです。あなたは browser.xul へのオーバーレイと設定ウィンドウから成るブラウザ拡張機能を開発しているとします。オーバーレイには設定ウィンドウを開くボタンが含まれており、そのウィンドウはブラウザウィンドウから幾つかのデータを読み取る必要があるとします。あなたは覚えているでしょうが、Firefox の拡張マネージャもあなたの設定ダイアログを開くのに使われることがあります。</p> -<p>これはつまり、あなたの設定ダイアログにおける <code>window.opener</code> の値は必ずしもブラウザウィンドウではなく、拡張マネージャウィンドウかもしれないということです。<code>opener</code> の <code>location</code> プロパティを調べて、それが拡張マネージャウィンドウの場合には <code>opener.opener</code> を使うということも出来るかもしれませんが、より良い方法は <code>nsIWindowMediator</code> を使う事です。</p> -<pre class="eval">var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); -var browserWindow = wm.getMostRecentWindow("navigator:browser"); -// |browserWindow| から値を読む -</pre> -<p>設定ダイアログでユーザーが行なった変更を適用するのに同じテクニックを使いたい衝動に駆られるかもしれませんが、それをするのにより良い方法は <a class="external" href="http://kb.mozillazine.org/Dev_:_Using_preferences#Using_preferences_observers">preferences observers</a> を使う事です。</p> -<p>{{ 英語版章題("Advanced data sharing") }}</p> -<h3 id=".E9.AB.98.E5.BA.A6.E3.81.AA.E3.83.87.E3.83.BC.E3.82.BF.E5.85.B1.E6.9C.89.E6.96.B9.E6.B3.95" name=".E9.AB.98.E5.BA.A6.E3.81.AA.E3.83.87.E3.83.BC.E3.82.BF.E5.85.B1.E6.9C.89.E6.96.B9.E6.B3.95">高度なデータ共有方法</h3> -<p>上のコードは一つのウィンドウから他のウィンドウやウィンドウ群にデータを渡す必要がある場合には便利ですが、ただ単に異なるウィンドウ間で共通の JavaScript 変数を共有したいだけの場合もあります。それぞれのウィンドウで、ローカル変数とそれに対応するセッタ関数を宣言して、ウィンドウをまたいで変数の「インスタンス」を同期させるという事も出来ますが、幸運にも、もっと良いやり方があります。</p> -<p>共有の変数を宣言するには、アプリケーションが起動している間ずっと存在していて、異なる chrome ウィンドウ内のコードから簡単にアクセスできるような場所を見つける必要があります。そういった場所は実際に幾つかあります。</p> -<p>{{ 英語版章題("Using JavaScript code modules") }}</p> -<h4 id="JavaScript_.E3.82.B3.E3.83.BC.E3.83.89.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.AE.E4.BD.BF.E7.94.A8" name="JavaScript_.E3.82.B3.E3.83.BC.E3.83.89.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.AE.E4.BD.BF.E7.94.A8">JavaScript コードモジュールの使用</h4> -<p><a href="/ja/JavaScript_code_modules/Using" title="ja/JavaScript_code_modules/Using">JavaScript コードモジュール</a> {{ Fx_minversion_inline(3) }} は、グローバルな共有シングルトンオブジェクトを作成し、あらゆる JavaScript スコープにインポートするための簡単な方法です。インポートする側のスコープはコードモジュール内のオブジェクトとデータにアクセスできるようになります。コードモジュールはキャッシュされるため、すべてのスコープがコードモジュールの同じインスタンスを取得し、モジュール内のデータを共有できます。詳しくは <a href="/ja/Components.utils.import" title="ja/Components.utils.import">Components.utils.import</a> を参照してください。</p> -<ul> - <li>長所: - <ul> - <li>これは「まっとうなやり方」です。</li> - <li>作成やインポートはとても簡単です。</li> - <li>XPCOM コンポーネントを構築する必要がありません。</li> - </ul> - </li> - <li>短所: - <ul> - <li>Firefox 3 以降でしか使えません。</li> - <li>モジュールとインポートする側のスコープとの間でスコープが共有されるため、名前の衝突に気をつける必要があります。</li> - </ul> - </li> -</ul> -<p>{{ 英語版章題("Using an XPCOM singleton component") }}</p> -<h4 id="XPCOM_.E3.82.B7.E3.83.B3.E3.82.B0.E3.83.AB.E3.83.88.E3.83.B3.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86" name="XPCOM_.E3.82.B7.E3.83.B3.E3.82.B0.E3.83.AB.E3.83.88.E3.83.B3.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86">XPCOM シングルトンコンポーネントを使う</h4> -<p>データを共有する方法として最もクリーンで強力なのは、独自の XPCOM コンポーネント (<a href="/ja/How_to_Build_an_XPCOM_Component_in_Javascript" title="ja/How_to_Build_an_XPCOM_Component_in_Javascript">Javascript で書けます</a>) を定義する方法です。このコンポーネントには、 <code>getService</code> を呼び出すことでどこからでもアクセスできます。</p> -<pre class="eval">Components.classes["@domain.org/mycomponent;1"].getService(); -</pre> -<ul> - <li>長所: - <ul> - <li>これは「まっとうなやり方」です。</li> - <li>コンポーネントの中に任意の JavaScript オブジェクトを保管できます。</li> - <li>コンポーネント間でスコープが共有されないので、名前の衝突を心配する必要はありません。</li> - <li>古いバージョンの Firefox でも使用できます。</li> - </ul> - </li> - <li>短所: - <ul> - <li><code><a href="/ja/DOM/window" title="ja/DOM/window">window</a></code> オブジェクトや、<code>alert</code> や <code>open</code> といったそのメンバ、その他ウィンドウ内部から取得できるたくさんのオブジェクトが利用できません。しかし、その機能性は失われていません。それらの便利なショートカットの代わりに、直接 XPCOM コンポーネントを使わなければならないだけのことです。もちろん、単にコンポーネント内にデータを保存するだけならこの事は問題ではありません。</li> - <li>XPCOM コンポーネントの作成を学ぶのに時間がかかります。</li> - </ul> - </li> -</ul> -<p>オンラインに XPCOM コンポーネントの作成についての記事や本が幾つかあります。</p> -<p>{{ 英語版章題("Using FUEL Application object") }}</p> -<h4 id="FUEL_.E3.81.AE_Application_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86" name="FUEL_.E3.81.AE_Application_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86">FUEL の Application オブジェクトを使う</h4> -<p>JavaScript ライブラリ FUEL {{ Fx_minversion_inline(3) }} には、ウィンドウ間でデータを共有する簡単な方法があります。<code>Application</code> オブジェクトはデータをグローバルに格納するのに使用できる <code>storage</code> プロパティをサポートしています。この方法は XPCOM シングルトンを使用する方法を単純化したものです。</p> -<pre class="eval">Application.storage.set(keyname, data); - -var data = Application.storage.get(keyname, default); - -意味: keyname はデータを識別するのに使用する文字列 - data はデータ - default は keyname が存在しない場合に返されるデータ値 -</pre> -<ul> - <li>長所: - <ul> - <li>これは「まっとうなやり方」です。</li> - <li>コンポーネントの中に任意の JavaScript オブジェクトを保管できます。</li> - <li>コンポーネント間でスコープが共有されないので、名前の衝突を心配する必要はありません。</li> - <li>XPCOM コンポーネントを構築する必要がありません。</li> - </ul> - </li> - <li>短所: - <ul> - <li>Firefox 3 以降でしか使えません。</li> - <li><code><a href="/ja/DOM/window" title="ja/DOM/window">window</a></code> オブジェクトや、<code>alert</code> や <code>open</code> といったそのメンバ、その他ウィンドウ内部から取得できるたくさんのオブジェクトが利用できません。しかし、その機能性は失われていません。それらの便利なショートカットの代わりに、直接 XPCOM コンポーネントを使わなければならないだけのことです。もちろん、単にコンポーネント内にデータを保存するだけならこの事は問題ではありません。</li> - </ul> - </li> -</ul> -<p>{{ 英語版章題("Storing shared data in preferences") }}</p> -<h4 id=".E8.A8.AD.E5.AE.9A.E3.81.AB.E5.85.B1.E6.9C.89.E3.83.87.E3.83.BC.E3.82.BF.E3.82.92.E4.BF.9D.E7.AE.A1.E3.81.99.E3.82.8B" name=".E8.A8.AD.E5.AE.9A.E3.81.AB.E5.85.B1.E6.9C.89.E3.83.87.E3.83.BC.E3.82.BF.E3.82.92.E4.BF.9D.E7.AE.A1.E3.81.99.E3.82.8B">設定に共有データを保管する</h4> -<p>単に文字列や数値を保管したいだけなら、XPCOM コンポーネントを丸々書くような難しいことをする必要は無いかもしれません。そういったケースでは<a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIPrefService.html">設定サービス</a>が使えます。</p> -<ul> - <li>長所: - <ul> - <li>きわめて簡単に単純なデータを保管できます。</li> - </ul> - </li> - <li>短所: - <ul> - <li>複雑なデータを保管するのは簡単ではありません。</li> - <li>設定サービスを乱用してその後片付けを自分でしないと、<code>prefs.js</code> が肥大化してアプリケーションの起動が遅くなる場合があります。</li> - </ul> - </li> -</ul> -<p>プリファレンスシステムの詳しい解説とコードの例は <a href="/ja/Code_snippets/Preferences" title="ja/Code_snippets/Preferences">Code snippets:Preferences</a> を参照して下さい。</p> -<p>例:</p> -<pre class="eval">var prefs = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService); -var branch = prefs.getBranch("extensions.myext."); -var var1 = branch.getBoolPref("var1"); // 設定値を得る -</pre> -<p>{{ 英語版章題("The hidden window hack") }}</p> -<h4 id=".E9.9A.A0.E3.81.97.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9F.E3.83.8F.E3.83.83.E3.82.AF" name=".E9.9A.A0.E3.81.97.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9F.E3.83.8F.E3.83.83.E3.82.AF">隠しウィンドウを使ったハック</h4> -<p>拡張機能の作者の中には、データやコードを保管するのに特殊な <em>隠しウィンドウ</em> を使っている人もいます。隠しウィンドウは普通のウィンドウに似ていますが、他のウィンドウと違って、アプリケーションが起動している間中ずっと利用でき、ユーザーからは見えません。このウィンドウに読み込まれるドキュメントは、メニューを実装するのにこれが使われている Mac では <code><a class="external" rel="freelink">chrome://browser/content/hiddenWindow.xul</a></code> で、他のオペレーティングシステムでは <code><a class="external" rel="freelink">resource://gre/res/hiddenWindow.html</a></code> です。隠しウィンドウは、ゆくゆくはそれが必要とされないオペレーティングシステムからは削除されるでしょう ({{ Bug(71895) }}) 。</p> -<p>隠しウィンドウへの参照は nsIAppShellService インターフェイスから取得できます。他の DOM オブジェクトと同じように独自のプロパティを設定できます:</p> -<pre class="eval">var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"] - .getService(Components.interfaces.nsIAppShellService) - .hiddenDOMWindow; -hiddenWindow.myExtensionStatus = "ready"; -</pre> -<p>しかし、隠しウィンドウに入れられたオブジェクトは依然としてそれを作ったウィンドウに所属しています。もしそういったオブジェクトのメソッドが <code>XMLHttpRequest</code> のような <code>window</code> オブジェクトのプロパティにアクセスしたら、元のウィンドウが閉じられていた場合にはエラーメッセージが出るでしょう。これを避けるには、スクリプトファイルを使ってオブジェクトを隠しウィンドウに読み込むのがいいでしょう:</p> -<pre class="eval">var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"] - .getService(Components.interfaces.nsIAppShellService) - .hiddenDOMWindow; -hiddenWindow.Components.classes["@mozilla.org/moz/jssubscript-loader;1"] - .getService(Components.interfaces.mozIJSSubScriptLoader) - .loadSubScript("<a class="external" rel="freelink">chrome://my-extension/content/globalObject.js</a>"); -hiddenWindow.myExtensionObject.doSomething(); -</pre> -<p><code>globalObject.js</code> にはこのようなコードが含まれています:</p> -<pre class="eval">var myExtensionObject = { - doSomething: function() { - return new XMLHttpRequest(); - } -} -</pre> -<ul> - <li>長所: - <ul> - <li>隠しウィンドウでコードを実行する場合、コンポーネントを使うのとは違い、<code>window</code> オブジェクトやそのプロパティを利用できます。</li> - <li>隠しウィンドウに任意の JavaScript オブジェクトを保管できます。</li> - </ul> - </li> - <li>短所: - <ul> - <li>これはハックです。</li> - <li>同じウィンドウに異なる拡張機能がアクセスするので、衝突を避ける為に長い変数名を使わなければなりません。</li> - <li>Windows や Linux のビルドでは、隠しウィンドウは削除されるかもしれません。</li> - </ul> - </li> -</ul> -<p>{{ 英語版章題("See also") }}</p> -<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3> -<ul> - <li><a href="/ja/Code_snippets/Dialogs_and_Prompts" title="ja/Code_snippets/Dialogs_and_Prompts">Code snippets:Dialogs</a></li> -</ul> -<p> </p> -<p> </p> |