| 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..c9950840ece6145d75595c897a8253930ced04f2 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,
|
| + const AwWebResourceRequest& request,
|
| + 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,
|
|
|