Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 }; |
| OLD | NEW |