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

Side by Side Diff: chrome/test/data/extensions/platform_apps/web_view/shim/main.js

Issue 22793018: <webview>: Implement support for package-local chrome-extension:// URLs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a test to verify that a privileged partition can access a local resource Created 7 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 var util = {}; 5 var util = {};
6 var embedder = {}; 6 var embedder = {};
7 embedder.baseGuestURL = ''; 7 embedder.baseGuestURL = '';
8 embedder.emptyGuestURL = ''; 8 embedder.emptyGuestURL = '';
9 embedder.windowOpenGuestURL = ''; 9 embedder.windowOpenGuestURL = '';
10 embedder.noReferrerGuestURL = ''; 10 embedder.noReferrerGuestURL = '';
11 embedder.redirectGuestURL = ''; 11 embedder.redirectGuestURL = '';
12 embedder.redirectGuestURLDest = ''; 12 embedder.redirectGuestURLDest = '';
13 embedder.closeSocketURL = ''; 13 embedder.closeSocketURL = '';
14 embedder.extensionId = '';
14 embedder.tests = {}; 15 embedder.tests = {};
15 16
16 embedder.setUp_ = function(config) { 17 embedder.setUp_ = function(config) {
17 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; 18 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port;
18 embedder.emptyGuestURL = embedder.baseGuestURL + 19 embedder.emptyGuestURL = embedder.baseGuestURL +
19 '/extensions/platform_apps/web_view/shim/empty_guest.html'; 20 '/extensions/platform_apps/web_view/shim/empty_guest.html';
20 embedder.windowOpenGuestURL = embedder.baseGuestURL + 21 embedder.windowOpenGuestURL = embedder.baseGuestURL +
21 '/extensions/platform_apps/web_view/shim/guest.html'; 22 '/extensions/platform_apps/web_view/shim/guest.html';
22 embedder.noReferrerGuestURL = embedder.baseGuestURL + 23 embedder.noReferrerGuestURL = embedder.baseGuestURL +
23 '/extensions/platform_apps/web_view/shim/guest_noreferrer.html'; 24 '/extensions/platform_apps/web_view/shim/guest_noreferrer.html';
24 embedder.redirectGuestURL = embedder.baseGuestURL + '/server-redirect'; 25 embedder.redirectGuestURL = embedder.baseGuestURL + '/server-redirect';
25 embedder.redirectGuestURLDest = embedder.baseGuestURL + 26 embedder.redirectGuestURLDest = embedder.baseGuestURL +
26 '/extensions/platform_apps/web_view/shim/guest_redirect.html'; 27 '/extensions/platform_apps/web_view/shim/guest_redirect.html';
27 embedder.closeSocketURL = embedder.baseGuestURL + '/close-socket'; 28 embedder.closeSocketURL = embedder.baseGuestURL + '/close-socket';
28 }; 29 };
29 30
30 window.runTest = function(testName) { 31 window.runTest = function(testName, extensionId) {
32 embedder.extensionId = extensionId;
31 if (!embedder.test.testList[testName]) { 33 if (!embedder.test.testList[testName]) {
32 console.log('Incorrect testName: ' + testName); 34 console.log('Incorrect testName: ' + testName);
33 embedder.test.fail(); 35 embedder.test.fail();
34 return; 36 return;
35 } 37 }
36 38
37 // Run the test. 39 // Run the test.
38 embedder.test.testList[testName](); 40 embedder.test.testList[testName]();
39 }; 41 };
40 42
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 // Check contentWindow. 294 // Check contentWindow.
293 embedder.test.assertEq('object', typeof webview.contentWindow); 295 embedder.test.assertEq('object', typeof webview.contentWindow);
294 embedder.test.assertEq('function', 296 embedder.test.assertEq('function',
295 typeof webview.contentWindow.postMessage); 297 typeof webview.contentWindow.postMessage);
296 embedder.test.succeed(); 298 embedder.test.succeed();
297 }); 299 });
298 webview.setAttribute('src', 'data:text/html,webview check api'); 300 webview.setAttribute('src', 'data:text/html,webview check api');
299 document.body.appendChild(webview); 301 document.body.appendChild(webview);
300 } 302 }
301 303
304 // This test verifies that the loadstop event fires when loading a webview
305 // accessible resource from a partition that is privileged.
306 function testChromeExtensionURL() {
307 var localResource = 'chrome-extension://' + embedder.extensionId +
Matt Perry 2013/09/24 21:06:54 Does chrome.runtime.getURL() not work here?
Fady Samuel 2013/09/24 23:05:02 It does. I just didn't know it existed :P. Thanks!
308 '/guest.html';
309 var webview = document.createElement('webview');
310 // foobar is a privileged partition according to the manifest file.
311 webview.partition = 'foobar';
312 webview.addEventListener('loadabort', function(e) {
313 embedder.test.fail();
314 });
315 webview.addEventListener('loadstop', function(e) {
316 embedder.test.succeed();
317 });
318 webview.setAttribute('src', localResource);
319 document.body.appendChild(webview);
320 }
321
302 function testWebRequestAPIExistence() { 322 function testWebRequestAPIExistence() {
303 var apiPropertiesToCheck = [ 323 var apiPropertiesToCheck = [
304 'onBeforeRequest', 324 'onBeforeRequest',
305 'onBeforeSendHeaders', 325 'onBeforeSendHeaders',
306 'onSendHeaders', 326 'onSendHeaders',
307 'onHeadersReceived', 327 'onHeadersReceived',
308 'onAuthRequired', 328 'onAuthRequired',
309 'onBeforeRedirect', 329 'onBeforeRedirect',
310 'onResponseStarted', 330 'onResponseStarted',
311 'onCompleted', 331 'onCompleted',
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 e.newUrl.replace('127.0.0.1', 'localhost')); 895 e.newUrl.replace('127.0.0.1', 'localhost'));
876 if (loadstartCalled) { 896 if (loadstartCalled) {
877 embedder.test.succeed(); 897 embedder.test.succeed();
878 } else { 898 } else {
879 embedder.test.fail(); 899 embedder.test.fail();
880 } 900 }
881 }); 901 });
882 document.body.appendChild(webview); 902 document.body.appendChild(webview);
883 } 903 }
884 904
905 // This test verifies that the loadabort event fires when loading a webview
906 // accessible resource from a partition that is not privileged.
907 function testLoadAbortChromeExtensionURLWrongPartition() {
908 var localResource = 'chrome-extension://' + embedder.extensionId +
909 '/guest.html';
910 var webview = document.createElement('webview');
911 webview.addEventListener('loadabort', function(e) {
912 embedder.test.assertEq('ERR_ADDRESS_UNREACHABLE', e.reason);
913 embedder.test.succeed();
914 });
915 webview.addEventListener('loadstop', function(e) {
916 embedder.test.fail();
917 });
918 webview.setAttribute('src', localResource);
919 document.body.appendChild(webview);
920 }
921
885 // This test verifies that the loadabort event fires as expected and with the 922 // This test verifies that the loadabort event fires as expected and with the
886 // appropriate fields when an empty response is returned. 923 // appropriate fields when an empty response is returned.
887 function testLoadAbortEmptyResponse() { 924 function testLoadAbortEmptyResponse() {
888 var webview = document.createElement('webview'); 925 var webview = document.createElement('webview');
889 webview.addEventListener('loadabort', function(e) { 926 webview.addEventListener('loadabort', function(e) {
890 embedder.test.assertEq('ERR_EMPTY_RESPONSE', e.reason); 927 embedder.test.assertEq('ERR_EMPTY_RESPONSE', e.reason);
891 embedder.test.succeed(); 928 embedder.test.succeed();
892 }); 929 });
893 webview.setAttribute('src', embedder.closeSocketURL); 930 webview.setAttribute('src', embedder.closeSocketURL);
894 document.body.appendChild(webview); 931 document.body.appendChild(webview);
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1048 }); 1085 });
1049 document.body.appendChild(webview); 1086 document.body.appendChild(webview);
1050 } 1087 }
1051 1088
1052 embedder.test.testList = { 1089 embedder.test.testList = {
1053 'testAutosizeAfterNavigation': testAutosizeAfterNavigation, 1090 'testAutosizeAfterNavigation': testAutosizeAfterNavigation,
1054 'testAutosizeBeforeNavigation': testAutosizeBeforeNavigation, 1091 'testAutosizeBeforeNavigation': testAutosizeBeforeNavigation,
1055 'testAutosizeRemoveAttributes': testAutosizeRemoveAttributes, 1092 'testAutosizeRemoveAttributes': testAutosizeRemoveAttributes,
1056 'testAutosizeWithPartialAttributes': testAutosizeWithPartialAttributes, 1093 'testAutosizeWithPartialAttributes': testAutosizeWithPartialAttributes,
1057 'testAPIMethodExistence': testAPIMethodExistence, 1094 'testAPIMethodExistence': testAPIMethodExistence,
1095 'testChromeExtensionURL': testChromeExtensionURL,
1058 'testWebRequestAPIExistence': testWebRequestAPIExistence, 1096 'testWebRequestAPIExistence': testWebRequestAPIExistence,
1059 'testEventName': testEventName, 1097 'testEventName': testEventName,
1060 'testOnEventProperties': testOnEventProperties, 1098 'testOnEventProperties': testOnEventProperties,
1061 'testLoadProgressEvent': testLoadProgressEvent, 1099 'testLoadProgressEvent': testLoadProgressEvent,
1062 'testDestroyOnEventListener': testDestroyOnEventListener, 1100 'testDestroyOnEventListener': testDestroyOnEventListener,
1063 'testCannotMutateEventName': testCannotMutateEventName, 1101 'testCannotMutateEventName': testCannotMutateEventName,
1064 'testPartitionRaisesException': testPartitionRaisesException, 1102 'testPartitionRaisesException': testPartitionRaisesException,
1065 'testExecuteScriptFail': testExecuteScriptFail, 1103 'testExecuteScriptFail': testExecuteScriptFail,
1066 'testExecuteScript': testExecuteScript, 1104 'testExecuteScript': testExecuteScript,
1067 'testTerminateAfterExit': testTerminateAfterExit, 1105 'testTerminateAfterExit': testTerminateAfterExit,
1068 'testAssignSrcAfterCrash': testAssignSrcAfterCrash, 1106 'testAssignSrcAfterCrash': testAssignSrcAfterCrash,
1069 'testNavOnConsecutiveSrcAttributeChanges': 1107 'testNavOnConsecutiveSrcAttributeChanges':
1070 testNavOnConsecutiveSrcAttributeChanges, 1108 testNavOnConsecutiveSrcAttributeChanges,
1071 'testNavOnSrcAttributeChange': testNavOnSrcAttributeChange, 1109 'testNavOnSrcAttributeChange': testNavOnSrcAttributeChange,
1072 'testReassignSrcAttribute': testReassignSrcAttribute, 1110 'testReassignSrcAttribute': testReassignSrcAttribute,
1073 'testRemoveSrcAttribute': testRemoveSrcAttribute, 1111 'testRemoveSrcAttribute': testRemoveSrcAttribute,
1074 'testBrowserPluginNotAllowed': testBrowserPluginNotAllowed, 1112 'testBrowserPluginNotAllowed': testBrowserPluginNotAllowed,
1075 'testNewWindow': testNewWindow, 1113 'testNewWindow': testNewWindow,
1076 'testNewWindowTwoListeners': testNewWindowTwoListeners, 1114 'testNewWindowTwoListeners': testNewWindowTwoListeners,
1077 'testNewWindowNoPreventDefault': testNewWindowNoPreventDefault, 1115 'testNewWindowNoPreventDefault': testNewWindowNoPreventDefault,
1078 'testNewWindowNoReferrerLink': testNewWindowNoReferrerLink, 1116 'testNewWindowNoReferrerLink': testNewWindowNoReferrerLink,
1079 'testContentLoadEvent': testContentLoadEvent, 1117 'testContentLoadEvent': testContentLoadEvent,
1080 'testWebRequestAPI': testWebRequestAPI, 1118 'testWebRequestAPI': testWebRequestAPI,
1081 'testWebRequestAPIGoogleProperty': testWebRequestAPIGoogleProperty, 1119 'testWebRequestAPIGoogleProperty': testWebRequestAPIGoogleProperty,
1082 'testWebRequestListenerSurvivesReparenting': 1120 'testWebRequestListenerSurvivesReparenting':
1083 testWebRequestListenerSurvivesReparenting, 1121 testWebRequestListenerSurvivesReparenting,
1084 'testGetProcessId': testGetProcessId, 1122 'testGetProcessId': testGetProcessId,
1085 'testLoadStartLoadRedirect': testLoadStartLoadRedirect, 1123 'testLoadStartLoadRedirect': testLoadStartLoadRedirect,
1124 'testLoadAbortChromeExtensionURLWrongPartition':
1125 testLoadAbortChromeExtensionURLWrongPartition,
1086 'testLoadAbortEmptyResponse': testLoadAbortEmptyResponse, 1126 'testLoadAbortEmptyResponse': testLoadAbortEmptyResponse,
1087 'testLoadAbortIllegalChromeURL': testLoadAbortIllegalChromeURL, 1127 'testLoadAbortIllegalChromeURL': testLoadAbortIllegalChromeURL,
1088 'testLoadAbortIllegalFileURL': testLoadAbortIllegalFileURL, 1128 'testLoadAbortIllegalFileURL': testLoadAbortIllegalFileURL,
1089 'testLoadAbortIllegalJavaScriptURL': testLoadAbortIllegalJavaScriptURL, 1129 'testLoadAbortIllegalJavaScriptURL': testLoadAbortIllegalJavaScriptURL,
1090 'testNavigationToExternalProtocol': testNavigationToExternalProtocol, 1130 'testNavigationToExternalProtocol': testNavigationToExternalProtocol,
1091 'testReload': testReload, 1131 'testReload': testReload,
1092 'testRemoveWebviewOnExit': testRemoveWebviewOnExit, 1132 'testRemoveWebviewOnExit': testRemoveWebviewOnExit,
1093 'testRemoveWebviewAfterNavigation': testRemoveWebviewAfterNavigation, 1133 'testRemoveWebviewAfterNavigation': testRemoveWebviewAfterNavigation,
1094 'testResizeWebviewResizesContent': testResizeWebviewResizesContent 1134 'testResizeWebviewResizesContent': testResizeWebviewResizesContent
1095 }; 1135 };
1096 1136
1097 onload = function() { 1137 onload = function() {
1098 chrome.test.getConfig(function(config) { 1138 chrome.test.getConfig(function(config) {
1099 embedder.setUp_(config); 1139 embedder.setUp_(config);
1100 chrome.test.sendMessage("Launched"); 1140 chrome.test.sendMessage("Launched");
1101 }); 1141 });
1102 }; 1142 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698