/embedding/test/test_bug449141.html

http://github.com/zpao/v8monkey · HTML · 106 lines · 89 code · 14 blank · 3 comment · 0 complexity · ccaa4d7dd6b9e1ed173a36f1d4443c5a MD5 · raw file

  1. <!DOCTYPE HTML>
  2. <html>
  3. <!--
  4. https://bugzilla.mozilla.org/show_bug.cgi?id=449141
  5. -->
  6. <head>
  7. <title>Test for Bug 449141</title>
  8. <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  9. <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
  10. </head>
  11. <body>
  12. <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=449141">Mozilla Bug 449141</a>
  13. <p id="display">
  14. </p>
  15. <pre id="results"></pre>
  16. <div id="content" style="display: none">
  17. <iframe src="bug449141_page.html" id="source"></iframe>
  18. </div>
  19. <pre id="test">
  20. <script class="testbody" type="text/javascript">
  21. /** Test for Bug 449141 **/
  22. netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
  23. const Cc = Components.classes;
  24. const Ci = Components.interfaces;
  25. function getTempDir() {
  26. return Cc["@mozilla.org/file/directory_service;1"]
  27. .getService(Ci.nsIProperties)
  28. .get("TmpD", Ci.nsILocalFile);
  29. }
  30. // STATE_STOP from nsIWebProgressListener.idl
  31. const STATE_STOP = 0x00000010;
  32. var progressListener = {
  33. onProgressChange: function() {
  34. /* Ignore progress callback */
  35. },
  36. onStateChange: function(aProgress, aRequest, aStateFlag, aStatus) {
  37. if (aStateFlag & STATE_STOP) {
  38. netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
  39. var dirExists = false;
  40. var videoExists = false;
  41. var videoFile = getTempDir();
  42. videoFile.append(this.dirName);
  43. dirExists = videoFile.exists();
  44. videoFile.append("320x240.ogv");
  45. videoExists = videoFile.exists();
  46. this.folder.remove(true);
  47. this.file.remove(false);
  48. ok(dirExists, 'Directory containing video file should be created');
  49. ok(videoExists, 'Video should be persisted with document');
  50. SimpleTest.finish();
  51. }
  52. }
  53. };
  54. function persistDocument(aDoc) {
  55. netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
  56. const nsIWBP = Ci.nsIWebBrowserPersist;
  57. const persistFlags =
  58. nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES
  59. | nsIWBP.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION
  60. const encodingFlags =
  61. nsIWBP.ENCODE_FLAGS_ENCODE_BASIC_ENTITIES;
  62. var ioService = Components.classes["@mozilla.org/network/io-service;1"]
  63. .getService(Ci.nsIIOService);
  64. var id = Math.round(Math.random() * 10000);
  65. var dirName = "bug449141_serialized" + id;
  66. progressListener.dirName = dirName;
  67. var file = getTempDir();
  68. file.append("bug449141-serialized" + id + ".html");
  69. var persist = Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
  70. .createInstance(Ci.nsIWebBrowserPersist);
  71. persist.progressListener = progressListener;
  72. persist.persistFlags = persistFlags;
  73. const kWrapColumn = 80;
  74. var folder = getTempDir();
  75. folder.append(dirName);
  76. progressListener.folder = folder;
  77. progressListener.file = file;
  78. persist.saveDocument(aDoc, ioService.newFileURI(file),
  79. folder,
  80. aDoc.contentType,
  81. encodingFlags, kWrapColumn);
  82. }
  83. SimpleTest.waitForExplicitFinish();
  84. addLoadEvent(function() {
  85. netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
  86. var srcDoc = document.getElementById('source').contentDocument;
  87. persistDocument(srcDoc);
  88. });
  89. </script>
  90. </pre>
  91. </body>
  92. </html>