説明

プラグインコードによりホストされたアプリケーションの分離方法

ホストされたアプリケーションがブラウザのデータまたは(ホストアプリケーションを含む)他のホストされたアプリケーションのデータにアクセスすることを防ぐ別の方法によりブラウザにおいて実行しているアプリケーションが他方のアプリケーション(例えば、広告)をホストできる技術が説明される。ホストアプリケーションおよび/またはホストされたアプリケーションは、ブラウザのプラグイン(例えば、本件出願人の発売するシルバーライト(商標)アプリケーションとなりうる。ホストアプリケーションは非公開で隠されたプラグインのインスタンスを作成し、それにより隠されたプラグインのブラウザへのアクセスを無効にし、ホストされたアプリケーションを隠されたプラグインにロードする。XAMLタグエレメントはホストされたアプリケーションのためのレンダリングされた範囲に沿ってホストされたアプリケーションを識別するために使用されうる。ホストされたアプリケーションからのコンテンツは、レンダリングされたときにホストアプリケーションのコンテンツと合成される。ホストアプリケーションは、ホストされたアプリケーションに、例えば関連する広告を選択する等のためのキーワードを提供でき、および/またはホストされたアプリケーションに関連するウェブサイトのコンテンツを表示するためにブラウザのウィンドウを開くことを許可することができる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ブラウザにおいて実行しているアプリケーションが他のアプリケーションをホストするための技術に関する。
【背景技術】
【0002】
現代のブラウザはプラグインを許可し、何らかの要求された機能を提供するためにホスティングブラウザ/アプリケーションと相互作用するホストされたソフトウェアコードを一般的に含んでいる。このようなプラグインのひとつは、本件出願人の発売するシルバーライト(商標)で、アニメーション、ベクターグラフィックおよび/または再生装置で使用できる媒体(例えばビデオ・オーディオ)を含むことが多い高価なウェブアプリケーションの開発およびホスティングを許可するプラットフォームを、提供するものである。プラグインは、第三者のアプリケーションをホストできる。
【0003】
一般的に、これは現代のアプリケーションの開発の重要な機能、すなわちコンポーネント化と結び付けられる。コンポーネント化の原因となっている一般的な考えは、大きなアプリケーションを分割して、より大きなタスクのより小さい部分を実行し、再利用可能であり、周知のインターフェースを有する、より小さなコンポーネントにすることである。外部関係者(例えば、第二者または第三者)が既存のアプリケーションのためのコンポーネントを作成する能力は、コンポーネント化により生じ、例えば現代のウェブに基づいたこの概念の具体物はウェブマッシュアップである。
【0004】
しかしプラグインによりホストされたアプリケーション等のアプリケーションにおいて、当事者以外のコンポーネントが使用されたとき、コンポーネントとアプリケーションの間の信頼の限度が重要になってくる。ホスティングアプリケーションが特別にこのために設計され期待された場合は別として、コンポーネントは、ユーザーのインターフェース(UI)コードの外観および機能を変更し、またはアプリケーションデータを監視する等を可能とすべきでない。
【発明の概要】
【0005】
この概要は、「発明を実施するための形態」においてさらに詳細に説明された簡潔な様式に代表される概念の選択を紹介するために提供される。この概要は、「特許請求の範囲」に記載の主題の重要な特徴または本質的な特徴を識別することを意図するものではなく、「特許請求の範囲」に記載の主題の範囲を限定する任意の方法において使用されることを意図するものでもない。
【0006】
簡潔にいうと、本明細書で説明されたこの主題の様々な態様は、ブラウザにおいて実行されている1のアプリケーションがホストされたアプリケーションがホストアプリケーションデータまたは他のホストされたアプリケーションのデータにアクセスするのを防ぐ方法により、他のアプリケーションをホストできる技術へと向けられている。一態様において、ホストアプリケーションは、ブラウザに隠された他方のプラグインのインスタンスを作成するブラウザのプラグイン(例えば、本件出願人の発売するシルバーライト(商標))アプリケーションであり、ブラウザ/ホストされたアプリケーションデータ(例えば、エレメント)または他のアプリケーションデータへのアクセスが無効にされた状態で他のプラグインのインスタンスを作成することによりホストされたアプリケーションが、データにアクセスするのを防ぐ。
【0007】
一態様において、タグエレメント(tag element)は、ホストアプリケーションに関連するコード(例えばXAML)内においてホストされたアプリケーションを識別する。ホストエレメント(host element)は、ホストされたアプリケーションを示すためのホストアプリケーションのエレメントツリー(element tree)を追加する。タグエレメントは、ホストされたアプリケーションへのレンダリングの範囲を特定することができる。ホストされたアプリケーションのコンテンツは、ホストアプリケーションからのコンテンツと連動して(例えば、合成されて)、レンダリングされる。
【0008】
1の態様において、ホストされたアプリケーションは、広告となりうる。ホストアプリケーションはページコンテンツに対応しているもの等のキーワードをホストされたアプリケーションに提供し、これによりホストされたアプリケーションは関連する広告を選択することが可能となる。ホストされたアプリケーションは、ホストされたアプリケーションがブラウザのウィンドウを開いてディスプレイのウェブサイトのコンテンツ上に表示することを許可する等のいくつかの特権を与えられた操作(例えば、ホストされたアプリケーションのレンダリングの範囲内でユーザーが広告をクリックするとウェブサイトを提示する)を実行することを許可されうる。
【0009】
他の利点は、図面と連動して、以下の詳細な説明から表されるようになる。
【図面の簡単な説明】
【0010】
本発明は、例として図示され、同様の参照する番号が類似のエレメントを示すような添付する図面に限定されない。
【図1】ホスト(ブラウザプラグイン)アプリケーションによりホストされたアプリケーションを分離するコンポーネントの例を示すブロック図である。
【図2】ホストされたアプリケーションの分離を行うステップの例を示すフロー図である。
【図3】ホストアプリケーションと分離されたプラグインアプリケーションとの間の追加の通信のコンポーネントの例を示すブロック図である。
【図4】本発明の様々な態様が合併されるコンピューティング環境の例を示す図である。
【発明を実施するための形態】
【0011】
本明細書で説明される技術のさまざまな態様は、一般的に、分離された方法において第1のアプリケーション(例として、ブラウザのプラグイン等)が第2の(典型的に信頼性がない、第三者の)アプリケーションをホストする分離のモデルへ向けられている。一般的にこれは、メモリ内の個別のプラグインインスタンスを例示して第2のアプリケーションを分割することにより達成され、プラグインインスタンスはウェブブラウザにとって未知である。同時に、例えば、目に見えるアウトプットがホストするアプリケーションの目に見えるアウトプットに沿ってレンダリングされるため、第2のアプリケーション(例えば、広告)は、コンピュータユーザーにとってホストされたアプリケーションの一部として実行されるようにみえる。しかし、理解されるように、ホスティングアプリケーションが何らかの情報を提供することを要求しない限り、ホストされたアプリケーションはホスティングアプリケーションまたはウェブブラウザに関連する情報へのアクセスを有さない。
【0012】
本件出願人の発売するシルバーライト(商標)(クロスプラットフォーム、クロスブラウザのプラグイン)は、ホストするアプリケーションの例として使用されるが、ここで説明されるいかなる例も制限されないものである。そういうわけで、本発明は、どのような特定の実施例、態様、概念、構造、機能またはここに示された例にも限定されない。むしろ実施例、態様、概念、構成、機能またはここに説明された例のいずれも限定的なものでなく、本発明は、一般的にコンピューティングおよびホスティングアプリケーションの利益および利点を提供する様々な方法を使用できる。
【0013】
図1は、ここに説明されるものとしてアプリケーションの分離に関連した様々な態様を示すものである。一般的に、ブラウザ102は、本件出願人の発売するシルバーライト(商標)のプラグイン等のホストアプリケーション104とともにロードされる。一実装において、ホストアプリケーション104は、XAML(拡張可能なアプリケーションのマークアップ言語)に書き込まれたもの等の、ユーザーインターフェースのアプリケーションコード106に対応し、アプリケーションコード106はパーサ108によりツリー110に対応する様々なエレメントへ構文解析される。周知のように、これらのエレメントはブラウザのページの目に見えるアウトプットへのレンダリングへと進む。
【0014】
一実装において、第三者の広告等のアプリケーション111は、隠された(分割され、ブラウザにおいて発見できない)プラグイン112の一部として、ブラウザ102およびホストするアプリケーションデータから隠されたプラグイン112をプログラムにより分離する方法で、ホストアプリケーション104によりホストされるが、それにもかかわらず、ホストされたアプリケーション111が、ホストアプリケーションのレンダリング、インプットおよびレイアウトに参加することを許可する。レンダリング、インプットおよびレイアウトは、隠されたプラグイン112により管理されるため、例えば、目に見えるアウトプットは、ホストされたアプリケーションのアウトプットに確保されるユーザーインターフェースの範囲に限定される。隠されたプラグイン112が他方のシルバーライト(商標)のプラグイン、すなわちホストシルバーライトのプラグインにより(ブラウザに知られることなく)非公式で生成された他方のインスタンスとなりうることに注意されたい。さらに、他のプラグインのタイプは、HTMLブラウザとのいかなる直接通信も行わないようにインスタンス化または他の方法で構成するために使用することができ、例えばプラグインは、ブラウザのDOM(ドキュメントオブジェクトモデル)にアクセスしないようにインスタンス化されることに注意されたい。
【0015】
この目的を達成するために、実装の一例において、ホストされたアプリケーションのソースを識別し、ホストされた(分離された)アプリケーション111をロードする隠されたプラグイン112を例示する分離の境界を表示するタグエレメントが(例えばXAMLアプリケーションコード106において)提供される。
<Canvas><!−part of the host application-->
<XapHost Source=”http://www.advertisements.com/ad.xap”Height=”300”
Width=”350”/><!−the isolation boundary-->
</Canvas>
【0016】
タグエレメントは、XapHostのエレメント114により図1において表される。数ある操作の中で、XapHostのエレメント114はメモリ内、つまりブラウザ102から発見できない記憶場所において、隠されたプラグイン112のインスタンス化および初期化を担う。これはAPIまたはそれと同様のものを通して達成されることが可能である。ホストされたアプリケーション111は、隠されたプラグイン112を分離するプロキシとして動作するXapHostのエレメント114を介さなければホストアプリケーション104のツリー110に参加しない。たとえばホストアプリケーション111は、そのアプリケーションのルートノードに対応しているツリーを自身の最上位のノード以外、走査することができない。それはXapHostのエレメントへのアクセスを有しておらず、XapHostのエレメントはホスティングアプリケーションのツリーの中に存在することに注意されたい。代わりに、ホストされたアプリケーション111はXapHostのエレメント114を介してレンダリングするためのアウトプット116を提供することにのみ限定される。(一方で、XapHostのエレメント114は初期化変数等の追加のデータを提供する、および/または図3を参照して以下に説明されるようないくつかの特権をホストされたアプリケーション111に許可する。)これおよびXapHostのエレメント114から隠されたプラグイン112/ホストされたアプリケーション111に通信された他の任意のデータは、インプット117として図1において表現される。
【0017】
図2の例となるステップを使用して概略的に示すように、XAMLのアプリケーションコード106が構文解析されたときまたはXapHostのエレメント114がプログラムでツリー110に追加されたとき(ステップ202)、ステップ204および206においてXapHostのエレメント114は隠されたプラグイン112を初期化し「ソース」属性により特定された対応するホストされたアプリケーション111(例えば、XAP)をロードする(上述したXAMLの言語の例において、アプリケーション111はhttp://advertisements.com/ad.xapとして特定される)。ホストされたアプリケーション111は、ブラウザのHTMLドメインオブジェクトモデルへのアクセスを有しておらず(例えば、EnableHtmlAccessプロパティが偽に設定される)、例えば(共通の言語ランタイム、またはCLR AppDomein)グローバルの静的な変数等へのそれ自身のアクセスにより、それ自身のアプリケーションのドメインにロードされる。シルバーライト(商標)が、それ自身のミニCLR118を含んでいることに注意されたい。ドメインオブジェクトモデル(DomBridge)のアクセスなしに、ホストされたアプリケーション111はページそれ自体または他のプラグインを含む、ページ上の他の任意のコンテンツへのアクセスを有さない。
【0018】
ステップ208および210によって図2にさらに示すように、を介して、隠されたプラグイン112のインスタンス化および初期化、およびアプリケーション111のロードに加えて、XapHostのエレメント114は、ホストするアプリケーションからホストされたアプリケーションへのインプットおよびレイアウトの通知を指示する。さらに、XapHostのエレメント114は、ホストされたアプリケーション111のアウトプットを処理し、その結果ホスティングアプリケーションのプラグインによりそのアウトプットを構成できるようにする(音声および/または触覚等の他の任意のアウトプットが同様に混合されることに注意されたい)。ステップ212は、適切な時間、例えばシャットダウンにおいて、またはXapHostのエレメント114における対応する参照カウントが0になったとき(例えば、ユーザーのインターフェースの部分がもはやレンダリングされなくなったとき)に、ホストされたアプリケーションの破壊を表現する。
【0019】
一態様において、一般的に図3で示されるようにXapHostのエレメント114は、ホストアプリケーション104に、例えば初期化変数332を渡す等、ホストされたアプリケーション111との通信を許可する1または複数のインターフェース(例えば、上述の他の非公開のAPIの中のAPI330)を含むことができる。例えば広告のシナリオにおいて、初期化変数は、ホストしているページに存在するキーワードの集合体を含んでおり、ホストするページに、広告のアプリケーションが1または複数のキーワードに対応する関連の広告を供給できる。
【0020】
また一般的に図3において示される他方の態様においても、API330を介して、XapHostのエレメント114はホストされたアプリケーションがある特権を与えられた操作を実行すること(または、適切な呼334において、その代わりに操作を実行すること)を許可する。ひとつの例は、クリックされた広告に対するウェブサイトを提示する等、ユーザーの起動する行為に応答して新しいブラウザのウィンドウを開くことである。
【0021】
他方の利点は電力の消費を制御する能力である。例えば、広告は現代のコンピュータ使用において電力消費の大きな源となりうる。プラグインのホスティングモデル(例えば、XapHost)により、省電力モードは、アニメーションや他の電力を消費する動作を無効にすること等により、電力を消費しないようにできる。
【0022】
操作環境の例
図4は、図1から3の例を実装することができる適切なコンピューティングおよびネットワーク環境400の例を示している。コンピューティングシステム環境400は適切なコンピューティング環境の一例に過ぎず、本発明の使用および機能の範囲についてのいかなる限界をも提案することを意図していない。コンピューティング環境400は、操作環境400の一例において示されたコンポーネントの一つまたは組み合わせに関連するいかなる従属および要求を有しているとしても解釈されるべきでない。
【0023】
本発明は、多くの他の一般的な目的または特定の目的のコンピューティングシステム環境または構成おいて操作可能である。本発明と共に使用するために適した周知のコンピューティングシステム、環境、および/または構成の例は、パーソナルコンピュータ、サーバーコンピュータ、携帯またはラップトップ機器、タブレット機器、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、セットトップボックス、プログラム可能な家庭用電化機器、ネットワークPC、マイクロコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスの任意のものを含む分散コンピューティング環境、またはそれと同様のものを含むが、それに限定されない。
【0024】
本発明は、コンピュータにより実施されるプログラムモジュール等のコンピュータ実行可能命令の一般的なコンテキストにおいて説明されうる。一般的に、プログラムモジュールは、特定のタスクを実行するか、特定の理論上のデータタイプを実装するルーティン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。本発明はまた、コミュニケーションネットワークを介してリンクされた遠隔処理装置によりタスクが実行される分離されたコンピューティング環境においても実現されうる。分配されたコンピューティング環境において、プログラムモジュールは、ローカルおよび/またはメモリ記録装置を含むリモートコンピュータの記録媒体に配置されうる。
【0025】
図4を参照して、本発明の様々な態様を実装するための例示のシステムは、コンピュータ410の形式における一般的な目的のコンピューティングデバイスを含むことができる。コンピュータ410のコンポーネントは、処理ユニット420、システムメモリ430およびシステムメモリを含む様々なシステムコンポーネントと処理ユニット420を結合するシステムバス421を含むことができるがそれに限定されない。システムバス421は、メモリバスまたは様々なバスアーキテクチャーの任意のものを使用するメモリコントローラ、周辺機器バスおよびローカルバスを含むバス構造のいくつかのタイプの任意のものである。例として、そのようなアーキテクチャーはISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバスおよびメザニンバスとしても知られているPCI(Peripheral Component Interconnect)バスを含むがそれに限定されない。
【0026】
コンピュータ410は典型的に様々なコンピュータ可読媒体を含んでいる。コンピュータ可読媒体は、コンピュータ410によりアクセスされることができる任意の利用可能な媒体とすることができ、揮発性および不揮発性の媒体双方、および固定式および取り外し可能な媒体双方を含む。例として、コンピュータ可読媒体は、コンピュータ記録媒体および通信媒体を含むがそれに限定されない。コンピュータ記録媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報の記録の方法および技術において実装される揮発性および不揮発性、取り外し可能または固定式の媒体を含む。コンピュータ記録媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、DVD(digital versatile disks)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または要求される情報を記録するのに使用しコンピュータ410によりアクセスできる他の媒体を含むがそれに限定されない。通信媒体は、典型的に搬送波や他の伝達機構等の変調されたデータ信号におけるコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータにより具体化され、任意の配信媒体の情報を含む。「変調されたデータ信号」という用語は、1またはそれ以上の特徴の組を有し、信号内に情報をエンコードするような方法により変更された信号を意味する。例として、通信媒体は、有線ネットワークまたは直接の配線等の有線媒体、および音響、RF、赤外線または他の無線媒体等の無線媒体を含むがそれに限定されない。上記の任意の組み合わせはまたコンピュータ可読媒体の範囲内に含まれる。
【0027】
システムメモリ430は、ROM431またはRAM432等の揮発性および/または不揮発性メモリの形式においてコンピュータ記録媒体を含む。BIOS(基本入出力システム)433は、起動中等のコンピュータ410内のエレメントの間の情報の転送を助ける基本のルーティンを含んでおり、典型的にROM431に記録される。RAM432は、典型的に処理ユニット420によりすぐにアクセス可能なおよび/または現在操作さていれるデータおよび/またはプログラムモジュールを含んでいる。例として、図4はオペレーティングシステム434、アプリケーションプログラム435、他のプログラムモジュール436およびプログラムデータ437を図示しているが、これらに限定されない。
【0028】
コンピュータ410はまた、他の取り外し可能/固定式の、揮発性/不揮発性のコンピュータ記録媒体を含んでいる。単なる例として、図4は、固定式、不揮発性の磁気媒体から読み込む、または書き込むハードディスクドライブ441、取り外し可能、不揮発性の磁気ディスク452から読み込む、または書き込む磁気ディスクドライブ451、およびCD−ROMまたは他の光媒体等の取り外し可能、不揮発性の光ディスク456から読み込む、または書き込む光ディスクドライブ455のみ図示している。他の例示の操作環境において使用されることができる取り外し可能/固定式の、揮発性/不揮発性のコンピュータ記録媒体は、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM等を含むがそれに限定されない。ハードディスクドライブ441は、インターフェース440等の固定式メモリのインターフェースを通して典型的にシステムバス421に接続され、磁気ディスクドライブ451および光ディスクドライブ455は、インターフェース450等の取り外し可能なメモリのインターフェースによりシステムバス421に典型的に接続される。
【0029】
ドライブおよびそれらに関連するコンピュータ記録媒体は、上述され図4で説明されており、コンピュータ可読命令、データ構造、プログラムモジュールおよびコンピュータ410の他のデータのストレージを提供する。例えば図4において、ハードディスクドライブ441はオペレーティングシステム444、アプリケーションプログラム445、他のプログラムモジュール446およびプログラムデータ447の記録として図示されている。これらのコンポーネントはオペレーティングシステム434、アプリケーションプログラム435、他のプログラムモジュール436およびプログラムデータ437と同一または異なるものにできることに注意されたい。オペレーティングシステム444、アプリケーションプログラム445、他のプログラムモジュール446、プログラムデータ447は、少なくとも異なるコピーであることを示すため、ここでは異なる番号が与えられる。ユーザーは、タブレットまたは電子デジタイザー464、マイクロホン463、キーボード462およびポインティングデバイス446等の一般的にマウス、トラックボールまたはタッチパッドと称されるインプットデバイスを通してコンピュータ410にコマンドおよび情報を入力できる。図4に示されていない他のインプットデバイスはジョイスティック、ゲームパッド、衛星アンテナ、スキャナ、またはそれと同様のものを含んでもよい。これらおよび他のインプットデバイスはシステムバスと接続されたユーザーインプットインターフェース460を通してしばしば処理ユニット420に接続されるが、パラレルポート、ゲームポート、またはUSB等の他のインターフェースおよびバス構造によっても接続される。モニター491または他のタイプのディスプレイ装置はまた、ビデオインターフェース490等のインターフェースを通して、システムバス421と接続される。モニター491は、タッチスクリーンパネルまたはそれと同様のものと統合してもよい。モニターおよび/またはタッチスクリーンパネルはタブレット型パーソナルコンピュータのようにコンピューティングデバイス410を組み込んだ、筐体に物理的に結合することができることに注意されたい。加えて、コンピューティングデバイス410等のコンピュータはまた、周辺のアウトプットインターフェース494等を通して接続されうるスピーカー495およびプリンター496等の他の周辺のアウトプット機器を含むことができる。
【0030】
コンピュータ410はネットワーク化された環境においてリモートコンピュータ480等の1または複数のリモートコンピュータへの理論接続を使用して動作しうる。リモートコンピュータ480はパーソナルコンピュータ、サーバー、ルータ、ネットワークPC、ピアデバイスまたは他の一般的なネットワークノードとすることができ、典型的にコンピュータ410に関連して上述された多くのまたはすべてのエレメントを含むが、メモリ記録装置481だけが図4において図示されている。図4に描かれている理論接続は、1または複数のLAN(Local area network)471および1または複数のWAN(Wide area network)473を含むが、また、他のネットワークも含むことができる。そのようなネットワーク化環境はオフィス、企業規模のネットワーク、イントラネットおよびインターネットにおいて一般的である。
【0031】
LANのネットワーク化環境において使用する場合、コンピュータ410はネットワークインターフェースやアダプター470を通してLAN471に接続される。WANのネットワーク化環境において使用する場合、コンピュータ410は典型的にモデム472またはインターネット等のWAN473を通した通信を構築するための他の手段を含む。モデム472は、内臓または外付けとすることができ、インプットインターフェース460または他の適切な機構を介してシステムバス421に接続できる。インターフェースやアンテナを含んでいるような無線ネットワークコンポーネント474は、アクセスポイントまたはピアコンピュータ等の適切な装置を通してWANまたはLANに結合されうる。ネットワーク化された環境において、コンピュータ410に関して描かれたプログラムモジュール、またはその一部は、リモートのメモリ記録装置に記録される。例として、図4は、リモートアプリケーションプログラム485をメモリデバイス481内に存在するものとして図示しているが、これに限定されない。示されているネットワーク接続は例示のものであり、コンピュータの間の通信リンクを確立する他の手段が使用されうることが理解できよう。
【0032】
補助のサブシステム499(例えばコンテンツの補助ディスプレイ)は、コンピュータの主要部分が省電力状態にある場合でさえ、プログラムコンテンツ、システム状態および事象通知等のデータをユーザーに提供するよう許可するためにユーザーインターフェース460を介して接続される。補助のサブシステム499は、主処理装置420が省電力状態にある間にこれらのシステム間で通信することを許可するため、モデム472および/またはネットワークインターフェース470に接続される。
【0033】
結論
本発明は様々な修正や構成の変更が可能であるが、本発明の特定の例示の実施形態が、図に示され、詳細に上述されてきた。しかし、本発明を開示された特定の形式へ限定することを意図しておらず、反対に、本発明の趣旨および範囲内に収まるすべての修正、構成の変更および等価物に及ぶように意図していることが理解できよう。

【特許請求の範囲】
【請求項1】
コンピューティング環境における方法であって、ブラウザ(102)において実行しているプラグイン(104)に対応するホストアプリケーション内においてホストされたアプリケーション(111)をホストするステップ(202)であって、ホストされたアプリケーションがブラウザのデータまたは他のいずれかのホストされたアプリケーションのデータにアクセスするのを防ぐことを含むステップを含むことを特徴とする方法。
【請求項2】
前記ホストされたアプリケーションをホストするステップは、前記ブラウザに隠される他のプラグインのインスタンスを作成するステップと、前記他のプラグインにおいて前記ホストされたアプリケーションをロードするステップとを含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記ホストされたアプリケーションがデータにアクセスすることを防ぐステップは、ブラウザのデータまたは前記ブラウザにおいて実行している他のいずれかのアプリケーションのデータへアクセスが無効にされた前記他のプラグインのインスタンスを作成するステップを含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記ホストアプリケーションに関連するコード内において前記ホストされたアプリケーションを識別するためにタグエレメントを提供するステップと、前記タグを検出するステップと、検出に応答して隠されたプラグインのインスタンスを作成するステップと、前記隠されたプラグインにおいて前記ホストされたアプリケーションをロードするステップとをさらに含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記ホストされたアプリケーションをホストするステップは、前記ホストされたアプリケーションに対応するホストエレメントがいつプログラムによりツリーに加えられるかを検出するステップと、検出に応答して、隠されたプラグインのインスタンスを作成するステップと、プラグインにおいてホストされた隠された前記プラグインにおいて前記ホストされたアプリケーションをロードするステップとを含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記ホストアプリケーションからのアウトプットを前記ホストされたアプリケーションからのアウトプットと合成するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記ホストアプリケーションから前記ホストされたアプリケーションへ変数を通信するステップ、または前記ホストされたアプリケーションが電力の消費を制御することを試みる行為を制御するステップ、または前記ホストアプリケーションから前記ホストされたアプリケーションへ変数を通信するステップおよび前記ホストされたアプリケーションが電力の消費を制御することを試みる行為を制御するステップの双方をさらに含むことを特徴とする請求項1に記載の方法。
【請求項8】
前記ホストアプリケーションから前記ホストされたアプリケーションへ前記変数を通信するステップは、前記ホストされたアプリケーションが少なくとも1の関係する広告を選択できる情報を提供するステップを含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記ホストされたアプリケーションが少なくとも1の特権とされた操作を実行することを許可するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項10】
コンピューティング環境におけるシステムであって、ブラウザ(102)において実行する第1のプラグイン(104)と、前記第1のプラグインのユーザーインターフェースのエレメントを含むエレメントのツリーに対応する前記第1のプラグインに関連するデータ構造(110)と、ブラウザのエレメントまたは他のブラウザのホストされたアプリケーションエレメントへのアクセスが無効にされた前記第1のプラグイン(104)によりインスタンスが作成された第2のプラグイン(112)とを備え、前記第2のプラグインは該第2のプラグインにロードされたホストされたアプリケーションに関連するツリーにおいてホストエレメント(114)と対応することを特徴とするシステム。
【請求項11】
前記第1のプラグインはXAMLコードに関連し、前記第2のプラグインはXAMLコードを構文解析している間に前記第2のプラグインに対応するXAMLコードのタグエレメントが検出されるときにインスタンスが作成され、前記タグエレメントは前記ホストされたアプリケーションのソースおよび前記ホストされたアプリケーションのためのレンダリングする範囲を識別することを特徴とする請求項10に記載のシステム。
【請求項12】
前記第1のプラグインに関連する非公開のAPIをさらに備え、前記第2のプラグインは前記第1のプラグインによりインスタンスを作成され、前記非公開のAPIを介して前記第1のプラグインと通信することを特徴とする請求項10に記載のシステム。
【請求項13】
コンピュータ実行可能命令を有する1または複数のコンピュータ可読媒体であって、
前記コンピュータ可読命令は、実行されたときに、
第1のアプリケーション(104)を、ブラウザ内の第1のプラグインとして実行するステップであって、前記第1のアプリケーションのエレメントを示すツリー(110)を作成するステップを含むステップと、
前記第1のプラグイン(104)内において第2のアプリケーション(111)をホストするステップであって、前記エレメントを示すツリー内の前記第1のプラグインのためのホストエレメントを含めることにより、前記ブラウザのデータまたは前記第1のプラグインのデータにアクセスすることが無効とされた第2のプラグインのインスタンスを作成すること(204)と、前記第2のプラグインにおいて実行するための第2のアプリケーションをロードすること(206)であって、前記第2のアプリケーションはユーザーインターフェースエレメントを提供することとを含むステップと、
前記第1のアプリケーションのユーザーインターフェースエレメントと前記第2のアプリケーションのユーザーインターフェースエレメントとを処理することにより目に見えるアウトプットをレンダリングするステップ(210)と
を含むステップを実行することを特徴とするコンピュータ可読媒体。
【請求項14】
前記第2のアプリケーションは、広告に対応しており、前記第2のアプリケーションのページコンテンツに対応する1または複数のキーワードを提供するステップを含む更なるコンピュータ実行可能命令を有することを特徴とする請求項13に記載の1または複数のコンピュータ可読媒体。
【請求項15】
前記第2のアプリケーションがウェブサイトのコンテンツを表示するためのブラウザのウィンドウを開くことを許可するステップを含む更なるコンピュータ実行可能命令を有することを特徴とする請求項13に記載の1または複数のコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2012−511776(P2012−511776A)
【公表日】平成24年5月24日(2012.5.24)
【国際特許分類】
【出願番号】特願2011−540748(P2011−540748)
【出願日】平成21年11月11日(2009.11.11)
【国際出願番号】PCT/US2009/064034
【国際公開番号】WO2010/077443
【国際公開日】平成22年7月8日(2010.7.8)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】