0

Chromium エンジンを使用する Web ブラウザーを webkit2gtk に移植しようとしています。

フォームにWeb ビューを埋め込むのは非常に簡単でしたが、今度はコンテンツ ブロッキング用のコード (ポート) を追加したいと思います。次の信号に接続します。

  g_signal_connect(webview, 'load-changed', G_CALLBACK(@webview_load_change_cb), self);
  g_signal_connect(webview, 'notify::title', G_CALLBACK(@webview_favicon_changed_cb), self);
  g_signal_connect(webview, 'resource-load-started', G_CALLBACK(@webview_resourload), self);

それらはすべて機能しますが、特定のリソースの読み込みをブロックまたはキャンセルする (つまり、フィルタリングする) 手段が見つかりません。必要に応じて、「resource-load-started」シグナルを駆動してリクエストをキャンセルできることを望みましたが、そうではありません。ドキュメントを徹底的に読んで、私が必要としていることがわかりません。

Webkit にはメカニズムがあることは知っていますが (ここに文書化されています)、あまりにも「内部的」であることがわかります。発生するすべてが隠され、統計がありません。たとえば、いつルールがヒットしたかを知りたいです。

では、上記の方法とは別に、どの URL がロードされているかを知り、必要に応じてそれらをキャンセルする方法はありますか?

--- 更新 --- 完璧なものを見つけたと思います。このドキュメントでは、「 ...リクエストを変更するために使用できる...リソースのロード操作をキャンセルすることもできる」「send-request」シグナルについて説明しています。

繰り返しますが、問題は、それを使用するのが複雑で不快に思われることです。これは、シグナルが、WebKitWebExtension を介してのみ取得可能な WebKitWebPage オブジェクトに属しているためです。これは、Webkit に外部拡張機能をロードするように指示することによってのみ作成できます。アプリケーションと拡張機能を相互に通信させるには問題があります。WebkitWebView から直接 WebkitWebPage を取得する機能があればいいのですが...しかし、私はそれを見ていません。

4

0 に答える 0