Bug 1244265 - Show file picker when save button clicked within the JSONView component draft
authorDavid Walsh <dwalsh@mozilla.com>
Tue, 26 Apr 2016 11:26:22 -0500
changeset 356967 36d22030822c744ef69e347b91160adf6121fe73
parent 356555 6a441b2b2997cdbd47b5d80283f6f60d5a9e7489
child 519545 63c393d55e8f1370c2a9a9189d38f1e67c4e0a5a
push id16669
push userbmo:dwalsh@mozilla.com
push dateWed, 27 Apr 2016 19:16:02 +0000
bugs1244265
milestone49.0a1
Bug 1244265 - Show file picker when save button clicked within the JSONView component MozReview-Commit-ID: 70q35AbSBgO
devtools/client/jsonview/main.js
devtools/client/jsonview/test/browser.ini
devtools/client/jsonview/test/browser_jsonview_save_json.js
--- 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;
+});