Commit 98cc157d authored by Tim Volodine's avatar Tim Volodine Committed by Commit Bot

[AW] Create AwWebResourceRequest directly from network::ResourceRequest

Add a constructor to AwWebResourceRequest to make it possible to create
AwWebResourceRequests directly from network::ResourceRequest. Also use
this constructor in the new code path related to Network Service.

This reduces duplicate code and increases readability in current and
future code. Also because of the recent introduction of
is_renderer_initiated member which is not included in any existing
constructor, this patch simplifies the actual creation of requests.

BUG=897149,841556

Change-Id: I91c3337fe9d9c3cb2b12f36e53b888bbeebb0d30
Reviewed-on: https://chromium-review.googlesource.com/c/1312484
Commit-Queue: Tim Volodine <timvolodine@chromium.org>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606477}
parent 50e04ea7
...@@ -206,14 +206,9 @@ void InterceptedRequest::OnReceiveResponse( ...@@ -206,14 +206,9 @@ void InterceptedRequest::OnReceiveResponse(
base::PostTaskWithTraits( base::PostTaskWithTraits(
FROM_HERE, {content::BrowserThread::UI}, FROM_HERE, {content::BrowserThread::UI},
base::BindOnce( base::BindOnce(&OnReceivedHttpErrorOnUiThread, process_id_,
&OnReceivedHttpErrorOnUiThread, process_id_, request_.render_frame_id, AwWebResourceRequest(request_),
request_.render_frame_id, std::move(error_info)));
AwWebResourceRequest(
request_.url.spec(), request_.method,
request_.resource_type == content::RESOURCE_TYPE_MAIN_FRAME,
request_.has_user_gesture, request_.headers),
std::move(error_info)));
} }
if (request_.resource_type == content::RESOURCE_TYPE_MAIN_FRAME) { if (request_.resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
...@@ -332,20 +327,11 @@ void InterceptedRequest::OnRequestError( ...@@ -332,20 +327,11 @@ void InterceptedRequest::OnRequestError(
} }
void InterceptedRequest::OnReceivedErrorToCallback(int error_code) { void InterceptedRequest::OnReceivedErrorToCallback(int error_code) {
// TODO(timvolodine): add constructor for direct creation from base::PostTaskWithTraits(
// network::ResourceRequest. FROM_HERE, {content::BrowserThread::UI},
AwWebResourceRequest aw_request( base::BindOnce(&OnReceivedErrorOnUiThread, process_id_,
request_.url.spec(), request_.method, request_.render_frame_id, AwWebResourceRequest(request_),
request_.resource_type == content::RESOURCE_TYPE_MAIN_FRAME, error_code));
request_.has_user_gesture, request_.headers);
// Error callback now requires for |is_renderer_intiated| to be set.
aw_request.is_renderer_initiated = ui::PageTransitionIsWebTriggerable(
static_cast<ui::PageTransition>(request_.transition_type));
base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(&OnReceivedErrorOnUiThread,
process_id_, request_.render_frame_id,
std::move(aw_request), error_code));
} }
} // namespace } // namespace
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "net/http/http_request_headers.h" #include "net/http/http_request_headers.h"
#include "net/http/http_response_headers.h" #include "net/http/http_response_headers.h"
#include "net/url_request/url_request.h" #include "net/url_request/url_request.h"
#include "services/network/public/cpp/resource_request.h"
#include "ui/base/page_transition_types.h" #include "ui/base/page_transition_types.h"
using base::android::ConvertJavaStringToUTF16; using base::android::ConvertJavaStringToUTF16;
...@@ -49,6 +50,18 @@ AwWebResourceRequest::AwWebResourceRequest(const net::URLRequest& request) ...@@ -49,6 +50,18 @@ AwWebResourceRequest::AwWebResourceRequest(const net::URLRequest& request)
ConvertRequestHeadersToVectors(headers, &header_names, &header_values); ConvertRequestHeadersToVectors(headers, &header_names, &header_values);
} }
AwWebResourceRequest::AwWebResourceRequest(
const network::ResourceRequest& request)
: url(request.url.spec()),
method(request.method),
is_main_frame(request.resource_type == content::RESOURCE_TYPE_MAIN_FRAME),
has_user_gesture(request.has_user_gesture),
is_renderer_initiated(ui::PageTransitionIsWebTriggerable(
static_cast<ui::PageTransition>(request.transition_type))) {
ConvertRequestHeadersToVectors(request.headers, &header_names,
&header_values);
}
AwWebResourceRequest::AwWebResourceRequest( AwWebResourceRequest::AwWebResourceRequest(
const std::string& in_url, const std::string& in_url,
const std::string& in_method, const std::string& in_method,
......
...@@ -17,6 +17,10 @@ class HttpRequestHeaders; ...@@ -17,6 +17,10 @@ class HttpRequestHeaders;
class URLRequest; class URLRequest;
} }
namespace network {
struct ResourceRequest;
}
namespace android_webview { namespace android_webview {
// A passive data structure only used to carry request information. This // A passive data structure only used to carry request information. This
...@@ -25,6 +29,7 @@ namespace android_webview { ...@@ -25,6 +29,7 @@ namespace android_webview {
// https://developer.android.com/reference/android/webkit/WebResourceRequest.html // https://developer.android.com/reference/android/webkit/WebResourceRequest.html
struct AwWebResourceRequest final { struct AwWebResourceRequest final {
explicit AwWebResourceRequest(const net::URLRequest& request); explicit AwWebResourceRequest(const net::URLRequest& request);
explicit AwWebResourceRequest(const network::ResourceRequest& request);
AwWebResourceRequest(const std::string& in_url, AwWebResourceRequest(const std::string& in_url,
const std::string& in_method, const std::string& in_method,
bool in_is_main_frame, bool in_is_main_frame,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment