問題タブ [xpcom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - XPCOM セキュリティの問題
XPCOM を使用して Firefox プラグインを開発しています。まだすべてのドキュメントを読んでいませんが、私が見る限り、プラグインは、XPCOM インターフェースを介してサービスを提供し、XPCOM インターフェースを介してブラウザーと対話する単純な DLL です。プラグイン自体がネイティブ DLL であるため、セキュリティ モデルはどのように機能しますか? OCX コントロールのように、プラグインが厄介なことをしないとユーザーが信頼しているという事実に依存しますか?
他の方法で安全を確保する方法が見当たりません... ありますか?
c++ - C++XPCOM拡張機能を使用したFirefoxのタブへのアクセス
タブの開閉と切り替えを検出し、Firefox拡張機能から関連するURLを取得するには、どのXPCOMインターフェイスを使用する必要がありますか?JSでタブを管理するコードのインスタンスを見たことがありますが、C ++からはどうでしょうか?
.net - 同じマシン上で実行されている Firefox 拡張機能と C# コードの間で、どの IPC メソッドを使用すればよいですか?
(新しい) Firefox 拡張機能と既存の C# コードとの間の通信を構築する方法について質問があります。
Firefox 拡張機能は構成データを使用し、他のデータを生成するため、どこかから構成データを取得し、その出力をどこかに保存する必要があります。データは既存の C# コードによって生成/消費されるため、拡張機能が C# コードと対話する方法を決定する必要があります。
関連する要因:
- 比較的管理された企業環境で、Windows 上でのみ実行されます。
- C#で構築されたマシンで実行されているWindowsサービスがあります。
- データをローカル データストア (sqlite など) に格納すると、他の理由で役立ちます。
- データの量は少なく、たとえば数分ごとに 10kb の圧縮されていない xml があり、あまり「おしゃべり」ではありません。
- データ交換は、完全ではないにしても、大部分が非同期である可能性があります。
- すべてのプロジェクトと同様に、リソースが限られているため、比較的簡単なオプションが必要です。
- 超高性能である必要はありませんが、大きなオーバーヘッドを追加するべきではありません。
- 私はJavaScriptで拡張機能を構築することを計画しています(ただし、本当に必要な場合は別の方法で確信できます)
私が検討しているいくつかのオプション:
- XPCOM から .NET/COM へのブリッジを使用する
- sqlite db を使用します。拡張機能は、そこから読み取って保存します。C# コードはサービスで実行され、db にデータが入力され、サービスによって作成されたデータが処理されます。
- TCP ソケットを使用して、拡張機能とサービスの間で通信します。サービスにローカル データ ストアを管理させます。
(1) に関する私の問題は、これがトリッキーで、それほど簡単ではないと思うことです。しかし、私は完全に間違っている可能性がありますか?(2) で見られる主な問題は、sqlite のロックです。一度に 1 つのプロセスしかデータを書き込めないため、ブロックが発生します。ただし、一般的にはローカル データストアがあると便利なので、パフォーマンスへの影響がそれほど大きくない場合、これは魅力的なオプションです。(3)が特に簡単か難しいかはわかりません...またはプロトコルにどのようなアプローチをとるべきか:カスタムまたはhttp.
これらのアイデアやその他の提案について何かコメントはありますか?
更新: C++ ではなく JavaScript で拡張機能を構築することを計画していました
javascript - XPCOM コントラクト ID の検索: components.Classes["THISPART"]
XPCOM で既知のオブジェクトを作成したりアクセスしたりする必要がある場合、それらのコントラクト ID はどこにありますか?
javascript - ページをダウンロードしようとしているときに、このコード アラート テストが行われないのはなぜですか?
myURLString ( http://www.google.com/search?q=http://www.google.com/&btnG=Search+Directory&hl=en&cat=gwd%2FTop ) をダウンロードする必要があります。
this.mData にはページのコンテンツが必要だと考えていますが、アラートを出すことができないため、最初にテストをアラートしようとしています。なにが問題ですか?
更新:私は今しようとしています...
...しかし、それは呼び出されません。なんで?
firefox - XPCOM コンポーネントから Firefox キャッシュへのエントリの追加
nsICacheSession には、既存のキャッシュ エントリを返すメソッド openCacheEntry() があります。キャッシュ エントリを作成する createCacheEntry() などのメソッドはありますか。ディスクからファイルを読み取り、それらを Firefox キャッシュに書き込む XPCOM オブジェクトを作成したいと考えています。
ありがとう
javascript - Firefox 拡張機能のバージョンの検出
install.rdf 内のバージョンを [バージョン情報] ボックスに入力したい Firefox 拡張機能があります。
FUEL の extIExtension を使用すると拡張機能のバージョンを確認できることはわかっていますが、FUEL を使用して拡張機能を作成したわけではありません (MDC のドキュメントは、それに移行する方法について非常に簡単に見えます)。拡張機能のバージョンを動的に確認する方法はありますか?
特に、ハード コードしたり、Makefile から生成したりしたくありません
c++ - GStreamer XUL要素を作成しますか?
XULRunnerに基づくビデオ編集アプリケーション用に「video」という名前のカスタムXUL要素を作成したいと思います。XPCOMのドキュメントでは、Javascriptからコンポーネントにアクセスする方法が説明されていますが、新しいXUL要素を宣言する方法に関するドキュメントが見つからないようです。これはどこにありますか?誰かが私を正しい方向に向けることができますか?
明確化
GStreamerパイプラインをXULウィジェットに接続できるようにしたい。これは、アプリケーションのC++部分から実行する必要があります。本質的に、それは呼び出しに要約されます:
したがって、私が達成する必要があるのは、XULウィジェットからwindowId(WindowsではHWND)にアクセスする方法です。そのような最小限の要件(XULコンポーネントのウィンドウIDにアクセスする)では、本当にNPAPIプラグインを作成する必要がありますか?NPAPIプラグインの作成はやや困難に思えます(ただし、このプロジェクトのおかげでおそらく実行可能です)。やり過ぎは避けたいので、XPCOMコンポーネントで十分であれば、それは素晴らしいことです。
解決しました!
XPCOMプラグインでそれを行う方法を見つけました。トップレベルのXULウィンドウのネイティブハンドルを取得できることを発見しました。XUL要素をクラックしてウィンドウハンドルを取得するには、プライベートXULヘッダーの一部を含める必要があるため、これにはある程度のハッカーが必要です。ただし、それを取得したら、子ウィンドウを作成できます。
次の課題は、子ウィンドウをXULのレイアウトマネージャーに従わせることです。このウィンドウはXUL要素として存在しないため、レイアウトマネージャーの影響はまったく受けません。回避策は、ネイティブウィンドウをオーバーレイするプレースホルダーとして機能するXUL要素を作成することです。この要素については、「サイズ変更」イベントのコールバックを登録する必要があります。イベントハンドラーでは、カスタムウィンドウのサイズと位置をXUL要素と同じにすることができます。
XBLを使用して、「video」という名前の要素タイプを定義します。サブ要素としてのみXULラベルが含まれています。この要素は、上記のレイアウトと同様に、私のXPCOMプラグインで使用されます。
このソリューションは非常にうまく機能します。
クレジットはSongbirdチームのMichaelSmithにあります。彼はGStreamerメーリングリストで私の質問に答えました。興味があれば、このコードを見ることができます。
firefox-addon - AppData/LocalLow ディレクトリを開く方法が見つかりません
次のように、ユーザー 'AppData/Local' フォルダーへのパスを取得できます。appdatafile = Components.classes["@mozilla.org/file/directory_service;1"]. getService(Components.interfaces.nsIProperties)。get("LocalAppData", Components.interfaces.nsIFile).path;
「AppData/LocalLow」ユーザーフォルダーを取得するのを手伝ってくれる人はいますか?