From 13a6805652925398b2f079f7ee7fba4b512b51ad Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Thu, 1 Mar 2018 17:29:55 +0100 Subject: Properly pass postData into new tab https://github.com/MoonchildProductions/moebius/pull/352 --- devtools/client/netmonitor/moz.build | 1 + devtools/client/netmonitor/open-request-in-tab.js | 40 ++++++++++++++++++++++ .../client/netmonitor/request-list-context-menu.js | 4 +-- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 devtools/client/netmonitor/open-request-in-tab.js diff --git a/devtools/client/netmonitor/moz.build b/devtools/client/netmonitor/moz.build index 4b34b093b..2c9b32d3f 100644 --- a/devtools/client/netmonitor/moz.build +++ b/devtools/client/netmonitor/moz.build @@ -17,6 +17,7 @@ DevToolsModules( 'events.js', 'filter-predicates.js', 'l10n.js', + 'open-request-in-tab.js', 'panel.js', 'performance-statistics-view.js', 'prefs.js', diff --git a/devtools/client/netmonitor/open-request-in-tab.js b/devtools/client/netmonitor/open-request-in-tab.js new file mode 100644 index 000000000..aeb35dad0 --- /dev/null +++ b/devtools/client/netmonitor/open-request-in-tab.js @@ -0,0 +1,40 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +/* eslint-disable mozilla/reject-some-requires */ + +"use strict"; + +let { Cc, Ci } = require("chrome"); +const Services = require("Services"); +const { gDevTools } = require("devtools/client/framework/devtools"); + +/** + * Opens given request in a new tab. + */ +function openRequestInTab(request) { + let win = Services.wm.getMostRecentWindow(gDevTools.chromeWindowType); + let rawData = request.requestPostData ? request.requestPostData.postData : null; + let postData; + + if (rawData && rawData.text) { + let stringStream = getInputStreamFromString(rawData.text); + postData = Cc["@mozilla.org/network/mime-input-stream;1"] + .createInstance(Ci.nsIMIMEInputStream); + postData.addHeader("Content-Type", "application/x-www-form-urlencoded"); + postData.setData(stringStream); + } + + win.gBrowser.selectedTab = win.gBrowser.addTab(request.url, null, null, postData); +} + +function getInputStreamFromString(data) { + let stringStream = Cc["@mozilla.org/io/string-input-stream;1"] + .createInstance(Ci.nsIStringInputStream); + stringStream.data = data; + return stringStream; +} + +module.exports = { + openRequestInTab, +}; diff --git a/devtools/client/netmonitor/request-list-context-menu.js b/devtools/client/netmonitor/request-list-context-menu.js index 215296265..331a7bde3 100644 --- a/devtools/client/netmonitor/request-list-context-menu.js +++ b/devtools/client/netmonitor/request-list-context-menu.js @@ -10,6 +10,7 @@ const Services = require("Services"); const { Task } = require("devtools/shared/task"); const { Curl } = require("devtools/client/shared/curl"); const { gDevTools } = require("devtools/client/framework/devtools"); +const { openRequestInTab } = require("devtools/client/netmonitor/open-request-in-tab"); const Menu = require("devtools/client/framework/menu"); const MenuItem = require("devtools/client/framework/menu-item"); const { L10N } = require("./l10n"); @@ -186,8 +187,7 @@ RequestListContextMenu.prototype = { */ openRequestInTab() { let win = Services.wm.getMostRecentWindow(gDevTools.chromeWindowType); - let { url } = this.selectedItem.attachment; - win.openUILinkIn(url, "tab", { relatedToCurrent: true }); + openRequestInTab(this.selectedItem.attachment); }, /** -- cgit v1.2.3