| <!doctype html> |
| <title>XMLHttpRequest: open() attempts to toString its string parameters</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| test(() => { |
| let log = []; |
| let expected = [ |
| 'method', |
| 'url', |
| // NOTE: 'async' intentionally missing |
| 'username', |
| 'password', |
| ]; |
| |
| let xhr = new XMLHttpRequest; |
| xhr.open( |
| { |
| toString() { |
| log.push('method'); |
| return 'get'; |
| }, |
| }, |
| { |
| toString() { |
| log.push('url'); |
| return location.href; |
| }, |
| }, |
| // NOTE: ToBoolean should not invoke valueOf |
| { |
| valueOf() { |
| log.push('async'); |
| return true; |
| }, |
| }, |
| { |
| toString() { |
| log.push('username'); |
| return 'username'; |
| }, |
| }, |
| { |
| toString() { |
| log.push('password'); |
| return 'password'; |
| }, |
| } |
| ); |
| |
| assert_array_equals(log, expected); |
| }); |
| </script> |