[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:
android_webview
@@ -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;
|
||||||
|
Reference in New Issue
Block a user