(57)【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
コンピュータ上で動作するインターネットブラウザアプリケーションによってマークアップ言語文書を受信することと、ここで、前記マークアップ言語文書は、前記インターネットブラウザアプリケーションが直接的なアクセスを許可されないコンピュータのファイルシステムの一部分にアクセスするための命令を含み、
前記インターネットブラウザアプリケーションによって前記マークアップ言語文書を処理することと、
前記インターネットブラウザアプリケーションからブラウザプラグインモジュールへ前記コンピュータの前記ファイルシステムの前記一部分に関連する情報の要求を送信することと、ここで、前記要求は、前記コンピュータの前記ファイルシステムの前記一部分を識別する情報を含み、かつ、前記要求は、前記マークアップ言語文書を送信したウェブサイトの信頼性を確認するための情報のハッシュ値を含み、
前記ブラウザプラグインモジュールによって、前記受信した前記マークアップ言語文書内の前記命令に基づいて第２のハッシュ値を決定することと、
前記ブラウザプラグインモジュールによって、前記第２のハッシュ値と前記要求内の前記ハッシュ値との比較に基づいて、前記マークアップ言語文書を送信したウェブサイトの信頼性を確認することと、
前記確認に応じて、前記インターネットブラウザアプリケーションによって、前記要求された前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報を受信することと、
前記マークアップ言語文書の命令に従って、前記インターネットブラウザアプリケーションによって、前記受信した前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報をレンダリングすることと、
を備える方法。
【請求項２】
前記マークアップ言語の命令に応じて、前記ブラウザプラグインモジュールをロードすることを更に備える、請求項１に記載の方法。
【請求項３】
前記ブラウザプラグインモジュールはヘッドレスである、請求項１又は２に記載の方法。
【請求項４】
前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータの前記ファイルシステムの前記一部分のファイルについてのメタデータを含む、請求項１乃至３のいずれかに記載の方法。
【請求項５】
前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータの前記ファイルシステムの前記一部分のディレクトリについてのメタデータを含む、請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータの前記ファイルシステムの前記一部分のファイルに関連するピクチャ情報を含む、請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータの前記ファイルシステムの前記一部分のファイルからのコンテンツを含む、請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記ブラウザプラグインモジュールへ情報の要求を送信することは、前記ブラウザプラグインモジュールにより提供される機能の呼び出しを行うことを含む、請求項１乃至７のいずれかに記載の方法。
【請求項９】
前記ファイルシステムの前記一部分を識別する前記情報は、前記ファイルシステムの前記一部分内のディレクトリの経路を含む、請求項１乃至８のいずれかに記載の方法。
【請求項１０】
前記ファイルシステムの前記一部分を識別する前記情報は、前記ファイルシステムの前記一部分内のファイルの経路を含む、請求項１乃至８のいずれかに記載の方法。
【請求項１１】
前記レンダリングすることは、前記インターネットブラウザアプリケーションによって前記コンピュータの前記ファイルシステムの前記一部分からのファイルの名前をレンダリングすることを含む、請求項１乃至１０のいずれかに記載の方法。
【請求項１２】
前記レンダリングすることは、前記コンピュータの前記ファイルシステムの前記一部分における１つ以上のファイルに関連するサムネイル画像をレンダリングすることを含む、請求項１乃至１１のいずれかに記載の方法。
【請求項１３】
マークアップ言語文書を記憶するコンピュータ読み取り可能記憶媒体であって、前記マークアップ言語文書は、
コンピュータシステム上で動作するインターネットブラウザアプリケーションにおいて情報をレンダリングするための命令を含む、マークアップ言語によりコード化されたコンテンツと、
前記インターネットブラウザアプリケーションが直接的なアクセスを許可されない前記コンピュータシステムのファイルシステムの一部分に関連する情報を取り出すとともに、前記インターネットブラウザアプリケーションによって前記情報をレンダリングするための命令と、を含み、
前記命令は、前記コンピュータシステム上で実行される前記インターネットブラウザアプリケーションに解釈されるためのものであり、前記コンピュータシステムに、
前記インターネットブラウザアプリケーションからブラウザプラグインモジュールに対する前記コンピュータシステムの前記ファイルシステムの前記一部分に関連する情報の要求であって、前記コンピュータシステムの前記ファイルシステムの前記一部分を識別する情報を含み、且つ前記マークアップ言語文書を送信したウェブサイトの信頼性を確認するための情報のハッシュ値を含む該要求を送信させ、
前記インターネットブラウザアプリケーションによって前記コンピュータシステムの前記ファイルシステムの前記一部分に関連する前記情報を受信させ、および
前記マークアップ言語文書の命令に従って、前記インターネットブラウザアプリケーションによって、前記受信した前記コンピュータシステムの前記ファイルシステムの前記一部分に関連する前記情報をレンダリングさせる、
ための前記命令を含む前記マークアップ言語文書を記憶してなり、
前記ブラウザプラグインモジュールは、前記受信した前記マークアップ言語文書内の前記命令に基づいて第２のハッシュ値を決定し、且つ、前記第２のハッシュ値と前記要求内の前記ハッシュ値との比較に基づいて、前記マークアップ言語文書を送信したウェブサイトの信頼性を確認するように構成されている、
ことを特徴とするコンピュータ読み取り可能記憶媒体。
【請求項１４】
情報を取り出すための前記命令は、前記コンピュータシステムに前記ブラウザプラグインモジュールをロードさせる、請求項１３に記載のコンピュータ読み取り可能記憶媒体。
【請求項１５】
前記コンピュータシステムの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータシステムの前記ファイルシステムの前記一部分のファイルに関連するピクチャ情報を含む、請求項１３又は１４に記載のコンピュータ読み取り可能記憶媒体。
【請求項１６】
前記コンピュータシステムの前記ファイルシステムの前記一部分を識別する前記情報は、前記コンピュータシステムの前記ファイルシステムの前記一部分内のファイルの経路を含む、請求項１３乃至１５のいずれかに記載のコンピュータ読み取り可能記憶媒体。
【請求項１７】
コンピュータにより実施される方法であって、
コンピュータ上で動作するインターネットブラウザアプリケーションが直接的なアクセスを許可されない前記コンピュータのファイルシステムの一部分に関連する情報の要求を、ブラウザプラグインによって、受信することと、ここで、前記要求は、前記インターネットブラウザアプリケーションによって受信されたマークアップ言語文書内の命令の処理に応じて該インターネットブラウザアプリケーションによって送出され、かつ、前記要求は、前記マークアップ言語文書を送信したウェブサイトの信頼性を確認するための情報のハッシュ値を含み、
前記ブラウザプラグインによって、前記受信した前記要求内の情報に基づいて第２のハッシュ値を決定することと、
前記ブラウザプラグインによって、前記第２のハッシュ値と前記要求内の前記ハッシュ値との比較に基づいて、前記マークアップ言語文書を送信したウェブサイトの信頼性を確認することと、
前記確認に応じて、前記要求された前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報であって、前記マークアップ言語文書の命令に従って前記インターネットブラウザアプリケーションによってレンダリングされる該情報を、前記インターネットブラウザアプリケーションに送信することと、
を備える方法。
【請求項１８】
前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータの前記ファイルシステムの前記一部分のファイルについてのメタデータを含む、請求項１７に記載の方法。
【請求項１９】
前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータの前記ファイルシステムの前記一部分のディレクトリについてのメタデータを含む、請求項１７又は１８に記載の方法。
【請求項２０】
前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータの前記ファイルシステムの前記一部分のファイルに関連するピクチャ情報を含む、請求項１７乃至１９のいずれかに記載の方法。
【請求項２１】
前記コンピュータの前記ファイルシステムの前記一部分に関連する前記情報は、前記コンピュータの前記ファイルシステムの前記一部分のファイルからのコンテンツを含む、請求項１７乃至２０のいずれかに記載の方法。
【請求項２２】
前記要求は、前記コンピュータの前記ファイルシステムの前記一部分を識別する情報を更に含み、該一部分を識別する情報は、前記コンピュータの前記ファイルシステムの前記一部分内のファイルの経路を含む、請求項１７乃至２１のいずれかに記載の方法。
【請求項２３】
マークアップ言語文書を記憶するコンピュータ読み取り可能記憶媒体であって、前記マークアップ言語文書は、
コンピュータシステム上で動作するインターネットブラウザアプリケーションにおいて情報をレンダリングするための命令を含む、マークアップ言語によりコード化されたコンテンツと、
前記インターネットブラウザアプリケーションが直接的なアクセスを許可されない前記コンピュータシステムのファイルシステムの一部分に関連する情報を取り出すとともに、前記インターネットブラウザアプリケーションによって前記情報をレンダリングするための命令と、を含み、
前記命令は、前記コンピュータシステム上で実行される前記インターネットブラウザアプリケーションに解釈されるためのものであり、ブラウザプラグインに、
前記インターネットブラウザアプリケーションが直接的なアクセスを許可されない前記コンピュータシステムの前記ファイルシステムの前記一部分に関連する情報の要求であって、前記インターネットブラウザアプリケーションによって受信されたマークアップ言語文書内の命令の処理に応じて前記インターネットブラウザアプリケーションによって送出され、且つ、前記マークアップ言語文書を送信したウェブサイトの信頼性を確認するための情報のハッシュ値を含む該要求を受信させ、
前記受信した前記要求内の情報に基づいて第２のハッシュ値を決定させ、
前記第２のハッシュ値と前記要求内の前記ハッシュ値との比較に基づいて、前記マークアップ言語文書を送信したウェブサイトの信頼性を確認させ、および
前記確認に応じて、前記要求された前記ファイルシステムの前記一部分に関連する前記情報であって、前記マークアップ言語文書の命令に従って前記インターネットブラウザアプリケーションによってレンダリングされる該情報を、前記インターネットブラウザアプリケーションに送信させる、
ための前記命令を含む前記マークアップ言語文書を記憶したコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上の情報リソースへのアクセスに使用されるブラウザアプリケーションの能力を増強するためのブラウザプラグインに関する。
【背景技術】
【０００２】
ブラウザアプリケーションにより、ユーザは、インターネットまたは個人のネットワーク等のネットワーク上のリソース、また、ユーザのコンピュータ上のリソースから得られる情報を取り出したり、提供したりできる。情報リソースまたはリソースは、コンピュータに記憶されるファイルであってもよく、例えば、文書、画像ファイル、ビデオファイル、その他あらゆるメディアファイルである。典型的な使用例としては、ウェブサーバは、ハイパーテキストマークアップランゲージ（ＨＴＭＬ）等のマークアップ言語により書かれた文書の形態で、クライアント装置上で実行されるブラウザアプリケーションへ情報を送信する。ブラウザアプリケーションにより取り出されるマークアップ言語文書は、データおよびブラウザアプリケーションにより実行される命令を含む。例えば、マークアップ言語文書には、ブラウザアプリケーションによりサポートされるスクリプトエンジンが実行するスクリプトが含まれる。ブラウザアプリケーションによりサポートされるスクリプト言語の一例としては、ＪＡＶＡＳＣＲＩＰＴ（登録商標）が挙げられる。また、マークアップ言語文書は、マークアップ言語で書かれた命令も含み、この命令は、ブラウザアプリケーションにクライアント装置上でユーザインターフェイスをレンダリング（表示あるいは表現）および描写するためのものである。
【０００３】
マークアップ言語文書の命令によって起こる意図的および非意図的な危害を避けるため、ブラウザアプリケーションは、マークアップ言語文書により実行され得る命令の能力を制限する。例えば、マークアップ言語文書は、クライアント装置のファイルシステムのうち制限された部分のみへのアクセスが許可される。マークアップ言語文書の命令がクライアント装置のファイルシステムに対して無制限のアクセスを許可されると、悪意のあるウェブサイトがクライアント装置に記憶された個人情報を窃取し、またはクライアント装置に記憶されたユーザファイルを消去することもでき、データの損失を招くことになる。ブラウザアプリケーションの能力を制限するフレームワークは、「サンドボックス」と呼ばれる。更に、マークアップ言語文書に含まれる命令の能力は、例えばＣまたはＣ＋＋といった汎用プログラミング言語を用いた処理に比べて限定されている。マークアップ言語文書により実現可能なスクリプティング能力を使用して特定の機能を実施すると、それによって得られるパフォーマンスは、汎用プログラミング言語を用いた実施と比較して速度が遅い。
【発明の概要】
【０００４】
本発明の実施形態によれば、クライアント装置のファイルシステムの一部分への制限付きアクセスのみが許可されるブラウザアプリケーションにおける、マークアップ言語文書の処理能力が増強される。上記クライアント装置は、コンピュータシステム、携帯用通信装置、携帯電話、またはブラウザアプリケーションを実行できるあらゆる計算装置であってもよい。「ヘッドレス」プラグイン（ユーザとの対話を行うためのユーザインターフェイスを持たないブラウザプラグイン）等のブラウザプラグインを用いて、ブラウザアプリケーションの機能性が増強される。
【０００５】
一実施形態においては、ブラウザアプリケーションはウェブサイトからマークアップ言語文書を受信し、このマークアップ言語にはブラウザアプリケーションが直接アクセスできないファイルシステムの複数の部分にアクセスするための命令が含まれており、ブラウザアプリケーションはこのマークアップ言語文書の処理を行う。ブラウザアプリケーションの直接的アクセスが制限されているファイルシステムのこれらの部分にアクセスするために、ブラウザアプリケーションは、アクセス対象となるファイルシステムの上記部分を識別するブラウザプラグインモジュールへ要求を送信する。ブラウザアプリケーションは、ブラウザプラグインからファイルシステムの識別された部分に関連する情報を受信するとともに、マークアップ言語の命令に従ってこの情報を使用して、例えば、クライアント装置上で表示するために、この受信した情報をレンダリングする。ファイルシステムの識別された部分に関連する情報は、ファイルまたはディレクトリへの経路、ディレクトリコンテンツのリスト、ディレクトリ内のメディアファイルのサムネイル等のファイルまたはディレクトリに関連するメタデータ、あるいはブラウザアプリケーションが使用できるその他のあらゆるメタデータを含む、特定のファイルに関連するあらゆる情報を含んでもよい。
【０００６】
セキュリティ保全のために、一実施形態においては、マークアップ言語文書に従い、ブラウザアプリケーションはブラウザプラグインに情報の要求を送信する際に、この要求に付随するハッシュ値を用いる。ブラウザプラグインはこのハッシュ値を用いて上記要求の信頼性を確認し、これにより、無許可のマークアップ言語文書（例えば、他のウェブサイトから取得されたもの）または他の無許可のアプリケーションがブラウザプラグインにより提供される機能を呼び出すことを防ぐ。
【０００７】
本概要に記載される特徴および利点ならびに以下の詳細な説明は全てを網羅するものではない。多くの追加的特徴および利点は、本発明の図面、明細書および特許請求の範囲を考慮すれば、当業者には明らかであろう。 
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施例に係る、ウェブサイトと相互作用するブラウザアプリケーションを実行するクライアント装置のシステムアーキテクチャを示す図である。
【０００９】
【図２】本発明の一実施形態に係る、ブラウザアプリケーションがブラウザプラグインを用いて、ユーザファイルのローカルストレージについて記述する情報にアクセスする処理の相互作用図である。
【００１０】
【図３】本発明の一実施形態に係る、ユーザがブラウザアプリケーションと対話して、クライアント装置内に記憶された画像をウェブサーバにアップロードする処理の相互作用図である。
【００１１】
【図４】本発明の一実施形態に係る、ユーザファイルのディレクトリストラクチャをユーザが閲覧できるウェブページを示すブラウザアプリケーションの表示例である。
【００１２】
【図５】本発明の一実施形態に係る、ユーザファイルとして記憶された画像のサムネイルをユーザが閲覧できるウェブページを示すブラウザアプリケーションの表示例である。
【００１３】
【図６】本発明の一実施形態に係る、ウェブサーバにアップロードする画像のサムネイルをユーザが選択できるウェブページを示すブラウザアプリケーションの表示例である。
【００１４】
【図７】本発明の一実施形態に係る、選択した画像ファイルをクライアント装置からウェブサーバにアップロードする処理をユーザが開始できるウェブページを示すブラウザアプリケーションの表示例である。
【００１５】
【図８】本発明の一実施形態に係る、画像ファイルをウェブサーバにアップロードする処理の状況を表示するウェブページを示すブラウザアプリケーションの表示例である。
【００１６】
【図９】本発明の一実施形態に係る、プラグインを埋め込まないウェブページへ移動した後の処理状況をブラウザアプリケーションが表示する処理の相互作用図である。
【００１７】
図面は説明だけを目的とするものであり本発明の様々な実施形態を示す。当業者は以下の説明から、本明細書で示す構成および方法の代替の実施形態を、本明細書に記載された発明の原則から逸脱することなく採用してもよいことを容易に理解するであろう。
【発明を実施するための形態】
【００１８】
ブラウザアプリケーションの機能性を増強するためのブラウザプラグイン
ウェブアプリケーションの実施に使用されるマークアップ言語文書が実行する命令の能力が増強されれば、ウェブアプリケーションがもたらすユーザ体験の質を向上できる。更に、マークアップ言語文書が実行する増強された命令セットにより、増強された命令を用いなければ実施が不可能または非常に困難なウェブアプリケーションの特徴を開発することができる。  
【００１９】
例えば、ブラウザは一般的に、ウェブアプリケーションがクライアント装置の特定のユーザファイルにアクセスするのを防止することによって、悪意のあるウェブサイトがこうしたアクセスを行うことを回避するよう、構成されている。しかしながら、この制限は包括的な制限であり、クライアント装置に対する全ての危害を回避するように念入りに実施されている、信頼性のあるウェブサイトにおいて実行される信頼できるアプリケーションを含む、全てのアプリケーションへのアクセスを拒否してしまう。例えば、ユーザが他のユーザと画像を共有できるようにクライアント装置からウェブサーバへ画像ファイルをアップロードするウェブアプリケーションは、クライアント装置に記憶されたユーザファイルにアクセスする必要がある。マークアップ言語文書による、クライアント装置上のユーザファイルへのアクセスを容易にすることで、開発者はアプリケーション（例えば、画像共有ウェブアプリケーション等）の開発を容易に行えるようになり、ユーザにとってより快適なユーザ体験、より高速なパフォーマンス、および特定のウェブサイト、アプリケーション、またはアクティビティに対して具体的にカスタマイズされたユーザインターフェイスを可能にする。
【００２０】
こうしたアクセスおよびそれに伴う利益は、ブラウザプラグインによって可能となる。ブラウザプラグインは、マークアップ言語文書にとって通常アクセスができないクライアント装置上で利用可能な様々なローカルリソースへのアクセスを提供する。ブラウザプラグインは、タスクのパフォーマンス向上も提供し、こうしたタスクは、マークアップ言語にも利用可能な基本的スクリプト言語によるサポートを用いて、非効率的に実施されていることが多い。一実施形態においては、ブラウザプラグインは、例えば、クライアント装置からウェブサーバへの画像のアップロード等の長時間実行タスクをウェブアプリケーションに開始させ、ユーザがこのタスクの進捗を定期的にモニタできるようにする。ユーザは、この長時間実行タスクをモニタしながら、ウェブアプリケーションを使用して他のタスクを行うことができる。一実施形態においては、ブラウザプラグインにより、計算集約型オペレーションをクライアント装置上で行うことができ、これにより、ウェブサーバの負荷は軽減される。例えば、画像またはビデオ処理タスクはクライアント装置上で行うことができる。クライアント側で処理を行う能力を使用することにより、クライアント装置とウェブサーバとの間で転送されるデータ量を低減でき、これにより、通信オーバーヘッドが低減し、ウェブアプリケーションのパフォーマンスが向上する。
【００２１】
ブラウザプラグインは、マークアップ言語文書に一般的に利用可能である命令セットに比べて、より多くの特徴を提供する汎用プログラミング言語を用いて実行される。ブラウザプラグインは、ブラウザプリケーションの機能性を拡張するＡｃｔｉｖｅＸ（登録商標）またはＮＳＡＰＩ（登録商標）等の技術に基づいている。プラグインは、バイナリ実行可能ファイルとして利用することができる。ブラウザプラグインはマークアップ言語文書から呼び出せないプログラミング言語で書かれている場合もあるため、ブラウザプラグインによって提供される機能性に対するアプリケーションプログラミングインターフェイスは、例えば、ブラウザアプリケーションのスクリプトエンジンがサポートする言語等の、マークアップ言語文書から呼び出せる言語を用いることで提供される。ブラウザプラグインは、不正変更された可能性のあるブラウザプラグインコードのダウンロードを回避するため、信頼性のある情報ソースからダウンロードおよびインストールされなければならない。ヘッドレスプラグインはユーザと対話するユーザインターフェイスを持たないプラグインである。
【００２２】
ブラウザアプリケーションの機能性は、アプレットと呼ばれるＪＡＶＡ（登録商標）プログラミング言語で書かれたプログラムを使用して拡張することができる。しかしながら、サンドボックスフレームワークは、このアプレットプログラムが利用可能なクライアント装置へのアクセスを制限する。署名付きＪａｖａ（登録商標）アプレットは、署名なしｊａｒに比べて、クライアント装置のより多くのリソースへアクセスできる。しかしながら、署名付きｊａｒはユーザに、要求されたアクセスの概要を示すとともにユーザにアクセスを拒否する機会を与えるダイアログボックスを提示する場合もある。しかしながら、信頼性のあるソースからユーザがダウンロードしたアプリケーションに対して、ローカルリソースへのアクセスについてユーザの許可を要求するダイアログボックスを提示した結果、速度の低下だけでなく、特定の目的、ウェブサイト、またはアプリケーションに対するカスタマイズ性の欠如（機能性および外観上の両面で）という点で、望ましくないユーザ体験をもたらすかもしれない。
システムアーキテクチャ
【００２３】
図１は、ネットワーク１２０上で、ウェブサイトをホストするサーバ１１５と相互作用するブラウザアプリケーション１４０を実行するクライアント装置１７０のシステムアーキテクチャを示す図である。サーバ１１５はウェブサーバ１０５とコンテンツデータベース１１０とを含む。クライアント装置１７０は、ブラウザアプリケーション１４０と、ブラウザ用ローカルストレージ１５０と、ユーザファイル用ローカルストレージ１５５と、タスク実行モジュール１６５と、ブラウザプラグイン１４５と、ローカルウェブサーバ１６０とを含む。ブラウザアプリケーション１４０は、ユーザインターフェイス１２５と、ブラウザランタイム１３０と、セキュリティモジュール１３５とを含む。
【００２４】
クライアント装置１７０は、メンバ入力を受け付けることができ、ネットワーク１２０を介してデータを送受信できる計算装置である。例えば、クライアント装置１７０は、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、個人用携帯情報端末（ＰＤＡ）、その他、計算機能およびデータ通信能力を含む如何なる装置であってもよい。クライアント装置１７０はネットワーク１２０を介して通信するように構成され、ネットワーク１２０は、有線および無線通信システムを使用するローカルエリアネットワークおよび／またはワイドエリアネットワークのあらゆる組合せを含んでもよい。ウェブサーバ１０５は、ネットワーク１２０を介して、サーバ１１５にホストされるウェブサイトと１つ以上のクライアント装置１７０とをリンクさせる。ウェブサーバ１０５は、ウェブページの他にＪａｖａ（登録商標）、Ｆｌａｓｈ（登録商標）、ＸＭＬ（登録商標）等のウェブ関連コンテンツ等も供給する。ウェブサーバ１０５が供給するコンテンツはコンテンツデータベース１１０に記憶される。一実施形態においては、ウェブサーバとブラウザアプリケーションとの間の通信にはハイパーテキストトランスファープロトコル（ＨＴＴＰ）が使用される。
【００２５】
ブラウザアプリケーション１４０により、ユーザは、インターネットまたはプライベートネットワーク上の利用可能なリソース内の利用可能な情報の取り出しおよび提示を行うことができる。ウェブサーバ１０５は、例えばＨＴＭＬ等のマークアップ言語で書かれた文書をブラウザアプリケーション１４０に送信する。情報リソースは、ユニフォームリソースロケータ（ＵＲＬ）によって識別され、ウェブページ、例えば画像またはビデオ等のメディアファイル、その他サーバ１１５にホストされるあらゆるコンテンツであってもよい。ブラウザアプリケーション１４０は、ユーザに情報を提示するとともにユーザが入力を行うことができるインターフェイス１２５を有する。ユーザによる入力は、ユーザが提供するデータ、またはサーバ１１５に送信されるユーザからの要求を含んでもよい。ウェブサイトをホストするサーバ１１５は、更なる情報をマークアップ言語文書の形態で提供することにより応答してもよい。マークアップ言語文書は、提供された情報をレンダリングするとともにクライアント装置１７０上でアクションを取るための情報および命令を含む。ブラウザランタイム１３０は、マークアップ言語文書を処理し、それをユーザインターフェイス１２５上で表示するためにレンダリングし、このマークアップ言語文書で与えられる命令に基づいてアクションを取る。ブラウザランタイム１３０の一部の実施形態は、例えば、ＪＡＶＡＳＣＲＩＰＴ（登録商標）等のクライアント側スクリプト言語を用いて提供される命令を処理するためのスクリプトエンジン１７５を含む。マークアップ言語文書は、このスクリプトエンジン１７５によりサポートされるクライアント側スクリプト言語を用いて提供される命令を含んでもよい。
【００２６】
マークアップ言語文書はクライアント装置１７０により処理される命令を含むことができるため、悪意のあるウェブサイトはクライアント装置に有害な命令を与え得る。セキュリティモジュール１３５は、クライアント装置１７０上のブラウザランタイム１３０のアクションを制御する。例えば、セキュリティモジュール１３５は、ブラウザランタイム１３０がクライアント装置１７０上のファイルシステムの複数の部分にアクセスすることを防止する。ブラウザランタイム１３０は、クライアント装置上の、ブラウザ用に確保されたローカルストレージ１５０の一部にアクセスすることができる。ローカルストレージ１５０の上記一部は、ブラウザランタイム１３０がデータをキャッシュしたり、ブラウザクッキーまたはその他のウェブページの処理に有用な情報を記憶したりするために使用してもよい。しかしながら、ブラウザランタイム１３０は、クライアント装置上のローカルストレージの他の部分にアクセスできなくてもよい。上記他の部分とは、例えば、ユーザファイルを記憶しているローカルストレージの一部である。ローカルストレージ１５５に記憶されるユーザファイルの例としては、ユーザがクライアント装置に記憶したテキスト文書、画像、およびビデオファイル等が挙げられる。
【００２７】
ブラウザプラグインは、ブラウザアプリケーション１４０の能力を増強するプログラムコードを含むモジュールである。ブラウザランタイム１３０は、ブラウザプラグイン１４５と相互作用して、ブラウザプラグイン１４５によって提供される機能を使用する。ブラウザプラグイン１４５のアクションはセキュリティモジュール１３５の制約を受けない。そのため、セキュリティモジュール１３５が許可しないブラウザランタイム１３０のアクションを、ブラウザプラグイン１４５により行えるようにしてもよい。例えば、ユーザファイル用ローカルストレージ１５５へのアクセスは、セキュリティモジュール１３５によって行うのではなく、ブラウザプラグイン１５５により可能としてもよい。ブラウザプラグインは、セキュリティモジュール１３５が敷くセキュリティをバイパスする能力を有するため、クライアント装置１７０のユーザが、ブラウザプラグイン１４５が信頼性のあるソースからダウンロードされたことを確認することが重要である。一実施形態においては、マークアップ言語文書が所定のドメインまたは所定のドメイン群から取得された場合のみ、ブラウザプラグイン１４５が要求を受け入れるようにしてもよい。ブラウザプラグインはマークアップ言語文書のソースの信頼性を確認し、このマークアップ言語文書が所定のドメイン以外のドメインから取得された場合には要求を拒否する。これにより、無許可のドメインがマークアップ言語文書を送信し、悪意のある目的でブラウザプラグイン１４５の能力を利用することを防止する。ブラウザプラグイン１４５は、ブラウザランタイム１３０が要求する長時間実行タスクを実行するためのアップロードスレッド１６５を起動してもよい。ブラウザプラグイン１４５は、クライアント装置上のローカルウェブサーバ１６０を起動して、ウェブサーバによりサポートされる機能性を利用してもよい。このローカルウェブサーバ１６０はクライアント装置上で実行される処理である。例えば、ブラウザランタイム１３０がローカルウェブサーバ１６０を使用して、クライアント装置１７０上で利用可能な画像をレンダリングしてもよい。
【００２８】
図２は、本発明の一実施形態に係る、ブラウザランタイム１３０がブラウザプラグイン１４５と相互作用して、ユーザファイル用ローカルストレージ１４５から得る情報にアクセスする処理の相互作用図である。ブラウザアプリケーション１４０のブラウザランタイム１３０はサーバ１１５からマークアップ言語文書を受信（２０５）する。マークアップ言語文書は、クライアント装置１７０内にブラウザプラグイン１４５がロードされていなければブラウザプラグイン１４５をロードし、クライアント装置１７０内に予めロードされていればプラグイン１４５とのリンクを取得する。実施形態によっては、ブラウザプラグインへのリンクの取得または作成を行うためのマークアップ言語命令は、「<embed>」と呼ばれるマークアップ言語タグである。この<embed>タグは、実行可能ファイルのファイル経路にプラグインコードを与える属性を特定する。例えば、マークアップ言語文書は、プラグインにとって実行可能なファイルが「plugin.exe」と呼ばれるとともにディレクトリ「../bin」において取得可能であることを特定するタグ<embed src="../bin/plugin.exe"・och>を含んでもよい。ブラウザランタイム１３０は取得したマークアップ言語文書を処理（２１０）する。マークアップ言語文書の処理２１０は、マークアップ言語文書の構文解析、このマークアップ言語文書が与える命令の処理、およびユーザインターフェイス１２５を用いて表示するためのマークアップ言語文書のレンダリングを含んでもよい。マークアップ言語文書は、セキュリティモジュール１３５によってブラウザランタイム１３０がアクセスできないファイルに関する情報を要求（２１５）してもよい。例えば、マークアップ言語文書は、ユーザファイル用ローカルストレージ１５５内のユーザファイルの情報を要求してもよい。
【００２９】
ブラウザプラグイン１４５は、無許可のドメインがブラウザプラグイン１４５の能力を濫用しようとしていないことを確かめるために、要求の信頼性を確認する。一実施形態においては、マークアップ言語文書はハッシュ値を生成する命令を含む。ブラウザプラグイン１４５はこのハッシュ値を用いて、マークアップ言語文書の信頼性を確認することができる。ハッシュ値は、異なる情報の組合せに基づいてもよい。一実施形態において、ハッシュ値は、例えばブラウザアプリケーションのプロセスＩＤ等、クライアント装置から収集された情報に基づいて計算される。一実施形態においては、ハッシュ値の計算に使用される情報はランダムに発生させた数値を含む。情報の要求がファイルに関連する場合、ハッシュ値の計算はこのファイルのフルパス名を含む。ブラウザランタイム１３０からブラウザプラグイン１４５への情報の要求はすべてハッシュ値を含む。ブラウザプラグインは、ファイルのフルパス名に基づいてハッシュ値を独立的に生成し、生成した値と要求に付随する値とを照合する。ブラウザプラグイン１４５への要求に付随するハッシュ値がブラウザプラグイン１４５の生成したハッシュ値と一致する場合、要求は処理され、そうでない場合には要求は拒否される。マークアップ言語文書を送信する無許可のドメインがハッシュ値生成のメカニズムの詳細を認識している可能性は低く、したがってこの無許可のドメインが与えるハッシュ値がブラウザプラグイン１４５の生成する値に一致する可能性も低い。ハッシュ生成メカニズムは、ウェブサーバ１０５およびブラウザプラグイン１４５が認識するソルトと呼ばれる値を用いてもよい。ソルトは、ハッシュ生成関数への入力として使用されるランダムビットを含む。クライアント特有のデータをハッシュの生成に使用してもよい。例えば、ブラウザアプリケーション１４０のプロセスＩＤをハッシュ生成に用いるソルトの一部として使用してもよい。実施形態によっては、ハッシュ値に基づく公開鍵暗号化メカニズムがブラウザプラグイン１４５への要求のソースの認証に使用される。
【００３０】
要求の信頼性の確認（２２０）が成功すると、ブラウザプラグインは、例えば、対応する情報の要求をユーザファイル用ローカルストレージ１５５に送信することによって、要求を処理する。ブラウザプラグインはユーザファイル用ローカルストレージ１５５へのアクセスが許可されているため、ユーザファイル用ローカルストレージ１５５は要求された情報を送信する。実施形態によっては、要求２２５および応答２３０は、例えば、ブラウザプラグイン１４５の実行に使用するＣまたはＣ＋＋等のプログラミング言語を使用して実行される関数呼出しであってもよい。ブラウザプラグインはファイルに関する情報を使用して処理２３５を行ってもよい。一実施形態においては、ファイルに関連する情報は、例えば、ファイルタイプ、ファイル拡張子、ファイルに関連する実行可能なプログラム、またはファイルに関連するユーザプレファレンス等のファイルに関連するメタデータである。ブラウザプラグインは画像ファイル用のサムネイルを生成してもよい。このサムネイルは、ファイルに関連するメタデータに基づいて生成または計算されてもよい。例えば、特定の拡張子を有するファイルをファイル拡張子に関連する特定のサムネイルを使用して表示してもよい。あるいはその代替として、特定の実行可能なプログラムに関連するファイルを、対応する実行可能なプログラムに関連するサムネイルを使用して表示してもよい。一実施形態においては、例えば、ウェブサーバ１０５にアップロードする必要があるビデオファイル等の大きなファイルをユーザ装置上のブラウザプラグイン１４５によりコード化して、アップロード時間を短縮したり、ファイルのコード化に起因するサーバ負荷を軽減したりすることができる。  
【００３１】
ブラウザプラグイン２３５は要求された情報をブラウザランタイム１３０に送信する。受信した情報は、ブラウザランタイム１３０がユーザインターフェイス１２５を使用して表示するためにマークアップ言語文書をレンダリングするのに使用される。実施形態によっては、ブラウザプラグインが、クライアント装置上で利用可能なローカルリソースへのアクセスを可能とする機能性を提供してもよい。例えば、クライアント装置１７０の位置を、クライアント装置１７０内で利用可能なワイヤレス能力を使用して取得してもよい。実施形態によっては、計算集約型タスクをブラウザプラグインにより行い、これによりウェブサーバ１０５上からクライアント装置１７０へ作業をオフロードしてもよい。ユーザがウェブアプリケーション上で他のタスクを行っている間に、ビデオコード化タスクをバックグラウンドで行ってもよい。ユーザは、このタスクを実行するウェブページから離れる前に、長時間実行タスクが完了するのを待つ必要はない。
【００３２】
一実施形態においては、ブラウザプラグイン１４５を使用してクライアント装置１７０上で頻繁に使用される情報をキャッシュし、サーバ１１５からの反復的な情報の送信による通信オーバーヘッドを回避する。別の実施形態においては、ブラウザプラグイン１４５を使用して、プログラムコードまたはその他のサーバ１１５がホストするウェブサイトからの情報をダウンロードする。ブラウザプラグイン１７０は要求のソースを確認するための認証メカニズムを有するため、ユーザはプログラムコードまたは情報が信頼性のあるソースからダウンロードされていると確信が持てる。ブラウザプラグイン１７０が信頼性のあるソースからプログラムコードをダウンロードする能力により、サーバ１１５がホストするウェブサイトからソフトウェアをインストールする際に、より快適なユーザ体験を提供できる。
フォトアップローダの実施例
【００３３】
ブラウザプラグイン１４５の能力は様々な方法で適用することができる。図３は、ユーザ３０５がブラウザアプリケーション１４０と対話して、ローカルストレージ１５５に記憶された画像をサーバ１１５にアップロードする処理の相互作用図である。サーバ１１５から適当なウェブページを受信することにより画像アップロードアプリケーションが起動されると、ブラウザプラグインがインスタンス生成（３０５）される。画像アプロードアプリケーションを起動する、サーバ１１５からのマークアップ言語文書には、ブラウザランタイム１３０にローカルストレージの最上位ディレクトリに関する情報を要求（３１０）させる命令が含まれる。ブラウザプラグインは、最上位ディレクトリを記述する情報をブラウザランタイム１３０に送信（３１５）する。最上位ディレクトリは、例えば、クライアント装置のディスクドライブのルートディレクトリ、またはユーザファイルの記憶を意図したオペレーティングシステム特有のディレクトリ等、所定ディレクトリであってもよい。ブラウザランタイム１３０は、最上位ディレクトリをレンダリングし、ユーザインターフェイス１２５にそれらを表示（３２０）させる。図４は、画像アップロードアプリケーションのユーザインターフェイスが最上位ディレクトリを示す際のスクリーンショットである。ユーザインターフェイスのパネル４１０は、デスクトップディレクトリ、ホームディレクトリ、およびピクチャディレクトリを含む最上位ディレクトリを示す。  
【００３４】
ユーザ３０５は、ディレクトリのコンテンツを見るために特定のディレクトリを選んで表示できる。例えば、図４においては、ピクチャディレクトリ４３０がユーザにより選択されている。ブラウザランタイム１３０は、ユーザの選択に応じて、ブラウザプラグイン１４５から選択されたディレクトリのディレクトリ情報を要求（３３０）する。ブラウザプラグイン１４５は要求された情報を取得するとともに、この要求された情報をブラウザランタイム１３０に送信（３３５）する。ブラウザランタイム１３０はユーザインターフェイス１２５にこの情報を表示する。図４のパネル４２０は、サブディレクトリ４４０を含む、選択されたディレクトリ４３０のサブディレクトリを示す。ユーザは、ディレクトリを選択して対応するサブディレクトリを閲覧する処理を繰り返し行うことができる。例えば、図５は、パネル５２０でサブディレクトリを見るためにパネル４２０で「フォトブース(Photo Booth)」と呼ばれるディレクトリ４４０をユーザが選択する例を示している。
【００３５】
ブラウザプラグイン１４５により送信（３３５）される、例えばディレクトリ５５０等のディレクトリについて要求される情報は画像ファイルを含んでもよい。ウェブアプリケーションにおける画像ファイルはサムネイルを使用して表示するのが好ましい。ディレクトリ内の各画像ファイルについて、ブラウザプラグインはこれらの画像ファイルに関する更なる情報へのアクセスに使用可能なＵＲＬを送信する。画像ファイルのＵＲＬにより、ブラウザランタイムはローカルウェブサーバ１６０を使用して画像ファイル情報にアクセスすることができる。例えば、ブラウザランタイム１３０は、ローカルウェブサーバ１６０に画像ファイルのＵＲＬを与えて、この画像ファイルに対応するサムネイルを要求（３４０）することができる。ローカルウェブサーバ１６０は画像ファイルの内容を処理（３４５）してサムネイル画像を生成するとともに、このサムネイル画像をブラウザランタイム１３０に送信（３５０）する。ブラウザランタイム１３０は、ローカルウェブサーバ１６０から受信した画像サムネイルをレンダリングし、サブディレクトリ情報とともにサムネイルをユーザインターフェイス１２５に表示（３５５）する。図５は、ユーザインターフェイスに表示されたパネル５７０が、選択されたディレクトリ５５０に記憶された画像ファイルに対応する画像のサムネイル５６０を表示している例を示している。ローカルウェブサーバ１６０へのアクセスには、ブラウザアプリケーションが、ウェブサーバ１０５の実行するあるドメインからダウンロードしたスクリプトを処理するとともに、ローカルウェブサーバ１６０の実行する別のドメインから得たデータを使用して文書のプロパティを編集することが必要となる。ブラウザアプリケーション１４０は同一生成元ポリシーを実施してもよい。同一生成元ポリシーは、あるドメインからロードされたスクリプトが別のドメインから得た文書のプロパティを処理することを防止する。一実施形態においては、文字列として与えられる動的スクリプトの実行を可能とするデータ交換形式を使用することにより、ブラウザへのこうした制限を克服する。例えば、ＪＳＯＮＰ(JavaScript（登録商標） Object Notation with Padding)は、外部ドメインから得たスクリプトコードを含むことができる<SCRIPT>タグを許容する。ローカルウェブサーバのＵＲＬを<SCRIPT>タグ内に埋込み、対応するウェブサイトから情報を取り出せる。<SCRIPT>タグ内で実行されるコードによりＵＲＬを参照できる。これにより、ブラウザプラグイン１４５はブラウザアプリケーション１４０の同一生成元ポリシーに対処できる。
【００３６】
ユーザ３０５は、サーバ１１５に画像ファイルをアップロードするためのサムネイル５６０を使用して１つ以上の画像ファイルを選択（３６０）できる。図６は、ユーザ３５０が選択した画像ファイル６３０のスクリーンショットを示す。ユーザが選択した画像ファイルのサムネイルは、選択した画像のサムネイルの周囲に境界線６１０を表示することにより、選択されていない画像から区別してもよい。ユーザインターフェイスボタン６２０により、ユーザは、ディレクトリの閲覧およびアップロードする画像の選択を行うユーザインターフェイスとの対話が完了したことを示すことができる。したがって、一実施形態においては、図７に示すユーザインターフェイスがユーザ３０５に提示される。このユーザインターフェイスは、アップロードするようにユーザが選択したファイル数７１０を示している。また、図７はユーザインターフェイスボタン７２０を示す。このユーザインターフェイスボタン７２０を使用して要求３６５をブラウザランタイム１３０に送信し、ファイルのアップロードを開始できる。
【００３７】
ブラウザランタイム１３０は、ブラウザプラグイン３６５に、選択した画像のアップロード処理を開始するよう要求する。ブラウザプラグイン３６５は、選択した画像ファイルをサーバ１１５にアップロードする処理を実行するアップロードスレッド１６５を起動する。ブラウザプラグイン３６５は、アップロードスレッド１６５からアップロード処理の状況を取得するとともに、この状況をブラウザランタイム１６０に提示できる。ブラウザランタイム１３０は、ユーザインターフェイス１２５においてユーザにアップロード状況を表示（３８０）する。図８は、進捗インジケータ８１０を使用してアップロード処理の状況を示す、一実施形態のスクリーンショットである。任意の時点のアップロード済みファイル数６２０を表示できる。別の実施形態においては、アップロード済みのデータ量または残りのアップロードデータ量を含むアップロード処理状況に関する情報が示される。一実施形態においては、タスク状況を説明するこの情報は、アップロードが必要な全データ量のパーセンテージとして示される。別の実施形態においては、タスク状況を説明するこの情報は残りのアップロードファイル数である。別の実施形態においては、タスク状況を説明するこの情報は、アップロードタスクが開始されてからの推定経過時間を含む。別の実施形態においては、タスク状況を説明するこの情報は、アップロードタスクが完了するまでの推定残り時間を含む。
【００３８】
クライアント装置１７０からサーバ１１５への画像のアップロードには非常に長い時間がかかることもあり、ユーザはこのアップロードタスクの進捗をモニタしながら他のアクティビティを続行してもよい。ユーザは、アップロードタスクを開始するために使用するウェブページから離れてもよい。結果として、新規のマークアップ言語文書がウェブサーバ１０５から取り出され、ブラウザアプリケーション１４０により表示される。マークアップ言語文書は詳細な命令を含む。この詳細な命令は、ブラウザプラグインとのリンクを作成および維持して、ブラウザランタイム１３０がマークアップ言語文書を処理しながらブラウザプラグイン１４５と相互作用できるようにする。ブラウザプラグイン１４５とのリンクを作成および維持するこの命令は、ブラウザプラグイン埋込み命令と呼ばれる。ドメインが提供する文書の全てがブラウザプラグイン１４５埋込み命令を含まなくてもよい。これは、これらの命令の実行はマークアップ言語文書の処理を遅くさせる可能性があるからである。ユーザが画像アップロードアプリケーションのウェブページから離れる際に、ブラウザプラグイン１４５へのリンクを作成および維持する命令を含まない新規のマークアップ言語文書を受信してもよい。ブラウザランタイム１３０はブラウザ用ローカルストレージ１５０に情報を記憶できる。このブラウザ用ローカルストレージ１５０により、ブラウザプラグイン１４５埋込み命令を有さないマークアップ言語文書が、画像アップロードタスクの状況を取り出すためにアップロードスレッド１６５と通信を行うことができる。
バックグラウンド処理状況の通信
【００３９】
図９は、ブラウザプラグイン１４５の埋込みを行わずに、マークアップ言語文書がアップロード処理状況を取得するとともに表示できる方法を説明している。写真をアップロードする例に関して説明しているが、言うまでもなく、この処理を用いてクライアント装置上で、そうでなければクライアント装置と通信して、実行されるあらゆる処理の状況を取得できる。例えば、マークアップ言語文書は、クライアント装置へのファイルのダウンロードおよびインストールを開始するスレッドを起動してもよい。本発明の実施形態を用いて、この処理の状況を取得するとともにブラウザアプリケーションにおいてこの状況を表示してもよい。これは、マークアップ言語文書に埋め込まれているか、そうでなければリンクされている、バックグラウンド処理を有さないマークアップ言語文書をブラウザアプリケーションが処理する際に行われてもよい。
【００４０】
図９の例で説明するように、ブラウザランタイム１３０がサーバ１１５から受信（９０５）した第１の文書は、ブラウザプラグイン１４５へのリンクを維持する命令を含む。ブラウザランタイム１３０は、この第１のマークアップ言語文書を処理（９１０）するとともに、画像アップロードタスクの実行を開始（９１５）する。第１のマークアップ言語文書は、ブラウザ用ローカルストレージ１５０と通信するとともにタスクに関連する情報を保存するための命令を含む。
【００４１】
一実施形態においては、ブラウザクッキーメカニズムを使用して、ブラウザ用ローカルストレージ１５０に記憶されたタスクに関連する情報を記憶する。このブラウザクッキーは、テキスト文字列としての情報を表す１つ以上の名前・値ペアを記憶する。一実施形態においては、ブラウザクッキーは、ローカルウェブサーバ１６０を使用してアクセスできるウェブページのＵＲＬとアップロードタスクの開始時間とを記憶する。ブラウザランタイム１３０は、ローカルウェブサーバ１６０上で利用可能なウェブページのＵＲＬを使用してアップロードタスクの状況を取得する。  
【００４２】
実施形態によっては、ローカルサーバ上のウェブページのＵＲＬは認証目的のハッシュ値を含む。ローカルウェブサーバ１６０は独立的にハッシュ値を生成し、ＵＲＬのハッシュ値と照合して、ローカルウェブサーバ１６０にアクセスするマークアップ言語文書のソースの信頼性を確認する。結果として、無許可のソースからのマークアップ言語文書はローカルウェブサーバ１６０にアクセスできない。これにより、無許可のウェブサイトが悪意のある目的でローカルウェブサーバ１６０を濫用することを防止する。
【００４３】
一実施形態においては、ブラウザプラグイン１４５は、マークアップ言語のソースの信頼性を確認するために使用するハッシュ値を生成する必要がある。ブラウザアプリケーション１４０がサーバ１１５からロードしたウェブページで、アップロードタスクの進捗を表示する必要があるものには全て、ブラウザプラグイン１４５を埋め込むことができる。しかしながら、ブラウザプラグイン１４５をウェブページに埋め込むことで、ウェブページをロードする速度は遅くなる。このため、ウェブページロードのパフォーマンスを向上するために、ブラウザプラグイン１４５はサーバ１１５からの全てのウェブページには埋め込まれない。ブラウザプラグイン１４５を用いる代わりに、ローカルウェブサーバ１６０からハッシュ値を含むＵＲＬへ直接的にアクセスして、進捗情報を取得することもできる。したがって、ＵＲＬは、ブラウザクッキーメカニズムを使用してクライアント装置１７０上に記憶される。ブラウザアプリケーション１４０がロードする後続のウェブページであってブラウザプラグイン１４５が埋め込まれていないものには、クライアント装置１７０上に記憶された対応するブラウザクッキーを使用して上記ＵＲＬを取り出すとともに、このＵＲＬを使用して進捗情報を取り込む命令が含まれる。
【００４４】
ユーザが第１のマークアップ言語文書から離れる際に、ブラウザランタイム１３０は、第２のマークアップ言語文書を受信（９２５）するとともに処理（９３０）する。この第２のマークアップ言語文書はブラウザプラグイン１４５の埋込みを行わない。第２のマークアップ言語文書は、保存されたタスク情報が利用可能な場合には、これを処理する命令を含む。保存されたタスク情報とは、例えば、第１マークアップ言語により記憶（９２０）したブラウザクッキー等である。ブラウザランタイム１３０は、ブラウザ用ローカルストレージ１５０へ要求９３５を送信して保存されたタスク情報を取り出し、ローカルストレージ１５０は保存されたタスク情報を返す。保存されたタスク情報により、ブラウザランタイム１３０はローカルウェブサーバ１６０にあるタスク情報を要求（９４５）できる。この要求９４５に応じて、ローカルウェブサーバはアップロードスレッド１６５の状況をポーリング（９５０）する。アップロードスレッド１６５はローカルウェブサーバ１６０にアップロードタスクの状況を返し、ローカルウェブサーバ１６０はタスクの状況をブラウザランタイム１３０に返す。タスクが依然実行中であれば、ブラウザランタイム１３０は第２マークアップ言語をレンダリング（９６５）し、例えば図８に示すタスク状況を表示する。
【００４５】
アップロードタスクが完了していれば、ユーザインターフェイス１２５上に適当な情報を表示し、アップロードタスクに関連する保存された情報はローカルストレージ１５０から消される。アップロードタスクに関連する保存された情報が消されれば、新規のアップロードタスクが開始されない限り、サーバ１１５からロードされる如何なる後続のマークアップ言語文書も、ローカルウェブサーバ１６０へのコンタクトを試行しないであろう。一実施形態においては、タスク情報はブラウザクッキーとして保存され、このブラウザクッキーはアップロードタスクが完了すると消される。
【００４６】
図９は、ブラウザアプリケーション１４０が第１および第２のマークアップ言語文書を受信する同一のインスタンスを示す。ブラウザアプリケーションが第１のマークアップ言語文書を受信するインスタンスは、ブラウザアプリケーションが第２のマークアップ言語文書をダウンロードするインスタンスと異なっていてもよい。例えば、ブラウザアプリケーション１４０が第１のマークアップ言語文書を受信するインスタンスが閉じられ、そしてブラウザアプリケーション１４０が再起動されて、第２マークアップ言語を受信する第２のインスタンスをインスタンス生成できる。第２のマークアップ言語文書を受信した後の処理工程の処理を、ブラウザアプリケーション１４０の第２インスタンスにより行ってアップロードタスクの状況を表示できる。
【００４７】
図９では、第１および第２のマークアップ言語文書の両方が、保存されたタスク情報を処理するための命令を含んでいるため、両方のマークアップ言語文書はサーバ１１５のホストする同一のウェブサイトから受信されると仮定している。２つのマークアップ言語文書の開発作業は調和的に行われなくてはならず、２つの独立したベンダが提供する２つの異なるウェブサイトから取得されたマークアップ言語文書が、既に保存されたタスク情報を処理するための命令を有する可能性は低い。したがって、図９に示すように、ユーザは第１のマークアップ言語文書から離れるが、同一のドメインから取得したウェブページに留まる。一実施形態においては、第１および第２のマークアップ言語文書は、この２つが保存されたタスク情報を処理するための命令を含むとともに、ローカルウェブサーバ１６０へのアクセスが許可されているという前提で、別々のドメインから取得されることができる。代替の実施形態においては、第１のマークアップ言語文書を提供するドメインによりツールバーが提供される。ツールバーは、ユーザがナビゲートしているドメインから独立してブラウザアプリケーション１４０上に留まる。ツールバーは、ユーザがあらゆるドメインの提供するあらゆるウェブサイトへナビゲートできる状態で、アップロードタスクの状況を提供し続けることができる。
【００４８】
図９に示す処理によりモニタできるタスクは、画像のアップロードに限定されず、別のタスクであってもよい。例えば、ブラウザプラグインが提供する長時間実行計算の状況は、図９に示す処理によりモニタしてもよい。別の実施形態においては、その他に例えば、ビデオ、音声ファイルまたは大きな文書を含むメディアファイル等、大きなファイルのアップロードをモニタしてもよい。別の実施形態においては、長時間実行タスクは、クライアント装置１７０上で行われるシステムメンテナンスタスクであってもよい。
変形例
【００４９】
本発明に係る実施形態の上記の記載は説明の目的で提供されており、本発明を網羅または開示された厳密な形態に限定することを意図していない。当業者は、上述の開示を考慮した上で、多くの変形および変更が可能であることを理解できるであろう。
【００５０】
上記記述の一部分は、情報での動作のアルゴリズムおよび記号表現の観点から本発明の実施形態を説明している。これらのアルゴリズム的記述および表現は、情報処理技術の当業者がそれらの作用の実質を他の当業者に効率的に伝えるために一般的に使用するものである。上記の動作は、機能的、計算的、または論理的に説明されているが、コンピュータプログラムまたは同等の電気回路、マイクロコード等により実施されると理解される。更に、これらの動作の配列をモジュールとして参照することは、一般性を失うことなく、時に簡便であることも証明されている。上述の動作およびそれらに関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらのあらゆる組合せで実施してもよい。
【００５１】
本明細書に記載する如何なる工程、動作、または処理も、１つ以上のハードウェアまたはソフトウェアモジュールを用いて、それ自体のみ、または他の装置との組合せで実現または実施してもよい。一実施形態においては、ソフトウェアモジュールは、コンピュータプログラムコードを含むコンピュータ読み取り可能媒体を備えるコンピュータプログラム製品により実施される。このコンピュータプログラムは、上記の工程、動作、または処理のいずれかまたは全てを行うコンピュータプロセッサにより実行できる。
【００５２】
本発明の実施形態は、本明細書に記載する動作を行う装置に関するものでもよい。この装置は必要な目的のために特別に構成されたものでもよく、および／またはコンピュータに記憶されたコンピュータプログラムにより選択的に起動または再構成される汎用計算装置を備えてもよい。このようなコンピュータプログラムは、電子的命令を記憶するのに適した、コンピュータシステムバスに連結される、有形のコンピュータ読み取り可能記憶媒体または如何なる種類の媒体に記憶してもよい。更に、本明細書で参照する如何なる計算システムも、単一のプロセッサを含むか、計算能力を増大する目的で複数プロセッサによる設計を採用したアーキテクチャであってもよい。
【００５３】
本発明の実施形態は、搬送波により実現されるコンピュータデータ信号に関するものであってもよい。こうした実施形態には、コンピュータデータ信号はコンピュータプログラム製品または本明細書に記載する他のデータの組合せの任意の実施形態が含まれる。コンピュータデータ信号は、有形媒体または搬送波によって提供されて変調されるか、または搬送波によってコード化されることで実体的となり、任意の適当な送信方法に従って送信される成果物である。
【００５４】
最後に、本明細書で用いる言語は、読み易さと例示を主たる目的として選択され、本発明の主題の精密な記述または制限のために選択されたものではない。したがって、本発明の範囲は、この詳細な説明によって限定されず、これに基づく出願において発行する特許請求の範囲によって限定されると意図される。したがって、本発明の実施形態の開示は、以下の特許請求の範囲に示す発明の範囲を説明することを意図するが、限定することを意図しない。
【図１】
0005619889.tif 000002
【図２】
0005619889.tif 000003
【図３】
0005619889.tif 000004
【図４】
0005619889.tif 000005
【図５】
0005619889.tif 000006
【図６】
0005619889.tif 000007
【図７】
0005619889.tif 000008
【図８】
0005619889.tif 000009
【図９】
0005619889.tif 000010