(57)【要約】１つ以上の実施形態において、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを、ウェブ・コンテンツに対するヒット・テストに利用する。ヒット・テストに別のスレッドを使用することによって、ターゲットを素早く確認することを可能にすることができる。パンニングおよびピンチ・ズーミングのようなタッチ操作のために使用することができる操作スレッドのような、別のスレッドによってしかるべき応答が処理される場合、主スレッドにおいてブロックすることなく操作を行うことができる。この結果、種々のシナリオにわたってロー・エンド・ハードウェアにおいても常に素早い応答時間が得られる。【選択図】図１
2016531335.tif 000002
【特許請求の範囲】
【請求項１】
コンピューター実装方法であって、
独立ヒット・テスト・スレッドにおいて、第１入力に関連する第１入力メッセージを受けるステップと、
前記独立ヒット・テスト・スレッドを使用して、前記第１入力メッセージに関連する前記第１入力が複数の解釈を有すると決定するステップと、
前記独立ヒット・テスト・スレッドを使用して、前記複数の解釈の内少なくとも１つの解釈に関連する少なくとも１つの応答アクションを初期化するステップと、
前記独立ヒット・テスト・スレッドを使用して、第２入力が受け取られたか否か判定するステップと、
前記第２入力が受け取られたと判定したことに応答して、前記独立ヒット・テスト・スレッドを使用して、少なくとも部分的に前記第１入力および第２入力に基づいて、前記複数の解釈から、前記第１入力の明確な解釈を決定するステップと、
前記独立ヒット・テスト・スレッドを使用して、前記明確な解釈に関連する応答アクションを呼び出すステップと、
を含む、コンピューター実装方法。
【請求項２】
請求項１記載のコンピューター実装方法であって、更に、
前記独立ヒット・テスト・スレッドを使用して、前記少なくとも１つの応答アクションを終了するステップを含む、コンピューター実装方法。
【請求項３】
請求項１記載のコンピューター実装方法において、前記少なくとも１つの応答アクションを初期化するステップが、更に、前記少なくとも１つの応答アクションの部分的初期化を含む、コンピューター実装方法。
【請求項４】
請求項３記載のコンピューター実装方法であって、更に、前記少なくとも１つの応答アクションの部分的初期化を完了するステップを含む、コンピューター実装方法。
【請求項５】
請求項４記載のコンピューター実装方法において、前記少なくとも１つの応答アクションの部分的初期化を完了するステップが、前記第２入力が予め定められた時間枠の外側で受け取られたと判定したことに応答する、コンピューター実装方法。
【請求項６】
請求項３記載のコンピューター実装方法において、前記部分的初期化が、１つ以上のカスケード・スタイル・シート（ＣＳＳ）ルールを、前記第１入力に関連する１つ以上のエレメントに適用するステップを含む、コンピューター実装方法。
【請求項７】
請求項１記載のコンピューター実装方法であって、更に、
前記独立ヒット・テスト・スレッドを使用して、前記第１入力に関連するズーム比を決定するステップを含む、コンピューター実装方法。
【請求項８】
プロセッサー実行可能命令を含む１つ以上のコンピューター読み取り可能記憶メモリーであって、前記命令が、少なくとも１つのプロセッサーによる実行に応答して、
第１入力に関連する第１入力メッセージを受け、
前記第１入力メッセージに関連する前記第１入力が複数の解釈を有すると決定し、    
前記複数の解釈の内少なくとも１つの解釈に関連する少なくとも１つの応答アクションを部分的に初期化し、
少なくとも第２入力が、予め定められた時間枠内に受け取られたか否か判定し、
前記少なくとも第２入力が、前記予め定められた時間枠内に受け取られなかったと決定したことに応答して、前記部分的に初期化した少なくとも１つの応答アクションの内１つを完了し、
前記少なくとも第２入力が、前記予め定められた時間枠内に受け取られたと決定したことに応答して、少なくとも部分的に、前記第１入力および前記少なくとも第２入力に基づいて、前記第１入力の明確な解釈に関連する応答アクションを呼び出す、
ように構成される、コンピューター読み取り可能記憶メモリー。  
【請求項９】
請求項８記載のコンピューター読み取り可能記憶メモリーにおいて、前記第１入力および前記少なくとも第２入力が、タッチパッドを介して受け取られる入力に関連する、コンピューター読み取り可能記憶メモリー。
【請求項１０】
請求項９記載のコンピューター読み取り可能記憶メモリーにおいて、前記プロセッサー実行可能命令が、更に、
前記タッチパッドを介して受け取られた入力に関連する多重ジェスチャー入力を識別し、
前記多重ジェスチャー入力を識別したことに応答して、ジェスチャー・モードに移り、前記ジェスチャー・モードが、独立ヒット・テスト・スレッドを使用して、前記タッチパッドを介して受け取られた入力の独立ヒット・テストを可能にするように構成され、
マウス・モード入力イベントを識別したことに応答して、前記ジェスチャー・モードからマウス・モードに移り、前記マウス・モードおよび前記ジェスチャー・モードが、前記タッチパッドを介して受け取られた入力を、異なって解釈する、
ように構成される、コンピューター読み取り可能記憶メモリー。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  ヒット・テスト(hit testing)とは、ウェブページのようなウェブ・コンテンツ内における所与の１組の座標に位置付けられたコンテンツを判定するプロセスを指す。ヒット・テストに対する共通のシナリオは、ユーザー入力、例えば、タッチ入力またはマウス・クリック入力を受けることを伴うシナリオに関連する。具体的には、ユーザー入力に対する正しい応答を判定するためには、どのコンテンツがユーザーの相互作用の主題(subject)であるのか発見するためにヒット・テストを実行する。ヒット・テストを遅らせるものはいずれも、今度はそれがシステムの応答を遅らせ、ユーザーの体験を劣化させる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
[0002]  多くのシステムにおいて、ヒット・テストは、主スレッド、例えば、ユーザー・インターフェース・スレッドにおいて実行される。しかしながら、ユーザー・インターフェース・スレッドは、他の作業を実行していて使用中であるという可能性が頻繁にある。この他の作業は、JavaScript実行、レイアウト・タスク、レンダリング動作等を含むことができる。その結果、主スレッドにおいて行われるヒット・テストは、長時間または不定時間にわたって妨げられるおそれがある。
【課題を解決するための手段】
【０００３】
[0003]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を識別することを意図するのではない。
【０００４】
[0004]  １つ以上の実施形態において、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを、ウェブ・コンテンツに対するヒット・テストに利用する。ヒット・テストに別のスレッドを使用することによって、ターゲットを素早く確認することを可能にすることができる。パンニングおよびピンチ・ズーミングのようなタッチ操作のために使用することができる操作スレッドのような、別のスレッドによってしかるべき応答が処理される場合、主スレッドにおいて妨げることなく操作を行うことができる。この結果、種々のシナリオにわたってロー・エンド・ハードウェアにおいても常に素早い応答時間が得られる。
【０００５】
[0005]  少なくともある実施形態では、ウェブ開発者が彼らのウェブページ上においてタッチ行動のような特定のデフォルト行動を要求するためのメカニズムを提供する。少なくともある実現例では、パンニング、ピンチ・ズーム、およびダブルタップ・ズーム操作というような操作をイネーブルまたはディスエーブルするために、カスケード・スタイル・シート（ＣＳＳ）ルールを利用する。このメカニズムは、今後追加される追加のデフォルト行動に対応するように拡張可能にすることができる。種々の実施形態において、行動は前もって宣言されるので、したがって命令モード(imperative model)を採用するソリューションとは異なる。この手法の宣言的性質は、独立したヒット・テストを使用して正しい応答を判断するときに、主スレッドからの完全な独立の達成を可能にする。
【０００６】
[0006]  ある実施形態は、独立ヒット・テスト・スレッド内において追加の処理および／または論理処理を実行する能力を設ける。場合によっては、独立ヒット・テスト・スレッドは、１つ以上の入力シナリオ間で識別するように構成することができる。あるいはまたは加えて、入力シナリオに対する１つ以上の応答アクションを少なくとも部分的に初期化することができる。１つ以上の入力シナリオから別個の入力シナリオを判定するとき、関連する応答アクションを開始することができ、および／または実行のために別のスレッドに渡すことができる。尚、応答アクションを終了する通知を、部分的に初期化された応答アクションを管理するスレッドに送ることができる場合もある。
【図面の簡単な説明】
【０００７】
[0007]  詳細な説明は添付図面を参照する。図では、参照番号の最も左側にある桁（１つまたは複数）は、その参照番号が最初に現れる図を識別する。説明および図において異なる場合に同じ参照符号を使用するときは、同様のまたは同一の項目を示すことができる。
【図１】図１は、本明細書において説明する種々の実施形態を実行するように動作可能な実現例(example implementation)における環境の図である。
【図２】図２は、１つ以上の実施形態によるシーケンス図である。
【図３】図３は、１つ以上の実施形態による方法におけるステップを説明する流れ図である。
【図３ａ】図３ａは、１つ以上の実施形態による方法におけるステップを説明する流れ図である。
【図３ｂ】図３ｂは、１つ以上の実施形態による方法におけるステップを説明する流れ図である。
【図４】図４は、１つ以上の実施形態によるシーケンス図である。
【図５】図５は、１つ以上の実施形態によるシーケンス図である。
【図６】図６は、１つ以上の実施形態による方法におけるステップを説明する流れ図である。
【図７】図７は、図１を参照して説明したような計算デバイスを含むシステム例を示す。
【図８】図８は、本明細書において説明したような任意のタイプの計算デバイスとして実現することができるデバイス例の種々のコンポーネントを示す。
【発明を実施するための形態】
【０００８】
全体像
[0018]  １つ以上の実施形態において、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを、ウェブ・コンテンツに対するヒット・テストに利用する。これを本明細書では「独立ヒット・テスト」と呼ぶ。ヒット・テストのために別のスレッドを使用することにより、ターゲットを素早く確認することを可能にすることができる。パンニングおよびピンチ・ズーミングのようなタッチ操作のために使用することができる操作スレッドのような、別のスレッドによってしかるべき応答が処理される場合、主スレッドにおいて妨げることなく操作を行うことができる。この結果、種々のシナリオにわたってロー・エンド・ハードウェアにおいても常に素早い応答時間が得られる。
【０００９】
[0019]  少なくともある実施形態では、このヒット・テストの間に、範囲限定表示ツリー横断(scoped display tree traversal)を実行することができる。これは、場合によっては、しかるべき応答を判定するためにツリー全体の横断を回避することができる。その結果、表示ツリーの無関係な部分を飛ばすことによって、動作遂行(performance)を改善することができる。
【００１０】
[0020]  更に、少なくともある実施形態は、１つの表示ツリー・ノードの内、独立ヒット・テストの間であると見なされるべき特定領域を指定する能力を可能にする。これは、例えば、１つの表示ツリー・ノードが対象の下位領域を有し、この対象の下位領域がしかるべき応答についての判断を変更する場合に使用することができる。このような対象領域は、一例としてそして限定ではなく、ビデオ・エレメントにおける再生スライダー、または編集可能なコンテンツ上におけるサイズ変更グリッパー(resize gripper)を含むことができる。
【００１１】
[0021]  更に他の実施形態では、アプリケーションが、ヒット・テストに対する応答の一部として実行されるコールバック・ハンドラー(callback handler)を登録することができる。これは、典型的な内蔵機能を超える追加のホスト特定アクションのために使用することができる。
【００１２】
[0022]  少なくともある実施形態では、ウェブ開発者が彼らのウェブページ上においてタッチ行動のような特定のデフォルト行動を要求するためのメカニズムを提供する。少なくともある実現例では、パンニング、ピンチ・ズーム、およびダブルタップ・ズーム操作というような操作をイネーブルまたはディスエーブルするために、カスケード・スタイル・シート（ＣＳＳ）ルールを利用する。このメカニズムは、今後追加される追加のデフォルト行動に対応するように拡張可能にすることができる。種々の実施形態において、行動は前もって宣言されるので、したがって命令モード(imperative model)を採用するソリューションとは異なる。この手法の宣言的性質は、独立したヒット・テストを使用して正しい応答を判断するときに、主スレッドからの完全な独立の達成を可能にする。
【００１３】
[0023]  ＣＳＳルールの使用は、要求された特定のデフォルト行動の、ウェブページ上における多くの別の領域への適用を容易にすることができる。これは、構成される各領域上にＣＳＳクラスを設定するのと同じ位簡単にすることができる。
【００１４】
[0024]  以下の説明では、最初に、本明細書において説明する技法を採用することができる環境例について説明する。次いで、この環境例および他の環境においても実行することができる手順例について説明する。したがって、手順例の実行は環境例に限定されるのではなく、環境例が手順例の実行に限定されるのでもない。
環境例
[0025]  図１は、１つ以上の実施形態による動作環境を示し、全体的に１００とする。環境１００は、ローカル・クライアント・マシンの形態である計算デバイス１０２を含む。計算デバイス１０２は、１つ以上のプロセッサー１０４、１つ以上のコンピューター読み取り可能記憶媒体１０６、コンピューター読み取り可能記憶媒体上に存在しプロセッサー１０４によって実行される１つ以上のアプリケーション１０８を有する。また、計算デバイス１０２は、以下で説明するように動作する独立したヒット・テスト・コンポーネント１１０も含む。計算デバイス１０２は、一例としてそして限定ではなく、デスクトップ・コンピューター、携帯用コンピューター、パーソナル・ディジタル・アシスタント（ＰＤＡ）のようなハンドヘルド・コンピューター、移動体電話機、テレビジョン、タブレット・コンピューター等というような、任意の適した計算デバイスとして具体化することができる。計算デバイス１０２の様々な異なる例については、以下で図４および図５において示し説明する。
【００１５】
[0026]  アプリケーション１０８は、一例としてそして限定ではなく、ウェブ・ブラウザーおよび／または種々の他のウェブ・アプリケーションを含む、任意の適したタイプのアプリケーションを含むことができる。ウェブ・ブラウザーは、ネットワーク１１２を介してナビゲートするように構成される。ネットワーク１１２はインターネットとして例示されているが、ネットワークは種々の構成を想定することができる。例えば、ネットワーク１１２は、ワイド・エリア・ネットワーク（ＷＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイヤレス・ネットワーク、公衆電話ネットワーク、イントラネット等を含むこともできる。更に、１つのネットワーク１１２が示されているが、ネットワーク１１２は複数のネットワークを含むように構成されてもよい。
【００１６】
[0027]  例えば、ブラウザーは、１つ以上のウェブ・サーバー１１４から利用可能なコンテンツと相互作用するため、そしてデーターを１つ以上のウェブ・サーバー１１４に通信するため、例えば、ダウンロードおよびアップロードを実行するために、ネットワーク１１２を介してナビゲートするように構成することができる。ウェブ・サーバー１１４は、ネットワーク１１２を介してアクセス可能な１つ以上のサービスを提供するように構成することができる。このようなサービスの例には、電子メール、ウェブページ、写真共有サイト、ソーシャル・ネットワーク、コンテンツ共有サービス、メディア・ストリーミング・サービス等が含まれる。
【００１７】
[0028]  アプリケーション１０８の１つ以上は、ネットワーク１１２にアクセスするように、例えば、直接それら自体で、および／またはブラウザーを介して（アプリケーション１０８がウェブ・ブラウザーでない場合）アクセスするように構成することもできる。例えば、アプリケーション１０８の内１つ以上が、電子メール、インスタント・メッセージ等のようなメッセージを伝達するように構成されてもよい。追加の例では、アプリケーション１０８は、例えば、ソーシャル・ネットワークにアクセスし、天気更新を入手し、ウェブ・サービス１１４の内１つ以上によって実現される書店サービスと相互作用し、ワード・プロセッシングをサポートし、スプレッドシート機能を提供し、プレゼンテーションの作成および出力をサポートする等を行うように構成されてもよい。
【００１８】
[0029]  このように、アプリケーション１０８は、直接または間接的なネットワーク１１２へのアクセスを伴うこともある種々の機能のために構成することもできる。例えば、アプリケーション１０８は、アプリケーション１０８によってローカルに利用され、他の計算デバイスにおいて実行されるアプリケーションと同期されることが可能な、構成設定値および他のデーターを含むこともできる。つまり、これらの設定値はデバイスによって共有することができる。種々の他の例(instance)も考えられる。このため、計算デバイス１０２は、種々の異なるソースから種々の異なる方法でコンテンツと相互作用することもできる。加えて、アプリケーションは、オンラインのシナリオにおいても同様に機能し、例えば、ＵＳＢデバイスからのコンテンツ全体をブラウズすることができる。
【００１９】
[0030]  動作において、独立ヒット・テスト・コンポーネント１１０は、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを供給する。独立ヒット・テスト・スレッドは、ウェブ・コンテンツに対するヒット・テストのために利用され、主スレッドに対するヒット・テストの影響を軽減する。ヒット・テストに別のスレッドを使用することにより、ターゲットを素早く確認することを可能にすることができる。パンニングおよびピンチ・ズーミングのようなタッチ操作に使用することができる操作スレッドのような別のスレッドによってしかるべき応答が処理される場合、操作は、主スレッドにおいてブロックすること(blocking)なく行うことができる。この結果、種々のシナリオにわたりロー・エンド・ハードウェアにおいてでも応答時間が常に短くなる。あるいはまたは加えて、独立ヒット・テスト・コンポーネント１１０は、１つ以上の入力シナリオを識別し、および／または代わりのスレッド（１つまたは複数）に、これらの入力シナリオが、これらの代わりのスレッドを介して関連する応答アクション（１つまたは複数）の少なくとも部分的な初期化を実行するのに有効であることを通知するように構成することができる。
【００２０】
[0031]  一般に、本明細書において説明する機能はいずれも、ソフトウェア、ファームウェア、ハードウェア（例えば、固定論理回路）、またはこれらの実現例の組みあわせを使用して実現することができる。「モジュール」、「機能」、「コンポーネント」、および「ロジック」という用語は、本明細書において使用する場合、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせを一般に表す。ソフトウェアの実現例の場合、モジュール、機能、またはロジックは、プロセッサー（例えば、１つまたは複数のＣＰＵ）において実行されると、指定されたタスクを実行するプログラム・コードを表す。プログラム・コードは、１つ以上のコンピューター読み取り可能メモリー・デバイスに格納することができる。以下で説明する技法の特徴は、プラットフォーム独立であり、これらの技法は、種々のプロセッサーを有する種々の商用計算プラットフォームにおいて実現できることを意味する。
【００２１】
[0032]  例えば、計算デバイス１０２は、計算デバイス１０２のハードウェアまたは仮想マシンに動作を実行させるエンティティ（例えば、ソフトウェア）、例えば、プロセッサー、機能ブロック等を含むこともできる。例えば、計算デバイス１０２は、計算デバイス、そして更に特定すれば計算デバイス１０２のオペレーティング・システムおよび関連するハードウェアに動作を実行させる命令を維持するように構成することができるコンピューター読み取り可能媒体を含むのでもよい。つまり、命令は、オペレーティング・システムおよび関連するハードウェアを、動作を実行するように構成するように機能し、このようにして、機能を実行するようにオペレーティング・システムおよび関連するハードウェアを変形することになる。命令は、コンピューター読み取り可能媒体から計算デバイス１０２に、種々の異なる構成を介して供給することができる。
【００２２】
[0033]  コンピューター読み取り可能媒体のこのような構成の１つに、信号支持媒体があり、つまり、ネットワークを介してというようにして、命令を計算デバイスに送信する（例えば、搬送波として）ように構成される。また、コンピューター読み取り可能媒体は、コンピューター読み取り可能記憶媒体としても構成することができ、したがって信号支持媒体ではない。コンピューター読み取り可能記憶媒体の例には、ランダム・アクセス・メモリー（ＲＡＭ）、リード・オンリー・メモリー（ＲＯＭ）、光ディスク、フラッシュ・メモリー、ハード・ディスク・メモリー、ならびに磁気、光、および他の技法を使用して命令および他のデーターを格納することができる他のメモリー・デバイスが含まれる。
【００２３】
[0034]  以上、本明細書において説明する技法が動作することができる環境例について説明したので、これより、本明細書において説明する原理を利用することができるいくつかの実施形態例の説明(discussion)を検討する。
実施形態例
[0035]  以下の説明では、以下の用語を使用する。従属および独立領域の概念を導入する。
【００２４】
[0036]  「従属領域」とは、主スレッド、即ち、ユーザー・インターフェース・スレッドをヒット・テストのために利用するウェブ・コンテンツの領域である。従属領域は、＜入力型＝「範囲」＞というような制御によって行われる入力または「ヒット」に関連付けることができ、ページとの相互作用は操作をトリガーしない。他の従属領域には、一例としてそして限定ではなく、選択ハンドラーに関連するもの、アドーナー(adorner)、スクロールバー、ならびにビデオおよびオーディオ・コンテンツ用のコントロール(control)を含むことができる。このような従属領域は、一例としてそして限定ではなく、ウィンドウレスActiveX制御も含むことができ、サードパーティ・コードの意図は知らされない。
【００２５】
[0037]  「独立領域」とは、主スレッドをヒット・テストのために利用する必要がないウェブ・コンテンツの領域である。独立領域は、通例、通常ユーザーによってパンニングまたはズーミングされる領域を含む。
【００２６】
[0038]  図２は、パンニング操作に関連する、シーケンス図例を全体的に２００で示す。ユーザーは、後続のスライド動作でコンテンツをパンニングする「ポインター・ダウン」ジェスチャーの形態でジェスチャーを実行する。ポインター・ダウン・ジェスチャーには、任意の適したタイプの入力を供給することができる。例えば、図示する例では、ポインター・ダウン・ジェスチャーは、ユーザーが表示画面上に表示されたコンテンツにタッチし続け(touch-engaging)そして彼らの指を動かしてパンニングを実行することによって実行される。他のタイプの入力は、一例としてそして限定ではなく、マウス入力、スタイラス入力、自然ユーザー・インターフェース（ＮＵＩ）入力等のような、入力デバイスから受けることができる。加えて、以下で説明するように、他の操作を処理することができる。このような他の操作には、特許請求する主題の主旨および範囲から逸脱することなく、一例としてそして限定ではなく、ピンチ・ズーム操作、ダブルタップ・ズーム操作、および他の操作を含むことができる。
【００２７】
[0039]  この例では、３つの異なるスレッドを２０２、２０４、および２０６において例示する。独立ヒット・テスト・スレッド２０２は、以上および以下で説明するような独立ヒット・テストを行うために利用されるスレッドとなる(constitute)。操作スレッド２０４は、表示されたコンテンツに関連する独立領域に関して受け取られた入力に対して操作を実行するように構成されたスレッドとなる。ユーザー・インターフェース・スレッド２０６は、表示されたコンテンツに関連する従属領域に対する完全ヒット・テストのような種々の活動を実行するように構成された主スレッドとなる。
【００２８】
[0040]  １つ以上の実施形態では、独立ヒット・テストは次のように動作することができる。独立ヒット・テスト・スレッド２０２は、表示されたページにおいて、独立および従属である領域を知っている。操作スレッド２０４は、種々のタイプの入力に関連するメッセージを受けるために登録される代表スレッド(delegate thread)として機能するか、または代表スレッドを管理する。操作スレッド２０４は、入力メッセージを受け、ユーザー・インターフェース・スレッド２０６の前に更新する。独立ヒット・テスト・スレッド２０２は、操作スレッドから入力メッセージを受けるために、操作スレッド２０４に登録される。入力が受け取られると、操作スレッドは関連するメッセージを受け、同期通知を独立ヒット・テスト・スレッド２０２に送る。独立ヒット・テスト・スレッド２０２は、このメッセージを受け、その中に含まれるデーターを使用して、ヒット・テストを実行するために、関連する表示ツリーを探索する(walk)。表示ツリー全体を探索することができ、または以下で説明するように、範囲限定横断を行うこともできる。独立領域に関連して入力が発生した場合、独立ヒット・テスト・スレッド２０２は操作スレッド２０４をコールして、それがパンニングを開始できることを操作スレッドに知らせる。少なくともある実施形態では、従属領域に関連して入力が発生した場合、操作スレッド２０４は、完全ヒット・テストとしての処理のために、入力メッセージをユーザー・インターフェース・スレッド２０６に割り当て直す。入力メッセージをユーザー・インターフェース・スレッド２０６に割り当て直すと、再割り当てが行われるまで同じ待ち行列または位置にメッセージが維持され、したがってメッセージを待ち行列内で動かさずに留めるので、効率が上がる(carry)。独立ヒット・テストに基づく操作の対象ではない従属領域には、一例としてそして限定ではなく、スライダー・コントロール、ビデオ／オーディオ再生および音量スライダー、ActiveXコントロール、スクロールバー、テキスト選択グリッパー（および他のアドーナー）、およびオーバーフローのために設定されたページ(pages set to overflow)を含むエレメントに対応する領域が含まれる。
【００２９】
[0041]  少なくともある実施形態では、独立ヒット・テストを実行した後、または操作の開始中に、独立ヒット・テストを引き起こす(spawn)入力メッセージが、通常処理のためにユーザー・インターフェース・スレッド２０６に転送される。通常処理は、一例としてそして限定ではなく、種々のスタイルを入力の対象であるエレメントに適用することができる処理というような、基本的な相互作用に関連付けられる。これらの場合、入力メッセージをユーザー・インターフェース・スレッドに転送すると、操作スレッド２０４によって実行される操作をブロックしない。
【００３０】
[0042]  図２のシーケンス図に戻ると、アクションのシーケンスが示されており、その各々は、番号が入った円内に現れる。このシーケンスについて、パンニング操作のコンテキストで説明する。しかしながら、独立ヒット・テストは、ズーム操作等のような他の操作と併せて実行できることは認められてしかるべきであり、理解されよう。加えて、このシーケンス図の対象となる入力は、タッチ入力の形態となる。先に注記したように、特許請求する主題の主旨および範囲から逸脱することなく、他のタイプの入力も同様に受けて処理することができる。
【００３１】
[0043]  「１」において、ウェブページ上に現れたエレメントをユーザーがタッチし続けることに応答して、フィンガー・ダウン・イベントが行われ、続いてポインター・ダウン入力メッセージが出る。ポインター・ダウン入力メッセージは、操作スレッド２０４によって受け取られ待ち行列に入れられる。次いで、ポインター・ダウン入力メッセージは、操作スレッド２０４によって独立ヒット・テスト・スレッド２０２に送られる。独立ヒット・テスト・スレッド２０２は、「２」において、ポインター・ダウン入力メッセージを受ける。これは、ポインター・ダウン入力メッセージはユーザー・インターフェース・スレッド２０６に送られ、前述のように、ユーザー・インターフェース・スレッド２０６が実行しているかもしれない他の処理のために遅れが生ずる可能性がある過去の慣例からの新たな試みとなる。ポインター・ダウン入力メッセージを受けたことに応答して、独立ヒット・テスト・スレッド２０２は、「３」において、関連する表示ツリーを探索することによって、独立ヒット・テストを実行する。独立ヒット・テスト・スレッド２０２が、フィンガー・ダウン・イベントに対応する領域が独立領域であることを確認し、ユーザー・インターフェース・スレッド２０６は操作を行うためには必要とされないことを意味する場合、独立ヒット・テスト・スレッド２０２は、操作スレッドをコールして、直接操作を行うことができることを操作スレッドに知らせる。操作スレッドは、「４」において、この例ではパンニング操作である操作を開始する。また、独立ヒット・テスト・スレッド２０２は、「３」において、ユーザー・インターフェース・スレッド２０６をコールするので、このユーザー・インターフェース・スレッドは、「５」において、完全ヒット・テストを実行し、このようなことを、ＣＳＳスタイルおよび他のＤＯＭ関係処理を適用するように、行うことができる。独立ヒット・テスト・スレッドが、フィンガー・ダウン・イベントに対応する領域が従属領域であると確認した場合、独立ヒット・テスト・スレッドは、直接操作のために操作スレッドをコールしない。代わりに、入力メッセージが、操作スレッドによって、処理のためにユーザー・インターフェース・スレッドに割り当て直される。領域が独立領域であると仮定すると、「６」において、操作スレッド２０４の影響下で、ユーザーの指が動くのに応じて、操作は続けられる。操作スレッド２０４は、「７」において、フィンガー・アップ・イベントに応答して操作を終了する。
【００３２】
[0044]  尚、独立ヒット・テスト・スレッド２０２がないと、ポインター・ダウン入力メッセージは、操作が開始できる前に完全ヒット・テストを処理し実行するために、ユーザー・インターフェース・スレッド２０６に送られることを注記しておく。ユーザー・インターフェース・スレッド２０６が実行しているかもしれない他の処理のために、操作を目的とする完全ヒット・テストが遅れることもあり得る。したがって、破線の矢印２０８によって示されるように、完全ヒット・テストの終了後に、操作が開始される。この結果、両頭矢印によって示されるように、独立ヒット・テスト・スレッドの影響下において操作が開始されるときと、独立ヒット・テスト・スレッドの影響がなく操作が開始されるときとの間に、対応する遅れが生ずる。したがって、操作応答時間が改善され、ユーザー・インターフェース・スレッド２０６における活動に関係なく、常に素早くなる。
【００３３】
[0045]  以上、１つ以上の実施形態によるシステム例について検討したので、これより、１つ以上の実施形態による方法例について検討する。
方法例
[0046]  図３は、１つ以上の実施形態による方法におけるステップを説明する流れ図である。この方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組み合わせにしたがって実現することができる。少なくともある実施形態では、この方法は、独立ヒット・テスト・スレッドを含むシステムというような、適切に構成されたシステムによって実現することができる。
【００３４】
[0047]  ステップ３００では、入力を受ける。任意の適したタイプの入力を受けることができる。少なくともある実施形態では、入力はタッチ入力を含む。特許請求する主題の主旨および範囲から逸脱することなく、他のタイプの入力を受けることもできる。ステップ３０２では、入力に関連する入力メッセージを受ける。このステップは、任意の適した方法で実行することができる。少なくともある実施形態では、入力メッセージは、操作スレッドによって受け取られ、待ち行列内に置かれる。ステップ３０４では、入力メッセージを独立ヒット・テスト・スレッドに送る。入力メッセージを受けたことに応答して、独立ヒット・テスト・スレッドは、独立ヒット・テストを実行する。ステップ３０８では、完全ヒット・テストを実行するために、ユーザー・インターフェース・スレッドをコールする。これをどのようにそして何故することができるかという例は、先に示した。ステップ３１０では、入力に関連する領域が独立領域であるか否か確認する。この領域が独立領域であると確認された場合、ステップ３１２において、直接操作のために操作スレッドをコールする。どのようにこれを行うことができるのかという例は、先に示した。他方で、この領域が独立でない、即ち、従属であると確認された場合、ステップ３１４において、処理のために入力メッセージをユーザー・インターフェース・スレッドに割り当て直す。
独立ヒット・テストのための範囲限定ツリー横断の使用
[0048]  １つ以上の実施形態において、範囲限定ツリー横断は独立ヒット・テストの間に実行することができる。これらの場合、独立ヒット・テストは、しかるべき応答を決定するために完全ツリー横断を行う必要はない。むしろ、これらが独立ヒット・テストに関して無関係であると確認されたときは、対応する表示ツリーの部分を飛ばすことができる。
【００３５】
[0049]  少なくともある実施形態では、表示ツリーのエレメントに、これらのエレメントが独立ヒット・テストの間に横断されるように印を付けることができる。あるいは、表示ツリーのエレメントに、印されたエレメントは独立ヒット・テストの間横断されないように、印を付けることができる。このように、表示ツリーに印を付けることによって、独立ヒット・テストの間エレメントを横断するか否か判断することができる。
【００３６】
[0050]  例えば、表示ツリー内には、表示ツリー内におけるそれらの機能のために、自然にヒット・テストを行うのに適していないエレメントの特性およびプロパティがある。それらの場合、これらのエレメントがヒット・テストされないように、これらに印を付ける。具体的な例では、表示ツリーにおけるあるエレメントが、それらのプロパティおよび特性のために、表示クライアントによって処理される場合がある。このようなエレメントは範囲コントロール(range control)を含むことができる。これらの場合、範囲コントロールに対応する表示ノードは、コンテナ(container)であり、コントロールの部分に対応するいくつかのノードをその下に有する。しかしながら、範囲コントロール自体は、ユーザー・インターフェース・スレッドにおけるタッチ入力の特殊処理を行うので、その処理を行うために表示クライアントを実装し、その表示ノードには横断せず(not-for-traversal)という印を付ける。このように、表示ノードが独立ヒット・テスト・スレッドに遭遇したとき、範囲コントロールの下にあるノードの横断を飛ばす。
独立ヒット・テストのための表示ツリー・ノードの特定領域の指定
[0051]  少なくともある実施形態では、表示ツリー・ノードの特定領域を、独立ヒット・テストの間考慮のために指定することができる。この手法は、１つの表示ツリー・ノードが、しかるべき操作応答についての判断を変更する可能性がある対象の下位領域を有する場合に使用することができる。下位領域の例には、一例としてそして限定ではなく、ビデオ・エレメントにおける再生スライダー、または編集可能なコンテンツ上におけるサイズ変更グリッパーが含まれる。
【００３７】
[0052]  あるコンテンツを内部に有する矩形の形態をした表示ツリー・ノードについて検討する。表示ツリー・ノードの一例は、ビデオ・コンテンツを含むものであってもよい。ユーザーがこの表示ツリー・ノードに対応する領域にタッチすると、早送り、一時停止、音量等というようなコントロールが現れるのでもよい。通常、早送り、一時停止、またはビデオの音量の調節によってというような、通常の普通の方法で、特定のビデオ・コントロール上のコンタクト(contact)を処理することが望ましい。通常、これらのコントロールが見えるとき、これらのタイプの入力はユーザー・インターフェース・スレッドによって処理される。しかしながら、ビデオ・コンテンツに対応する表示エレメントのパンニングおよびズーミングというような操作は、独立ヒット・テストを使用して、独立して行うことができる。この場合、コントロールが見えるとよく、受け取られる入力は、ビデオ上におけるピンチまたはパンニング入力を含み、独立ヒット・テスト・スレッドが入力メッセージを処理して対応する操作に作用する結果となる。
【００３８】
[0053]  １つ以上の実施形態では、別のデーター構造が、これらのタイプのエレメントに対応する表示ツリーの一部として維持される。この別のデーター構造は、これらのタイプの表示ツリーについての情報を維持する。受け取られる入力に依存して、例えば、入力がビデオ・コントロール上で行われる場合にはユーザー・インターフェース・スレッドが入力メッセージを処理し、あるいはパンニングまたはズーミングが行われるときは、独立ヒット・テスト・スレッドおよび操作スレッドがこれらのエレメントに関して入力を処理する。
独立ヒット・テストに対する応答の一部として実行されるコールバック・ハンドラーの登録
[0054]  ユーザーが、彼らのウェブ・ブラウザーによって表示されたコンテンツに関して左または右にパンニングする状況について検討する。右にパンニングすることは、ブラウザーにおいて後ろにナビゲートするために後ろボタンをクリックすることと等価である。したがって、ユーザーは種々のページにわたって前後にめくることができる。これによって、ユーザーはナビゲーションに関連するトラベル・ログ(travel log)にわたって前後にナビゲートすることが可能になる。この場合では、コンテンツ全体にわたる前方および後方へのナビゲーションは、独立ヒット・テスト・スレッドとは異なるコンポーネントによって処理される。これらの場合、前方および後方へのナビゲーションを処理するコンポーネントは、独立ヒット・テストに対する応答の一部として、コールバックのために登録することができる。
【００３９】
[0055]  例えば、Ｉ−フレームおよび対応するウェブページについて検討する。パンニング操作に応答して、最初にＩ−フレームがエッジに当たるまでパンニングし、その時点でページがパンニングし始める。一旦ページがそのエッジに当たると、逆向きナビゲーションを開始することができる。実行されるコールバック・ハンドラーを、独立ヒット・テストに対する応答の一部として登録することによって、ホストはこのチェーンに関与することができる。例えば、フィンガー・ダウン入力を受けたとき、その入力に関連する表示ツリーの、上に向かってスクロール可能な領域全てのリストが作られる。したがって、例えば、ユーザーが１０個のスクロール可能なエリアである領域上において深くタッチした場合、独立ヒット・テスト・スレッドは、これら１０個のスクロール可能なエリアの各々に対して操作を行うことができるように、操作スレッドをコールすることができる。コールバック・ハンドラーを独立ヒット・テストに対する応答の一部として使用することによって、前後のナビゲーションを処理するコンポーネントが、これら１０個の領域の上に積層し、しかるべく前方および後方へのナビゲーションを実行することを可能にすることができる。
デフォルト行動についての宣言型スタイル・ルール(Declarative Style Rules)
[0056] 少なくともある実施形態では、ウェブ開発者が、彼らのウェブページ上において、タッチ行動のような特定のデフォルト行動を要求するためのメカニズムが設けられる。少なくともある実現例では、パンニング、ピンチ・ズーム、およびダブルタップ・ズーム操作というような操作を有効または無効にするために、カスケード・スタイル・シート・ルール(Cascading Style Sheets rule)が利用される。このメカニズムは、今後追加される追加のデフォルト行動に対応するように拡張可能にすることができる。種々の実施形態において、行動は前もって宣言され、したがって、命令型モデルを採用するソリューションとは異なる。この手法の宣言型の性質により、主スレッドからの完全独立の達成、および独立ヒット・テストを使用して正しい応答を判断することが可能になる。
【００４０】
[0057]  １つ以上の実施形態において、タッチ・アクションのようなデフォルト・アクションを制御する能力が、新たなＣＳＳプロパティ「タッチ・アクション」の使用によって設けられる。ＣＳＳプロパティは、一例としてそして限定ではなく、"auto"、"none"、および"inherit"を含む値を受け入れる。加えて、ＣＳＳプロパティは、タッチ・アクションのような、利用することができる特定のアクションの空間限定リスト(space delimited list)の使用を可能にする限り、拡張可能である。一例としてそして限定ではなく、このリストは、それぞれ、パンニング／ピンチ・ズームおよびダブルタップ・ズームを制御するための"manipulation"および"double-tap-zoom"という値を含む。この特徴によって有効または無効にすることができる追加の能力を追加することができ、こうしてこのプロパティに対する拡張性を追加することができる。
【００４１】
[0058]  １つ以上の実施形態において、独立ヒット・テスト後における正しい応答は、タッチ相互作用を処理することができるターゲットの最初の先祖(ancestor)がそうすることである。操作に対して、これは、実際に操作可能な領域、即ち、スクロール可能またはズーム可能として指定された領域、更にはJavaScriptを介して相互作用を処理することを選択するエレメント、例えば、"touch-action: none"を含むことができる。また、これは、それら自体の操作応答を有するある種のエレメント、例えば、スライダーも含むことができる。
【００４２】
[0059]  動作において、ユーザーの指の下にあるウェブページ上の特定のエレメントを判定する独立ヒット・テストの間、対応する表示ツリーが、部分的にこのＣＳＳプロパティに基づいて横断される。これによって、正しい応答を決定するために追加の情報を必要としない場合に、ツリー横断の範囲制限(scoping)が可能になる。
【００４３】
[0060]  以上、デフォルト行動についての宣言型スタイル・ルールの全体像を検討したので、これより以上で説明した技法を採用する実現例(implementation example)の説明について検討する。
実現例
[0061]  以下の説明では、以下の用語を使用する。操作可能エレメント(manipulable element)とは、（ａ）オーバーフロー・コンテンツを有し、オーバーフローが自動的に処理されることを指定するエレメント、（ｂ）オーバーフロー・コンテンツに対してスクローリングが許されることを指定するエレメント、または（ｃ）ズーミング能力を有するエレメントのいずれかである。操作ブロック・エレメント(manipulation-blocking element)とは、宣言型マークアップによって直接操作を明示的にエレメントし、代わりに、ジェスチャー開始、ジェスチャー変更、およびジェスチャー終了イベントというようなジェスチャー・イベントを発火させるエレメントである。操作発生エレメント(manipulation-causing element)とは、宣言型マークアップによって直接操作を明示的に要求するエレメントである。受動型エレメントとは、以上の３つのカテゴリーに該当しないエレメントである。これは、タッチ・アクションの判断に寄与しない。
【００４４】
[0062]  ＣＳＳプロパティ「タッチ・アクション」に関して、以下のことを検討する。「タッチ・アクション」プロパティは、宣言型マークアップを使用してウェブ開発者によって設定することができる次の値を含む。auto、none、inherit、および<space-delimited gesture list>。空間限定ジェスチャー・リストは、「操作」および「ダブルタップ・ズーム」を含むことができる。また、空間限定ジェスチャー・リストは、今後追加されるジェスチャーをサポートするために拡張可能である。
【００４５】
[0063]  "auto"値は、タッチ・アクション判断を特定のエレメントの親に譲り、こうして特定のエレメントを受動型エレメントにする。したがって、例えば、タッチ入力があるエレメント上において行われ、このエレメント自体はパンニングすることができずパンニング操作をブロックしていない場合、タッチ・アクション判断はこのエレメントの親に譲られる。これは、タッチ・アクション判断が解明されるまで、エレメントの先祖のチェーンを遡り続けることができ、その結果、操作するまたは操作しないといういずれかの結果が得られる。この値は、表示ツリー・チェーンにおいてあらゆるエレメント毎にプロパティを指定しなければならない負担を軽減することができる。
【００４６】
[0064]  "none"値は、このエレメントではパンニングもズーミングの行われないことを指定する。
[0065]  "inherit"値は、標準的なＣＳＳ継承の通りに、エレメントがそのプロパティ値をその親から受け継ぐことを指定する。
【００４７】
[0066]  "manipulation"値は、関連するエレメントが、操作発生エレメント、即ち、直接操作を明示的に要求するエレメントとして扱われることを指定する。したがって、このエレメントはパンニングおよび／またはズーミングを行い、ジェスチャー・イベントは発火しない。
【００４８】
[0067]  "double-tap-zoom"値は、関連するエレメントが、操作ブロック・エレメントとして扱われることを指定し、このエレメントが明示的に直接操作をブロックし、代わりにジェスチャー・イベントを発火させることを意味する。この場合、"double-tap-zoom"だけがエレメントに指定される場合、このエレメントはパンニングもピンチ・ズームも行わない。尚、あるエレメントに対して"manipulation"は指定されるが"double-tap-zoom"は指定されない場合、このエレメントをパンニングおよびピンチ・ズーミングすることだけが可能になる。
【００４９】
[0068]  動作において、ターゲット・エレメントの親チェーンにおける最初の操作可能エレメントまたは操作ブロック・エレメントに操作が割り当てられる。エレメントが操作可能および操作ブロックの双方である場合、直接操作は行われず、操作ブロックが発生することを意味する。目標エレメントの親チェーンに操作可能エレメントも操作ブロック・エレメントもない場合、操作イベントは送られるかまたは発火される。
【００５０】
[0069]  ここで、以上の値が独立ヒット・テストの間にどのように処理されるかについて検討する。表示ツリーが特定のページに対して最初に作られるとき、以上で説明したプロパティ値に遭遇した場合、プロパティ値が指定された特定のエレメントに対応する表示ツリー・ノード毎に、フラグがプッシュされる。つまり、各表示ツリー・ノードは、それと共に、以上で説明したプロパティ値によって定められるその状態を伝える。
【００５１】
[0070]  独立ヒット・テストの間、表示ツリーを探索し、これらのフラグを蓄積して、独立ヒット・テスト・スレッドが操作スレッドを直接操作のためにコールすべきか否か確認する。これらのフラグは、本質的に先に説明したように積み重ねられ、次いでページまたはコンテンツがどのようにパンニングするか、ズーミングするか、または操作されるか最終的に決定するビューポート(viewport)に割り当てられる。このように、ヒット・テスト結果に基づいてその場で操作を構成することができる。一旦独立ヒット・テストが完了し、構成が確認されたなら、独立ヒット・テスト・スレッドは、直接操作のために、操作スレッドに対してしかるべきコールを行うことができる。
【００５２】
[0071]  図３ａは、１つ以上の実施形態による方法におけるステップを説明する流れ図である。この方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組みあわせと関連付けて実現することができる。少なくともある実施形態では、この方法は、開発者がウェブページを開発することを可能にするソフトウェアを含む、適切に構成されたウェブページ開発システムによって実現することができる。
【００５３】
[0072]  ステップ３２０において、ウェブページを組み立てる。このステップは、適切に構成された任意のウェブページ開発ソフトウェア・パッケージを使用して、任意の適した方法で実行することができる。ステップ３２２では、１つ以上のプロパティをウェブページのエレメントに割り当てて、１つ以上のそれぞれのデフォルト・タッチ行動を要求する。これをどのように行うことができるかの例は、以上で示した。
【００５４】
[0073]  図３ｂは、１つ以上の実施形態による方法におけるステップを説明する流れ図である。この方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組みあわせと関連付けて実現することができる。少なくともある実施形態では、この方法は、コンポーネントの中でもとりわけ、以上で説明したような独立ヒット・テスト・コンポーネントを含むシステムというような、適切に構成されたシステムによって実現することができる。
【００５５】
[0074]  ステップ３３０において、ウェブページを受ける。ステップ３３２では、このウェブページに関連する表示ツリーを組み立てる。ステップ３３４では、デフォルト・タッチ行動が指定されたエレメントに対応する表示ツリー・ノードに少なくとも１つのフラグを設定する。これをどのように行うことができるかの例は、先に示した。ステップ３３６では、表示ツリーに対して独立ヒット・テストを実行する。これをどのように行うことができるかの例は、先に示した。ステップ３３８では、デフォルト・タッチ行動が指定された１つ以上のエレメントに対する直接操作のために、操作スレッドをコールする。これをどのように行うことができるかの例は、先に示した。
【００５６】
[0075]  以上、実現例について検討したので、これより種々の入力ジェスチャーを識別し処理するための代替実施形態の説明について検討する。
タッチパッドおよびダブルタップ・ズームの検討
[0076]  以上で説明した技法を使用すると、とりわけ、独立ヒット・スレッドは、コンテンツ内に含まれる独立領域および従属領域を識別し、更にこれらの領域に関係するアクションの並列処理を可能にするように構成することができる。例えば、独立ヒット・スレッドは、独立領域を識別し、関連する処理を操作スレッドに引き渡すように構成することができる。代わりにまたは加えて、独立ヒット・スレッドは、従属領域を識別し、ユーザー・インターフェース・スレッドのような、関連する従属性を管理するスレッドに処理を引き渡すように構成することができる。処理を異なるスレッドに分散することによって、以前では実行ボトルネックのために遅れていた操作を、一層適時に処理することができ、ボトルネック・アーキテクチャよりも応答が良いユーザー・インターフェースが得られる。しかしながら、多重ジェスチャー入力を識別するときに遅れを生ずる可能性がある場合もある。
【００５７】
[0077]  例えば、ダブルタップ・ズームについて検討する。その名称によって示されるように、ある実施形態は、ダブルタップ入力がダブル・マウス・クリックに関連するか、ダブルタップ入力がタッチ・スクリーンに関連するか、タッチパッド上のダブルタップか等にしたがって、ダブルタップ入力を識別したことに応答して、ズーム機能を呼び出す。一旦シーケンスにおいて２つのタップが識別されたなら、ズーミング機能を呼び出すことができる。しかしながら、多重ジェスチャーの２回目のタップが識別されるまで、最初のタップに関連する不確実性があり、それを独立入力（例えば、１回のタップ選択入力）として解釈すべきか、または多重ジェスチャー入力（例えば、ダブルタップ・ズーム）の一部として解釈すべきか不確実性がある可能性がある。この最初のタップを識別するときの不確実性は、次に、最初のタップの関連する役割（例えば、独立入力または多重ジェスチャー入力）が識別されるまで、応答性に遅れを生じさせる可能性がある。例えば、タップ入力が１回の入力および／または独立入力に関連する場合、可能な２回目のタップおよび／または時間切れを待つときの遅れはいずれも、その待ち期間におけるユーザーの知覚に影響を及ぼす可能性がある。
【００５８】
[0078]  ある実施形態は、入力を１回の入力および／または独立入力として解釈する、入力を多重ジェスチャー入力として解釈する等のように、入力に関連する１つ以上の入力シナリオを識別するように構成された独立ヒット・テスト・スレッドを与える。場合によっては、各入力シナリオは、少なくとも部分的に開始できるおよび／または初期化のために別のスレッドに渡すことができる、関連する応答アクションを有する。部分的に初期化された応答アクションは、一例としてそして限定ではなく、先に詳しく説明したように、オブジェクトおよび／または表示操作を含むことができる。完全な応答アクションを 呼び出すことができるのは、以上および以下で更に説明するように、入力が、１つ以上の応答アクションからの別個の応答アクションによって、別個の入力として識別されたときである。
【００５９】
[0079]  図４について検討する。図４は、ダブルタップ・ズームに関連するシーケンス図の例を、全体的に４００で示す。ここでは、ユーザーは、タッチ・スクリーンによって検出される２つの別の「フィンガー・ダウン−フィンガー・アップ」ジェスチャーの形態で、多重ジェスチャー入力を実行する。しかしながら、任意の適したタイプの入力を「フィンガー・ダウン−フィンガー・アップ」ジェスチャーに対して供給できることは認められよう。その例は、以上で与えられており更に以下でも与えられる。更に、ダブルタップ・ズームおよびその関連するダブルタップの多重ジェスチャー入力のコンテキストで説明したが、本明細書において説明した技法は、特許請求する主題の範囲から逸脱することなく、任意の多重ジェスチャー入力に適用可能であることは認められよう。
【００６０】
[0080]  ここでは、全体的に４００で説明されるシーケンス図は、図２を参照して先に説明したように、独立ヒット・テスト・スレッド２０２、操作スレッド２０４、およびユーザー・インターフェース・スレッド２０６を含む。「１」において、フィンガー・ダウン−フィンガー・アップ・イベントが、ウェブページ上に現れたエレメント上におけるユーザー・タップの検出に応答して行われる。これは、操作スレッド２０４によって受け取られ、待ち行列に入れられる。次いで、タップ入力メッセージが独立ヒット・テスト・スレッド２０２に送られ、「２」において受け取られる。タップ入力イベントの通知を受けるというコンテキストで説明したが、任意の他の適したタイプのイベントも同様に識別できることは認められよう。例えば、フィンガー・ダウンおよびフィンガー・アップの多重入力イベントを含むタップ・イベントを識別する代わりに、ある実施形態は、フィンガー・ダウン・イベントおよびフィンガー・アップ・イベントを別々に識別し、ポインター・ダウン・イベント・メッセージおよびポインター・アップ・イベント・メッセージというような、別々の入力メッセージを送る。
【００６１】
[0081]  「２」においてタップ入力メッセージを受けると、独立ヒット・テスト・スレッドは、「３」において、前述のような表示ツリー横断、および／または多重ジェスチャー入力分析というような、１つ以上のアクションを開始する。この例では、独立ヒット・テスト・スレッド２０２は、１回のタップ入力または多重ジェスチャー入力の一部であるというように、タップ・イベントを複数の方法で解釈できることがわかるロジックおよび／または知識を含む。つまり、独立ヒット・テスト・スレッド２０２は、ここでは「４」で示す、１回のタップ入力の通知として、メッセージを送る、および／またはユーザー・インターフェース・スレッド２０６にコールする。あるいはまたは加えて、ユーザー・インターフェース・スレッド２０６は、イベント通知を受けることができる。ある実施形態では、ユーザー・インターフェース・スレッド２０６に対する通知は、１回のタップ入力が別個に識別されなかったこと、そして潜在的にそれを複数の方法で解釈できることを示す情報を含むことができる。言い換えると、１回のタップ入力は、入力であるという潜在的な解釈として識別されるが、最終的なおよび／または紛れもない解釈ではない。これは、ユーザー・インターフェース・スレッド２０６によって受け取られるメッセージ内に情報を含ませることによって、ユーザー・インターフェース・スレッド２０６へのコールの間に渡されるパラメータ（１つまたは複数）によって、独立ヒット・テスト・スレッド２０２とユーザー・インターフェース・スレッド２０６との間で共有するデーター構造内に情報を格納することによって等を含む、任意の適したやり方で行うことができる。１回のタップ入力を潜在的な解釈として識別したことに応答して、ユーザー・インターフェース・スレッド２０６は、関連する応答アクションの部分的初期化を実行する。
【００６２】
[0082]  「４」において、ユーザー・インターフェース・スレッド２０６は、部分的初期化を実行する。これは、任意の適したタイプのアクションを含むことができ、その例は先に示した。例えば、ＣＳＳルールについての先の説明を引用すると、部分的初期化は、ユーザー・インターフェース・スレッド２０６によって表示される１つ以上のエレメントの外観を変えるのに有効な、１つ以上のエレメントに関連する１つ以上のＣＳＳルールを処理することを含むことができる。あるいはまたは加えて、ユーザー・インターフェース・スレッド２０６は、JavaScriptのような関連するスクリプトを実行することができる。このように、ユーザー・インターフェース・スレッド２０６は、少なくとも部分的に、１タップ入力を受けたことに関連する応答アクションの処理を開始する。
【００６３】
[0083]  「５」において、操作スレッド２０４は、第２タップ・イベントの通知を受ける。先の場合と同様、次いで、操作スレッド２０４はメッセージおよび／または通知を独立ヒット・テスト・スレッド２０２に渡す。「６」において、独立ヒット・テスト・スレッド２０２は第２タップ・イベントの通知を受ける。「７」において、独立ヒット・テスト・スレッド２０２は、第１タップ・イベントおよび第２タップ・イベントの組み合わせを多重ジェスチャー入力（例えば、ダブルタップ）として識別する。多重ジェスチャー入力の識別は、任意の適したやり方で行うことができる。例えば、第１タップ・イベント通知を受けたときに、予め定められた時間枠内で第２タップ・イベントが発生したか否か判定するのに有効なタイマを起動することができる。あるいはまたは加えて、各タップ・イベントにタイム・スタンプを付けることができ、第１および第２タップ・イベント間の時間の尺度(measure)を計算し、閾値と比較することができる。このように、独立ヒット・テスト・スレッド２０２は、第１タップ・イベントに関連付けることもできる入力の複数の可能な解釈（例えば、１回のクリック、ダブルタップ、タップおよび保持等）から、第１および第２タップ・イベントの組みあわせを多重ジェスチャー入力（例えば、ダブルタップ）として識別する。
【００６４】
[0084]  第１および第２タップ・イベントの解釈を明確に識別するとき（例えば、ダブルタップ入力として明確に識別する）、次に、独立ヒット・テスト・スレッド２０２は、部分的に初期化され得た他の解釈応答アクションがあるか分析する。例えば、「３」において、１タップ入力応答アクションが、ユーザー・インターフェース・スレッド２０６において少なくとも部分的に初期化されている。次いで、独立ヒット・テスト・スレッド２０２は、部分的に応答アクションを初期化したスレッドに通知を送る。あるいはまたは加えて、独立ヒット・テスト・スレッド２０２は、それ自体のスレッド内において管理される、任意の部分的に初期化された応答アクションを終了することができる。この例では、独立ヒット・テスト・スレッド２０６は、ユーザー・インターフェース・スレッド２０６に、１タップ入力応答アクションの処理を終了および／または停止するためのメッセージを送る。これは、「８」に示され、ユーザー・インターフェース・スレッド２０６は取り消し通知を受ける。尚、特許請求する主題の範囲から逸脱することなく、任意の適したタイプの通知を使用できることは認められよう。例えば、先の共有データー構造の例に戻ると、ある実施形態では、ユーザー・インターフェース・スレッド２０６は通知および／または終了要求の識別のために、共有データー構造にアクセスすることができる。「８」において通知を受けたことに応答して、ユーザー・インターフェース・スレッド２０６は、「４」において実行された任意の以前のアクションを終了するおよび／または元に戻す(reverse)。
【００６５】
[0085]  「９」において、独立ヒット・テスト・スレッド２０２は、多重ジェスチャー入力の通知を操作スレッド２０４に送る。ここで、この通知は、独立ヒット・テスト・スレッド２０２が、任意の関連するエレメントおよび／またはアクションを、先に説明したように、操作スレッド２０４によって管理および／または処理できると判定したことに応答して、操作スレッド２０４に送られる。「１０」において、操作スレッド２０４は、任意の適したやり方でこの通知を受ける。その例については、先に説明した。図４は、独立ヒット・テスト・スレッド２０２が、最初にユーザー・インターフェース・スレッド２０６に以前の応答アクション（例えば、１タップ入力応答アクション）を取り消す通知を送り、次いで操作スレッド２０４に多重ジェスチャー入力の通知を送ることを示すが、これらのイベントのシーケンスは、特許請求する主題の範囲から逸脱することなく、任意の順序で行うことができることは認められてしかるべきであり、理解されよう。「１１」において、操作スレッドは、多重ジェスチャー入力（例えば、ダブルタップ・ズーム）に対して、関連する応答アクションを処理および／または実行する。
【００６６】
[0086]  簡素さのために、図４は、多重ジェスチャー入力を判定し、多数の可能な応答間で調整する(stagger)ことに関するタイムラインを説明するシーケンス図を示す。例えば、「１」において第１タップが検出されたとき、第１タップが単一ジェスチャー入力であることに関係する部分的応答アクションが初期化される（ここでは、「３」または「４」において示される）。第２タップが「５」において検出されるまでは、多重ジェスチャー入力が多重ジェスチャー入力として認識されない。この時点において、多重ジェスチャー入力応答アクションが初期化され、単一ジェスチャー入力は「７」または「８」において終了させられる。しかしながら、ある実施形態では、多重ジェスチャー入力が決して行われないと判定したときというように、後の時点において、部分的応答を完全に初期化することができる。多重ジェスチャー入力がないという判定は、タイムアウト・タイマの使用によるというように、任意の適したやり方で行うことができる。図４に関して、「５」におけるイベントが所定の時間閾値内に行われない場合、多重ジェスチャー入力は認識されない。一方、これは、単一ジェスチャー入力に関連する、任意の部分的に初期化された応答アクションを完了するメッセージをトリガーすることができる。あるいはまたは加えて、「３」において開始された単一ジェスチャー応答アクションは、「５」においてイベントがないために（そして、その後「７」および「８」における終了メッセージのために）、完了まで実行する完全初期化（部分的初期化の代わりに）になることができる。
【００６７】
[0087]  他の例として、図５について検討する。図５は、ダブルタップ・ズームに関連するシーケンス図を全体的に５００で示す。図４の場合と同様、図５は、ユーザーが２つの別の「フィンガー・ダウン−フィンガー・アップ」ジェスチャーの形態で多重ジェスチャー入力を実行することに関連する。更に、図５は、先に図２および図４を参照して説明したように、独立ヒット・テスト・スレッド２０２、操作スレッド２０４、およびユーザー・インターフェース・スレッド２０６を含む。「１」において、ユーザーがウェブページ上に現れたエレメントにタッチし続けることに応答して、「フィンガー・ダウン−フィンガー・アップ」イベントが行われ、それによってタップ入力メッセージを引き起こす。これは、操作スレッド２０４によって受け取られ、待ち行列内に入れられる。次いで、タップ入力メッセージが独立ヒット・テスト・スレッド２０２に送られ、前述したのと同様に、「２」において独立ヒット・テスト・スレッド２０２によって受け取られる。しかしながら、ここでは、図５においてイベントが受け取られるタイミングの差によって、多少異なる行動が呼び出される。
【００６８】
[0088]  独立ヒット・テスト・スレッド２０２が第１タップ入力メッセージを処理し部分的初期化を実行するために通知をユーザー・インターフェース・スレッド２０６に送る前に、「３」において第２タップ入力メッセージが操作スレッド２０４によって受け取られる。一方、操作スレッド２０４は、独立ヒット・テスト・スレッド２０２に通知を送り、この通知は「４」において受け取られる。ユーザー・インターフェース・スレッド２０６は、部分的初期化メッセージを未だ独立ヒット・テスト・スレッド２０２から受けていないので、独立ヒット・テスト・スレッド２０２は、このシーケンスのイベントに対して全ての部分的初期化メッセージをユーザー・インターフェース・スレッド２０６に送るのを回避する。代わりに、「５」において、独立ヒット・テスト・スレッド２０２は、２つのタップ入力メッセージを、ダブルタップ・ズーム機能に関連する多重ジェスチャー入力であるとして識別する。次いで、ダブルタップ・ズームおよび／または多重ジェスチャー入力の通知が独立ヒット・テスト・スレッド２０２によって送られ、「６」において操作スレッド２０４によって受け取られる。「７」において、操作スレッド２０４は、先に説明したように、ダブルタップ・ズームを実行する。
【００６９】
[0089]  このように、独立ヒット・テスト・スレッドは、操作および／または関連するコンテンツが独立かまたは従属か判定できるだけでなく（そして、どのスレッドがコンテンツに関連する機能を処理するのか管理する）、単一入力ジェスチャーと多重入力ジェスチャーとの間で区別する機能および／またはロジックを含むことができる。場合によっては、追加のロジックは、米国特許出願第１３／３６３，１２７に記載された入力ポインター遅延および／またはズーミング・アルゴリズムのような、アルゴリズムを含むことができる。これらのアルゴリズムは、パラメーターおよび／またはオプションを識別するために使用することができ、次いでこれらは操作スレッドに伝えられる。例えば、これらのアルゴリズムは、どのコンテンツがズームによって拡大されるのかに基づいて、ズーム比を決定するために使用することができる。次いで、これらのズーム比は、ズーミング・プロセスの一部として、操作スレッドに渡すことができる。
【００７０】
[0090]  ともすれば、独立ヒット・テスト機能をイネーブルおよびディスエーブルすることが有効である場合もあり得る。例えば、タッチパッドについて検討する。ある実施形態では、ユーザーがタッチパッドと相互作用するとき、入力は、マウス周辺デバイスの入力と同様に解釈することができる。この「マウス・モード」にあるとき、ユーザーはタッチパッド・インターフェースにタッチし、タップによってエレメント上で「クリックし」、インターフェースに対するタッチ・コンタクトを維持し、所望の方向に滑らせる等によって、表示されたマウス・ポインターを動かすことができる。しかしながら、あるシナリオでは、ヒット・テストをイネーブルすることが望ましい場合もあり得る。パンニング機能に関する先の説明について検討する。ともすれば、パンニング機能を処理するとき、しかるべき操作目標を判定するためにヒット・テストを実行することが有益である場合もあり得る。ある実施形態では、「ジェスチャー・モード」に（およびから）移行する能力を設ける。例えば、ある場合には、多重ジェスチャー入力を検出することによって、タッチパッド上における複数の同時フィンガー相互作用を検出するというような、「ジェスチャー・モード」をイネーブルする。「ジェスチャー・モード」に移るとき、先に説明した技法と同様の独立ヒット・テスト・スレッド技法を使用して、入力を処理および／または分析することができる。あるいはまたは加えて、新たなルールを適用することができ、および／または「マウス・モード」におけるときとは異なって入力を解釈することができる。例えば、「マウス・モード」にあるとき、タッチパッドを横切る指に関連する入力を検出すると、指の動きと関係する方向にマウス・アイコンを動かす応答アクションを呼び出すことができる。しかしながら、「ジェスチャー・モード」にあるときに同様の入力を検出すると、代わりに、関連する表示を左または右にパンニングさせる応答アクションを呼び出すことができる。「スワイプ」ジェスチャーに関連する第２入力と関連付けられた「タッチ・アンド・ホールド」（タッチし続ける）ジェスチャーに関連する第１入力を検出する、ジェスチャーの欠如を検出する（例えば、「タッチ・アンド・ホールド」ジェスチャーおよび／または「スワイプ」ジェスチャーがないことを検出する）等というような、任意の適したタイプのイベントおよび／または入力が、「ジェスチャー・モード」への（そしてからの）移行を発生させることができる。ある実施形態では、「ジェスチャー・モード」に関連する多重ジェスチャー入力の終了、「マウス・モード」への移行に関連する別個の入力の検出等というような、マウス・モード入力イベントを検出すると、「マウス・モード」に戻る。
【００７１】
[0091]  図６は、１つ以上の実施形態による方法におけるステップを説明する流れ図である。この方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組みあわせと関連付けて実現することができる。少なくともある実施形態では、この方法は、とりわけ、以上で説明したような独立ヒット・テスト・コンポーネントを含むシステムというような、適切に構成されたシステムによって実現することができる。
【００７２】
[0092]  ステップ６００では、第１入力に関連する第１入力メッセージを受ける。これは、任意の適したタイプの入力メッセージおよび／または、タッチ・スクリーン、タッチパッド、マウス・デバイス、キーボード入力等からの入力というような、入力を含むことができる。ある場合には、ユーザー・インターフェース・スレッドおよび／または独立ヒット・テスト・スレッドとは別のスレッドにおいて、第１入力メッセージを受けることもある。ステップ６０２では、第１入力メッセージを独立ヒット・テスト・スレッドに送る。
【００７３】
[0093]  第１入力メッセージを受けたことに応答して、ステップ６０４では、第１入力メッセージに関連する第１入力が複数の解釈を有すると判定する。例えば、第１入力は、単一ジェスチャー入力として解釈することができ、または１つ以上の多重ジェスチャー入力の一部として解釈することができる。あるいはまたは加えて、第１入力メッセージを受けたことに応答して、独立ヒット・テスト・スレッドは少なくともあるヒット・テストを実行することができる。その例は、先に示した。
【００７４】
[0094]  ステップ６０６では、複数の解釈の内少なくとも１つに関連する少なくとも１つの応答アクションを初期化する。これは、関連する応答アクションの完全な初期化および／または部分的な初期化を含むことができる。ある場合には、独立ヒット・テスト・スレッドが、初期化を実行する別のスレッドに通知を送り、この通知が、初期化が完全な初期化かまたは部分的な初期化かの指示を含むことができる。あるいはまたは加えて、別のスレッドが共有データー構造を利用して、実行すべき初期化のタイプを判定することができる。初期化は、１つ以上のＣＳＳルールをエレメントに適用する、データー構造を割り当てる等というような、任意の適したタイプのアクションを含むことができる。
【００７５】
[0095]  ステップ６０８では、少なくとも第２入力が受け取られたか否か判定する。ある場合には、これは、予め定められた時間枠内で第２入力が受け取られたか否か判定することを含むことができる。例えば、第２入力に関連する第２入力メッセージは、第１入力メッセージと同様に受けることができる。第２入力メッセージが、予め定められた時間枠内で受けとられない場合、ある実施形態では、第２入力メッセージが第１入力メッセージに関連がないと判定し、次いで第２入力メッセージを第１入力メッセージとは独立して処理し、および／または応答する。しかしながら、予め定められた時間枠内で第２入力メッセージが受け取られた場合、これらの入力を更に分析して、第１および第２入力が多重ジェスチャー入力の一部であるか否か判定する。
【００７６】
[0096]  第２入力が受け取られていないと判定したことに応答して、ステップ６１０では、部分的に初期化した応答アクションを完了する。ある場合には、応答アクションを完了するメッセージが、部分的に初期化した応答を処理するように割り当てられたスレッドに送られる。他の場合には、部分的に初期化した応答アクションを完了することは、単にステップ６０６において実行した初期化を、中断することなく完了させる(complete uninterrupted)ことによって、行われる。
【００７７】
[0097]  第２入力が受け取られたと判定したことに応答して、ステップ６１２では、第１および第２入力に基づいて、第１入力の明確な解釈を決定する。例えば、第１入力が４つの可能な解釈を有する場合、ステップ６１２では、どんな入力を受けたか、そしていつ受けた可能性があるか基づいて、４つの解釈から１つを選択する。ダブルタップ・ジェスチャーの先の例を引用すると、第１タップ入力は、第２タップ入力が受け取られたか否か、そして第２タップ入力が、予め定められた時間枠内で受け取られたか否かに基づいて、別個のダブルタップ入力として判定される。このように、入力の明確な解釈を決定することは、どんな入力が受け取られたかに基づくだけでなく、付加的に、予め定められた時間枠内で入力が受け取られたか否かに基づくこと、これらが受け取られた順序、入力の期間等に基づくことができる。
【００７８】
[0098]  入力に関連する明確な解釈を決定したことに応答して、ステップ６１４では、この明確な解釈に関連する応答アクションを呼び出す。任意の適したタイプの応答アクションを呼び出すことができ、その例は先に示した。ある場合には、応答アクションを呼び出すことは、この応答アクションを処理することが可能な別のスレッドに通知することを含むことができる。あるいはまたは加えて、応答アクションは、少なくとも部分的に、先に説明した「ジェスチャー・モード」および「マウス・モード」の例というような、デバイスが実行している状態またはモードに基づくことができる。
【００７９】
[0099]  ステップ６１６では、少なくとも１つの部分的に初期化した応答アクションを終了する。ある実施形態では、通知および／またはメッセージを、部分的に初期化した応答アクションを処理したスレッドに送る。他の実施形態では、部分的な応答アクションを終了するために、共有データー構造を通知によって更新する。
【００８０】
[00100]  以上種々の実施形態について検討したので、以上で説明した実施形態を実現するために利用することができるシステムおよびデイバス例についてこれより検討する。
システムおよびデバイス例
[00101]  図７は、図１を参照して説明したような計算デバイス１０２を含むシステム例７００を示す。システム例７００は、パーソナル・コンピューター（ＰＣ）、テレビジョン・デバイス、および／または移動体デバイスにおいてアプリケーションを実行するとき、シームレスなユーザー体験のための遍在環境を可能にする。サービスおよびアプリケーションは、アプリケーションを利用し、ビデオ・ゲームをプレーし、ビデオを視聴する等の間１つのデバイスから次のデバイスに移るとき３つの環境全てにおいて共通のユーザー体験のために実質的に同様に実行する。
【００８１】
[00102]  システム例７００では、複数のデバイスが中央計算デバイスを介して相互接続される。中央計算デバイスは、複数のデバイスに対してローカルであってもよく、または複数のデバイスから離れて位置してもよい。一実施形態では、中央計算デバイスは、１つ以上のサーバー・コンピューターのクラウドであってもよく、１つ以上のサーバー・コンピューターは、ネットワーク、インターネット、または他のデーター通信リンクを介して複数のデバイスに接続される。一実施形態では、この相互接続アーキテクチャが、複数のデバイスに跨がって機能を伝え、複数のデバイスのユーザーに共通でシームレスなユーザー体験を提供することを可能にする。複数のデバイスの各々は、異なる物理的要件および能力を有してもよく、中央計算デバイスは、デバイスへの体験の配信を可能にするプラットフォームを使用し、この体験は、このデバイスに合わせて作られ、しかも全てのデバイスに共通する。一実施形態では、ターゲット・デバイスのクラスが作られ、体験は包括的なデバイスのクラスに合わせて作られる。デバイスのクラスは、物理的特徴、使用のタイプ、またはデバイスの他の共通する特性によって定めることができる。
【００８２】
[00103]  種々の実現例において、計算デバイス１０２は、コンピューター７０２、移動体７０４、およびテレビジョン７０６の使用というような、種々の異なる構成を想定することができる。これらの構成の各々は、一般に異なる構造および能力を有してもよいデバイスを含み、したがって、計算デバイス１０２は、異なるデバイス・クラスの内１つ以上にしたがって構成することができる。例えば、計算デバイス１０２は、パーソナル・コンピューター、デスクトップ・コンピューター、マルチスクリーン・コンピューター、ラップトップ・コンピューター、ネットブック等を含むコンピューター・デバイス・クラス７０２として実装することができる。これらの異なる構成の各々は、アプリケーション１０８および独立ヒット・テスト・コンポーネント１１０を含むことによって例示されるように、本明細書において説明した技法を採用することができる。
【００８３】
[00104]  また、計算デバイス１０２は、移動体デバイス・クラス７０４として実現することもできる。このクラスは、移動体電話機、携帯用音楽プレーヤー、携帯用ゲーミング・デバイス、タブレット・コンピューター、マルチスクリーン・コンピューター等のような、移動体デバイスを含む。また、計算デバイス１０２は、テレビジョン・デバイス・クラス７０６として実現することもできる。このクラスは、普段の視聴環境における、一般にもっと大きな画面を有するまたはこれに接続されたデバイスを含む。これらのデバイスは、テレビジョン、セット・トップ・ボックス、ゲーミング・コンソール等を含む。本明細書において説明した技法は、計算デバイス１０２のこれら種々の構成によってサポートされることが可能であり、本明細書において説明した技法の特定例に限定されるのではない。
【００８４】
[00105]  クラウド７０８は、コンテンツ・サービス７１２のためのプラットフォーム７１０を含む、および／またはこのプラットフォーム７１０を代表する。プラットフォーム７１０は、クラウド７０８のハードウェア・リソース（例えば、サーバー）およびソフトウェア・リソースの基礎機能を抽象化する。コンテンツ・サービス７１２は、計算デバイス１０２から離れたサーバーにおいてコンピューター処理が実行される間に利用することができるアプリケーションおよび／またはデーターを含むこともできる。コンテンツ・サーバー７１２は、インターネットを介したサービスとして、および／またはセルラまたはＷｉ−Ｆｉネットワークのような加入者ネットワークを介したサービスとして提供することができる。
【００８５】
[00106]  プラットフォーム７１０は、計算デバイス１０２を他の計算デバイスと接続するために、リソースおよび機能を抽象化することができる。また、プラットフォーム７１０は、プラットフォーム７１０を介して実現されるコンテンツ・サービス７１２に対して出された要求に対して、対応する規模(scale level)を提供するために、リソースのスケーリングを抽象化する役割を果たすこともできる。したがって、相互接続デバイス環境では、本明細書において説明した機能の実現は、システム７００にわたって分散されてもよい。例えば、機能は、部分的に計算デバイス１０２において実現され、更にクラウド７０８の機能を抽象化するプラットフォーム７１０を介して実現されてもよい。
【００８６】
[00107]  図８は、本明細書において説明した技法の実施形態を実現するために図１および図７を参照して説明したような、任意のタイプの計算デバイスとして実現することができるデバイス例８００の種々のコンポーネントを示す。デバイス８００は、デバイス・データー８０４（例えば、受信データー、受信しているデーター、ブロードキャストが予定されているデーター、データーのデーター・パケット等）の有線および／またはワイヤレス通信を可能にする通信デバイス８０２を含む。デバイス・データー８０４または他のデバイス・コンテンツは、デバイスの構成設定値、デバイスに格納されたメディア・コンテンツ、および／またはデバイスのユーザーに関連する情報を含むことができる。デバイス８００に格納されるメディア・コンテンツは、任意のタイプのオーディオ、ビデオ、および／または画像データーを含むことができる。デバイス８００は、１つ以上のデーター入力８０６を含み、これらを介して、ユーザー選択可能な入力、メッセージ、音楽、テレビジョン・メディア・コンテンツ、記録されたビデオ・コンテンツ、ならびに任意のコンテンツおよび／またはデーター・ソースから受信される任意の他のタイプのオーディオ、ビデオ、および／または画像データーというような、任意のタイプのデーター、メディア・コンテンツ、および／または入力を受けることができる。
【００８７】
[00108]  また、デバイス８００は、通信インターフェース８０８も含む。通信インターフェース８０８は、シリアルおよび／またはパラレル・インターフェース、ワイヤレス・インターフェース、任意のタイプのネットワーク・インターフェース、モデムの内１つ以上として、更に任意の他のタイプの通信インターフェースとして実現することができる。通信インターフェース８０８は、デバイス８００と通信ネットワークとの間に接続および／または通信リンクを設け、これによって、他の電子デバイス、計算デバイス、および通信デバイスがデーターをデバイス８００と伝達する。
【００８８】
[00109]  デバイス８００は、１つ以上のプロセッサー８１０（例えば、マイクロプロセッサー、コントローラー等の内任意のもの）を含む。プロセッサー８１０は、デバイス８００の動作を制御するため、そして本明細書において説明した技法の実施形態を実現するために、種々のコンピューター実行可能命令を処理する。あるいはまたは加えて、デバイス８００は、ハードウェア、ファームウェア、または固定論理回路の内任意の１つまたは組み合わせによって実現することもできる。これは、全体的に８１２で識別される処理および制御回路と関連付けて実装される。図示しないが、デバイス８００は、当該デバイス内部の種々のコンポーネントを結合するシステム・バスまたはデーター転送システムを含むことができる。システム・バスは、メモリー・バスまたはメモリー・コントローラー、周辺バス、ユニバーサル・シリアル・バス、および／または種々のバス・アーキテクチャーの内任意のものを利用するプロセッサーまたはローカル・バスというような、異なるバス構造の内任意の１つまたは組み合わせを含むことができる。
【００８９】
[00110]  また、デバイス８００は、１つ以上のメモリー・コンポーネントというような、コンピューター読み取り可能媒体８１４も含む。その例には、ランダム・アクセス・メモリー（ＲＡＭ）、不揮発性メモリー（例えば、リード・オンリー・メモリー（ＲＯＭ）、フラッシュ・メモリー、ＥＰＲＯＭ、ＥＥＰＲＯＭ等の内任意の１つ以上）、およびディスク記憶デバイスが含まれる。ディスク記憶デバイスは、ハード・ディスク・ドライブ、記録可能および／または再書き込み可能コンパクト・ディスク（ＣＤ）、任意のタイプのディジタル・バーサタイル・ディスク（ＤＶＤ）等というような、任意のタイプの磁気または光記憶デバイスとして実現することができる。また、デバイス８００は、大容量記憶媒体デバイス８１６も含むことができる。
【００９０】
[00111]  コンピューター読み取り可能媒体８１４は、デバイス・データー８０４、更には種々のデバイス・アプリケーション８１８ならびにデバイス８００の動作形態に関係する任意の他のタイプの情報および／またはデーターを格納するためのデーター記憶メカニズムを提供する。例えば、オペレーティング・システム８２０は、コンピューター・アプリケーションとして、コンピューター読み取り可能媒体８１４によって維持され、プロセッサー８１０において実行することができる。デバイス・アプリケーション８１８は、デバイス・マネージャー（例えば、制御アプリケーション、ソフトウェア・アプリケーション、信号処理および制御モジュール、特定のデバイスにネーティブなコード、特定のデバイスのためのハードウェア抽象層等）を含むことができる。また、デバイス・アプリケーション８１８は、本明細書において説明した技法の実施形態を実現するために任意のシステム・コンポーネントまたはモジュールも含むことができる。この例では、デバイス・アプリケーション８１８は、ソフトウェア・モジュールおよび／またはコンピューター・アプリケーションとして示される、インターフェース・アプリケーション８２２および入力／出力モジュール８２４を含む。入力／出力モジュール８２４は、タッチ・スクリーン、トラック・パッド、カメラ、マイクロフォン等のような、入力を取り込むように構成されたデバイスにインターフェースを提供するために使用されるソフトウェアを代表する。あるいはまたは加えて、インターフェース・アプリケーション８２２および入力／出力モジュール８２４は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組み合わせとして実現することができる。加えて、入力／出力モジュール８２４は、視覚入力およびオーディオ入力をそれぞれ取り込む別のデバイスというような、複数の入力デバイスをサポートするように構成することもできる。
【００９１】
[00112]  また、デバイス８００は、オーディオおよび／またはビデオ入力−出力システム８２６も含む。これは、オーディオ・データーをオーディオ・システム８２８に供給し、および／またはビデオ・データーをディスプレイ・システム８３０に供給する。オーディオ・システム８２８および／またはディスプレイ・システム８３０は、オーディオ、ビデオ、および画像データーを処理する、表示する、および／またはそれ以外でレンダリングする任意のデバイスを含むことができる。ビデオ信号およびオーディオ信号は、デバイス８００からオーディオ・デバイスおよび／またはディスプレイ・デバイスに、ＲＦ（無線周波数）リンク、Ｓ−ビデオ・リンク、複合ビデオ・リンク、コンポーネント・ビデオ・リンク、ＤＶＩ（ディジタル・ビデオ・インターフェース）、アナログ・オーディオ接続、または他の同様の通信リンクを介して伝達することができる。実施形態では、オーディオ・システム８２８および／またはディスプレイ・システム８３０は、デバイス８００に対して外部コンポーネントとして実装される。あるいは、オーディオ・システム８２８および／またはディスプレイ・システム８３０は、デバイス例８００の統合コンポーネントとして実装される。
結論
[00113]  １つ以上の実施形態において、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを、ウェブ・コンテンツに対するヒット・テストのために利用する。ヒット・テストのために別のスレッドを使用することにより、ターゲットを素早く確認することが可能になる。しかるべき応答が、パンニングおよびピンチ・ズーミングのような、タッチ操作のために使用することができる操作スレッドというような、別のスレッドによって処理される場合、主スレッドにおいてブロックすることなく、操作を行うことができる。この結果、種々のシナリオにわたって、ロー・エンド・ハードウェアにおいてでも、応答時間は常に短くなる。
【００９２】
[00114]  少なくともある実施形態では、ウェブ開発者が、彼らのウェブページ上でタッチ行動のような特定のデフォルト行動を要求するためのメカニズムを提供する。少なくともある実現例では、カスケード・スタイル・シート（ＣＳＳ）ルールを利用して、パンニング、ピンチ・ズーム、およびダブルタップ・ズーム操作というような操作をイネーブルまたはディスエーブルする。このメカニズムは、今後追加される追加のデフォルト行動に対応するように拡張可能にすることができる。種々の実施形態において、行動は前もって宣言されるので、したがって命令モード(imperative model)を採用するソリューションとは異なる。この手法の宣言的性質は、主スレッドからの完全な独立の達成を可能とし、更に独立したヒット・テストを使用して正しい応答を決定することを可能にする。
【００９３】
[0115]  ある実施形態は、独立ヒット・テスト・スレッド内において追加の処理および／または論理処理を実行する能力を設ける。場合によっては、独立ヒット・テスト・スレッドは、１つ以上の入力シナリオ間で識別するように構成することができる。あるいはまたは加えて、入力シナリオに対する１つ以上の応答アクションを少なくとも部分的に初期化することができる。１つ以上の入力シナリオから別個の入力シナリオを判定するとき、関連する応答アクションを開始する、および／または実行のために別のスレッドに渡すことができる。尚、応答アクションを終了する通知を、少なくとも部分的に初期化された応答アクションを管理するスレッドに送ることができる場合もある。
【００９４】
[00116]  以上、構造的特徴および／または方法論的アクトに特定の文言で実施形態について説明したが、添付する請求項において定められる種々の実施形態は、必ずしも説明した特定の特徴やアクトには限定されないことは理解されよう。逆に、特定の特徴およびアクトは、種々の実施形態を実現する形態例として開示したまでである。
【図１】
2016531335.tif 000003
【図２】
2016531335.tif 000004
【図３】
2016531335.tif 000005
【図３ａ】
2016531335.tif 000006
【図３ｂ】
2016531335.tif 000007
【図４】
2016531335.tif 000008
【図５】
2016531335.tif 000009
【図６】
2016531335.tif 000010
【図７】
2016531335.tif 000011
【図８】
2016531335.tif 000012
【国際調査報告】
2016531335.tif 000013
2016531335.tif 000014
2016531335.tif 000015