/extensions/cookie/test/file_testloadflags.js

http://github.com/zpao/v8monkey · JavaScript · 183 lines · 136 code · 35 blank · 12 comment · 17 complexity · 2608fdcc792924c46b7dfda7f9665d1b MD5 · raw file

  1. var gExpectedCookies;
  2. var gExpectedHeaders;
  3. var gExpectedLoads;
  4. var gObs;
  5. var gPopup;
  6. var gHeaders = 0;
  7. var gLoads = 0;
  8. // setupTest() is run from 'onload='.
  9. function setupTest(uri, domain, cookies, loads, headers) {
  10. ok(true, "setupTest uri: " + uri + " domain: " + domain + " cookies: " + cookies +
  11. " loads: " + loads + " headers: " + headers);
  12. SimpleTest.waitForExplicitFinish();
  13. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  14. Components.classes["@mozilla.org/preferences-service;1"]
  15. .getService(Components.interfaces.nsIPrefBranch)
  16. .setIntPref("network.cookie.cookieBehavior", 1);
  17. var cs = Components.classes["@mozilla.org/cookiemanager;1"]
  18. .getService(Components.interfaces.nsICookieManager2);
  19. ok(true, "we are going to remove these cookies");
  20. var count = 0;
  21. var list = cs.enumerator;
  22. while (list.hasMoreElements()) {
  23. var cookie = list.getNext().QueryInterface(Components.interfaces.nsICookie);
  24. ok(true, "cookie: " + cookie);
  25. ok(true, "cookie host " + cookie.host + " path " + cookie.path + " name " + cookie.name +
  26. " value " + cookie.value + " isSecure " + cookie.isSecure + " expires " + cookie.expires);
  27. ++count;
  28. }
  29. ok(true, count + " cookies");
  30. cs.removeAll();
  31. cs.add(domain, "", "oh", "hai", false, false, true, Math.pow(2, 62));
  32. is(cs.countCookiesFromHost(domain), 1, "number of cookies for domain " + domain);
  33. gExpectedCookies = cookies;
  34. gExpectedLoads = loads;
  35. gExpectedHeaders = headers;
  36. gObs = new obs();
  37. // Listen for MessageEvents.
  38. window.addEventListener("message", messageReceiver, false);
  39. // load a window which contains an iframe; each will attempt to set
  40. // cookies from their respective domains.
  41. gPopup = window.open(uri, 'hai', 'width=100,height=100');
  42. }
  43. function finishTest()
  44. {
  45. gObs.remove();
  46. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  47. Components.classes["@mozilla.org/preferences-service;1"]
  48. .getService(Components.interfaces.nsIPrefBranch)
  49. .clearUserPref("network.cookie.cookieBehavior");
  50. SimpleTest.finish();
  51. }
  52. // Count headers.
  53. function obs () {
  54. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  55. ok(true, "adding observer");
  56. this.window = window;
  57. this.os = Components.classes["@mozilla.org/observer-service;1"]
  58. .getService(Components.interfaces.nsIObserverService);
  59. this.os.addObserver(this, "http-on-modify-request", false);
  60. }
  61. obs.prototype = {
  62. observe: function obs_observe (theSubject, theTopic, theData)
  63. {
  64. this.window.netscape.security
  65. .PrivilegeManager.enablePrivilege("UniversalXPConnect");
  66. ok(true, "theSubject " + theSubject);
  67. ok(true, "theTopic " + theTopic);
  68. ok(true, "theData " + theData);
  69. var channel = theSubject.QueryInterface(
  70. this.window.Components.interfaces.nsIHttpChannel);
  71. ok(true, "channel " + channel);
  72. try {
  73. ok(true, "channel.URI " + channel.URI);
  74. ok(true, "channel.URI.spec " + channel.URI.spec);
  75. channel.visitRequestHeaders({
  76. visitHeader: function(aHeader, aValue) {
  77. ok(true, aHeader + ": " + aValue);
  78. }});
  79. } catch (err) {
  80. ok(false, "catch error " + err);
  81. }
  82. // Ignore notifications we don't care about (like favicons)
  83. if (channel.URI.spec.indexOf(
  84. "http://example.org/tests/extensions/cookie/test/") == -1) {
  85. ok(true, "ignoring this one");
  86. return;
  87. }
  88. this.window.isnot(channel.getRequestHeader("Cookie").indexOf("oh=hai"), -1,
  89. "cookie 'oh=hai' is in header for " + channel.URI.spec);
  90. ++gHeaders;
  91. },
  92. remove: function obs_remove()
  93. {
  94. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  95. ok(true, "removing observer");
  96. this.os.removeObserver(this, "http-on-modify-request");
  97. this.os = null;
  98. this.window = null;
  99. }
  100. }
  101. /** Receives MessageEvents to this window. */
  102. // Count and check loads.
  103. function messageReceiver(evt)
  104. {
  105. ok(evt.data == "f_lf_i msg data img" || evt.data == "f_lf_i msg data page",
  106. "message data received from popup");
  107. if (evt.data == "f_lf_i msg data img") {
  108. ok(true, "message data received from popup for image");
  109. }
  110. if (evt.data == "f_lf_i msg data page") {
  111. ok(true, "message data received from popup for page");
  112. }
  113. if (evt.data != "f_lf_i msg data img" && evt.data != "f_lf_i msg data page") {
  114. ok(true, "got this message but don't know what it is " + evt.data);
  115. gPopup.close();
  116. window.removeEventListener("message", messageReceiver, false);
  117. finishTest();
  118. return;
  119. }
  120. // only run the test when all our children are done loading & setting cookies
  121. if (++gLoads == gExpectedLoads) {
  122. gPopup.close();
  123. window.removeEventListener("message", messageReceiver, false);
  124. runTest();
  125. }
  126. }
  127. // runTest() is run by messageReceiver().
  128. // Check headers, and count and check cookies.
  129. function runTest() {
  130. // set a cookie from a domain of "localhost"
  131. document.cookie = "o=noes";
  132. is(gHeaders, gExpectedHeaders, "number of observed request headers");
  133. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  134. var cs = Components.classes["@mozilla.org/cookiemanager;1"]
  135. .getService(Components.interfaces.nsICookieManager);
  136. var count = 0;
  137. var list = cs.enumerator;
  138. while (list.hasMoreElements()) {
  139. var cookie = list.getNext().QueryInterface(Components.interfaces.nsICookie);
  140. ok(true, "cookie: " + cookie);
  141. ok(true, "cookie host " + cookie.host + " path " + cookie.path + " name " + cookie.name +
  142. " value " + cookie.value + " isSecure " + cookie.isSecure + " expires " + cookie.expires);
  143. ++count;
  144. }
  145. is(count, gExpectedCookies, "total number of cookies");
  146. cs.removeAll();
  147. finishTest();
  148. }