/* 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" ;
const {
Arg,
Option,
RetVal,
generateActorSpec,
types,
} = require(
"resource://devtools/shared/protocol.js");
types.addDictType(
"netevent.headers-cookies" , {
name:
"string" ,
value:
"longstring" ,
});
types.addDictType(
"netevent.headers" , {
headers:
"array:netevent.headers-cookies" ,
headersSize:
"number" ,
rawHeaders:
"nullable:longstring" ,
});
types.addDictType(
"netevent.cookies" , {
cookies:
"array:netevent.headers-cookies" ,
});
types.addDictType(
"netevent.postdata.text" , {
text:
"longstring" ,
});
types.addDictType(
"netevent.postdata" , {
postData:
"netevent.postdata.text" ,
postDataDiscarded:
"boolean" ,
});
types.addDictType(
"netevent.cache" , {
content:
"json" ,
});
types.addDictType(
"netevent.content.content" , {
text:
"longstring" ,
});
types.addDictType(
"netevent.content" , {
content:
"netevent.content.content" ,
contentDiscarded:
"boolean" ,
});
types.addDictType(
"netevent.timings.data" , {
blocked:
"number" ,
dns:
"number" ,
ssl:
"number" ,
connect:
"number" ,
send:
"number" ,
wait:
"number" ,
receive:
"number" ,
});
types.addDictType(
"netevent.timings" , {
timings:
"netevent.timings.data" ,
totalTime:
"number" ,
offsets:
"netevent.timings.data" ,
serverTimings:
"array:netevent.timings.serverTiming" ,
});
types.addDictType(
"netevent.timings.serverTiming" , {
name:
"string" ,
description:
"string" ,
duration:
"number" ,
});
// See NetworkHelper.parseCertificateInfo for more details
types.addDictType(
"netevent.cert" , {
subject:
"json" ,
issuer:
"json" ,
validity:
"json" ,
fingerprint:
"json" ,
});
types.addDictType(
"netevent.secinfo" , {
state:
"string" ,
weaknessReasons:
"array:string" ,
cipherSuite:
"string" ,
keaGroupName:
"string" ,
signatureSchemeName:
"string" ,
protocolVersion:
"string" ,
cert:
"nullable:netevent.cert" ,
certificateTransparency:
"number" ,
hsts:
"boolean" ,
hpkp:
"boolean" ,
errorMessage:
"nullable:string" ,
usedEch:
"boolean" ,
usedDelegatedCredentials:
"boolean" ,
usedOcsp:
"boolean" ,
usedPrivateDns:
"boolean" ,
});
const networkEventSpec = generateActorSpec({
typeName:
"netEvent" ,
events: {
// All these events end up emitting a `networkEventUpdate` RDP message
// `updateType` attribute allows to identify which kind of event is emitted.
// We use individual event at protocol.js level to workaround performance issue
// with `Option` types. (See bug 1449162)
"network-event-update:headers" : {
type:
"networkEventUpdate" ,
updateType: Arg(0,
"string" ),
headers: Option(1,
"number" ),
headersSize: Option(1,
"number" ),
},
"network-event-update:cookies" : {
type:
"networkEventUpdate" ,
updateType: Arg(0,
"string" ),
cookies: Option(1,
"number" ),
},
"network-event-update:post-data" : {
type:
"networkEventUpdate" ,
updateType: Arg(0,
"string" ),
dataSize: Option(1,
"number" ),
},
"network-event-update:response-start" : {
type:
"networkEventUpdate" ,
updateType: Arg(0,
"string" ),
response: Option(1,
"json" ),
},
"network-event-update:security-info" : {
type:
"networkEventUpdate" ,
updateType: Arg(0,
"string" ),
state: Option(1,
"string" ),
isRacing: Option(1,
"boolean" ),
},
"network-event-update:response-content" : {
type:
"networkEventUpdate" ,
updateType: Arg(0,
"string" ),
mimeType: Option(1,
"string" ),
contentSize: Option(1,
"number" ),
encoding: Option(1,
"string" ),
transferredSize: Option(1,
"number" ),
blockedReason: Option(1,
"number" ),
blockingExtension: Option(1,
"string" ),
},
"network-event-update:event-timings" : {
type:
"networkEventUpdate" ,
updateType: Arg(0,
"string" ),
totalTime: Option(1,
"number" ),
},
"network-event-update:response-cache" : {
type:
"networkEventUpdate" ,
updateType: Arg(0,
"string" ),
},
},
methods: {
release: {
// This makes protocol.js call destroy method
release:
true ,
},
getRequestHeaders: {
request: {},
response: RetVal(
"json" ),
},
getRequestCookies: {
request: {},
response: RetVal(
"json" ),
},
getRequestPostData: {
request: {},
response: RetVal(
"json" ),
},
getResponseHeaders: {
request: {},
response: RetVal(
"json" ),
},
getResponseCookies: {
request: {},
response: RetVal(
"json" ),
},
getResponseCache: {
request: {},
response: RetVal(
"json" ),
},
getResponseContent: {
request: {},
response: RetVal(
"json" ),
},
getEventTimings: {
request: {},
response: RetVal(
"json" ),
},
getSecurityInfo: {
request: {},
response: RetVal(
"json" ),
},
getStackTrace: {
request: {},
// stacktrace is an "array:string", but not always.
response: RetVal(
"json" ),
},
},
});
exports.networkEventSpec = networkEventSpec;
Messung V0.5 C=94 H=99 G=96
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland