1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/embedding/test/test_bug449141.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,102 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=449141 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 449141</title> 1.11 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.12 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.13 +</head> 1.14 +<body> 1.15 +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=449141">Mozilla Bug 449141</a> 1.16 +<p id="display"> 1.17 + 1.18 +</p> 1.19 +<pre id="results"></pre> 1.20 +<div id="content" style="display: none"> 1.21 + <iframe src="bug449141_page.html" id="source"></iframe> 1.22 +</div> 1.23 +<pre id="test"> 1.24 +<script class="testbody" type="text/javascript"> 1.25 +/** Test for Bug 449141 **/ 1.26 + 1.27 +const Cc = SpecialPowers.Cc; 1.28 +const Ci = SpecialPowers.Ci; 1.29 + 1.30 +function getTempDir() { 1.31 + return Cc["@mozilla.org/file/directory_service;1"] 1.32 + .getService(Ci.nsIProperties) 1.33 + .get("TmpD", Ci.nsILocalFile); 1.34 +} 1.35 + 1.36 +// STATE_STOP from nsIWebProgressListener.idl 1.37 +const STATE_STOP = 0x00000010; 1.38 + 1.39 +var progressListener = { 1.40 + onProgressChange: function() { 1.41 + /* Ignore progress callback */ 1.42 + }, 1.43 + onStateChange: function(aProgress, aRequest, aStateFlag, aStatus) { 1.44 + if (aStateFlag & STATE_STOP) { 1.45 + var dirExists = false; 1.46 + var videoExists = false; 1.47 + 1.48 + var videoFile = getTempDir(); 1.49 + videoFile.append(this.dirName); 1.50 + dirExists = videoFile.exists(); 1.51 + videoFile.append("320x240.ogv"); 1.52 + videoExists = videoFile.exists(); 1.53 + this.folder.remove(true); 1.54 + this.file.remove(false); 1.55 + ok(dirExists, 'Directory containing video file should be created'); 1.56 + ok(videoExists, 'Video should be persisted with document'); 1.57 + SimpleTest.finish(); 1.58 + } 1.59 + } 1.60 +}; 1.61 + 1.62 +function persistDocument(aDoc) { 1.63 + const nsIWBP = Ci.nsIWebBrowserPersist; 1.64 + const persistFlags = 1.65 + nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES 1.66 + | nsIWBP.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION 1.67 + const encodingFlags = 1.68 + nsIWBP.ENCODE_FLAGS_ENCODE_BASIC_ENTITIES; 1.69 + 1.70 + var ioService = Cc["@mozilla.org/network/io-service;1"] 1.71 + .getService(Ci.nsIIOService); 1.72 + 1.73 + var id = Math.round(Math.random() * 10000); 1.74 + var dirName = "bug449141_serialized" + id; 1.75 + progressListener.dirName = dirName; 1.76 + 1.77 + var file = getTempDir(); 1.78 + file.append("bug449141-serialized" + id + ".html"); 1.79 + 1.80 + var persist = Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"] 1.81 + .createInstance(Ci.nsIWebBrowserPersist); 1.82 + persist.progressListener = progressListener; 1.83 + persist.persistFlags = persistFlags; 1.84 + const kWrapColumn = 80; 1.85 + var folder = getTempDir(); 1.86 + folder.append(dirName); 1.87 + progressListener.folder = folder; 1.88 + progressListener.file = file; 1.89 + persist.saveDocument(aDoc, ioService.newFileURI(file), 1.90 + folder, 1.91 + aDoc.contentType, 1.92 + encodingFlags, kWrapColumn); 1.93 +} 1.94 + 1.95 +SimpleTest.waitForExplicitFinish(); 1.96 + 1.97 +addLoadEvent(function() { 1.98 + netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 1.99 + var srcDoc = document.getElementById('source').contentDocument; 1.100 + persistDocument(srcDoc); 1.101 +}); 1.102 +</script> 1.103 +</pre> 1.104 +</body> 1.105 +</html>