Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(411)

Unified Diff: android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc

Issue 2425423004: Move NewDownload out of AwContentsIoThreadClientImpl to AwContentsClientBridge (Closed)
Patch Set: changed "even if" to "unless" Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc
diff --git a/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc b/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc
index 0a491b5d60e63f924b8a231445a6bae57de60d14..dbb0e7611946762eb53068574f4097da98211e97 100644
--- a/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc
+++ b/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc
@@ -8,6 +8,7 @@
#include <string>
#include "android_webview/browser/aw_browser_context.h"
+#include "android_webview/browser/aw_contents_client_bridge_base.h"
#include "android_webview/browser/aw_contents_io_thread_client.h"
#include "android_webview/browser/aw_login_delegate.h"
#include "android_webview/browser/aw_resource_context.h"
@@ -30,6 +31,7 @@
#include "url/url_constants.h"
using android_webview::AwContentsIoThreadClient;
+using android_webview::AwContentsClientBridgeBase;
using content::BrowserThread;
using content::ResourceType;
using navigation_interception::InterceptNavigationDelegate;
@@ -52,6 +54,24 @@ void SetCacheControlFlag(
request->SetLoadFlags(load_flags);
}
+// Called when ResourceDispathcerHost detects a download request.
+// The download is already cancelled when this is called, since
+// relevant for DownloadListener is already extracted.
+void DownloadStartingOnUIThread(int render_process_id,
+ int render_frame_id,
+ const GURL& url,
+ const std::string& user_agent,
+ const std::string& content_disposition,
+ const std::string& mime_type,
+ int64_t content_length) {
+ AwContentsClientBridgeBase* client =
+ AwContentsClientBridgeBase::FromID(render_process_id, render_frame_id);
+ if (!client)
+ return;
+ client->NewDownload(url, user_agent, content_disposition, mime_type,
+ content_length);
+}
+
} // namespace
namespace android_webview {
@@ -280,7 +300,6 @@ void AwResourceDispatcherHostDelegate::DownloadStarting(
request->extra_request_headers().GetHeader(
net::HttpRequestHeaders::kUserAgent, &user_agent);
-
net::HttpResponseHeaders* response_headers = request->response_headers();
if (response_headers) {
response_headers->GetNormalizedHeader("content-disposition",
@@ -290,24 +309,19 @@ void AwResourceDispatcherHostDelegate::DownloadStarting(
request->Cancel();
+ // POST request cannot be repeated in general, so prevent client from
+ // retrying the same request, unless it is with a GET.
+ if ("GET" != request->method())
+ return;
+
const content::ResourceRequestInfo* request_info =
content::ResourceRequestInfo::ForRequest(request);
- // TODO(jam): http://crbug.com/645983 we will need to make this map work with
- // both RFH IDs and FTN IDs.
- std::unique_ptr<AwContentsIoThreadClient> io_client =
- AwContentsIoThreadClient::FromID(request_info->GetChildID(),
- request_info->GetRenderFrameID());
-
- // POST request cannot be repeated in general, so prevent client from
- // retrying the same request, even if it is with a GET.
- if ("GET" == request->method() && io_client) {
- io_client->NewDownload(url,
- user_agent,
- content_disposition,
- mime_type,
- content_length);
- }
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&DownloadStartingOnUIThread, request_info->GetChildID(),
+ request_info->GetRenderFrameID(), url, user_agent,
jam 2016/10/20 18:15:22 To make this code work with PlzNavigate, use GetWe
sgurun-gerrit only 2016/10/20 18:33:26 will do, thanks!
+ content_disposition, mime_type, content_length));
}
content::ResourceDispatcherHostLoginDelegate*

Powered by Google App Engine
This is Rietveld 408576698