summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorrzhao <rzhao@chromium.org>2015-08-17 09:29:27 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-17 16:30:02 +0000
commit10a8621789abed527c0850c4dcc10b3ff68aef2b (patch)
tree8cc117c46e612128d2a0c689a5c43e1834f1e1df /extensions
parent0894b58caf8f5ad5dc32a9b9516147801885e171 (diff)
downloadchromium_src-10a8621789abed527c0850c4dcc10b3ff68aef2b.zip
chromium_src-10a8621789abed527c0850c4dcc10b3ff68aef2b.tar.gz
chromium_src-10a8621789abed527c0850c4dcc10b3ff68aef2b.tar.bz2
<webview>: Add better loadabort reason messages
BUG=341097 Note: ERR_INVALID_URL and ERR_DISALLOWED_SCHEME are not defined in webview tag docs (https://developer.chrome.com/apps/tags/webview#event-loadabort) Review URL: https://codereview.chromium.org/1292353003 Cr-Commit-Position: refs/heads/master@{#343696}
Diffstat (limited to 'extensions')
-rw-r--r--extensions/browser/guest_view/web_view/web_view_guest.cc20
-rw-r--r--extensions/test/data/web_view/apitest/main.js10
2 files changed, 19 insertions, 11 deletions
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc
index eee9cc9..aea5054 100644
--- a/extensions/browser/guest_view/web_view/web_view_guest.cc
+++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
@@ -1325,17 +1325,25 @@ void WebViewGuest::LoadURLWithParams(
ui::PageTransition transition_type,
const GlobalRequestID& transferred_global_request_id,
bool force_navigation) {
- // Do not allow navigating a guest to schemes other than known safe schemes.
- // This will block the embedder trying to load unwanted schemes, e.g.
- // chrome://.
+ if (!url.is_valid()) {
+ LoadAbort(true /* is_top_level */, url, net::ERR_INVALID_URL,
+ net::ErrorToShortString(net::ERR_INVALID_URL));
+ NavigateGuest(url::kAboutBlankURL, false /* force_navigation */);
+ return;
+ }
+
bool scheme_is_blocked =
(!content::ChildProcessSecurityPolicy::GetInstance()->IsWebSafeScheme(
url.scheme()) &&
!url.SchemeIs(url::kAboutScheme)) ||
url.SchemeIs(url::kJavaScriptScheme);
- if (scheme_is_blocked || !url.is_valid()) {
- LoadAbort(true /* is_top_level */, url, net::ERR_ABORTED,
- net::ErrorToShortString(net::ERR_ABORTED));
+
+ // Do not allow navigating a guest to schemes other than known safe schemes.
+ // This will block the embedder trying to load unwanted schemes, e.g.
+ // chrome://.
+ if (scheme_is_blocked) {
+ LoadAbort(true /* is_top_level */, url, net::ERR_DISALLOWED_URL_SCHEME,
+ net::ErrorToShortString(net::ERR_DISALLOWED_URL_SCHEME));
NavigateGuest(url::kAboutBlankURL, false /* force_navigation */);
return;
}
diff --git a/extensions/test/data/web_view/apitest/main.js b/extensions/test/data/web_view/apitest/main.js
index d973afe..0ea11fa 100644
--- a/extensions/test/data/web_view/apitest/main.js
+++ b/extensions/test/data/web_view/apitest/main.js
@@ -965,7 +965,7 @@ function testLoadAbortEmptyResponse() {
function testLoadAbortIllegalChromeURL() {
var webview = document.createElement('webview');
webview.addEventListener('loadabort', function(e) {
- embedder.test.assertEq('ERR_ABORTED', e.reason);
+ embedder.test.assertEq('ERR_DISALLOWED_URL_SCHEME', e.reason);
});
webview.addEventListener('loadstop', function(e) {
embedder.test.assertEq('about:blank', webview.src);
@@ -978,7 +978,7 @@ function testLoadAbortIllegalChromeURL() {
function testLoadAbortIllegalFileURL() {
var webview = document.createElement('webview');
webview.addEventListener('loadabort', function(e) {
- embedder.test.assertEq('ERR_ABORTED', e.reason);
+ embedder.test.assertEq('ERR_DISALLOWED_URL_SCHEME', e.reason);
});
webview.addEventListener('loadstop', function(e) {
embedder.test.assertEq('about:blank', webview.src);
@@ -991,7 +991,7 @@ function testLoadAbortIllegalFileURL() {
function testLoadAbortIllegalJavaScriptURL() {
var webview = document.createElement('webview');
webview.addEventListener('loadabort', function(e) {
- embedder.test.assertEq('ERR_ABORTED', e.reason);
+ embedder.test.assertEq('ERR_DISALLOWED_URL_SCHEME', e.reason);
});
webview.addEventListener('loadstop', function(e) {
embedder.test.assertEq('about:blank', webview.src);
@@ -1005,7 +1005,7 @@ function testLoadAbortIllegalJavaScriptURL() {
function testLoadAbortInvalidNavigation() {
var webview = document.createElement('webview');
webview.addEventListener('loadabort', function(e) {
- embedder.test.assertEq('ERR_ABORTED', e.reason);
+ embedder.test.assertEq('ERR_INVALID_URL', e.reason);
embedder.test.assertEq('', e.url);
});
webview.addEventListener('loadstop', function(e) {
@@ -1026,7 +1026,7 @@ function testLoadAbortNonWebSafeScheme() {
var webview = document.createElement('webview');
var chromeGuestURL = 'chrome-guest://abc123/';
webview.addEventListener('loadabort', function(e) {
- embedder.test.assertEq('ERR_ABORTED', e.reason);
+ embedder.test.assertEq('ERR_DISALLOWED_URL_SCHEME', e.reason);
embedder.test.assertEq(chromeGuestURL, e.url);
});
webview.addEventListener('loadstop', function(e) {