test_xrayed_iterator.js 902 B

12345678910111213141516171819202122232425262728293031323334353637
  1. const Cu = Components.utils;
  2. function run_test() {
  3. var toEval = [
  4. "var customIterator = {",
  5. " _array: [6, 7, 8, 9],",
  6. " __iterator__: function() {",
  7. " for (var i = 0; i < this._array.length; ++i)",
  8. " yield this._array[i];",
  9. " }",
  10. "}"
  11. ].join('\n');
  12. function checkIterator(iterator) {
  13. var control = [6, 7, 8, 9];
  14. var i = 0;
  15. for (var item in iterator) {
  16. do_check_eq(item, control[i]);
  17. ++i;
  18. }
  19. }
  20. // First, try in our own scope.
  21. eval(toEval);
  22. checkIterator(customIterator);
  23. // Next, try a vanilla CCW.
  24. var sbChrome = Cu.Sandbox(this);
  25. Cu.evalInSandbox(toEval, sbChrome, '1.7');
  26. checkIterator(sbChrome.customIterator);
  27. // Finally, try an Xray waiver.
  28. var sbContent = Cu.Sandbox('http://www.example.com');
  29. Cu.evalInSandbox(toEval, sbContent, '1.7');
  30. checkIterator(Cu.waiveXrays(sbContent.customIterator));
  31. }