123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /* 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/. */
- "use strict";
- /* global BrowserLoader */
- var { utils: Cu } = Components;
- // Initialize module loader and load all modules of the new inline
- // preview feature. The entire code-base doesn't need any extra
- // privileges and runs entirely in content scope.
- const rootUrl = "resource://devtools/client/webconsole/net/";
- const require = BrowserLoader({
- baseURI: rootUrl,
- window}).require;
- const NetRequest = require("./net-request");
- const { loadSheet } = require("sdk/stylesheet/utils");
- // Localization
- const {LocalizationHelper} = require("devtools/shared/l10n");
- const L10N = new LocalizationHelper("devtools/client/locales/netmonitor.properties");
- // Stylesheets
- var styleSheets = [
- "resource://devtools/client/jsonview/css/toolbar.css",
- "resource://devtools/client/shared/components/tree/tree-view.css",
- "resource://devtools/client/shared/components/reps/reps.css",
- "resource://devtools/client/webconsole/net/net-request.css",
- "resource://devtools/client/webconsole/net/components/size-limit.css",
- "resource://devtools/client/webconsole/net/components/net-info-body.css",
- "resource://devtools/client/webconsole/net/components/net-info-group.css",
- "resource://devtools/client/webconsole/net/components/net-info-params.css",
- "resource://devtools/client/webconsole/net/components/response-tab.css"
- ];
- // Load theme stylesheets into the Console frame. This should be
- // done automatically by UI Components as soon as we have consensus
- // on the right CSS strategy FIXME.
- // It would also be nice to include them using @import.
- styleSheets.forEach(url => {
- loadSheet(this, url, "author");
- });
- // Localization API used by React components
- // accessing strings from *.properties file.
- // Example:
- // let localizedString = Locale.$STR('string-key');
- //
- // Resources:
- // http://l20n.org/
- // https://github.com/yahoo/react-intl
- this.Locale = {
- $STR: key => {
- try {
- return L10N.getStr(key);
- } catch (err) {
- console.error(key + ": " + err);
- }
- }
- };
- // List of NetRequest instances represents the state.
- // As soon as Redux is in place it should be maintained using a reducer.
- var netRequests = new Map();
- /**
- * This function handles network events received from the backend. It's
- * executed from within the webconsole.js
- */
- function onNetworkEvent(log) {
- // The 'from' field is set only in case of a 'networkEventUpdate' packet.
- // The initial 'networkEvent' packet uses 'actor'.
- // Check if NetRequest object is already created for this event actor and
- // if there is none make sure to create one.
- let response = log.response;
- let netRequest = response.from ? netRequests.get(response.from) : null;
- if (!netRequest && !log.update) {
- netRequest = new NetRequest(log);
- netRequests.set(response.actor, netRequest);
- }
- if (!netRequest) {
- return;
- }
- if (log.update) {
- netRequest.updateBody(response);
- }
- return;
- }
- // Make the 'onNetworkEvent' accessible from chrome (see webconsole.js)
- this.NetRequest = {
- onNetworkEvent: onNetworkEvent
- };
|