mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update to Chromium revision 3a87aecc (#433059)
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
#include "include/cef_urlrequest.h"
|
||||
#include "libcef/browser/browser_host_impl.h"
|
||||
#include "libcef/browser/net/response_filter_wrapper.h"
|
||||
#include "libcef/browser/net/source_stream.h"
|
||||
#include "libcef/browser/net/url_request_user_data.h"
|
||||
#include "libcef/browser/thread_util.h"
|
||||
#include "libcef/common/request_impl.h"
|
||||
@@ -23,16 +23,11 @@
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "content/public/common/content_switches.h"
|
||||
#include "net/base/net_errors.h"
|
||||
#include "net/filter/filter.h"
|
||||
#include "net/http/http_util.h"
|
||||
#include "net/url_request/url_request.h"
|
||||
|
||||
namespace {
|
||||
|
||||
// Buffer size allocated when filtering data.
|
||||
// Should match the value in net/filter/filter.cc.
|
||||
const int kFilterBufSize = 32 * 1024;
|
||||
|
||||
class CefBeforeResourceLoadCallbackImpl : public CefRequestCallback {
|
||||
public:
|
||||
typedef net::CompletionCallback CallbackType;
|
||||
@@ -266,6 +261,41 @@ bool CefNetworkDelegate::AreStrictSecureCookiesEnabled() {
|
||||
base::CompareCase::INSENSITIVE_ASCII);
|
||||
}
|
||||
|
||||
std::unique_ptr<net::SourceStream> CefNetworkDelegate::CreateSourceStream(
|
||||
net::URLRequest* request,
|
||||
std::unique_ptr<net::SourceStream> upstream) {
|
||||
CefRefPtr<CefResponseFilter> cef_filter;
|
||||
|
||||
CefRefPtr<CefBrowserHostImpl> browser =
|
||||
CefBrowserHostImpl::GetBrowserForRequest(request);
|
||||
if (browser.get()) {
|
||||
CefRefPtr<CefClient> client = browser->GetClient();
|
||||
if (client.get()) {
|
||||
CefRefPtr<CefRequestHandler> handler = client->GetRequestHandler();
|
||||
if (handler.get()) {
|
||||
CefRefPtr<CefFrame> frame = browser->GetFrameForRequest(request);
|
||||
|
||||
CefRefPtr<CefRequestImpl> cefRequest = new CefRequestImpl();
|
||||
cefRequest->Set(request);
|
||||
cefRequest->SetReadOnly(true);
|
||||
|
||||
CefRefPtr<CefResponseImpl> cefResponse = new CefResponseImpl();
|
||||
cefResponse->Set(request);
|
||||
cefResponse->SetReadOnly(true);
|
||||
|
||||
cef_filter = handler->GetResourceResponseFilter(browser.get(), frame,
|
||||
cefRequest.get(),
|
||||
cefResponse.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cef_filter && cef_filter->InitFilter())
|
||||
return base::MakeUnique<CefSourceStream>(cef_filter, std::move(upstream));
|
||||
|
||||
return upstream;
|
||||
}
|
||||
|
||||
int CefNetworkDelegate::OnBeforeURLRequest(
|
||||
net::URLRequest* request,
|
||||
const net::CompletionCallback& callback,
|
||||
@@ -442,55 +472,3 @@ bool CefNetworkDelegate::OnAreExperimentalCookieFeaturesEnabled() const {
|
||||
bool CefNetworkDelegate::OnAreStrictSecureCookiesEnabled() const {
|
||||
return AreStrictSecureCookiesEnabled();
|
||||
}
|
||||
|
||||
net::Filter* CefNetworkDelegate::SetupFilter(net::URLRequest* request,
|
||||
net::Filter* filter_list) {
|
||||
CefRefPtr<CefResponseFilter> cef_filter;
|
||||
|
||||
CefRefPtr<CefBrowserHostImpl> browser =
|
||||
CefBrowserHostImpl::GetBrowserForRequest(request);
|
||||
if (browser.get()) {
|
||||
CefRefPtr<CefClient> client = browser->GetClient();
|
||||
if (client.get()) {
|
||||
CefRefPtr<CefRequestHandler> handler = client->GetRequestHandler();
|
||||
if (handler.get()) {
|
||||
CefRefPtr<CefFrame> frame = browser->GetFrameForRequest(request);
|
||||
|
||||
CefRefPtr<CefRequestImpl> cefRequest = new CefRequestImpl();
|
||||
cefRequest->Set(request);
|
||||
cefRequest->SetReadOnly(true);
|
||||
|
||||
CefRefPtr<CefResponseImpl> cefResponse = new CefResponseImpl();
|
||||
cefResponse->Set(request);
|
||||
cefResponse->SetReadOnly(true);
|
||||
|
||||
cef_filter = handler->GetResourceResponseFilter(browser.get(), frame,
|
||||
cefRequest.get(),
|
||||
cefResponse.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cef_filter.get() && cef_filter->InitFilter()) {
|
||||
std::unique_ptr<CefResponseFilterWrapper> wrapper(
|
||||
new CefResponseFilterWrapper(cef_filter, filter_list != nullptr));
|
||||
wrapper->InitBuffer(kFilterBufSize);
|
||||
|
||||
if (filter_list) {
|
||||
// Install the wrapper at the end of the filter list.
|
||||
net::Filter* last_filter = filter_list;
|
||||
do {
|
||||
if (!last_filter->next_filter_.get()) {
|
||||
last_filter->next_filter_ = std::move(wrapper);
|
||||
break;
|
||||
}
|
||||
last_filter = last_filter->next_filter_.get();
|
||||
} while (last_filter);
|
||||
} else {
|
||||
// Only the wrapper exists.
|
||||
filter_list = wrapper.release();
|
||||
}
|
||||
}
|
||||
|
||||
return filter_list;
|
||||
}
|
||||
|
Reference in New Issue
Block a user