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

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: Update comments in AwSettings.java 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 cb5d870e7112089e0c5940d503ea7901378e8fce..aad7981782620b55c899f51829067fefa42f886e 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 "content/public/browser/resource_controller.h"
@@ -58,23 +59,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 (io_client->ShouldBlockContentUrls() &&
+ request->url().SchemeIs(android_webview::kContentScheme)) {
joth 2012/10/08 17:29:01 nit: swap expression order: if (SchemeIs(content)
mnaganov (inactive) 2012/10/09 09:59:36 Done.
+ throttles->push_back(new CancelResourceThrottle);
+ }
+
+ // Part of implementation of WebSettings.allowFileAccess.
+ if (io_client->ShouldBlockFileUrls() && request->url().SchemeIsFile()) {
joth 2012/10/08 17:29:01 ditto
mnaganov (inactive) 2012/10/09 09:59:36 Done.
+ 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);
+ SetAllowOnlyLoadFromCache(request);
}
}
}
@@ -92,4 +105,14 @@ content::ResourceDispatcherHostLoginDelegate*
return new AwLoginDelegate(auth_info, request);
}
+void AwResourceDispatcherHostDelegate::SetAllowOnlyLoadFromCache(
joth 2012/10/08 17:29:01 nit: maybe easier to read as SetOnlyAllowLoadFromC
mnaganov (inactive) 2012/10/09 09:59:36 Done.
+ 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