summaryrefslogtreecommitdiffstats
path: root/android_webview/browser
diff options
context:
space:
mode:
Diffstat (limited to 'android_webview/browser')
-rw-r--r--android_webview/browser/aw_content_browser_client.cc37
-rw-r--r--android_webview/browser/aw_contents_client_bridge_base.h4
-rw-r--r--android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc13
3 files changed, 7 insertions, 47 deletions
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc
index ca277be..87a1b93 100644
--- a/android_webview/browser/aw_content_browser_client.cc
+++ b/android_webview/browser/aw_content_browser_client.cc
@@ -24,7 +24,6 @@
#include "components/cdm/browser/cdm_message_filter_android.h"
#include "content/public/browser/access_token_store.h"
#include "content/public/browser/browser_message_filter.h"
-#include "content/public/browser/browser_thread.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/client_certificate_delegate.h"
#include "content/public/browser/render_frame_host.h"
@@ -39,7 +38,6 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/resources/grit/ui_resources.h"
-using content::BrowserThread;
using content::ResourceType;
namespace android_webview {
@@ -53,15 +51,8 @@ public:
explicit AwContentsMessageFilter(int process_id);
// BrowserMessageFilter methods.
- void OverrideThreadForMessage(const IPC::Message& message,
- BrowserThread::ID* thread) override;
bool OnMessageReceived(const IPC::Message& message) override;
- void OnShouldOverrideUrlLoading(int routing_id,
- const base::string16& url,
- bool has_user_gesture,
- bool is_redirect,
- bool* ignore_navigation);
void OnSubFrameCreated(int parent_render_frame_id, int child_render_frame_id);
private:
@@ -80,43 +71,15 @@ AwContentsMessageFilter::AwContentsMessageFilter(int process_id)
AwContentsMessageFilter::~AwContentsMessageFilter() {
}
-void AwContentsMessageFilter::OverrideThreadForMessage(
- const IPC::Message& message, BrowserThread::ID* thread) {
- if (message.type() == AwViewHostMsg_ShouldOverrideUrlLoading::ID) {
- *thread = BrowserThread::UI;
- }
-}
-
bool AwContentsMessageFilter::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(AwContentsMessageFilter, message)
- IPC_MESSAGE_HANDLER(AwViewHostMsg_ShouldOverrideUrlLoading,
- OnShouldOverrideUrlLoading)
IPC_MESSAGE_HANDLER(AwViewHostMsg_SubFrameCreated, OnSubFrameCreated)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
-void AwContentsMessageFilter::OnShouldOverrideUrlLoading(
- int render_frame_id,
- const base::string16& url,
- bool has_user_gesture,
- bool is_redirect,
- bool* ignore_navigation) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- *ignore_navigation = false;
- AwContentsClientBridgeBase* client =
- AwContentsClientBridgeBase::FromID(process_id_, render_frame_id);
- if (client) {
- *ignore_navigation =
- client->ShouldOverrideUrlLoading(url, has_user_gesture, is_redirect);
- } else {
- LOG(WARNING) << "Failed to find the associated render view host for url: "
- << url;
- }
-}
-
void AwContentsMessageFilter::OnSubFrameCreated(int parent_render_frame_id,
int child_render_frame_id) {
AwContentsIoThreadClient::SubFrameCreated(
diff --git a/android_webview/browser/aw_contents_client_bridge_base.h b/android_webview/browser/aw_contents_client_bridge_base.h
index 31c965f..9cd9206 100644
--- a/android_webview/browser/aw_contents_client_bridge_base.h
+++ b/android_webview/browser/aw_contents_client_bridge_base.h
@@ -62,10 +62,6 @@ class AwContentsClientBridgeBase {
const base::string16& message_text,
const content::JavaScriptDialogManager::DialogClosedCallback& callback)
= 0;
-
- virtual bool ShouldOverrideUrlLoading(const base::string16& url,
- bool has_user_gesture,
- bool is_redirect) = 0;
};
} // namespace android_webview
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 02160ce..da8a604 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
@@ -226,15 +226,16 @@ void AwResourceDispatcherHostDelegate::RequestBeginning(
throttles->push_back(new IoThreadClientThrottle(
request_info->GetChildID(), request_info->GetRenderFrameID(), request));
- // We allow intercepting only navigations within main frames. This
- // is used to post onPageStarted. We handle shouldOverrideUrlLoading
- // via a sync IPC.
- if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+ if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
+ (resource_type == content::RESOURCE_TYPE_SUB_FRAME &&
+ !request->url().SchemeIs(url::kHttpScheme) &&
+ !request->url().SchemeIs(url::kHttpsScheme) &&
+ !request->url().SchemeIs(url::kAboutScheme))) {
throttles->push_back(InterceptNavigationDelegate::CreateThrottleFor(
request));
- } else {
- InterceptNavigationDelegate::UpdateUserGestureCarryoverInfo(request);
}
+ if (resource_type != content::RESOURCE_TYPE_MAIN_FRAME)
+ InterceptNavigationDelegate::UpdateUserGestureCarryoverInfo(request);
}
void AwResourceDispatcherHostDelegate::OnRequestRedirected(