file_promise_xrays.html 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. <!DOCTYPE html>
  2. <html>
  3. <script>
  4. function vendGetter(name) {
  5. return function() { throw "Getting " + String(name) };
  6. }
  7. function vendSetter(name) {
  8. return function() { throw "Setting " + String(name) };
  9. }
  10. var setupThrew = false;
  11. try {
  12. // Neuter everything we can think of on Promise.
  13. for (var obj of [Promise, Promise.prototype]) {
  14. propNames = Object.getOwnPropertyNames(obj);
  15. propNames = propNames.concat(Object.getOwnPropertySymbols(obj));
  16. for (var propName of propNames) {
  17. if ((propName == "prototype" ||
  18. propName == Symbol.hasInstance) &&
  19. obj == Promise) {
  20. // They're not configurable.
  21. continue;
  22. }
  23. Object.defineProperty(obj, propName,
  24. { get: vendGetter(propName), set: vendSetter(propName) });
  25. }
  26. }
  27. } catch (e) {
  28. // Something went wrong. Save that info so the test can check for it.
  29. setupThrew = e;
  30. }
  31. </script>
  32. </html>