Bug 1353006 - Stop using sdk/clipboard in JSONViewer; r=jryans
MozReview-Commit-ID: AQXsf3DQdS9
--- a/devtools/client/jsonview/converter-child.js
+++ b/devtools/client/jsonview/converter-child.js
@@ -7,18 +7,16 @@
"use strict";
const {Cc, Ci, Cu} = require("chrome");
const { XPCOMUtils } = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
const Services = require("Services");
loader.lazyRequireGetter(this, "NetworkHelper",
"devtools/shared/webconsole/network-helper");
-loader.lazyRequireGetter(this, "Clipboard",
- "sdk/clipboard");
loader.lazyRequireGetter(this, "JsonViewUtils",
"devtools/client/jsonview/utils");
const childProcessMessageManager =
Cc["@mozilla.org/childprocessmessagemanager;1"]
.getService(Ci.nsISyncMessageSender);
// Amount of space that will be allocated for the stream's backing-store.
@@ -274,30 +272,30 @@ Converter.prototype = {
let win = NetworkHelper.getWindowForRequest(this.channel);
if (win != e.target) {
return;
}
let value = e.detail.value;
switch (e.detail.type) {
case "copy":
- Clipboard.set(value, "text");
+ copyString(win, value);
break;
case "copy-headers":
- this.copyHeaders(value);
+ this.copyHeaders(win, value);
break;
case "save":
childProcessMessageManager.sendAsyncMessage(
"devtools:jsonview:save", value);
}
},
- copyHeaders: function (headers) {
+ copyHeaders: function (win, headers) {
let value = "";
let eol = (Services.appinfo.OS !== "WINNT") ? "\n" : "\r\n";
let responseHeaders = headers.response;
for (let i = 0; i < responseHeaders.length; i++) {
let header = responseHeaders[i];
value += header.name + ": " + header.value + eol;
}
@@ -305,19 +303,28 @@ Converter.prototype = {
value += eol;
let requestHeaders = headers.request;
for (let i = 0; i < requestHeaders.length; i++) {
let header = requestHeaders[i];
value += header.name + ": " + header.value + eol;
}
- Clipboard.set(value, "text");
+ copyString(win, value);
}
};
+function copyString(win, string) {
+ win.document.addEventListener("copy", event => {
+ event.clipboardData.setData("text/plain", string);
+ event.preventDefault();
+ }, {once: true});
+
+ win.document.execCommand("copy", false, null);
+}
+
function createInstance() {
return new Converter();
}
exports.JsonViewService = {
createInstance: createInstance,
};