| <!DOCTYPE html><!-- webkit-test-runner [ jscOptions=--useDollarVM=true ] --> |
| <html> |
| <head> |
| <script src="../resources/js-test.js"></script> |
| </head> |
| <body> |
| <div id="foo"></div> |
| <script> |
| description("Test taintedness is tracked via several ways to inject scripts in WebCore"); |
| // jsTestIsAsync = true; |
| |
| window.jsTestIsAsync = true; |
| |
| let foo = document.getElementById("foo"); |
| |
| shouldBeIndirectlyTaintedString = "shouldBeEqualToString(\\'$vm.vmTaintedState()\\', \\'IndirectlyTainted\\')"; |
| shouldBeIndirectlyTaintedByHistoryString = "shouldBeEqualToString(\\'$vm.vmTaintedState()\\', \\'IndirectlyTaintedByHistory\\')"; |
| |
| function checkFromOuterScript() { |
| shouldBeEqualToString("$vm.vmTaintedState()", "IndirectlyTaintedByHistory"); |
| finishJSTest(); |
| } |
| $vm.runTaintedString(` |
| setTimeout(\` |
| // IndirectlyTainted because this code is created by the setTimeout function. |
| shouldBeEqualToString("$vm.vmTaintedState()", "IndirectlyTainted"); |
| Promise.resolve().then(checkFromOuterScript); |
| 42 + 0; |
| \`, 0); |
| `); |
| |
| </script> |
| </body> |
| </html> |