Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1118)

Unified Diff: android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc

Issue 11090003: [Android] Upstream WebView.allow{Content|File}Access implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Workaround to remove dependency on https://codereview.chromium.org/11030051 Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 d0fa95385f0d7c076d3af6a719ad5e579b2cd31b..15e562bb11cb137bb5a641885ae0eb178d72d542 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
@@ -6,6 +6,7 @@
#include "android_webview/browser/aw_login_delegate.h"
#include "android_webview/browser/aw_contents_io_thread_client.h"
+#include "android_webview/common/url_constants.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
#include "chrome/browser/component/navigation_interception/intercept_navigation_delegate.h"
@@ -61,23 +62,35 @@ void AwResourceDispatcherHostDelegate::RequestBeginning(
bool is_continuation_of_transferred_request,
ScopedVector<content::ResourceThrottle>* throttles) {
- // Part of Implemention of WebSettings.blockNetworkLoads.
scoped_ptr<AwContentsIoThreadClient> io_client =
AwContentsIoThreadClient::FromID(child_id, route_id);
DCHECK(io_client.get());
+ // Part of implementation of WebSettings.allowContentAccess.
+ if (request->url().SchemeIs(android_webview::kContentScheme) &&
+ io_client->ShouldBlockContentUrls()) {
+ throttles->push_back(new CancelResourceThrottle);
+ }
+
+ // Part of implementation of WebSettings.allowFileAccess.
+ if (request->url().SchemeIsFile() && io_client->ShouldBlockFileUrls()) {
+ const GURL& url = request->url();
+ if (!url.has_path() ||
+ // Application's assets and resources are always available.
+ (url.path().find(android_webview::kAndroidResourcePath) != 0 &&
+ url.path().find(android_webview::kAndroidAssetPath) != 0)) {
+ throttles->push_back(new CancelResourceThrottle);
+ }
+ }
+
+ // Part of implementation of WebSettings.blockNetworkLoads.
if (io_client->ShouldBlockNetworkLoads()) {
// Need to cancel ftp since it does not support net::LOAD_ONLY_FROM_CACHE
// flag, so must cancel the request if network load is blocked.
if (request->url().SchemeIs(chrome::kFtpScheme)) {
throttles->push_back(new CancelResourceThrottle);
} else {
- int load_flags = request->load_flags();
- load_flags &= ~(net::LOAD_BYPASS_CACHE &
- net::LOAD_VALIDATE_CACHE &
- net::LOAD_PREFERRING_CACHE);
- load_flags |= net::LOAD_ONLY_FROM_CACHE;
- request->set_load_flags(load_flags);
+ SetOnlyAllowLoadFromCache(request);
}
}
@@ -100,4 +113,14 @@ content::ResourceDispatcherHostLoginDelegate*
return new AwLoginDelegate(auth_info, request);
}
+void AwResourceDispatcherHostDelegate::SetOnlyAllowLoadFromCache(
+ net::URLRequest* request) {
+ int load_flags = request->load_flags();
+ load_flags &= ~(net::LOAD_BYPASS_CACHE &
+ net::LOAD_VALIDATE_CACHE &
+ net::LOAD_PREFERRING_CACHE);
+ load_flags |= net::LOAD_ONLY_FROM_CACHE;
+ request->set_load_flags(load_flags);
+}
+
}

Powered by Google App Engine
This is Rietveld 408576698