0

[WebView] Merge AwContentsClientBridgeBase into AwContentsClientBridge

AwContentsClientBridgeBase was a browser/ layer interface
for AwContentsClientBridge, since we can make jni calls from
browser/ already, we don't need this interface anymore.

This CL removes AwContentsClientBridgeBase, and put code into
AwContentsClientBridge.

BUG=716604

Review-Url: https://codereview.chromium.org/2888623004
Cr-Commit-Position: refs/heads/master@{#472307}
This commit is contained in:
ctzsm
2017-05-16 20:41:11 -07:00
committed by Commit bot
parent bc5732b541
commit 9ca8b8cd2b
10 changed files with 127 additions and 235 deletions

@@ -446,8 +446,6 @@ source_set("common") {
"browser/aw_contents_background_thread_client.h", "browser/aw_contents_background_thread_client.h",
"browser/aw_contents_client_bridge.cc", "browser/aw_contents_client_bridge.cc",
"browser/aw_contents_client_bridge.h", "browser/aw_contents_client_bridge.h",
"browser/aw_contents_client_bridge_base.cc",
"browser/aw_contents_client_bridge_base.h",
"browser/aw_contents_io_thread_client.h", "browser/aw_contents_io_thread_client.h",
"browser/aw_contents_io_thread_client_impl.cc", "browser/aw_contents_io_thread_client_impl.cc",
"browser/aw_contents_io_thread_client_impl.h", "browser/aw_contents_io_thread_client_impl.h",

@@ -8,7 +8,7 @@
#include "android_webview/browser/aw_browser_context.h" #include "android_webview/browser/aw_browser_context.h"
#include "android_webview/browser/aw_browser_main_parts.h" #include "android_webview/browser/aw_browser_main_parts.h"
#include "android_webview/browser/aw_contents_client_bridge_base.h" #include "android_webview/browser/aw_contents_client_bridge.h"
#include "android_webview/browser/aw_contents_io_thread_client.h" #include "android_webview/browser/aw_contents_io_thread_client.h"
#include "android_webview/browser/aw_cookie_access_policy.h" #include "android_webview/browser/aw_cookie_access_policy.h"
#include "android_webview/browser/aw_devtools_manager_delegate.h" #include "android_webview/browser/aw_devtools_manager_delegate.h"
@@ -145,8 +145,8 @@ void AwContentsMessageFilter::OnShouldOverrideUrlLoading(
bool* ignore_navigation) { bool* ignore_navigation) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
*ignore_navigation = false; *ignore_navigation = false;
AwContentsClientBridgeBase* client = AwContentsClientBridge* client =
AwContentsClientBridgeBase::FromID(process_id_, render_frame_id); AwContentsClientBridge::FromID(process_id_, render_frame_id);
if (client) { if (client) {
*ignore_navigation = client->ShouldOverrideUrlLoading( *ignore_navigation = client->ShouldOverrideUrlLoading(
url, has_user_gesture, is_redirect, is_main_frame); url, has_user_gesture, is_redirect, is_main_frame);
@@ -385,8 +385,8 @@ void AwContentBrowserClient::AllowCertificateError(
bool expired_previous_decision, bool expired_previous_decision,
const base::Callback<void(content::CertificateRequestResultType)>& const base::Callback<void(content::CertificateRequestResultType)>&
callback) { callback) {
AwContentsClientBridgeBase* client = AwContentsClientBridge* client =
AwContentsClientBridgeBase::FromWebContents(web_contents); AwContentsClientBridge::FromWebContents(web_contents);
bool cancel_request = true; bool cancel_request = true;
if (client) if (client)
client->AllowCertificateError(cert_error, client->AllowCertificateError(cert_error,
@@ -403,8 +403,8 @@ void AwContentBrowserClient::SelectClientCertificate(
net::SSLCertRequestInfo* cert_request_info, net::SSLCertRequestInfo* cert_request_info,
net::CertificateList client_certs, net::CertificateList client_certs,
std::unique_ptr<content::ClientCertificateDelegate> delegate) { std::unique_ptr<content::ClientCertificateDelegate> delegate) {
AwContentsClientBridgeBase* client = AwContentsClientBridge* client =
AwContentsClientBridgeBase::FromWebContents(web_contents); AwContentsClientBridge::FromWebContents(web_contents);
if (client) if (client)
client->SelectClientCertificate(cert_request_info, std::move(delegate)); client->SelectClientCertificate(cert_request_info, std::move(delegate));
} }

@@ -261,8 +261,8 @@ void AwContents::SetJavaPeers(
contents_client_bridge_.reset( contents_client_bridge_.reset(
new AwContentsClientBridge(env, contents_client_bridge)); new AwContentsClientBridge(env, contents_client_bridge));
AwContentsClientBridgeBase::Associate(web_contents_.get(), AwContentsClientBridge::Associate(web_contents_.get(),
contents_client_bridge_.get()); contents_client_bridge_.get());
AwContentsIoThreadClientImpl::Associate(web_contents_.get(), AwContentsIoThreadClientImpl::Associate(web_contents_.get(),
io_thread_client); io_thread_client);

@@ -20,6 +20,7 @@
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/client_certificate_delegate.h" #include "content/public/browser/client_certificate_delegate.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h" #include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
@@ -43,6 +44,7 @@ using base::android::JavaRef;
using base::android::ScopedJavaLocalRef; using base::android::ScopedJavaLocalRef;
using base::android::ToJavaArrayOfStrings; using base::android::ToJavaArrayOfStrings;
using content::BrowserThread; using content::BrowserThread;
using content::WebContents;
using std::vector; using std::vector;
namespace android_webview { namespace android_webview {
@@ -58,8 +60,64 @@ void RecordClientCertificateKey(net::X509Certificate* client_cert,
client_cert, std::move(private_key)); client_cert, std::move(private_key));
} }
const void* const kAwContentsClientBridge = &kAwContentsClientBridge;
// This class is invented so that the UserData registry that we inject the
// AwContentsClientBridge object does not own and destroy it.
class UserData : public base::SupportsUserData::Data {
public:
static AwContentsClientBridge* GetContents(
content::WebContents* web_contents) {
if (!web_contents)
return NULL;
UserData* data = static_cast<UserData*>(
web_contents->GetUserData(kAwContentsClientBridge));
return data ? data->contents_ : NULL;
}
explicit UserData(AwContentsClientBridge* ptr) : contents_(ptr) {}
private:
AwContentsClientBridge* contents_;
DISALLOW_COPY_AND_ASSIGN(UserData);
};
} // namespace } // namespace
// static
void AwContentsClientBridge::Associate(WebContents* web_contents,
AwContentsClientBridge* handler) {
web_contents->SetUserData(kAwContentsClientBridge,
base::MakeUnique<UserData>(handler));
}
// static
AwContentsClientBridge* AwContentsClientBridge::FromWebContents(
WebContents* web_contents) {
return UserData::GetContents(web_contents);
}
// static
AwContentsClientBridge* AwContentsClientBridge::FromWebContentsGetter(
const content::ResourceRequestInfo::WebContentsGetter&
web_contents_getter) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
WebContents* web_contents = web_contents_getter.Run();
return UserData::GetContents(web_contents);
}
// static
AwContentsClientBridge* AwContentsClientBridge::FromID(int render_process_id,
int render_frame_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::RenderFrameHost* rfh =
content::RenderFrameHost::FromID(render_process_id, render_frame_id);
content::WebContents* web_contents =
content::WebContents::FromRenderFrameHost(rfh);
return UserData::GetContents(web_contents);
}
AwContentsClientBridge::AwContentsClientBridge(JNIEnv* env, AwContentsClientBridge::AwContentsClientBridge(JNIEnv* env,
const JavaRef<jobject>& obj) const JavaRef<jobject>& obj)
: java_ref_(env, obj) { : java_ref_(env, obj) {

@@ -6,15 +6,28 @@
#define ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_H_ #define ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_H_
#include <jni.h> #include <jni.h>
#include <memory>
#include "android_webview/browser/aw_contents_client_bridge_base.h" #include "android_webview/browser/net/aw_web_resource_request.h"
#include "base/android/jni_weak_ref.h" #include "base/android/jni_weak_ref.h"
#include "base/android/scoped_java_ref.h" #include "base/android/scoped_java_ref.h"
#include "base/callback.h" #include "base/callback.h"
#include "base/id_map.h" #include "base/id_map.h"
#include "base/supports_user_data.h"
#include "content/public/browser/certificate_request_result_type.h"
#include "content/public/browser/javascript_dialog_manager.h" #include "content/public/browser/javascript_dialog_manager.h"
#include "content/public/browser/resource_request_info.h"
#include "net/http/http_response_headers.h"
class GURL;
namespace content {
class ClientCertificateDelegate;
class WebContents;
}
namespace net { namespace net {
class SSLCertRequestInfo;
class X509Certificate; class X509Certificate;
} }
@@ -27,56 +40,67 @@ namespace android_webview {
// indirect refs from the Application (via callbacks) and so can outlive // indirect refs from the Application (via callbacks) and so can outlive
// webview, this class notifies it before being destroyed and to nullify // webview, this class notifies it before being destroyed and to nullify
// any references. // any references.
class AwContentsClientBridge : public AwContentsClientBridgeBase { class AwContentsClientBridge {
public: public:
// Adds the handler to the UserData registry.
static void Associate(content::WebContents* web_contents,
AwContentsClientBridge* handler);
static AwContentsClientBridge* FromWebContents(
content::WebContents* web_contents);
static AwContentsClientBridge* FromWebContentsGetter(
const content::ResourceRequestInfo::WebContentsGetter&
web_contents_getter);
static AwContentsClientBridge* FromID(int render_process_id,
int render_frame_id);
AwContentsClientBridge(JNIEnv* env, AwContentsClientBridge(JNIEnv* env,
const base::android::JavaRef<jobject>& obj); const base::android::JavaRef<jobject>& obj);
~AwContentsClientBridge() override; ~AwContentsClientBridge();
// AwContentsClientBridgeBase implementation // AwContentsClientBridge implementation
void AllowCertificateError( void AllowCertificateError(
int cert_error, int cert_error,
net::X509Certificate* cert, net::X509Certificate* cert,
const GURL& request_url, const GURL& request_url,
const base::Callback<void(content::CertificateRequestResultType)>& const base::Callback<void(content::CertificateRequestResultType)>&
callback, callback,
bool* cancel_request) override; bool* cancel_request);
void SelectClientCertificate( void SelectClientCertificate(
net::SSLCertRequestInfo* cert_request_info, net::SSLCertRequestInfo* cert_request_info,
std::unique_ptr<content::ClientCertificateDelegate> delegate) override; std::unique_ptr<content::ClientCertificateDelegate> delegate);
void RunJavaScriptDialog( void RunJavaScriptDialog(
content::JavaScriptDialogType dialog_type, content::JavaScriptDialogType dialog_type,
const GURL& origin_url, const GURL& origin_url,
const base::string16& message_text, const base::string16& message_text,
const base::string16& default_prompt_text, const base::string16& default_prompt_text,
const content::JavaScriptDialogManager::DialogClosedCallback& callback) const content::JavaScriptDialogManager::DialogClosedCallback& callback);
override;
void RunBeforeUnloadDialog( void RunBeforeUnloadDialog(
const GURL& origin_url, const GURL& origin_url,
const content::JavaScriptDialogManager::DialogClosedCallback& callback) const content::JavaScriptDialogManager::DialogClosedCallback& callback);
override;
bool ShouldOverrideUrlLoading(const base::string16& url, bool ShouldOverrideUrlLoading(const base::string16& url,
bool has_user_gesture, bool has_user_gesture,
bool is_redirect, bool is_redirect,
bool is_main_frame) override; bool is_main_frame);
void NewDownload(const GURL& url, void NewDownload(const GURL& url,
const std::string& user_agent, const std::string& user_agent,
const std::string& content_disposition, const std::string& content_disposition,
const std::string& mime_type, const std::string& mime_type,
int64_t content_length) override; int64_t content_length);
// Called when a new login request is detected. See the documentation for
// WebViewClient.onReceivedLoginRequest for arguments. Note that |account|
// may be empty.
void NewLoginRequest(const std::string& realm, void NewLoginRequest(const std::string& realm,
const std::string& account, const std::string& account,
const std::string& args) override; const std::string& args);
void OnReceivedError(const AwWebResourceRequest& request, // Called when a resource loading error has occured (e.g. an I/O error,
int error_code) override; // host name lookup failure etc.)
void OnReceivedError(const AwWebResourceRequest& request, int error_code);
void OnReceivedHttpError(const AwWebResourceRequest& request, // Called when a response from the server is received with status code >= 400.
const scoped_refptr<const net::HttpResponseHeaders>& void OnReceivedHttpError(
response_headers) override; const AwWebResourceRequest& request,
const scoped_refptr<const net::HttpResponseHeaders>& response_headers);
// Methods called from Java. // Methods called from Java.
void ProceedSslError(JNIEnv* env, void ProceedSslError(JNIEnv* env,

@@ -1,81 +0,0 @@
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "android_webview/browser/aw_contents_client_bridge_base.h"
#include "base/memory/ptr_util.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
using content::BrowserThread;
using content::WebContents;
namespace android_webview {
namespace {
const void* const kAwContentsClientBridgeBase = &kAwContentsClientBridgeBase;
// This class is invented so that the UserData registry that we inject the
// AwContentsClientBridgeBase object does not own and destroy it.
class UserData : public base::SupportsUserData::Data {
public:
static AwContentsClientBridgeBase* GetContents(
content::WebContents* web_contents) {
if (!web_contents)
return NULL;
UserData* data = static_cast<UserData*>(
web_contents->GetUserData(kAwContentsClientBridgeBase));
return data ? data->contents_ : NULL;
}
explicit UserData(AwContentsClientBridgeBase* ptr) : contents_(ptr) {}
private:
AwContentsClientBridgeBase* contents_;
DISALLOW_COPY_AND_ASSIGN(UserData);
};
} // namespace
// static
void AwContentsClientBridgeBase::Associate(
WebContents* web_contents,
AwContentsClientBridgeBase* handler) {
web_contents->SetUserData(kAwContentsClientBridgeBase,
base::MakeUnique<UserData>(handler));
}
// static
AwContentsClientBridgeBase* AwContentsClientBridgeBase::FromWebContents(
WebContents* web_contents) {
return UserData::GetContents(web_contents);
}
// static
AwContentsClientBridgeBase* AwContentsClientBridgeBase::FromWebContentsGetter(
const content::ResourceRequestInfo::WebContentsGetter&
web_contents_getter) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
WebContents* web_contents = web_contents_getter.Run();
return UserData::GetContents(web_contents);
}
// static
AwContentsClientBridgeBase* AwContentsClientBridgeBase::FromID(
int render_process_id,
int render_frame_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::RenderFrameHost* rfh =
content::RenderFrameHost::FromID(render_process_id, render_frame_id);
content::WebContents* web_contents =
content::WebContents::FromRenderFrameHost(rfh);
return UserData::GetContents(web_contents);
}
AwContentsClientBridgeBase::~AwContentsClientBridgeBase() {
}
} // namespace android_webview

@@ -1,107 +0,0 @@
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
#define ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
#include <memory>
#include "android_webview/browser/net/aw_web_resource_request.h"
#include "base/supports_user_data.h"
#include "content/public/browser/certificate_request_result_type.h"
#include "content/public/browser/javascript_dialog_manager.h"
#include "content/public/browser/resource_request_info.h"
#include "net/http/http_response_headers.h"
class GURL;
namespace content {
class ClientCertificateDelegate;
class WebContents;
}
namespace net {
class SSLCertRequestInfo;
class X509Certificate;
}
namespace android_webview {
// browser/ layer interface for AwContensClientBridge, as DEPS prevents this
// layer from depending on native/ where the implementation lives. The
// implementor of the base class plumbs the request to the Java side and
// eventually to the webviewclient. This layering hides the details of
// native/ from browser/ layer.
class AwContentsClientBridgeBase {
public:
// Adds the handler to the UserData registry.
static void Associate(content::WebContents* web_contents,
AwContentsClientBridgeBase* handler);
static AwContentsClientBridgeBase* FromWebContents(
content::WebContents* web_contents);
static AwContentsClientBridgeBase* FromWebContentsGetter(
const content::ResourceRequestInfo::WebContentsGetter&
web_contents_getter);
static AwContentsClientBridgeBase* FromID(int render_process_id,
int render_frame_id);
virtual ~AwContentsClientBridgeBase();
virtual void AllowCertificateError(
int cert_error,
net::X509Certificate* cert,
const GURL& request_url,
const base::Callback<void(content::CertificateRequestResultType)>&
callback,
bool* cancel_request) = 0;
virtual void SelectClientCertificate(
net::SSLCertRequestInfo* cert_request_info,
std::unique_ptr<content::ClientCertificateDelegate> delegate) = 0;
virtual void RunJavaScriptDialog(
content::JavaScriptDialogType dialog_type,
const GURL& origin_url,
const base::string16& message_text,
const base::string16& default_prompt_text,
const content::JavaScriptDialogManager::DialogClosedCallback&
callback) = 0;
virtual void RunBeforeUnloadDialog(
const GURL& origin_url,
const content::JavaScriptDialogManager::DialogClosedCallback& callback)
= 0;
virtual bool ShouldOverrideUrlLoading(const base::string16& url,
bool has_user_gesture,
bool is_redirect,
bool is_main_frame) = 0;
virtual void NewDownload(const GURL& url,
const std::string& user_agent,
const std::string& content_disposition,
const std::string& mime_type,
int64_t content_length) = 0;
// Called when a new login request is detected. See the documentation for
// WebViewClient.onReceivedLoginRequest for arguments. Note that |account|
// may be empty.
virtual void NewLoginRequest(const std::string& realm,
const std::string& account,
const std::string& args) = 0;
// Called when a resource loading error has occured (e.g. an I/O error,
// host name lookup failure etc.)
virtual void OnReceivedError(const AwWebResourceRequest& request,
int error_code) = 0;
// Called when a response from the server is received with status code >= 400.
virtual void OnReceivedHttpError(
const AwWebResourceRequest& request,
const scoped_refptr<const net::HttpResponseHeaders>&
response_headers) = 0;
};
} // namespace android_webview
#endif // ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_

@@ -4,7 +4,7 @@
#include "android_webview/browser/aw_javascript_dialog_manager.h" #include "android_webview/browser/aw_javascript_dialog_manager.h"
#include "android_webview/browser/aw_contents_client_bridge_base.h" #include "android_webview/browser/aw_contents_client_bridge.h"
#include "content/public/browser/javascript_dialog_manager.h" #include "content/public/browser/javascript_dialog_manager.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
@@ -22,8 +22,8 @@ void AwJavaScriptDialogManager::RunJavaScriptDialog(
const base::string16& default_prompt_text, const base::string16& default_prompt_text,
const DialogClosedCallback& callback, const DialogClosedCallback& callback,
bool* did_suppress_message) { bool* did_suppress_message) {
AwContentsClientBridgeBase* bridge = AwContentsClientBridge* bridge =
AwContentsClientBridgeBase::FromWebContents(web_contents); AwContentsClientBridge::FromWebContents(web_contents);
if (!bridge) { if (!bridge) {
callback.Run(false, base::string16()); callback.Run(false, base::string16());
return; return;
@@ -37,8 +37,8 @@ void AwJavaScriptDialogManager::RunBeforeUnloadDialog(
content::WebContents* web_contents, content::WebContents* web_contents,
bool is_reload, bool is_reload,
const DialogClosedCallback& callback) { const DialogClosedCallback& callback) {
AwContentsClientBridgeBase* bridge = AwContentsClientBridge* bridge =
AwContentsClientBridgeBase::FromWebContents(web_contents); AwContentsClientBridge::FromWebContents(web_contents);
if (!bridge) { if (!bridge) {
callback.Run(false, base::string16()); callback.Run(false, base::string16());
return; return;

@@ -5,7 +5,7 @@
#include "android_webview/browser/net/aw_network_delegate.h" #include "android_webview/browser/net/aw_network_delegate.h"
#include "android_webview/browser/aw_browser_context.h" #include "android_webview/browser/aw_browser_context.h"
#include "android_webview/browser/aw_contents_client_bridge_base.h" #include "android_webview/browser/aw_contents_client_bridge.h"
#include "android_webview/browser/aw_contents_io_thread_client.h" #include "android_webview/browser/aw_contents_io_thread_client.h"
#include "android_webview/browser/aw_cookie_access_policy.h" #include "android_webview/browser/aw_cookie_access_policy.h"
#include "android_webview/browser/net/aw_web_resource_request.h" #include "android_webview/browser/net/aw_web_resource_request.h"
@@ -30,8 +30,8 @@ void OnReceivedHttpErrorOnUiThread(
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
const AwWebResourceRequest& request, const AwWebResourceRequest& request,
scoped_refptr<const net::HttpResponseHeaders> original_response_headers) { scoped_refptr<const net::HttpResponseHeaders> original_response_headers) {
AwContentsClientBridgeBase* client = AwContentsClientBridge* client =
AwContentsClientBridgeBase::FromWebContentsGetter(web_contents_getter); AwContentsClientBridge::FromWebContentsGetter(web_contents_getter);
if (!client) { if (!client) {
DLOG(WARNING) << "client is null, onReceivedHttpError dropped for " DLOG(WARNING) << "client is null, onReceivedHttpError dropped for "
<< request.url; << request.url;

@@ -8,7 +8,7 @@
#include <string> #include <string>
#include "android_webview/browser/aw_browser_context.h" #include "android_webview/browser/aw_browser_context.h"
#include "android_webview/browser/aw_contents_client_bridge_base.h" #include "android_webview/browser/aw_contents_client_bridge.h"
#include "android_webview/browser/aw_contents_io_thread_client.h" #include "android_webview/browser/aw_contents_io_thread_client.h"
#include "android_webview/browser/aw_login_delegate.h" #include "android_webview/browser/aw_login_delegate.h"
#include "android_webview/browser/aw_resource_context.h" #include "android_webview/browser/aw_resource_context.h"
@@ -34,7 +34,7 @@
#include "url/url_constants.h" #include "url/url_constants.h"
using android_webview::AwContentsIoThreadClient; using android_webview::AwContentsIoThreadClient;
using android_webview::AwContentsClientBridgeBase; using android_webview::AwContentsClientBridge;
using android_webview::AwWebResourceRequest; using android_webview::AwWebResourceRequest;
using content::BrowserThread; using content::BrowserThread;
using content::ResourceType; using content::ResourceType;
@@ -69,8 +69,8 @@ void DownloadStartingOnUIThread(
const std::string& content_disposition, const std::string& content_disposition,
const std::string& mime_type, const std::string& mime_type,
int64_t content_length) { int64_t content_length) {
AwContentsClientBridgeBase* client = AwContentsClientBridge* client =
AwContentsClientBridgeBase::FromWebContentsGetter(web_contents_getter); AwContentsClientBridge::FromWebContentsGetter(web_contents_getter);
if (!client) if (!client)
return; return;
client->NewDownload(url, user_agent, content_disposition, mime_type, client->NewDownload(url, user_agent, content_disposition, mime_type,
@@ -82,8 +82,8 @@ void NewLoginRequestOnUIThread(
const std::string& realm, const std::string& realm,
const std::string& account, const std::string& account,
const std::string& args) { const std::string& args) {
AwContentsClientBridgeBase* client = AwContentsClientBridge* client =
AwContentsClientBridgeBase::FromWebContentsGetter(web_contents_getter); AwContentsClientBridge::FromWebContentsGetter(web_contents_getter);
if (!client) if (!client)
return; return;
client->NewLoginRequest(realm, account, args); client->NewLoginRequest(realm, account, args);
@@ -93,8 +93,8 @@ void OnReceivedErrorOnUiThread(
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
const AwWebResourceRequest& request, const AwWebResourceRequest& request,
int error_code) { int error_code) {
AwContentsClientBridgeBase* client = AwContentsClientBridge* client =
AwContentsClientBridgeBase::FromWebContentsGetter(web_contents_getter); AwContentsClientBridge::FromWebContentsGetter(web_contents_getter);
if (!client) { if (!client) {
DLOG(WARNING) << "client is null, onReceivedError dropped for " DLOG(WARNING) << "client is null, onReceivedError dropped for "
<< request.url; << request.url;