mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			220 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			220 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* 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;
 |