1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/base/content/test/general/browser_save_video.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,86 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +var MockFilePicker = SpecialPowers.MockFilePicker; 1.8 +MockFilePicker.init(window); 1.9 + 1.10 +/** 1.11 + * TestCase for bug 564387 1.12 + * <https://bugzilla.mozilla.org/show_bug.cgi?id=564387> 1.13 + */ 1.14 +function test() { 1.15 + waitForExplicitFinish(); 1.16 + var fileName; 1.17 + 1.18 + gBrowser.loadURI("http://mochi.test:8888/browser/browser/base/content/test/general/bug564387.html"); 1.19 + 1.20 + gBrowser.addEventListener("pageshow", function pageShown(event) { 1.21 + if (event.target.location == "about:blank") 1.22 + return; 1.23 + gBrowser.removeEventListener("pageshow", pageShown); 1.24 + 1.25 + executeSoon(function () { 1.26 + document.addEventListener("popupshown", contextMenuOpened); 1.27 + 1.28 + var video1 = gBrowser.contentDocument.getElementById("video1"); 1.29 + EventUtils.synthesizeMouseAtCenter(video1, 1.30 + { type: "contextmenu", button: 2 }, 1.31 + gBrowser.contentWindow); 1.32 + }); 1.33 + }); 1.34 + 1.35 + function contextMenuOpened(event) { 1.36 + event.currentTarget.removeEventListener("popupshown", contextMenuOpened); 1.37 + 1.38 + // Create the folder the video will be saved into. 1.39 + var destDir = createTemporarySaveDirectory(); 1.40 + var destFile = destDir.clone(); 1.41 + 1.42 + MockFilePicker.displayDirectory = destDir; 1.43 + MockFilePicker.showCallback = function(fp) { 1.44 + fileName = fp.defaultString; 1.45 + destFile.append (fileName); 1.46 + MockFilePicker.returnFiles = [destFile]; 1.47 + MockFilePicker.filterIndex = 1; // kSaveAsType_URL 1.48 + }; 1.49 + 1.50 + mockTransferCallback = onTransferComplete; 1.51 + mockTransferRegisterer.register(); 1.52 + 1.53 + registerCleanupFunction(function () { 1.54 + mockTransferRegisterer.unregister(); 1.55 + MockFilePicker.cleanup(); 1.56 + destDir.remove(true); 1.57 + }); 1.58 + 1.59 + // Select "Save Video As" option from context menu 1.60 + var saveVideoCommand = document.getElementById("context-savevideo"); 1.61 + saveVideoCommand.doCommand(); 1.62 + 1.63 + event.target.hidePopup(); 1.64 + } 1.65 + 1.66 + function onTransferComplete(downloadSuccess) { 1.67 + ok(downloadSuccess, "Video file should have been downloaded successfully"); 1.68 + 1.69 + is(fileName, "Bug564387-expectedName.ogv", 1.70 + "Video file name is correctly retrieved from Content-Disposition http header"); 1.71 + 1.72 + finish(); 1.73 + } 1.74 +} 1.75 + 1.76 +Cc["@mozilla.org/moz/jssubscript-loader;1"] 1.77 + .getService(Ci.mozIJSSubScriptLoader) 1.78 + .loadSubScript("chrome://mochitests/content/browser/toolkit/content/tests/browser/common/mockTransfer.js", 1.79 + this); 1.80 + 1.81 +function createTemporarySaveDirectory() { 1.82 + var saveDir = Cc["@mozilla.org/file/directory_service;1"] 1.83 + .getService(Ci.nsIProperties) 1.84 + .get("TmpD", Ci.nsIFile); 1.85 + saveDir.append("testsavedir"); 1.86 + if (!saveDir.exists()) 1.87 + saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0755); 1.88 + return saveDir; 1.89 +}