mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Add support for response filtering (issue #515).
- Add a new CefRequestHandler::GetResourceResponseFilter method and CefResponseFilter class.
This commit is contained in:
60
patch/patches/net_filter_515.patch
Normal file
60
patch/patches/net_filter_515.patch
Normal file
@ -0,0 +1,60 @@
|
||||
diff --git base/network_delegate.h base/network_delegate.h
|
||||
index e8d82a3..8b536d7 100644
|
||||
--- base/network_delegate.h
|
||||
+++ base/network_delegate.h
|
||||
@@ -35,6 +35,7 @@ namespace net {
|
||||
// of net/base here, because we have a net_base library. Forward declarations
|
||||
// are ok.
|
||||
class CookieOptions;
|
||||
+class Filter;
|
||||
class HttpRequestHeaders;
|
||||
class HttpResponseHeaders;
|
||||
class ProxyInfo;
|
||||
@@ -118,6 +119,13 @@ class NET_EXPORT NetworkDelegate : public base::NonThreadSafe {
|
||||
const GURL& target_url,
|
||||
const GURL& referrer_url) const;
|
||||
|
||||
+ // Optionally add a new filter to the filter list. Returns the first filter in
|
||||
+ // the list.
|
||||
+ virtual Filter* SetupFilter(URLRequest* request,
|
||||
+ Filter* filter_list) {
|
||||
+ return filter_list;
|
||||
+ }
|
||||
+
|
||||
private:
|
||||
// This is the interface for subclasses of NetworkDelegate to implement. These
|
||||
// member functions will be called by the respective public notification
|
||||
diff --git filter/filter.h filter/filter.h
|
||||
index 1904a8c..8d5f1ec 100644
|
||||
--- filter/filter.h
|
||||
+++ filter/filter.h
|
||||
@@ -57,6 +57,7 @@
|
||||
#include "net/base/net_export.h"
|
||||
#include "net/base/sdch_manager.h"
|
||||
|
||||
+class CefNetworkDelegate;
|
||||
class GURL;
|
||||
|
||||
namespace net {
|
||||
@@ -231,6 +232,7 @@ class NET_EXPORT_PRIVATE Filter {
|
||||
std::string OrderedFilterList() const;
|
||||
|
||||
protected:
|
||||
+ friend class ::CefNetworkDelegate;
|
||||
friend class GZipUnitTest;
|
||||
friend class SdchFilterChainingTest;
|
||||
FRIEND_TEST_ALL_PREFIXES(FilterTest, ThreeFilterChain);
|
||||
diff --git url_request/url_request_job.cc url_request/url_request_job.cc
|
||||
index 641c07b..e613c86 100644
|
||||
--- url_request/url_request_job.cc
|
||||
+++ url_request/url_request_job.cc
|
||||
@@ -466,6 +466,9 @@ void URLRequestJob::NotifyHeadersComplete() {
|
||||
if (request_->status().is_success())
|
||||
filter_.reset(SetupFilter());
|
||||
|
||||
+ if (network_delegate_)
|
||||
+ filter_.reset(network_delegate_->SetupFilter(request_, filter_.release()));
|
||||
+
|
||||
if (!filter_.get()) {
|
||||
std::string content_length;
|
||||
request_->GetResponseHeaderByName("content-length", &content_length);
|
Reference in New Issue
Block a user