Bug 1244265 - Show file picker when save button clicked within the JSONView component
MozReview-Commit-ID: 70q35AbSBgO
--- a/devtools/client/jsonview/main.js
+++ b/devtools/client/jsonview/main.js
@@ -7,17 +7,17 @@
"use strict";
const { Cu } = require("chrome");
const Services = require("Services");
const { XPCOMUtils } = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
-XPCOMUtils.defineLazyGetter(this, "JsonViewService", function() {
+XPCOMUtils.defineLazyGetter(this, "JsonViewUtils", function() {
return require("devtools/client/jsonview/utils");
});
/**
* Singleton object that represents the JSON View in-content tool.
* It has the same lifetime as the browser. Initialization done by
* DevTools() object from devtools/client/framework/devtools.js
*/
--- a/devtools/client/jsonview/test/browser.ini
+++ b/devtools/client/jsonview/test/browser.ini
@@ -17,8 +17,9 @@ support-files =
!/devtools/client/framework/test/shared-head.js
[browser_jsonview_copy_headers.js]
[browser_jsonview_copy_json.js]
[browser_jsonview_copy_rawdata.js]
[browser_jsonview_filter.js]
[browser_jsonview_invalid_json.js]
[browser_jsonview_valid_json.js]
+[browser_jsonview_save_json.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/jsonview/test/browser_jsonview_save_json.js
@@ -0,0 +1,38 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const TEST_JSON_URL = URL_ROOT + "valid_json.json";
+
+let { MockFilePicker } = SpecialPowers;
+
+MockFilePicker.init(window);
+MockFilePicker.returnValue = MockFilePicker.returnCancel;
+
+registerCleanupFunction(function() {
+ MockFilePicker.cleanup();
+});
+
+add_task(function* () {
+ info("Test save JSON started");
+
+ yield addJsonViewTab(TEST_JSON_URL);
+
+ let promise = new Promise((resolve) => {
+ MockFilePicker.showCallback = () => {
+ MockFilePicker.showCallback = null;
+ ok(true, "File picker was opened");
+ resolve();
+ };
+ });
+
+ let browser = gBrowser.selectedBrowser;
+ yield BrowserTestUtils.synthesizeMouseAtCenter(
+ ".jsonPanelBox button.save",
+ {}, browser);
+
+ yield promise;
+});