(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-17
(54)【発明の名称】ウェブブラウザ拡張機能が非同期ブロッキング動作を実行することを可能にすること
(51)【国際特許分類】
G06F 9/451 20180101AFI20241210BHJP
【FI】
G06F9/451
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024534770
(86)(22)【出願日】2022-12-14
(85)【翻訳文提出日】2024-07-29
(86)【国際出願番号】 IB2022062214
(87)【国際公開番号】W WO2023111894
(87)【国際公開日】2023-06-22
(32)【優先日】2021-12-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】523419716
【氏名又は名称】アイランド テクノロジー インコーポレイテッド
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(74)【代理人】
【識別番号】100165157
【氏名又は名称】芝 哲央
(74)【代理人】
【識別番号】100205659
【氏名又は名称】齋藤 拓也
(74)【代理人】
【識別番号】100126000
【氏名又は名称】岩池 満
(74)【代理人】
【識別番号】100185269
【氏名又は名称】小菅 一弘
(72)【発明者】
【氏名】ゴラン サン
(72)【発明者】
【氏名】ズアレテス リロン
(72)【発明者】
【氏名】アミガ ダン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AE45
5B376AE51
5B376FA16
(57)【要約】
ウェブブラウザを、ウェブブラウザ拡張機能から拡張機能提供コールバック関数及びインジケータを受信するように構成するステップであって、前記拡張機能提供コールバック関数は非同期ブロッキング動作を実行するように構成され、前記インジケータは、前記拡張機能コールバック関数が非同期ブロッキング動作に関するということを示し、前記拡張機能提供コールバック関数は、ウェブブラウザ提供コールバック関数を前記拡張機能提供コールバック関数のパラメータとして受信するように構成され、前記拡張機能提供コールバック関数は、前記非同期ブロッキング動作を実行した後に、前記ウェブブラウザ提供コールバック関数を呼び出すように構成されているステップと、前記ウェブブラウザを、前記拡張機能コールバック関数が非同期ブロッキング動作に関するということを前記インジケータが示す場合、前記ウェブブラウザ提供コールバック関数を前記拡張機能提供コールバック関数呼び出しのパラメータとして用いて前記拡張機能提供コールバック関数を呼び出すように構成するステップとによってウェブブラウザ拡張機能が非同期ブロッキング動作を実行することを可能にすること。
【選択図】
図1A
【特許請求の範囲】
【請求項1】
ウェブブラウザ拡張機能が非同期ブロッキング動作を実行することを可能にする方法であって、
ウェブブラウザを、ウェブブラウザ拡張機能から拡張機能提供コールバック関数及びインジケータを受信するように構成するステップであって、
前記拡張機能提供コールバック関数は非同期ブロッキング動作を実行するように構成され、
前記インジケータは、前記拡張機能コールバック関数が非同期ブロッキング動作に関するということを示し、
前記拡張機能提供コールバック関数は、ウェブブラウザ提供コールバック関数を前記拡張機能提供コールバック関数のパラメータとして受信するように構成され、
前記拡張機能提供コールバック関数は、前記非同期ブロッキング動作を実行した後に、前記ウェブブラウザ提供コールバック関数を呼び出すように構成されている工程と、
前記ウェブブラウザを、前記拡張機能コールバック関数が非同期ブロッキング動作に関するということを前記インジケータが示す場合、前記ウェブブラウザ提供コールバック関数を前記拡張機能提供コールバック関数呼び出しのパラメータとして用いて前記拡張機能提供コールバック関数を呼び出すように構成するステップと
を含む、方法。
【請求項2】
前記ウェブブラウザを、前記拡張機能が非同期ブロッキング動作を実行することを許可されたと判断した後にのみ、前記ウェブブラウザ提供コールバック関数を前記拡張機能提供コールバック関数呼び出しのパラメータとして用いて前記拡張機能提供コールバック関数を呼び出すように構成するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記ウェブブラウザを、前記ウェブブラウザによって検出可能なイベントに関連付けられた要求において前記拡張機能提供コールバック関数及び前記インジケータを受信するように構成するステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記ウェブブラウザを、前記ウェブブラウザが前記イベントを検出することに応答して、前記拡張機能提供コールバック関数の前記呼び出しを呼び出すように構成するステップをさらに含む、請求項3に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ウェブブラウザ拡張機能が非同期ブロッキング動作を実行することを可能にする方法に関する。
【背景技術】
【0002】
ブラウザ拡張機能は、ウェブブラウザに追加の機能、例えば、広告をブロックしウェブページコンテンツを修正する能力を提供するためにウェブブラウザに提供されるコンピュータ命令のセットである。ウェブブラウザがブラウザ拡張機能に適応する1つの方法は、ウェブブラウザがインターネットからウェブページを受信したとき等に、ブラウザ拡張機能が特定のタイプのイベントを監視し、ウェブページがウェブページをブロックすることを保証する定義済み条件を満たすとブラウザ拡張機能が判断した場合に、ウェブページがウェブブラウザによって表示されるのをブロック(阻止)する等、特定のアクションをとることを可能にするアプリケーションプログラミングインタフェース(API)を提供することによる。しかしながら、現在のウェブブラウザアーキテクチャは、ブラウザ拡張機能が非同期ブロッキング動作を実行することができないものである。
【発明の概要】
【課題を解決するための手段】
【0003】
本発明の一態様では、ウェブブラウザ拡張機能が非同期ブロッキング動作を実行することを可能にする方法であって、ウェブブラウザを、ウェブブラウザ拡張機能から拡張機能提供コールバック関数及びインジケータを受信するように構成するステップであって、前記拡張機能提供コールバック関数は非同期ブロッキング動作を実行するように構成され、前記インジケータは、前記拡張機能コールバック関数が非同期ブロッキング動作に関するということを示し、前記拡張機能提供コールバック関数は、ウェブブラウザ提供コールバック関数を前記拡張機能提供コールバック関数のパラメータとして受信するように構成され、前記拡張機能提供コールバック関数は、前記非同期ブロッキング動作を実行した後に、前記ウェブブラウザ提供コールバック関数を呼び出すように構成されているステップと、前記ウェブブラウザを、前記拡張機能コールバック関数が非同期ブロッキング動作に関するということを前記インジケータが示す場合、前記ウェブブラウザ提供コールバック関数を前記拡張機能提供コールバック関数呼び出しのパラメータとして用いて前記拡張機能提供コールバック関数を呼び出すように構成するステップとを含む、方法が提供される。
【0004】
本発明の別の態様では、当該方法は、前記ウェブブラウザを、前記拡張機能が非同期ブロッキング動作を実行することを許可されたと判断した後にのみ、前記ウェブブラウザ提供コールバック関数を前記拡張機能提供コールバック関数呼び出しのパラメータとして用いて前記拡張機能提供コールバック関数を呼び出すように構成するステップをさらに含む。
【0005】
本発明の別の態様では、当該方法は、前記ウェブブラウザを、前記ウェブブラウザによって検出可能なイベントに関連付けられた要求において前記拡張機能提供コールバック関数及び前記インジケータを受信するように構成するステップをさらに含む。
【0006】
本発明の別の態様では、当該方法は、前記ウェブブラウザを、前記ウェブブラウザが前記イベントを検出することに応答して、前記拡張機能提供コールバック関数の前記呼び出しを呼び出すように構成するステップをさらに含む。
【図面の簡単な説明】
【0007】
本発明の態様は、添付の図面と併せて以下の詳細な説明を読むことで、より完全に理解され認識されるであろう。
【0008】
【
図1A】本発明の実施形態に従って構築され動作する、ウェブブラウザ拡張機能が非同期ブロッキング動作を実行することを可能にするためのシステムの簡略化した概念図である。
【
図1B】本発明の実施形態に従って動作する、
図1Aのシステムの動作の例示的な方法の簡略化した動作図である。
【発明を実施するための形態】
【0009】
ここでは、
図1A、加えて
図1Bを参照し、
図1Aは、本発明の実施形態に従って構築され動作する、ウェブブラウザ拡張機能が非同期ブロッキング動作を実行することを可能にするためのシステムの簡略化された概念図であり、
図1Bは、本発明の実施形態に従って動作する、
図1Aのシステムの動作の例示的な方法の簡略化した動作図である。
図1Aのシステム及び
図1Bの方法では、ウェブブラウザ100は、従来のウェブブラウザの機能、例えばGoogle(商標)Chromium(商標)アーキテクチャに基づく機能を組み込むように構成され、さらに、以下で説明するように動作するように構成される。ウェブブラウザ100は、インターネット等のコンピュータネットワーク104に接続されたコンピュータ102等の任意の計算デバイスによってホストされてもよい。ウェブブラウザ100は、ネットワーク104を介してコンピュータサーバー108におけるネットワークベースのサービスと通信するため等、非同期ブロッキング動作を実行するように構成されたウェブブラウザ拡張機能(extension)106を含む。拡張機能106は、ウェブブラウザ100によって提供されるアプリケーションプログラミングインタフェース(API)110を介して等でウェブブラウザ100と相互運用し、ウェブブラウザは、API110を介して機能呼び出しを受信するように構成される。
【0010】
拡張機能106は、例えばウェブブラウザによって検出可能なイベントに関連付けられたイベントリスナ機能へのAPI呼び出しを介して、ウェブブラウザ100に、非同期ブロッキング動作を実行するように構成されたコールバック関数を、拡張機能提供コールバック関数(拡張機能が提供するコールバック関数、extension-provided callback function)が非同期ブロッキング動作に関することを示すインジケータとともに提供する。拡張機能提供コールバック関数は、ウェブブラウザ提供コールバック関数(ウェブブラウザが提供するコールバック関数、web-browser-provided callback function)を拡張機能提供コールバック関数のパラメータとして受信するように構成され、非同期ブロッキング動作を実行した後、ウェブブラウザ提供コールバック関数を呼び出すように構成される。
【0011】
ウェブブラウザ100は、続いて、ウェブブラウザ100がイベントリスナ機能の対象であるイベントを検出したとき等に、拡張機能提供コールバック関数を呼び出すように構成され、拡張機能提供コールバック関数への呼び出しは、拡張機能提供コールバック関数が非同期ブロッキング動作に関連することをインジケータが示す場合、ウェブブラウザ提供コールバック関数をパラメータとして含む。ウェブブラウザ100は、好ましくは、米国特許出願第17/740,457号に記載される技術に従って等で、拡張機能106が非同期ブロッキング動作を実行することを許可されていると判断した後にのみ、ウェブブラウザ提供コールバック関数を拡張機能106に提供するように構成される。拡張機能提供コールバック関数は、次いで、非同期ブロッキング動作を実行した後、ウェブブラウザ提供コールバック関数を呼び出す。
【0012】
Google Chromium(商標)のWebRequest APIを使用する
図1Aのシステム及び
図1Bの方法の例示的な実装形態では、ウェブブラウザ100は、以下のようにカスタムバインディングを用いて構成される。以下の方法は、新しいイベントリスナをインストールするために使用される。
【数1】
【0013】
拡張機能106がイベントリスナを呼び出すとき、以下のコードは、拡張機能106から受信されたパラメータが、拡張機能106によって実行される動作が「ブロッキング」動作であることを示すインジケータを含むかをチェックする。そのインジケータを含む場合、当該方法は、拡張機能が提供するコールバックを呼び出し、同期動作の場合のように「webRequestInternal.eventHandled」関数を呼び出すことによってイベントを直ちに解決する。
【数2】
【0014】
しかしながら、拡張機能106から受信されたパラメータが、拡張機能106によって実行される動作が「asyncBlocking」動作であることを示すインジケータを含む場合、当該方法は、以下のように、拡張機能が提供するコールバックを呼び出し、その呼び出し内でコールバックとして「eventHandled」関数を拡張機能106に渡す。
【数3】
【0015】
次いで、拡張機能106は、その非同期ブロッキング動作を実行し、動作が完了すると「eventHandled」関数を呼び出す。
【0016】
そのために、拡張機能106は、以下のコードを使用する等、API110を使用してイベントリスナを呼び出すように構成される。
【数4】
【0017】
図1Aのシステム及び
図1Bの方法のいくつかの例示的な応用は、以下を含む。
・ネットワーク要求が遮断(intercept)され、ネットワーク要求を編集するエージェント(agent)にメッセージを送信するためにGoogle Chromium(商標)NativeMessagingHostが使用される場合の、各ウェブ要求/応答に対するasyncプロキシを構成すること。
・意思決定のために外部の第三者サービスに通信が送信され、次いで、ヘッダ及び/又はペイロードが第三者応答に従って修正される場合の、外部サービスを使用してネットワーク通信のヘッダ及び/又はペイロードを変更すること(すなわち、ユーザ-エージェント(User-Agent)を変更すること)。
・ネットワーク要求を許可/ブロックするためにヒューマンインタラクション及び/又はI/O操作が必要とされる場合の、特定の動作に対して多要素認証(Multi-factor Authentication、MFA)を実行すること。例えば、フォーム提出を遮断し、ユーザが多要素認証を実行するまで提出をブロックすること。
・監査目的で、要求されたデータ及びユーザ活動を第三者ロギング(logging)システムに報告すること。例えば、ブラウザによって呼び出される指定されたドメインの下のすべての外部URLをロギングすること。
・ネットワークパフォーマンスメトリックを外部監視システムに報告すること。
・あるネットワーク要求を外部ウェブサービスにリダイレクトし、この外部ウェブサービスが、元の要求をリダイレクトするか又は進めるかを決定すること。
・集中的な計算及び/又はI/O操作を必要とするデータ漏洩防止(DLP)及びコンテンツスキャン。
・特定のネットワーク要求に進む前に、管理者の承認を要求する。
【0018】
本明細書に記載された本発明のいかなる態様も、コンピュータハードウェア及び/又は従来技術に従って非一時的コンピュータ可読媒体に具体化されたコンピュータソフトウェアで実装することができ、コンピュータハードウェアは、従来技術に従って相互運用する1つ以上のコンピュータプロセッサ、コンピュータメモリ、I/Oデバイス及びネットワークインタフェースを含む。
【0019】
なお、本明細書で使用される「プロセッサ」又は「デバイス」という用語は、例えば、CPU(中央処理装置)及び/又はその他の処理回路を含むものなど、あらゆる処理デバイスを含むことを意図している。また、「プロセッサ」又は「デバイス」という用語は、複数の処理デバイスを指してもよく、処理デバイスに関連付けられた様々な要素は、他の処理デバイスによって共有されてもよいことを理解されたい。
【0020】
本明細書で使用される「メモリ」という用語は、例えば、RAM、ROM、固定メモリデバイス(例えば、ハードドライブ)、リムーバブルメモリデバイス(例えば、ディスケット)、フラッシュメモリなど、プロセッサ又はCPUに関連付けられたメモリを含むことを意図している。このようなメモリは、コンピュータ可読記憶媒体とみなすことができる。
【0021】
さらに、本明細書で使用される「入力/出力デバイス」又は「I/Oデバイス」という用語は、例えば、処理ユニットにデータを入力する1つ以上の入力デバイス(例えば、キーボード、マウス、スキャナなど)、及び/又は、処理ユニットに関連付けられた、結果を提示する1つ以上の出力デバイス(例えば、スピーカ、ディスプレイ、プリンタなど)を含むことを意図している。
【0022】
本発明の実施形態は、システム、方法、及び/又はコンピュータプログラム製品を含んでもよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるための、コンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体(又は、複数の媒体)を含んでもよい。
【0023】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保存し記憶することができる、有形のデバイスであってもよい。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は、前述のものの任意の適切な組み合わせであってもよいが、それらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、メモリスティック、フロッピーディスク(登録商標)、命令が記録されるパンチカード又は溝内の一段高い構造などの機械的に符号化されるデバイス、及び、前述のものの任意の適切な組み合わせが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、本質的に、電波もしくは他の自由伝搬する電磁波、導波路もしくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、又は、電線を介して伝送される電気信号などの、一時的な信号であると解釈すべきではない。
【0024】
本明細書で説明するコンピュータ可読プログラム命令は、それぞれの計算/処理デバイスにコンピュータ可読記憶媒体から、或いは、外部コンピュータ又は外部記憶デバイスに、ネットワーク、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はワイヤレスネットワークを介してダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバーを含んでもよい。各計算/処理デバイス内のネットワークアダプタカード又はネットワークインタフェースが、コンピュータ可読プログラム命令をネットワークから受信し、コンピュータ可読プログラム命令を、それぞれの計算/処理デバイスの内部のコンピュータ可読記憶媒体での記憶のために転送する。
【0025】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態セッティングデータ、又は、1つ以上のプログラミング言語の任意の組み合わせで書き表される、ソースコードもしくはオブジェクトコードのいずれかであってもよく、それらのプログラミング言語は、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータで実行されてもよく、スタンドアロンソフトウェアパッケージとして部分的にユーザのコンピュータで実行されてもよく、部分的にユーザのコンピュータで実行され、かつ部分的にリモートコンピュータで実行されてもよく、全体的にリモートコンピュータ又はサーバーで実行されてもよい。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータと接続されてもよく、(例えば、インターネットサービスプロバイダを利用したインターネットを介して)外部コンピュータと接続されてもよい。一部の実施形態では、例えば、プログラマブル論理回路網、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路が、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0026】
本発明の態様は、本明細書では、本発明の実施形態に係る方法、装置(システム)及びコンピュータプログラム製品の、フローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0027】
これらのコンピュータ可読プログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定される機能/行為を実装する手段を創出するように、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供されて、マシンを作り出すものであってもよい。これらのコンピュータ可読プログラム命令はさらに、命令が記憶されたコンピュータ可読記憶媒体が、フローチャート及び/又はブロック図の1つ以上のブロックで指定される機能/行為の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラマブルデータ処理装置及び/又は他のデバイスに対して特定の方法で機能するように指示できるコンピュータ可読記憶媒体に記憶されるものであってもよい。
【0028】
コンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラマブル装置又は他のデバイスで実行する命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定される機能/行為を実装するように、コンピュータ、他のプログラマブルデータ処理装置又は他のデバイスにロードされて、コンピュータ、他のプログラマブル装置又は他のデバイスで一連の動作ステップを実行させて、コンピュータ実装プロセスを生み出すものであってもよい。
【0029】
図面におけるフローチャート図及びブロック図は、本発明の様々な実施形態に係る、システム、方法及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート図又はブロック図における各ブロックは、指定された論理機能を実装する1つ以上の実行可能なコンピュータ命令を含む、モジュール、セグメント又はコンピュータ命令の一部を表し得る。一部の代替的実装形態では、ブロックに記載された機能は、図面に記載された順序と異なる順序で行われてもよい。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてもよく、又は、これらのブロックは、関与する機能に応じて、逆の順序で実行される場合があってもよい。なお、フローチャート図及びブロック図の各ブロック、並びにこのようなブロックの組み合わせは、指定された機能又は行為を実行する専用のハードウェアベースのシステム及び/又はソフトウェアベースのシステムによって実装することができる。
【0030】
本発明の様々な実施形態の説明は、例示の目的で提示されたものであるが、網羅的であることも、開示された実施形態に限定することも意図されていない。説明された実施形態の範囲及び精神から逸脱することなく多くの変更及び変形が可能であることは、当業者にとって明らかである。
【国際調査報告】