diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/mozilla/tech | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/ja/mozilla/tech')
259 files changed, 22541 insertions, 0 deletions
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html new file mode 100644 index 0000000000..709114d7ea --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html @@ -0,0 +1,5 @@ +--- +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 new file mode 100644 index 0000000000..582be09b29 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/index.html @@ -0,0 +1,496 @@ +--- +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 new file mode 100644 index 0000000000..de5747c491 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_accel_label/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..d03c56080c --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_alert/index.html @@ -0,0 +1,38 @@ +--- +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 new file mode 100644 index 0000000000..81d333e72b --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_animation/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..cbe8078631 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_app_root/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..4d430e70c9 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_application/index.html @@ -0,0 +1,34 @@ +--- +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 new file mode 100644 index 0000000000..6ec87b9cf3 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_arrow/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..149af27745 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_autocomplete/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..78104f570c --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_border/index.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 0000000000..13b259f499 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdown/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..2439c01b9c --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdowngrid/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..675612d4bd --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttonmenu/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..771b5bdf20 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_calendar/index.html @@ -0,0 +1,24 @@ +--- +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 new file mode 100644 index 0000000000..cde08e0b55 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_canvas/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..627d1d8a0c --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caption/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..abda30d55e --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caret/index.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 0000000000..14305ce7cc --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cell/index.html @@ -0,0 +1,39 @@ +--- +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 new file mode 100644 index 0000000000..8b3b43cbff --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_character/index.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 0000000000..76a2356d83 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chart/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..2485251344 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_check_menu_item/index.html @@ -0,0 +1,32 @@ +--- +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 new file mode 100644 index 0000000000..7d553a0444 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_checkbutton/index.html @@ -0,0 +1,34 @@ +--- +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 new file mode 100644 index 0000000000..05d299d5ae --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chrome_window/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..09eb1efa8e --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_clock/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..3b464f2e24 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_color_chooser/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..e6ccce5729 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_columnheader/index.html @@ -0,0 +1,32 @@ +--- +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 new file mode 100644 index 0000000000..2a7da343b0 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox/index.html @@ -0,0 +1,34 @@ +--- +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 new file mode 100644 index 0000000000..7072b0a8f7 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_list/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..ce0a67942a --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_option/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..1fbeb203e4 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cursor/index.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 0000000000..075b5f4066 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_date_editor/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..9c057e1a24 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_frame/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..af46f177e6 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_icon/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..a0fbf37deb --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_diagram/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..862da2fb26 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dial/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..f1d9ad5dfb --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dialog/index.html @@ -0,0 +1,35 @@ +--- +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 new file mode 100644 index 0000000000..6c5b3c4e34 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_directory_pane/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..d2824c63ec --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document/index.html @@ -0,0 +1,35 @@ +--- +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 new file mode 100644 index 0000000000..a5220cf4d5 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document_frame/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..a240f3e9f0 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_droplist/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..2a48b7574d --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_editbar/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..2314b07eda --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_entry/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..d070df3529 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_equation/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..d2be2acdb3 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_file_chooser/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..8fd3d7e13e --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_font_chooser/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..bbbf07c9bf --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_footer/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..90dd8ef6a1 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_form/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..197450c892 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_glass_pane/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..827e84c62f --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_graphic/index.html @@ -0,0 +1,43 @@ +--- +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 new file mode 100644 index 0000000000..d13b094295 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grip/index.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 0000000000..2a6c263623 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grouping/index.html @@ -0,0 +1,40 @@ +--- +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 new file mode 100644 index 0000000000..52272ac9de --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_header/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..bd2477520e --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_heading/index.html @@ -0,0 +1,32 @@ +--- +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 new file mode 100644 index 0000000000..f5d70d03c3 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_helpballoon/index.html @@ -0,0 +1,34 @@ +--- +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 new file mode 100644 index 0000000000..434cdb6e3e --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_hotkeyfield/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..eccf6ca840 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_html_container/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..4dc8a12668 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_icon/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..620eb25232 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_image_map/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..1e95f51a4e --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ime/index.html @@ -0,0 +1,25 @@ +--- +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 new file mode 100644 index 0000000000..1cb2b70d67 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_indicator/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..e6141d9ad4 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_internal_frame/index.html @@ -0,0 +1,39 @@ +--- +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 new file mode 100644 index 0000000000..63257fde23 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ipaddress/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..8b31fb3737 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_label/index.html @@ -0,0 +1,31 @@ +--- +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 new file mode 100644 index 0000000000..72e9d3ecc3 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_layered_pane/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..4432a25159 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_link/index.html @@ -0,0 +1,36 @@ +--- +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 new file mode 100644 index 0000000000..261cda9e1e --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_list/index.html @@ -0,0 +1,41 @@ +--- +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 new file mode 100644 index 0000000000..4aef332022 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listbox/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..a4c8e5bc98 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listitem/index.html @@ -0,0 +1,51 @@ +--- +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 new file mode 100644 index 0000000000..4f02f8cf0c --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menubar/index.html @@ -0,0 +1,35 @@ +--- +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 new file mode 100644 index 0000000000..455ca5e29a --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menuitem/index.html @@ -0,0 +1,35 @@ +--- +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 new file mode 100644 index 0000000000..0a580711c8 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menupopup/index.html @@ -0,0 +1,37 @@ +--- +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 new file mode 100644 index 0000000000..0c05a6fb07 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_nothing/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..3e67ec16fe --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..21ca6a487a --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option_pane/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..c8ef12e7a5 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outline/index.html @@ -0,0 +1,33 @@ +--- +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 new file mode 100644 index 0000000000..183d743baf --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outlineitem/index.html @@ -0,0 +1,36 @@ +--- +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 new file mode 100644 index 0000000000..9bdae12420 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_page/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..b0a45223c8 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetab/index.html @@ -0,0 +1,31 @@ +--- +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 new file mode 100644 index 0000000000..97ef09b02a --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetablist/index.html @@ -0,0 +1,33 @@ +--- +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 new file mode 100644 index 0000000000..9289ffde50 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pane/index.html @@ -0,0 +1,38 @@ +--- +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 new file mode 100644 index 0000000000..a7f4443dc4 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_paragraph/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..f79f65b850 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_parent_menuitem/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..ab51e83aae --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_password_text/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..e2c8897daf --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_popup_menu/index.html @@ -0,0 +1,25 @@ +--- +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 new file mode 100644 index 0000000000..37ff081c99 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_progressbar/index.html @@ -0,0 +1,33 @@ +--- +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 new file mode 100644 index 0000000000..a9d719e7c8 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_propertypage/index.html @@ -0,0 +1,39 @@ +--- +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 new file mode 100644 index 0000000000..a0b0ecc486 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pushbutton/index.html @@ -0,0 +1,33 @@ +--- +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 new file mode 100644 index 0000000000..4ba76918dd --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radio_menu_item/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..4d48e00c69 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radiobutton/index.html @@ -0,0 +1,32 @@ +--- +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 new file mode 100644 index 0000000000..efbc9084c5 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_redundant_object/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..9d1206aafc --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_rich_option/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..35f5b9ca40 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_root_pane/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..537ae5a89b --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_row/index.html @@ -0,0 +1,34 @@ +--- +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 new file mode 100644 index 0000000000..ef0ae65d70 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ruler/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..30de644a96 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scroll_pane/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..22af0adf33 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scrollbar/index.html @@ -0,0 +1,22 @@ +--- +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 new file mode 100644 index 0000000000..0c08471fd0 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_section/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..ef277767b6 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_separator/index.html @@ -0,0 +1,34 @@ +--- +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 new file mode 100644 index 0000000000..db831c8a29 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_slider/index.html @@ -0,0 +1,32 @@ +--- +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 new file mode 100644 index 0000000000..9fd7001061 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_sound/index.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 0000000000..b50d439b1a --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_spinbutton/index.html @@ -0,0 +1,32 @@ +--- +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 new file mode 100644 index 0000000000..690141f20b --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_split_pane/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..2eb49709db --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_statusbar/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..71e8f18a6b --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..dbf9e12353 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_column_header/index.html @@ -0,0 +1,25 @@ +--- +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 new file mode 100644 index 0000000000..1f6ea525d8 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_row_header/index.html @@ -0,0 +1,25 @@ +--- +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 new file mode 100644 index 0000000000..311f7da062 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tear_off_menu_item/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..a46f45ff18 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_terminal/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..3bcb001036 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_text_leaf/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..16ea650639 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_titlebar/index.html @@ -0,0 +1,22 @@ +--- +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 new file mode 100644 index 0000000000..c68f16675c --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toggle_button/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..1595276171 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toolbar/index.html @@ -0,0 +1,32 @@ +--- +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 new file mode 100644 index 0000000000..47eb22a0e9 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tooltip/index.html @@ -0,0 +1,37 @@ +--- +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 new file mode 100644 index 0000000000..e97b473952 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tree_table/index.html @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 0000000000..ca3ada95b7 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_viewport/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..f1319ad295 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_whitespace/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..0a777812d0 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_window/index.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 0000000000..8cd6f37533 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/at-apis/index.html @@ -0,0 +1,5 @@ +--- +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 new file mode 100644 index 0000000000..db1f1ad9f7 --- /dev/null +++ b/files/ja/mozilla/tech/accessibility/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..1a0fa3a176 --- /dev/null +++ b/files/ja/mozilla/tech/index.html @@ -0,0 +1,15 @@ +--- +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 new file mode 100644 index 0000000000..28acf4cc24 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/accessing_the_windows_registry_using_xpcom/index.html @@ -0,0 +1,281 @@ +--- +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 new file mode 100644 index 0000000000..74334c0d77 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/fun_with_xbl_and_xpconnect/index.html @@ -0,0 +1,88 @@ +--- +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 new file mode 100644 index 0000000000..d992f0e151 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/generating_guids/index.html @@ -0,0 +1,79 @@ +--- +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 new file mode 100644 index 0000000000..297a49c5f5 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/generic_factory/index.html @@ -0,0 +1,136 @@ +--- +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 new file mode 100644 index 0000000000..0e12b4f39c --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/guide/how_to_build_an_xpcom_component_in_javascript/index.html @@ -0,0 +1,190 @@ +--- +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 new file mode 100644 index 0000000000..725b612220 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/guide/index.html @@ -0,0 +1,16 @@ +--- +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 new file mode 100644 index 0000000000..bdcb54baa2 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/guide/mozilla_internal_string_guide/index.html @@ -0,0 +1,834 @@ +--- +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 new file mode 100644 index 0000000000..9d2c618917 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/guide/xpcom_hashtable_guide/index.html @@ -0,0 +1,297 @@ +--- +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 new file mode 100644 index 0000000000..ceea8f01cb --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/index.html @@ -0,0 +1,114 @@ +--- +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 new file mode 100644 index 0000000000..3c154bd1fe --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/interfacing_with_the_xpcom_cycle_collector/index.html @@ -0,0 +1,67 @@ +--- +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 new file mode 100644 index 0000000000..ed14941416 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/introduction_to_xpcom_for_the_dom/index.html @@ -0,0 +1,319 @@ +--- +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 new file mode 100644 index 0000000000..0095fbdc58 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.classes/index.html @@ -0,0 +1,109 @@ +--- +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 new file mode 100644 index 0000000000..ca8065fee2 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.classesbyid/index.html @@ -0,0 +1,20 @@ +--- +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 new file mode 100644 index 0000000000..dba394eb69 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.constructor/index.html @@ -0,0 +1,109 @@ +--- +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 new file mode 100644 index 0000000000..f7a4540734 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.exception/index.html @@ -0,0 +1,26 @@ +--- +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 new file mode 100644 index 0000000000..5908f888b6 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.id/index.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 0000000000..8105f7f239 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.interfaces/index.html @@ -0,0 +1,37 @@ +--- +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 new file mode 100644 index 0000000000..d830cc301c --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.lastresult/index.html @@ -0,0 +1,57 @@ +--- +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 new file mode 100644 index 0000000000..29aea92083 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.manager/index.html @@ -0,0 +1,11 @@ +--- +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 new file mode 100644 index 0000000000..129d147668 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.results/index.html @@ -0,0 +1,40 @@ +--- +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 new file mode 100644 index 0000000000..ad0542e783 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.returncode/index.html @@ -0,0 +1,28 @@ +--- +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 new file mode 100644 index 0000000000..f5b60e5c92 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.stack/index.html @@ -0,0 +1,11 @@ +--- +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 new file mode 100644 index 0000000000..6c0cd7bf78 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html @@ -0,0 +1,34 @@ +--- +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 new file mode 100644 index 0000000000..cafc9f1ca9 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.forcegc/index.html @@ -0,0 +1,20 @@ +--- +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 new file mode 100644 index 0000000000..7d07c19b32 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html @@ -0,0 +1,45 @@ +--- +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 new file mode 100644 index 0000000000..68cf7c5539 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.import/index.html @@ -0,0 +1,118 @@ +--- +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 new file mode 100644 index 0000000000..56489ade2e --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.reporterror/index.html @@ -0,0 +1,40 @@ +--- +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 new file mode 100644 index 0000000000..6a581462b2 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils/index.html @@ -0,0 +1,46 @@ +--- +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 new file mode 100644 index 0000000000..7bf0a7f0d0 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/components_object/index.html @@ -0,0 +1,108 @@ +--- +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 new file mode 100644 index 0000000000..f576a1cbb6 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/index.html @@ -0,0 +1,25 @@ +--- +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 new file mode 100644 index 0000000000..6d9b1ca50b --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html @@ -0,0 +1,24 @@ +--- +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 new file mode 100644 index 0000000000..d523b94ce1 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html @@ -0,0 +1,156 @@ +--- +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 new file mode 100644 index 0000000000..9c34d27c84 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html @@ -0,0 +1,13 @@ +--- +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 new file mode 100644 index 0000000000..c2707f8de0 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html @@ -0,0 +1,73 @@ +--- +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 new file mode 100644 index 0000000000..14a9eb1ee0 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html @@ -0,0 +1,15 @@ +--- +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 new file mode 100644 index 0000000000..4bb9b94597 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/plxpcom/index.html @@ -0,0 +1,17 @@ +--- +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 new file mode 100644 index 0000000000..5dfb513534 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/pyxpcom/index.html @@ -0,0 +1,62 @@ +--- +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 new file mode 100644 index 0000000000..ff1cec39a2 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/language_bindings/rbxpcom/index.html @@ -0,0 +1,16 @@ +--- +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 new file mode 100644 index 0000000000..930d831c1e --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/components/index.html @@ -0,0 +1,18 @@ +--- +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 new file mode 100644 index 0000000000..06226a5d35 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/components/nscategorymanager/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..dbec00fb06 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/components/nsdirectoryservice/index.html @@ -0,0 +1,71 @@ +--- +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 new file mode 100644 index 0000000000..2b7872b2b8 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/components/nslocalfile/index.html @@ -0,0 +1,41 @@ +--- +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 new file mode 100644 index 0000000000..579189906f --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/components/nsobserverservice/index.html @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 0000000000..ce98722492 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/components/nsscriptableinputstream/index.html @@ -0,0 +1,66 @@ +--- +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 new file mode 100644 index 0000000000..370f7ffe1e --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/glue_classes/index.html @@ -0,0 +1,16 @@ +--- +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 new file mode 100644 index 0000000000..3de5c924b8 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/glue_classes/nscomptr/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..49949e50fd --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/index.html @@ -0,0 +1,21 @@ +--- +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 new file mode 100644 index 0000000000..cf931e4a21 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/ns_ensure_true/index.html @@ -0,0 +1,49 @@ +--- +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 new file mode 100644 index 0000000000..58a3045835 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/imgiloader/index.html @@ -0,0 +1,27 @@ +--- +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 new file mode 100644 index 0000000000..d797fde123 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/index.html @@ -0,0 +1,15 @@ +--- +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 new file mode 100644 index 0000000000..5a0cb305dc --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozijssubscriptloader/index.html @@ -0,0 +1,80 @@ +--- +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 new file mode 100644 index 0000000000..0eb074f536 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/moziregistry/index.html @@ -0,0 +1,89 @@ +--- +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 new file mode 100644 index 0000000000..4ea6f0c619 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozistoragestatementparams/index.html @@ -0,0 +1,25 @@ +--- +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 new file mode 100644 index 0000000000..32251140ee --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessible/index.html @@ -0,0 +1,484 @@ +--- +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 new file mode 100644 index 0000000000..23a49f7cf2 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessibleprovider/index.html @@ -0,0 +1,49 @@ +--- +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 new file mode 100644 index 0000000000..04355548d1 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiannotationobserver/index.html @@ -0,0 +1,128 @@ +--- +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 new file mode 100644 index 0000000000..9679edc1f1 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiasyncinputstream/index.html @@ -0,0 +1,96 @@ +--- +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 new file mode 100644 index 0000000000..0db6957354 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiconsoleservice/index.html @@ -0,0 +1,51 @@ +--- +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 new file mode 100644 index 0000000000..af2a563df5 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefobserver/index.html @@ -0,0 +1,79 @@ +--- +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 new file mode 100644 index 0000000000..15a3e9a837 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefservice/index.html @@ -0,0 +1,203 @@ +--- +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 new file mode 100644 index 0000000000..bd17097a4f --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicryptohash/index.html @@ -0,0 +1,265 @@ +--- +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 new file mode 100644 index 0000000000..39a1336dcb --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfile/index.html @@ -0,0 +1,108 @@ +--- +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 new file mode 100644 index 0000000000..b84fee1d18 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfileexception/index.html @@ -0,0 +1,57 @@ +--- +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 new file mode 100644 index 0000000000..f599ddb061 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfilelist/index.html @@ -0,0 +1,80 @@ +--- +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 new file mode 100644 index 0000000000..736e9da5b3 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomhtmlmediaelement/index.html @@ -0,0 +1,39 @@ +--- +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 new file mode 100644 index 0000000000..db33da81d4 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomofflineresourcelist/index.html @@ -0,0 +1,184 @@ +--- +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 new file mode 100644 index 0000000000..70719d4b06 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomsimplegestureevent/index.html @@ -0,0 +1,61 @@ +--- +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 new file mode 100644 index 0000000000..454d955e70 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownload/index.html @@ -0,0 +1,135 @@ +--- +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 new file mode 100644 index 0000000000..813eca1337 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanager/index.html @@ -0,0 +1,424 @@ +--- +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 new file mode 100644 index 0000000000..958b1fc5e6 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanagerui/index.html @@ -0,0 +1,111 @@ +--- +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 new file mode 100644 index 0000000000..e1878800fc --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadprogresslistener/index.html @@ -0,0 +1,295 @@ +--- +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 new file mode 100644 index 0000000000..66878aa9ec --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidragservice/index.html @@ -0,0 +1,227 @@ +--- +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 new file mode 100644 index 0000000000..3e4a0adab5 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsieffectivetldservice/index.html @@ -0,0 +1,173 @@ +--- +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 new file mode 100644 index 0000000000..f90f1ef647 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsienumerator/index.html @@ -0,0 +1,40 @@ +--- +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 new file mode 100644 index 0000000000..639be1b844 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeed/index.html @@ -0,0 +1,125 @@ +--- +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 new file mode 100644 index 0000000000..2450d88d63 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedcontainer/index.html @@ -0,0 +1,101 @@ +--- +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 new file mode 100644 index 0000000000..fe7d1a107f --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedelementbase/index.html @@ -0,0 +1,46 @@ +--- +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 new file mode 100644 index 0000000000..ee585a4147 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedentry/index.html @@ -0,0 +1,68 @@ +--- +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 new file mode 100644 index 0000000000..02e51e7ced --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedgenerator/index.html @@ -0,0 +1,51 @@ +--- +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 new file mode 100644 index 0000000000..bb0efa8e92 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedperson/index.html @@ -0,0 +1,53 @@ +--- +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 new file mode 100644 index 0000000000..c7b4cb306a --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprocessor/index.html @@ -0,0 +1,116 @@ +--- +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 new file mode 100644 index 0000000000..e655256058 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprogresslistener/index.html @@ -0,0 +1,102 @@ +--- +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 new file mode 100644 index 0000000000..cca291098e --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresult/index.html @@ -0,0 +1,105 @@ +--- +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 new file mode 100644 index 0000000000..72dd667210 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresultlistener/index.html @@ -0,0 +1,50 @@ +--- +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 new file mode 100644 index 0000000000..93ee41b0b8 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedtextconstruct/index.html @@ -0,0 +1,94 @@ +--- +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 new file mode 100644 index 0000000000..dab28ff668 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivitydistributor/index.html @@ -0,0 +1,68 @@ +--- +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 new file mode 100644 index 0000000000..782caa9682 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivityobserver/index.html @@ -0,0 +1,172 @@ +--- +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 new file mode 100644 index 0000000000..6a67b2c570 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpchannel/index.html @@ -0,0 +1,569 @@ +--- +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 new file mode 100644 index 0000000000..5118321489 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiidleservice/index.html @@ -0,0 +1,135 @@ +--- +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 new file mode 100644 index 0000000000..46174421ec --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiinputstream/index.html @@ -0,0 +1,65 @@ +--- +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 new file mode 100644 index 0000000000..ef8ffd9671 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiioservice/index.html @@ -0,0 +1,456 @@ +--- +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 new file mode 100644 index 0000000000..0b472eba03 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijscid/index.html @@ -0,0 +1,24 @@ +--- +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 new file mode 100644 index 0000000000..2e8d1beca3 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijson/index.html @@ -0,0 +1,165 @@ +--- +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 new file mode 100644 index 0000000000..9efe8fb32d --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsilogininfo/index.html @@ -0,0 +1,147 @@ +--- +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 new file mode 100644 index 0000000000..ca03e05897 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiloginmanager/index.html @@ -0,0 +1,306 @@ +--- +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 new file mode 100644 index 0000000000..2c50f02fa8 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserver/index.html @@ -0,0 +1,65 @@ +--- +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 new file mode 100644 index 0000000000..ffd3a4649d --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserverservice/index.html @@ -0,0 +1,186 @@ +--- +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 new file mode 100644 index 0000000000..5af2c8425f --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsioutputstream/index.html @@ -0,0 +1,60 @@ +--- +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 new file mode 100644 index 0000000000..61a4dbcca2 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparentalcontrolsservice/index.html @@ -0,0 +1,172 @@ +--- +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 new file mode 100644 index 0000000000..a90cbe4208 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparserutils/index.html @@ -0,0 +1,205 @@ +--- +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 new file mode 100644 index 0000000000..8f94e59a9f --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipassword/index.html @@ -0,0 +1,12 @@ +--- +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 new file mode 100644 index 0000000000..0464fcd2ac --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipasswordmanager/index.html @@ -0,0 +1,16 @@ +--- +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 new file mode 100644 index 0000000000..209b11d0dd --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiplacesview/index.html @@ -0,0 +1,128 @@ +--- +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 new file mode 100644 index 0000000000..8333329cce --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiprefbranch/index.html @@ -0,0 +1,494 @@ +--- +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 new file mode 100644 index 0000000000..52e2dc8677 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunescapehtml/index.html @@ -0,0 +1,104 @@ +--- +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 new file mode 100644 index 0000000000..512346dbed --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunicodeconverter/index.html @@ -0,0 +1,142 @@ +--- +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 new file mode 100644 index 0000000000..b77b282637 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisessionstore/index.html @@ -0,0 +1,419 @@ +--- +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 new file mode 100644 index 0000000000..05589a89d5 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisupports_proxies/index.html @@ -0,0 +1,89 @@ +--- +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 new file mode 100644 index 0000000000..67867b4076 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsitaggingservice/index.html @@ -0,0 +1,180 @@ +--- +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 new file mode 100644 index 0000000000..7f8e9a8940 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithread/index.html @@ -0,0 +1,119 @@ +--- +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 new file mode 100644 index 0000000000..49f64ad777 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadeventfilter/index.html @@ -0,0 +1,61 @@ +--- +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 new file mode 100644 index 0000000000..c363c03792 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadinternal/index.html @@ -0,0 +1,82 @@ +--- +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 new file mode 100644 index 0000000000..bb797c4d5c --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadmanager/index.html @@ -0,0 +1,112 @@ +--- +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 new file mode 100644 index 0000000000..5a058d0797 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadobserver/index.html @@ -0,0 +1,125 @@ +--- +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 new file mode 100644 index 0000000000..703ee3c9a3 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadpool/index.html @@ -0,0 +1,78 @@ +--- +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 new file mode 100644 index 0000000000..4dccfef795 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwebprogresslistener/index.html @@ -0,0 +1,392 @@ +--- +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 new file mode 100644 index 0000000000..7a0b9ccaaa --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwindowmediator/index.html @@ -0,0 +1,60 @@ +--- +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 new file mode 100644 index 0000000000..1f24082b00 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsixmlhttprequest/index.html @@ -0,0 +1,84 @@ +--- +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 new file mode 100644 index 0000000000..7892efac9a --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipentry/index.html @@ -0,0 +1,60 @@ +--- +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 new file mode 100644 index 0000000000..67615221ee --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipreader/index.html @@ -0,0 +1,185 @@ +--- +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 new file mode 100644 index 0000000000..5113ed3323 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipwriter/index.html @@ -0,0 +1,496 @@ +--- +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 new file mode 100644 index 0000000000..16538d388e --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference_group/index.html @@ -0,0 +1,976 @@ +--- +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 new file mode 100644 index 0000000000..394e0fc521 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/setting_http_request_headers/index.html @@ -0,0 +1,273 @@ +--- +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 new file mode 100644 index 0000000000..7abeb7a36e --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/storage/index.html @@ -0,0 +1,378 @@ +--- +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 new file mode 100644 index 0000000000..76856f2327 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/the_thread_manager/index.html @@ -0,0 +1,130 @@ +--- +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 new file mode 100644 index 0000000000..1edb362717 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/frequently_asked_questions/index.html @@ -0,0 +1,91 @@ +--- +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 new file mode 100644 index 0000000000..826f85c35a --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/getting_started_guide/index.html @@ -0,0 +1,294 @@ +--- +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 new file mode 100644 index 0000000000..5d821dfeca --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/index.html @@ -0,0 +1,24 @@ +--- +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 new file mode 100644 index 0000000000..c5c82f9fdd --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/reference_manual/index.html @@ -0,0 +1,523 @@ +--- +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 new file mode 100644 index 0000000000..590fcab98c --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/status,_recent_changes,_and_plans/index.html @@ -0,0 +1,36 @@ +--- +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 new file mode 100644 index 0000000000..4a64488deb --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/weak_reference/index.html @@ -0,0 +1,153 @@ +--- +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 new file mode 100644 index 0000000000..a51dd2a630 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/wrappedjsobject/index.html @@ -0,0 +1,104 @@ +--- +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 new file mode 100644 index 0000000000..fe6136238f --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/xpcom_abi/index.html @@ -0,0 +1,54 @@ +--- +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 new file mode 100644 index 0000000000..a1f4a717dc --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/xpcom_ownership_guidelines/index.html @@ -0,0 +1,37 @@ +--- +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 new file mode 100644 index 0000000000..340d8c6940 --- /dev/null +++ b/files/ja/mozilla/tech/xpcom/xptcall_faq/index.html @@ -0,0 +1,76 @@ +--- +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 new file mode 100644 index 0000000000..e89dc3bf46 --- /dev/null +++ b/files/ja/mozilla/tech/xpidl/generating_xpt_on_windows/index.html @@ -0,0 +1,13 @@ +--- +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 new file mode 100644 index 0000000000..475f27e8b3 --- /dev/null +++ b/files/ja/mozilla/tech/xpidl/index.html @@ -0,0 +1,560 @@ +--- +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 new file mode 100644 index 0000000000..41f94f5e71 --- /dev/null +++ b/files/ja/mozilla/tech/xpidl/xpidl/index.html @@ -0,0 +1,57 @@ +--- +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 new file mode 100644 index 0000000000..ad3898b988 --- /dev/null +++ b/files/ja/mozilla/tech/xslt_2.0/index.html @@ -0,0 +1,35 @@ +--- +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> |