(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスによって実行されると、コンピューティングデバイスに、
共有入力メッセージキューを管理して、前記コンピューティングデバイス上でアプリケーションの複数のコンポーネントのためのメッセージを処理することと、
前記コンピューティングデバイス上の前記複数のコンポーネントのうちの応答しないコンポーネントを検出することと、
前記検出することに応答して、前記共有入力メッセージキューから前記応答しないコンポーネントをデタッチすることであって、前記共有入力メッセージキューから前記応答しないコンポーネントをデタッチすることとは、前記応答しないコンポーネントのためのメッセージを処理するためのデタッチされたメッセージキューを開始することと、前記応答しないコンポーネントのためのメッセージを前記デタッチされたメッセージキューに移行させることからなることと、
を含む動作を実行するように構成されたメッセージキューマネージャーを実施させる命令を記憶する、１つまたは複数のコンピューター可読記憶媒体。
【請求項２】
前記アプリケーションがＷｅｂブラウザーを備える、請求項１に記載の１つまたは複数のコンピューター可読記憶媒体。
【請求項３】
前記複数のコンポーネントが前記アプリケーションのタブ付きインターフェイスの複数のタブを備える、請求項１又は２に記載の１つまたは複数のコンピューター可読記憶媒体。
【請求項４】
前記応答しないコンポーネントを検出することが、
メッセージを前記複数のコンポーネントのそれぞれに定期的に送信して、前記複数のコンポーネントの応答性を監視することと、
前記応答性に基づいて前記コンポーネントが前記メッセージに応答しなかったと判定することと、
を含む、請求項１〜３のいずれか一項に記載の１つまたは複数のコンピューター可読記憶媒体。
【請求項５】
前記メッセージキューマネージャーが、
通知を出力して、前記応答しないコンポーネントについてユーザーに通知することであって、前記通知が非モーダルであり、コンテンツレンダリング領域において前記アプリケーションによってレンダリングされたコンテンツに重なる通知バーを介して出力される、ユーザーに通知すること、
を含む動作を実行するようにさらに構成される、請求項１〜４のいずれか一項に記載の１つまたは複数のコンピューター可読記憶媒体。
【請求項６】
前記通知が、前記応答しないコンポーネントを回復するための回復オプションを有効にするように構成された１つまたは複数のユーザー選択可能な選択肢を含む、請求項５に記載の１つまたは複数のコンピューター可読記憶媒体。
【請求項７】
前記複数のコンポーネントが、前記アプリケーションの共通フレーム内に含まれる別々に動作可能なサブアプリケーションを備える、請求項１〜６のいずれか一項に記載の１つまたは複数のコンピューター可読記憶媒体。
【請求項８】
前記メッセージキューマネージャーが、
応答しないものとして検出された前記コンポーネントが再び応答すると判定することと、
前記コンポーネントを前記共有入力メッセージキューに再アタッチすることとと、
を含む動作を実行するようにさらに構成される、請求項１〜７のいずれか一項に記載の１つまたは複数のコンピューター可読記憶媒体。
【請求項９】
前記コンポーネントを再アタッチすることが、
デタッチされたメッセージキューから前記共有入力メッセージキューに前記コンポーネントのためのメッセージをマージすることと、
前記デタッチされたメッセージキューをクリアすることと、
を含む、請求項８に記載の１つまたは複数のコンピューター可読記憶媒体。
【請求項１０】
メッセージをタブ付きアプリケーションの複数のタブに定期的に送信して、前記複数のタブの応答性を監視するステップであって、前記複数のタブがメッセージ処理に共有入力メッセージキューを使用するように構成される、ステップと、
前記メッセージに基づいて、前記複数のタブのうちのいずれかが応答しないことを検出するステップと、
前記共有入力メッセージキューからデタッチされたメッセージキューに前記タブのためのメッセージを移行することによって、前記共有入力メッセージキューから前記応答しないタブをデタッチするステップと、
応答しないものとして検出された前記タブが再び応答すると判定するステップと、
前記デタッチされたメッセージキューから前記共有入力メッセージキューに前記タブのためのメッセージをマージすることによって、前記タブを前記共有入力メッセージキューに再アタッチするステップと、
を含む、コンピューターにより実施される方法。
【請求項１１】
通知を出力して、前記応答しないタブについてユーザーに通知するステップと、
前記通知に含まれる１つまたは複数のユーザー選択可能な手段を介して、回復オプションへのアクセスを提供するステップであって、前記回復オプションが前記通知に含まれる前記１つまたは複数のユーザー選択可能な手段の選択に応答して出力されるステップと、
をさらに含む、請求項１０に記載のコンピューターにより実施される方法。
【請求項１２】
前記回復オプションが、前記応答しないタブを介してアクセスされるリソースを別のリソースとスワップするオプションを含む、請求項１１に記載のコンピューターにより実施される方法。
【請求項１３】
前記回復オプションが、スクリプトの実行が前記応答しないタブの原因として特定されたときに、前記応答しないタブに関連付けられた前記スクリプトの実行を停止するオプションを含む、請求項１１又は１２に記載のコンピューターにより実施される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージキュー管理に関する。
【背景技術】
【０００２】
[0001]タブ付きＷｅｂブラウザーなどのマルチコンポーネントアプリケーションプログラムは、単一のアプリケーションを介して複数のリソース（例えば、ドキュメント、Ｗｅｂページ、ファイルなど）と同時に対話するための便利な方法であるので、ユーザーに人気がある。慣例では、マルチコンポーネントを利用するアプリケーションは、共有入力メッセージキューを用いて、複数のコンポーネントのメッセージ処理およびシーケンス処理を行う。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ところが、従来の手法では、１つのコンポーネントが応答しなくなった場合、そのコンポーネントは共有キューからそのメッセージを処理することを停止する。このことは、同じメッセージキューを共有するその他のコンポーネントのメッセージの中断を引き起こす可能性がある。したがって、１つの応答しないコンポーネントは、キューを事実上ブロックし、その他のコンポーネントも同様に応答しなくなる原因となる可能性がある。
【課題を解決するための手段】
【０００４】
[0002]この概要は、発明を実施するための形態において以下でさらに説明される、簡略化した形態での概念の選択肢を紹介するために提供される。この概要は、特許請求される主題の主要な機能または必須の機能を特定することを意図するものでもなく、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。
【０００５】
[0003]様々な実施形態は、マルチコンポーネントアプリケーションが応答しなくなる（例えば、「ロックアップ」、「ハング」、「クラッシュ」など）可能性を低減し、マルチコンポーネントアプリケーションが応答しなくなった場合に個々のコンポーネントの回復オプションを有効にするように設計されたメッセージキュー管理技法を提供する。少なくともいくつかの実施形態では、メッセージキューマネージャーを実施して、アプリケーションのコンポーネントが応答しなくなったときを検出し、共有入力メッセージキューからそのコンポーネントをデタッチすることができる。共有キューは、他の応答するコンポーネントのメッセージの処理を継続することができる一方、応答しないコンポーネントのメッセージングは、別個のキューを介して管理される。また、メッセージキューマネージャーは、応答しないコンポーネントについてユーザーに通知し、応答しないコンポーネントの回復を容易にするためのオプションをユーザーに提供することができる。さらに、少なくともいくつかの実施形態では、メッセージキューマネージャーは、デタッチされたコンポーネントを監視し、デタッチされたコンポーネントが再び応答するようになったときに、デタッチされたコンポーネントを再アタッチ（リアタッチ、reattach）することができる。
【０００６】
[0004]同様の機能を参照するために、図面全体を通して同じ番号が使用される。
【図面の簡単な説明】
【０００７】
【図１】[0005]１つまたは複数の実施形態による、本明細書に記載される様々な原理を用いることができる運用環境を示す図である。
【図２】[0006]１つまたは複数の実施形態による、マルチコンポーネントアプリケーションの例示的なメッセージキュー管理技法を表現したものを示す図である。
【図３】[0007]１つまたは複数の実施形態による例示的なＷｅｂブラウザーを示す図である。
【図４】[0008]１つまたは複数の実施形態による方法のステップを説明する流れ図である。
【図５】[0009]１つまたは複数の実施形態を実施するために使用することができる例示的なシステムを示す図である。
【発明を実施するための形態】
【０００８】
概説
[0010]様々な実施形態は、マルチコンポーネントアプリケーションが応答しなくなる（例えば、「ロックアップ」、「ハング」、「クラッシュ」など）可能性を低減し、マルチコンポーネントアプリケーションが応答しなくなった場合に個々のコンポーネントの回復オプションを有効にするように設計されたメッセージキュー管理技法を提供する。ブラウジング環境では、メッセージキューマネージャーを実施して、タブ付きブラウザーユーザーインターフェイスのタブを管理することができる。少なくともいくつかの実施形態では、メッセージキューマネージャーは、アプリケーションのコンポーネント（例えば、タブ）が応答しなくなったときを検出し、共有入力メッセージキューからそのコンポーネントをデタッチすることができる。共有キューは、他の応答するコンポーネントのメッセージの処理を継続することができる一方、応答しないコンポーネントのメッセージングは、別個のキューを介して管理される。また、メッセージキューマネージャーは、応答しないコンポーネントについてユーザーに通知し、応答しないコンポーネントの回復を容易にするためのオプションをユーザーに提供することができる。さらに、少なくともいくつかの実施形態では、メッセージキューマネージャーは、デタッチされたコンポーネントを監視し、デタッチされたコンポーネントが再び応答するようになったときに、デタッチされたコンポーネントを再アタッチすることができる。
【０００９】
[0011]以下に続く説明では、「運用環境」と題されたセクションが提供され、このセクションは、１つまたは複数の実施形態を用いることができる１つの環境について説明する。これに続いて、「メッセージキュー管理」と題されたセクションは、１つまたは複数の実施形態による、マルチコンポーネントアプリケーションのメッセージキューを管理するための例示的な技法について説明する。次に、「例示的なＷｅｂブラウザー」と題されたセクションは、１つまたは複数の実施形態によるタブ付きＷｅｂブラウザーインターフェイス、通知、および回復オプションの例について説明する。次いで、「例示的な方法」と題されたセクションは、例示的な方法の文脈におけるメッセージキュー管理に関連した例示的な技法および機能について説明する。最後に、「例示的なシステム」と題されたセクションは、１つまたは複数の実施形態を実施するために利用することができる例示的なシステムについて説明する。
運用環境
[0012]図１は、１つまたは複数の実施形態による運用環境の全体を１００で示す。環境１００は、１つまたは複数のプロセッサー１０４、１つまたは複数のコンピューター可読記憶媒体１０６および、コンピューター可読記憶媒体に常駐し、（１つまたは複数の）プロセッサーによって実行可能な１つまたは複数のアプリケーション１０８を有するコンピューティングデバイス１０２を含む。コンピューター可読記憶媒体は、例として限定することなく、すべての形態の揮発性メモリーおよび不揮発性メモリーならびに／または通常コンピューティングデバイスに関連付けられる記憶媒体を含むことができる。そのようなメディアとしては、ＲＯＭ、ＲＡＭ、フラッシュメモリー、ハードディスク、リムーバブルメディアなどを挙げることができる。コンピューティングデバイスの１つの具体的な例が図５に示され、以下で説明される。
【００１０】
[0013]加えて、コンピューティングデバイス１０２は、上記および以下で説明されるように動作するメッセージキューマネージャー１１１を含む、またはそうでない場合はメッセージキューマネージャー１１１を利用するＷｅｂブラウザー１１０の形態のソフトウェアアプリケーションを含む。メッセージキューマネージャーは、マルチコンポーネントアプリケーションのコンポーネントの管理を提供して、応答しないコンポーネントによるクラッシュ／ハングに影響されず、クラッシュ／ハングから回復するように構成され得る。タブ付きブラウジング環境では、メッセージキューマネージャーは、Ｗｅｂブラウザー１１０の複数のタブの１つまたは複数の入力メッセージキューを管理するように動作可能である。少なくともいくつかの実施形態では、メッセージキューマネージャーは、アプリケーションのコンポーネント（例えば、タブ）が応答しなくなったときを検出し、共有入力メッセージキューからそのコンポーネントをデタッチすることができる。そうすることにより、別個の「デタッチされた」メッセージキューによって、応答しないコンポーネントのメッセージ処理を行うことができる。これにより、共有キューがアプリケーションの他の応答するコンポーネントのメッセージの処理を継続することができ、その結果、応答するコンポーネントとの対話を継続することができる。また、メッセージキューマネージャーは、応答しないコンポーネントについてユーザーに通知し、応答しないコンポーネントの回復を容易にするためのオプションをユーザーに提供することができる。さらに、少なくともいくつかの実施形態では、メッセージキューマネージャーは、デタッチされたコンポーネント／タブを監視し、デタッチされたコンポーネントが再び応答するようになったときに、デタッチされたコンポーネントを再アタッチすることができる。
【００１１】
[0014]ブラウジング環境およびＷｅｂブラウザーまたは他のアプリケーションのタブの文脈において、様々な例が本明細書に記載される。ただし、様々な環境において、複数のコンポーネントを利用する任意の適切なアプリケーションとともに、メッセージキューマネージャー１１１および対応する技法を用いることができることを理解されたい。例として限定することなく、メッセージキューマネージャーを実施して、電子メールアプリケーション、デスクトップ生産性アプリケーション、ゲームアプリケーション、メディアアプリケーション、および／またはコンピューティングデバイス１０２の他の適切なアプリケーションを含むがこれらに限定されない、様々なアプリケーション１０８のコンポーネントを管理することができる。
【００１２】
[0015]加えて、環境１００は、インターネットなどのネットワーク１１２、および上記および以下で説明されるようにコンテンツを送受信することができる１つまたは複数のＷｅｂサーバー１１４を含む。そのようなコンテンツは、Ｗｅｂサーバーから受信されるＷｅｂページを含むことができる。
【００１３】
[0016]コンピューティングデバイス１０２は、例として限定することなく、デスクトップコンピューター、ポータブルコンピューター、携帯情報端末（ＰＤＡ）、携帯電話などのハンドヘルドコンピューターなどの任意の適切なコンピューティングデバイスとして具体化され得る。
【００１４】
[0017]例示的な運用環境について説明してきたが、次に、メッセージキューマネージャー１１１を利用することができるいくつかの例示的な実施形態の説明について検討する。
メッセージキュー管理
[0018]図２は、１つまたは複数の実施形態による、マルチコンポーネントアプリケーションのメッセージキュー管理の例示的な技法を表現したものを示す。具体的には、図２は、メッセージキューマネージャー１１１を含む、またはそうでない場合はメッセージキューマネージャー１１１を利用する図１の例示的なコンピューティングデバイス１０２などの、適切に構成されたコンピューティングデバイスによって実行することができるメッセージキューに関連付けられた異なる状態間の移行を表す。
【００１５】
[0019]状態２００において、複数のコンポーネント２０４（１）〜２０４（３）を有するマルチコンポーネントアプリケーション２０２のインスタンスは最初に、共有入力メッセージキュー２０６を使用するように構成される。この状態では、それぞれの例示的なコンポーネント２０４（１）〜２０４（３）のメッセージがシーケンス処理され、共有入力メッセージキュー２０６を介して処理される。
【００１６】
[0020]本明細書で使用される場合、マルチコンポーネントアプリケーションは、アプリケーションのインターフェイスの別個の異なる部分または「コンポーネント」を介して、複数のリソース（例えば、Ｗｅｂページ、ドキュメント、ファイル、スクリプト、メディアコンテンツなど）とのユーザー対話を可能にするアプリケーションである。この文脈では、コンポーネントという用語は、マルチコンポーネントアプリケーションの異なる、別々に誘導可能なおよび／または動作可能な部分を指すことができる。コンポーネントは、親アプリケーションの共通のメインウィンドウまたはフレーム内に含まれる別個のサブアプリケーションとすることができる。したがって、複数のコンポーネントを利用するインターフェイスは、アプリケーションの単一のウィンドウ内に含まれ得る。コンポーネントは同じアプリケーションの部分であってもよいが、１つのコンポーネントを介したユーザー対話はその他のコンポーネントを介したユーザー対話とは無関係であることができるという点で、コンポーネントは半自律とみなされ得る。異なるコンポーネントは、選択的には、共通の表示部分を介して二者択一的におよび／またはユーザーインターフェイスの様々な異なる領域（明らかに異なる領域、different distinct area）において同時に示され得る。共有キューを用いて、異なる複数の半自律コンポーネントを同期させ、調和させることができ、その結果、これらの半自律コンポーネントは単一のコンポーネントとして挙動する。
【００１７】
[0021]本明細書に記載されるメッセージキュー管理を用いることができるマルチコンポーネントアプリケーションの様々な例が企図される。上述したように、複数のタブを有効にするように構成されたタブ付きＷｅｂブラウザーは、マルチコンポーネントアプリケーションの一例である。タブを文書処理アプリケーション、電子メールクライアント、またはマルチメディアアプリケーション用などの他の文脈において使用することもできる。別の例では、オフィス生産性スイートなどのアプリケーションは、テキストドキュメント、Ｗｅｂページ、スプレッドシート、グラフなどを含む複数のリソースとの対話を容易にするための異なるタブ、セクション、列または他のコンポーネントを有するように構成され得る。
【００１８】
[0022]メッセージキューマネージャー１１１（図１）が、コンポーネントが応答しなくなったことを検出したとき、メッセージキューマネージャー１１１は、応答しないコンポーネントを共有入力メッセージキュー２０６からデタッチさせることによって応答することができる。例えば、何らかの理由で、コンポーネント２０４（１）がハングした、またはそうでない場合は応答しなくなったと仮定する。メッセージキューマネージャー１１１は、コンポーネント２０４（１）が応答しないことを任意の適切な方法で検出することができ、その例は上記および以下で説明される。検出に応答して、メッセージキューマネージャー１１１は、共有入力メッセージキューからコンポーネント２０４（１）をデタッチするように動作することができる。
【００１９】
[0023]具体的には、図２におけるデタッチされた状態２０８によって表されるように、応答しないコンポーネント２０４（１）をデタッチすることができる。図示のように、デタッチされたメッセージキュー２１０を応答しないコンポーネント２０４（１）に関連付けることができ、デタッチされたメッセージキュー２１０を用いて、コンポーネント２０４（１）のメッセージングを管理することができる。コンポーネント２０４（２）およびコンポーネント２０４（３）は、共有入力メッセージキュー２０６の使用を継続することができる。したがって、応答しないコンポーネントのメッセージは、デタッチされたメッセージキュー２１０によって処理され得る。共有入力メッセージキュー２０６は、他の応答するコンポーネントのメッセージの処理を継続することができ、その結果、アプリケーション全体が個々のコンポーネントによって引き起こされる中断によって応答しなくなることはない。少なくともいくつかの実施形態では、メッセージキューマネージャー１１１は、デタッチされたメッセージキュー２１０をオンデマンドで作成し、そのキューをあるコンポーネントによる専用使用に割り当てるように構成され得る。これは、コンポーネントが応答しないことを検出したことに応答して起こり得る。次いで、コンポーネントのメッセージを新たに作成されたキューに移行させることができる。加えてまたはあるいは、メッセージキューマネージャー１１１は、既存のデタッチされたメッセージキューを利用して、必要に応じて応答しないコンポーネントを処理するように構成され得る。コンポーネントが応答しなくなった場合、既存のデタッチされたメッセージキューを異なるコンポーネントに対して繰り返し使用することができる。この場合、メッセージキューマネージャー１１１は、各使用の前に既存のデタッチされたメッセージキューを初期化するおよび／または各使用の後にキューをクリアして、次回使用するためのキューを準備することができる。
【００２０】
[0024]メッセージキューマネージャー１１１が、デタッチされたコンポーネントに対する応答性が復旧したことを検出したとき、メッセージキューマネージャー１１１は、応答しないコンポーネントを共有入力メッセージキュー２０６に再アタッチさせることによって応答することができる。例えば、コンポーネント２０４（１）が上記のように一定期間デタッチされた後、再び応答するようになったと仮定する。メッセージキューマネージャー１１１は、コンポーネント２０４（１）が再び応答することを任意の適切な方法で検出することができ、その例は上記および以下で説明される。検出に応答して、メッセージキューマネージャー１１１は、コンポーネント２０４（１）を再アタッチするように動作することができる。
【００２１】
[0025]具体的には、図２における再アタッチされた状態２１２によって表されるように、応答しないコンポーネント２０４（１）を再アタッチすることができる。図示のように、別個のコンポーネントメッセージキュー２１０が閉じられ、またはそうでない場合は削除される。再アタッチされた状態２１２では、コンポーネント２０４（１）のメッセージングは再び共有入力メッセージキュー２０６によって処理されている。これは、共有入力メッセージキュー２０６にコンポーネント２０４（１）のメッセージを戻してコンポーネント２０４（２）およびコンポーネント２０４（３）のメッセージとマージすることを含み得る。共有入力メッセージキューからのコンポーネントをデタッチし、再アタッチするために用いることができる技法についてのさらなる詳細は、以下で「例示的な方法」と題されたセクションで見出すことができる。
【００２２】
[0026]メッセージキュー管理の例について説明してきたが、次に、１つまたは複数の実施形態による、メッセージキューマネージャー１１１を利用することができる例示的なＷｅｂブラウザーの説明について検討する。
例示的なＷｅｂブラウザー
インターフェイス
[0027]図３は、１つまたは複数の実施形態による例示的なＷｅｂブラウザーの全体を３００で示す。図示のＷｅｂブラウザーは、コンポーネントの管理を容易にするために複数のコンポーネント（例えば、タブ）およびメッセージキューマネージャー１１１（図１）を利用することができるアプリケーションの一例にすぎない。Ｗｅｂブラウザー３００は、Ｗｅｂブラウザーユーザーインターフェイス３０２を含み、Ｗｅｂブラウザーユーザーインターフェイス３０２は、戻るナビゲーションボタンおよび進むナビゲーションボタン、アドレスバー、検索バー、ならびに複数のタブをサポートすることができるタブバンドなどの典型的な手段（instrumentality）を含む。例えば、複数のタブは、図３に示されるタブバンドに現れる。これらのタブはコンポーネント２０４（１）〜２０４（３）と称されて、図２に関連して説明されたコンポーネントが図３の例示的なタブなどのタブに対応することができることを示す。Ｗｅｂブラウザーユーザーインターフェイスは、コンテンツを表示することができる（クロスハッチングによって示された）コンテンツレンダリング領域３０４も含む。加えて、Ｗｅｂブラウザーユーザーインターフェイス３０２は、通知バー３０６を含む。１つまたは複数の実施形態では、通知バーは、ユーザーが自分のブラウジングアクティビティへの集中を維持するのを助けるとともに、提案の形で通知を行うように設計される。通知バーを介して提示される通知は、メッセージキュー管理の様々な技法を有効にするように出力された、またはそうでない場合はメッセージキューマネージャー１１１の動作を介して引き起こされた、応答しないタブに関連する通知を含むことができる。
【００２３】
[0028]少なくともいくつかの実施形態では、通知バーは非モーダルであり、ユーザーの注意散漫を低減するように選択されたブラウジング視野内の場所で提示される。例えば、図示され、説明された実施形態では、通知バーは、Ｗｅｂブラウザーのユーザーインターフェイスの下部でまたはその近く（ここでは、コンテンツレンダリング領域３０４の下部付近またはコンテンツレンダリング領域３０４の下）に提示される。通知バーは、目立つものでありながら無視できるものであるように設計され、したがって、ユーザーは、モーダルダイアログによって気を散らされることなく、コンテンツレンダリング領域３０４で自分のブラウジング作業を継続することができる。さらに、少なくともいくつかの実施形態では、通知バーは、Ｗｅｂブラウザーによって表示されたコンテンツをオーバーレイする方法で提示される。したがって、通知バーの場所は事実上、通知バーに現れる可能性がある特定の通知よりもコンテンツレンダリング領域３０４内で表示されるコンテンツを優先させる。
通知
[0029]応答しないコンポーネントについての通知は、任意の適切な方法で構成され得る。適切な通知は、ポップアップダイアログボックス、Ｗｅｂブラウザー３００または他のアプリケーションによって表示されるｈｔｍｌページ、タブ付きユーザーインターフェイスのタブ警告、通知バー３０６を介して提示される通知、および／またはこれらの組合せを含むことができる。通知は、直接および／またはその通知を介してアクセス可能な別個の回復ダイアログを介して回復を実行するための１つまたは複数のユーザー選択可能な手段を含むように構成され得る。回復ダイアログは、クラッシュについての追加の情報および／または様々な利用可能な回復オプションを提供するように構成され得る。
【００２４】
[0030]例えば、図３における通知バー３０６は、応答しないコンポーネントについての例示的な通知を表示するものとして図示される。具体的には、メッセージキューマネージャー１１１は、例示的なブラウザー３００のタブが応答しないことを検出したことに応答して、通知を提示させることができる。通知は、対応するタブにおいて現れるように構成され得る。したがって、バックグラウンドにおけるタブに対応する通知は、ユーザーがバックグラウンドタブをアクティブなタブとして選択するまで、現れないことがある。この手法は、ユーザーのブラウジングまたはアクティブなタブとの他の対話の中断を制限することができる。
【００２５】
[0031]図示された例では、通知は、「タブが応答していません（Ｔａｂ  ｉｓ  ｎｏｔ  ｒｅｓｐｏｎｄｉｎｇ）」と示す情報部分３０８を含む。また、この情報部分は、応答しないコンポーネントに関連付けられたページ名、ＵＲＬ、ドメイン名、および／または他の識別子を特定して、クラッシュの原因を特定することができる。例えば、メッセージキューマネージャーは、Ｗｅｂリソースのドメイン文字列を構文解析して、ドメイン名を判定し、「Ｆｏｏ．ｃｏｍが応答していません（Ｆｏｏ．ｃｏｍ  ｉｓ  ｎｏｔ  ｒｅｓｐｏｎｄｉｎｇ）」と示すものなど、ドメイン名を示すための、応答しないタブについての通知を構成することができる。任意選択で、通知は、全体が３１０で示された図示のボタンなどの１つまたは複数のユーザー選択可能な手段を含むこともでき、これらのボタンは、応答しないタブまたは他のコンポーネントの回復のための様々なオプションを提供するように構成される。例えば、図３の例示的なボタンは、「タブを回復する（Ｒｅｃｏｖｅｒ  Ｔａｂ）」ボタンを含み、このボタンは、選択されたときに、通知を介して直接アクションを実行して、タブを回復するように構成され得る。例示的なアクションとしては、ページを再度読み込むこと、タブに関連して実行中のスクリプトを停止すること、ブラウジング履歴における前のリソースまたはＵＲＬにロールバックすることなどを挙げることができる。加えてまたは代替として、「タブを回復する」ボタンは別のダイアログまたはインターフェイスを示すことができ、その別のダイアログまたはインターフェイスを介して、ユーザーは応答しないタブについてのより詳細な情報を取得するおよび／または様々な回復オプションを選択することができる。例示的なボタンは、ユーザーが応答しないタブを終了するよう選択することができる「タブを閉じる（Ｃｌｏｓｅ  Ｔａｂ）」ボタンをさらに含む。
回復オプション
[0032]上記に述べたように、応答しないタブまたは他のコンポーネントを回復するための様々なオプションは、通知に含まれるユーザー選択可能な手段を介しておよび／または様々な選択可能な回復オプションを有する回復ダイアログを介して利用可能とすることができる。回復オプションは、メニュー項目オプション、ツールバー、キーボードショートカット、ボタンなどの典型的な手段を介して利用可能とすることができる。
【００２６】
[0033]次に、応答しないタブが検出されたときに利用可能とすることができる、いくつかの例示的な回復オプションについての詳細について検討する。タブを閉じるためのオプションが提供され得る。したがって、ユーザーは単に、応答しないタブとの対話を停止するよう選択することができる。さらに、タブを復旧させるためのオプションが提供され得る。復旧オプションを選択することで、Ｗｅｂブラウザーに、選択されたリソース（例えば、ページ、ドキュメント、Ｗｅｂサイトなど）を再度読み込むおよび／または選択されたリソースに再度移動することを試行させることができる。
【００２７】
[0034]別のオプションにより、ユーザーは、応答しないコンポーネントに関連付けられたリソース間でのスワップを実行することができる。スワップは事実上、応答しないコンポーネントを隠しおよび／または強制終了し、新しいリソースを有する新しいコンポーネントを作成して、応答しないコンポーネントと置き換える。スワップは、バックグラウンドでユーザーに対して透過的に実行され得る。ユーザーの視点からは、コンポーネントを介して新しいリソースが選択され、提示されたかのように見える。
【００２８】
[0035]例えば、選択されたときに、応答しないタブを別のＷｅｂページに自動的に移動するボタンまたは他の手段が提供され得る。その他のＷｅｂページは、事前に指定されたデフォルトページまたはホームページとすることができる。加えてまたは代替として、ユーザーは、入力することによってスワップを開始するか、または、お気に入りリストからリンクを選択する、Ｗｅｂブラウザーのアドレスバーに新しいアドレスをタイプする、「戻る」ボタンまたは「ホーム」ボタンなどの移動ボタンを選択することによってなど、様々な方法で別のリソースを選択することができる。応答しないタブについて別のリソースの選択が行われたとき、メッセージキューマネージャー１１１はこれを検出し、スワップを自動的に開始することができ、スワップは応答しないタブを隠しまたは強制終了し、新たに選択されたリソースに向けられた新しいタブを作成し、応答しないタブを新しいタブにシームレスに置き換える。
【００２９】
[0036]加えて、ユーザーが応答しないタブの原因であり得るスクリプトの実行を停止することができるように、スクリプト回復オプションが提供され得る。例えば、メッセージキューマネージャー１１１が応答しないタブを検出したとき、チェックを行って、そのタブに関連付けられたスクリプトが実行中であるかどうかを確認することができる。スクリプトが特定された場合、メッセージキューマネージャー１１１は、上記および以下で説明されるように、通知を使用してユーザーに通知することができる。通知は、選択されたときに、スクリプトに実行を停止させるボタンまたは他のユーザー選択可能な手段を含むこともできる。スクリプトが原因でタブが応答しない場合、説明された方法でできるだけ早くスクリプトを停止することで、タブに対する応答性を迅速に復旧させ、ユーザーのブラウジングの中断を制限することができる。
【００３０】
[0037]また、「自己回復」オプションを実施して、メッセージキューマネージャー１１１がいかなるユーザー介入もなしに回復を自動的に実行することもできることに留意されたい。このオプションでは、メッセージキューマネージャー１１１は、応答しないコンポーネントが再び応答するようになったことを判定することができる。この判定は、回復ボタンのユーザー選択または回復ダイアログとの対話とは無関係になど、ユーザーのアクションとは無関係に行われ得る。メッセージキューマネージャー１１１が応答性が復旧したと判定すると、メッセージキューマネージャー１１１は自動的に動作して、コンポーネントをキューに再アタッチし、図３のコンテンツレンダリング領域３０４などにおける表示部分でコンポーネントに対応するデータを表示し、適切な場合、対応する通知を解除することができる。「自己回復」手法を実施して、自力で回復する（これはよくあることである）コンポーネントについての通知および／または回復オプションでユーザーを混乱させることを回避することができる。
【００３１】
[0038]１つまたは複数の実施形態による、複数のタブおよび通知バーを利用する例示的なＷｅｂブラウザーについて検討してきたが、次に、例示的な方法の文脈において説明されるメッセージキュー管理についてのいくつかのさらなる詳細について検討する。
例示的な方法
[0039]図４は、１つまたは複数の実施形態による方法のステップについて説明する流れ図である。この方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せに関連して実施され得る。少なくともいくつかの実施形態では、この方法は、メッセージキューマネージャー１１１を含む、またはそうでない場合はメッセージキューマネージャー１１１を利用する図１の例示的なコンピューティングデバイス１０２などの、コンピューティングデバイスを構成する適合性によって実施され得る。
【００３２】
[0040]初期状態では、タブ付きＷｅｂブラウザーなどのマルチコンポーネントアプリケーションは、共有入力メッセージキューを利用して、それぞれのコンポーネントのメッセージを処理することができることを思い出されたい。具体的な例では、Ｗｅｂブラウザーは複数のタブを有することができ、複数のタブは独立して動作し、複数のタブを用いて、Ｗｅｂサーバーからの異なるリソースにアクセスすることができる。したがって、それぞれのタブを移動して、異なるリソースまたはＵＲＬを示し、対応するコンテンツを提示することができる。初期状態では、Ｗｅｂブラウザーは、共有入力メッセージキューを使用して、それぞれのタブを管理するように構成され得る。例えば、それぞれの新しいタブは、デフォルトで、共有キューに割り当てられ得る。
【００３３】
[0041]メッセージキューマネージャー１１１を実施して、タブが応答状態を維持していることを確認するためにタブを監視することができる。具体的には、ステップ４００は、例示的なＷｅｂブラウザーなどに対するアプリケーションのタブの応答性を監視する。監視に基づいて、ステップ４０２は、タブが応答しなくなるかどうかを判定する。
【００３４】
[0042]任意の適切な方法でタブの監視を行うことができる。タブの監視を行うことができる１つの方法は、定期的な「ハートビート」メッセージをタブに送信することによるものである。言い換えれば、メッセージキューマネージャー１１１は、ハートビートメッセージを用いてそれぞれのタブにポーリングするように構成され得る。ハートビートメッセージは、タブに応答メッセージを送信させる基本要求メッセージとして構成され得る。したがって、メッセージキューマネージャー１１１は、タブが応答メッセージを送信するかどうかを監視することができる。応答するタブはメッセージに応答し、メッセージキューマネージャー１１１はタブが応答すると結論付けることができる。しかし、タブがハートビートメッセージに応答しない場合、メッセージキューマネージャー１１１はタブが応答しないと結論付けることができる。
【００３５】
[0043]別の例示的な監視の技法では、リソースは、メッセージをメッセージキューマネージャー１１１にプッシュして、リソースが応答することをメッセージキューマネージャー１１１に通知するように構成され得る。この手法は、適切ではあるが、プッシュされたメッセージを有効にするコードを用いてリソースを再構成することを必要とすることがある。したがって、いずれも実行可能な手法ではあるが、説明したようにハートビートメッセージを使用してタブをポーリングすることは、プッシュされたメッセージの手法に比べてより効率的で、より安価で、より単純であり得る。ステップ４０２によって、どのタブも応答しないものとして検出されなかった場合、ステップ４００で実行される監視を継続することができる。図に明示的に示されていなくても、応答しないタブが存在する場合でもステップ４００の監視が継続することを理解されたい。
【００３６】
[0044]応答しないタブが検出されたとき、ステップ４０４はそのタブをデタッチすることができる。具体的には、Ｗｅｂブラウザーまたは他のアプリケーションによって使用される共有入力メッセージキューから応答しないタブをデタッチすることができる。デタッチメントを実行するために、ステップ４０６はデタッチされたキューを開始する。例えば、メッセージキューマネージャー１１１は、キューを作成して、またはそうでない場合はキューを取得して、任意の適切な方法で応答しないタブのメッセージを処理することができる。これは、新しいキューをオンデマンドで作成することおよび／または応答しないタブが使用するための既存のキューを準備することを必要とすることがある。初期化は、キューと応答しないタブとの間の関連性を生み出す。
【００３７】
[0045]適切なデタッチされたキューが初期化されると、ステップ４０８は、タブのメッセージを共有キューからデタッチされたキューに移行する。これは、キュー間でメッセージを移動することおよびメッセージが正しくシーケンス処理されることを確認することを含むことができる。例えば、メッセージを、タイムスタンプおよび／または入力キューにおいてメッセージをシーケンス処理するために使用することができる優先度などのシーケンス情報と関連付けることができる。メッセージは、メッセージを適切なタブに向けるために使用することができるメッセージ番号、ソース名、および／またはプロセスＩＤなどのターゲット情報を含むこともできる。
【００３８】
[0046]特定の応答しないタブに関連付けられたメッセージの移行を実行するために、メッセージキューマネージャー１１１は、ターゲット情報を検査して、デタッチされたキューに移動されるべきメッセージを特定し、選択することができる。移動されるメッセージに関連付けられたシーケンス情報を用いて、メッセージシーケンスを保持するおよび／または適切な場合、デタッチされたキューにおいてメッセージを並べ替えることができる。これで、タブをデタッチされたものとみなすことができ、デタッチされたキューを使用して、デタッチされたタブのメッセージ処理を実行することができる。同時に、共有入力メッセージキューの使用を継続して、その他の「応答する」タブのメッセージを処理することができる。必要に応じて、シーケンス情報を使用して、共有入力メッセージに保持されるメッセージを並べ替えることもできる。
【００３９】
[0047]タブがデタッチされると、ステップ４１０は、デタッチされたタブを監視する。監視に基づいて、ステップ４１２は、デタッチされたタブが再び応答するようになったときを判定する。任意の適切な機構を用いて、デタッチされたタブを監視することができる。例えば、上記で説明された共有キューのタブの監視に匹敵した方法で、デタッチされたタブの監視を行うことができる。少なくともいくつかの実施形態では、メッセージキューマネージャー１１１は、ハートビートメッセージをデタッチされたタブに送信し、ハートビートメッセージに基づいて、デタッチされたタブが応答するかどうかを判定するように動作することができる。
【００４０】
[0048]デタッチされたタブが応答するようになったとき、ステップ４１４はそのタブを再アタッチする。例えば、メッセージキューマネージャー１１１がデタッチされたタブからハートビートメッセージ応答を受信した、またはそうでない場合はタブが応答すると判定した場合、メッセージキューマネージャー１１１は、タブを共有キューに再アタッチさせることができる。再アタッチメントを実行するために、ステップ４１６はデタッチされたキューから共有キューにタブのメッセージをマージする。例えば、メッセージキューマネージャー１１１は、共有キューにおけるメッセージとともに、適切なシーケンスで、メッセージをデタッチされたキューから共有キューに戻すことができる。メッセージが正しくシーケンス処理されるように、先に述べたシーケンス情報を用いて、メッセージをまとめることができる。例えば、メッセージが共有キューでマージされるときに、タイムスタンプおよび／またはメッセージに関連付けられた優先度を使用して、メッセージを並べ替えることができる。
【００４１】
[0049]ステップ４１６でメッセージがマージされると、ステップ４１８はデタッチされたキューをクリアする。メッセージキューマネージャー１１１がキューを繰り返し使用するように構成されている場合、このステップを実行して、別の応答しないタブとともに使用するためのキューを準備することができる。メッセージキューマネージャー１１１が応答しないタブのためのキューをオンデマンドで作成する実施形態では、このステップは、デタッチされたキューを閉じること、デタッチされたキューを削除すること、またはそうでない場合はデタッチされたキューをシャットダウンすることを必要とすることがある。次いで、必要に応じて、異なる応答しないタブとともに使用するための別のデタッチされたキューがオンデマンドで作成され得る。
【００４２】
[0050]ここで、タブを共有キューに再アタッチされたものとみなすことができ、再アタッチされたタブならびに他のタブのメッセージ処理が再び共有キューを介して行われる。
[0051]１つまたは複数の実施形態による例示的な方法について説明してきたが、次に、１つまたは複数の実施形態による、メッセージキュー管理の様々な技術を実施するために用いることができる例示的なシステムについて検討する。
例示的なシステム
[0052]図５は、上記で説明された様々な実施形態を実施するために使用することができる例示的なコンピューティングデバイス５００を示す。コンピューティングデバイス５００は、例えば、図１のコンピューティングデバイス１０２またはＷｅｂサーバー１１４とすることができる。
【００４３】
[0053]コンピューティングデバイス５００は、１つまたは複数のプロセッサーもしくは処理ユニット５０２、１つまたは複数のメモリーおよび／もしくは記憶コンポーネント５０４、１つまたは複数の入力／出力（Ｉ／Ｏ）デバイス５０６、ならびに様々なコンポーネントおよびデバイスが互いに通信することを可能にするバス５０８を含む。バス５０８は、様々なバスアーキテクチャのいずれかを使用するメモリーバスまたはメモリーコントローラー、周辺バス、アクセラレーテッドグラフィックスポート、およびプロセッサーまたはローカルバスを含む、いくつかのタイプのバス構造のいずれかの１つまたは複数を表す。バス５０８は、有線バスおよび／または無線バスを含むことができる。
【００４４】
[0054]メモリー／記憶コンポーネント５０４は、１つまたは複数のコンピューター記憶媒体を表す。コンポーネント５０４は、（ランダムアクセスメモリー（ＲＡＭ）などの）揮発性メディアおよび／または（読取り専用メモリー（ＲＯＭ）、フラッシュメモリー、光ディスク、磁気ディスクなどの）不揮発性メディアを含むことができる。コンポーネント５０４は、固定メディア（例えば、ＲＡＭ、ＲＯＭ、固定ハードドライブなど）ならびにリムーバブルメディア（例えば、フラッシュメモリードライブ、リムーバブルハードドライブ、光ディスクなど）を含むことができる。
【００４５】
[0055]１つまたは複数の入力／出力デバイス５０６により、ユーザーはコマンドおよび情報をコンピューティングデバイス５００に入力することができ、また、情報をユーザーおよび／または他のコンポーネントもしくはデバイスに提示することができる。入力デバイスの例としては、キーボード、カーソル制御デバイス（例えば、マウス）、マイクロホン、スキャナーなどが挙げられる。出力デバイスの例としては、表示デバイス（例えば、モニターまたはプロジェクター）、スピーカー、プリンター、ネットワークカードなどが挙げられる。
【００４６】
[0056]ソフトウェアまたはプログラムモジュールの概括的な文脈において、様々な技法が本明細書に記載され得る。概して、ソフトウェアは、特定のタスクを実行するまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。これらのモジュールおよび技法の実施は、何らかの形態のコンピューター可読メディアに記憶されるか、または伝送され得る。コンピューター可読メディアは、コンピューティングデバイスによってアクセスすることができる、任意の利用可能な１つまたは複数のメディアとすることができる。例として限定することなく、コンピューター可読メディアは、「コンピューター可読記憶媒体」を備え得る。
【００４７】
[0057]「コンピューター可読記憶媒体」は、コンピューター可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するために任意の方法または技術で実施される揮発性メディアおよび不揮発性メディア、リムーバブルメディアおよび非リムーバブルメディアを含む。コンピューター可読記憶媒体としては、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリーもしくは他のメモリー技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、コンピューターによってアクセスすることができる任意の他のメディアが挙げられるが、これらに限定されない。
結論
[0058]様々な実施形態は、マルチコンポーネントアプリケーションが応答しなくなる（例えば、「ロックアップ」、「ハング」、「クラッシュ」など）可能性を低減し、マルチコンポーネントアプリケーションが応答しなくなった場合に個々のコンポーネントの回復オプションを有効にするように設計された、メッセージキュー管理の技法を提供する。少なくともいくつかの実施形態では、メッセージキューマネージャーを実施して、アプリケーションインターフェイスのコンポーネントが応答しなくなったときを検出し、共有メッセージキューからそのコンポーネントをデタッチすることができる。共有メッセージキューは、他の応答するコンポーネントのメッセージの処理を継続することができる一方、応答しないコンポーネントのメッセージングは、別個のキューを介して管理される。また、メッセージキューマネージャーは、応答しないコンポーネントについてユーザーに通知し、応答しないコンポーネントの回復を容易にするためのオプションをユーザーに提供することができる。さらに、少なくともいくつかの実施形態では、メッセージキューマネージャーは、デタッチされたコンポーネントを監視し、デタッチされたコンポーネントが再び応答するようになったときに、デタッチされたコンポーネントを再アタッチすることができる。
【００４８】
[0059]構造的機能および／または方法的行為に特有の文言で主題について説明してきたが、添付の特許請求の範囲で定義される主題は必ずしも上記で説明された特定の機能または行為に限定されないことを理解されたい。むしろ、上記で説明された特定の機能および行為は、特許請求の範囲を実施する例示的な形態として開示される。
【図１】
0005902173.tif 000002
【図２】
0005902173.tif 000003
【図３】
0005902173.tif 000004
【図４】
0005902173.tif 000005
【図５】
0005902173.tif 000006