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 435ac1618e59e95e52a84d242f5d645d4c00226a..b2dbe93c51e60e02eb97a7d3f96f057a6da4e10e 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 |
@@ -12,6 +12,7 @@ |
#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" |
+#include "android_webview/browser/net/aw_web_resource_request.h" |
#include "android_webview/browser/renderer_host/auto_login_parser.h" |
#include "android_webview/common/url_constants.h" |
#include "base/memory/scoped_vector.h" |
@@ -32,6 +33,7 @@ |
using android_webview::AwContentsIoThreadClient; |
using android_webview::AwContentsClientBridgeBase; |
+using android_webview::AwWebResourceRequest; |
using content::BrowserThread; |
using content::ResourceType; |
using content::WebContents; |
@@ -84,6 +86,20 @@ void NewLoginRequestOnUIThread( |
client->NewLoginRequest(realm, account, args); |
} |
+void OnReceivedErrorOnUiThread( |
+ const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, |
+ AwWebResourceRequest request, |
boliu
2016/12/08 22:11:56
ditto const&
sgurun-gerrit only
2016/12/08 22:43:18
Done here and in aw_contents_io_thread_client
|
+ int error_code) { |
+ AwContentsClientBridgeBase* client = |
+ AwContentsClientBridgeBase::FromWebContentsGetter(web_contents_getter); |
+ if (!client) { |
+ DLOG(WARNING) << "io_client is null, onReceivedError dropped for " |
+ << request.url; |
+ return; |
+ } |
+ client->OnReceivedError(request, error_code); |
+} |
+ |
} // namespace |
namespace android_webview { |
@@ -285,19 +301,15 @@ void AwResourceDispatcherHostDelegate::RequestComplete( |
if (request && !request->status().is_success()) { |
const content::ResourceRequestInfo* request_info = |
content::ResourceRequestInfo::ForRequest(request); |
- std::unique_ptr<AwContentsIoThreadClient> io_client = |
- AwContentsIoThreadClient::FromID(request_info->GetChildID(), |
- request_info->GetRenderFrameID()); |
- if (io_client) { |
- io_client->OnReceivedError(request); |
- } else { |
- DLOG(WARNING) << "io_client is null, onReceivedError dropped for " << |
- request->url(); |
- } |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, FROM_HERE, |
+ base::Bind(&OnReceivedErrorOnUiThread, |
+ request_info->GetWebContentsGetterForRequest(), |
+ AwWebResourceRequest(*request), request->status().error())); |
} |
} |
- |
void AwResourceDispatcherHostDelegate::DownloadStarting( |
net::URLRequest* request, |
content::ResourceContext* resource_context, |