From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../test/browser_perf-recordings-io-03.js | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 devtools/client/performance/test/browser_perf-recordings-io-03.js (limited to 'devtools/client/performance/test/browser_perf-recordings-io-03.js') diff --git a/devtools/client/performance/test/browser_perf-recordings-io-03.js b/devtools/client/performance/test/browser_perf-recordings-io-03.js new file mode 100644 index 000000000..e9fafd392 --- /dev/null +++ b/devtools/client/performance/test/browser_perf-recordings-io-03.js @@ -0,0 +1,56 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; +/* eslint-disable */ +/** + * Tests if the performance tool gracefully handles loading files that are JSON, + * but don't contain the appropriate recording data. + */ + +var { FileUtils } = Cu.import("resource://gre/modules/FileUtils.jsm", {}); +var { NetUtil } = Cu.import("resource://gre/modules/NetUtil.jsm", {}); + +var test = Task.async(function* () { + let { target, panel, toolbox } = yield initPerformance(SIMPLE_URL); + let { EVENTS, PerformanceController } = panel.panelWin; + + let file = FileUtils.getFile("TmpD", ["tmpprofile.json"]); + file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, parseInt("666", 8)); + yield asyncCopy({ bogus: "data" }, file); + + try { + yield PerformanceController.importRecording("", file); + ok(false, "The recording succeeded unexpectedly."); + } catch (e) { + is(e.message, "Unrecognized recording data file.", "Message is correct."); + ok(true, "The recording was cancelled."); + } + + yield teardown(panel); + finish(); +}); + +function getUnicodeConverter() { + let className = "@mozilla.org/intl/scriptableunicodeconverter"; + let converter = Cc[className].createInstance(Ci.nsIScriptableUnicodeConverter); + converter.charset = "UTF-8"; + return converter; +} + +function asyncCopy(data, file) { + let deferred = Promise.defer(); + + let string = JSON.stringify(data); + let inputStream = getUnicodeConverter().convertToInputStream(string); + let outputStream = FileUtils.openSafeFileOutputStream(file); + + NetUtil.asyncCopy(inputStream, outputStream, status => { + if (!Components.isSuccessCode(status)) { + deferred.reject(new Error("Could not save data to file.")); + } + deferred.resolve(); + }); + + return deferred.promise; +} +/* eslint-enable */ -- cgit v1.2.3