forked from mirrors/gecko-dev
--HG-- rename : dom/webidl/TreeBoxObject.webidl => dom/chrome-webidl/XULTreeElement.webidl rename : layout/xul/tree/TreeBoxObject.cpp => dom/xul/XULTreeElement.cpp rename : layout/xul/tree/TreeBoxObject.h => dom/xul/XULTreeElement.h
73 lines
2.7 KiB
JavaScript
73 lines
2.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
var MockFilePicker = SpecialPowers.MockFilePicker;
|
|
|
|
function createTemporarySaveDirectory() {
|
|
var saveDir = Services.dirsvc.get("TmpD", Ci.nsIFile);
|
|
saveDir.append("testsavedir");
|
|
if (!saveDir.exists()) {
|
|
info("create testsavedir!");
|
|
saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
|
|
}
|
|
info("return from createTempSaveDir: " + saveDir.path);
|
|
return saveDir;
|
|
}
|
|
|
|
add_task(async function checkCertExportWorks() {
|
|
await openPreferencesViaOpenPreferencesAPI("privacy", {leaveOpen: true});
|
|
let certButton = gBrowser.selectedBrowser.contentDocument.getElementById("viewCertificatesButton");
|
|
certButton.scrollIntoView();
|
|
let certDialogLoaded = promiseLoadSubDialog("chrome://pippki/content/certManager.xul");
|
|
certButton.click();
|
|
let dialogWin = await certDialogLoaded;
|
|
let doc = dialogWin.document;
|
|
doc.getElementById("certmanagertabs").selectedTab = doc.getElementById("ca_tab");
|
|
let expectedCert;
|
|
let treeView = doc.getElementById("ca-tree").view;
|
|
// Select any which cert. Ignore parent rows (ie rows without certs):
|
|
for (let i = 0; i < treeView.rowCount; i++) {
|
|
treeView.selection.select(i);
|
|
dialogWin.getSelectedCerts();
|
|
let certs = dialogWin.selected_certs; // yuck... but this is how the dialog works.
|
|
if (certs && certs.length == 1 && certs[0]) {
|
|
expectedCert = certs[0];
|
|
// OK, we managed to select a cert!
|
|
break;
|
|
}
|
|
}
|
|
|
|
let exportButton = doc.getElementById("ca_exportButton");
|
|
is(exportButton.disabled, false, "Should enable export button");
|
|
// Create the folder the link will be saved into.
|
|
var destDir = createTemporarySaveDirectory();
|
|
var destFile = destDir.clone();
|
|
MockFilePicker.init(window);
|
|
registerCleanupFunction(function() {
|
|
MockFilePicker.cleanup();
|
|
destDir.remove(true);
|
|
});
|
|
MockFilePicker.displayDirectory = destDir;
|
|
MockFilePicker.showCallback = function(fp) {
|
|
info("showCallback");
|
|
let fileName = fp.defaultString;
|
|
info("fileName: " + fileName);
|
|
destFile.append(fileName);
|
|
MockFilePicker.setFiles([destFile]);
|
|
MockFilePicker.filterIndex = 0; // Save an x509 PEM copy of the cert.
|
|
info("done showCallback");
|
|
};
|
|
let finishedExporting = TestUtils.topicObserved("cert-export-finished");
|
|
exportButton.click();
|
|
await finishedExporting;
|
|
if (destFile && destFile.exists()) {
|
|
let contents = await OS.File.read(destFile.path, {encoding: "utf-8"});
|
|
is(contents, dialogWin.getPEMString(expectedCert), "Should have written correct contents");
|
|
} else {
|
|
ok(false, "No cert saved!");
|
|
}
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|
|
|