[
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsITransportProvider",
        "members": [
          {
            "args": [
              {
                "name": "listener",
                "optional": false,
                "type": "nsIHttpUpgradeListener"
              }
            ],
            "iid_is": null,
            "name": "setListener",
            "type": "void"
          }
        ]
      }
    ],
    "path": "netwerk/protocol/websocket/nsITransportProvider.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  },
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [
          {
            "name": "CLOSE_NORMAL",
            "value": 1000
          },
          {
            "name": "CLOSE_GOING_AWAY",
            "value": 1001
          },
          {
            "name": "CLOSE_PROTOCOL_ERROR",
            "value": 1002
          },
          {
            "name": "CLOSE_UNSUPPORTED_DATATYPE",
            "value": 1003
          },
          {
            "name": "CLOSE_NO_STATUS",
            "value": 1005
          },
          {
            "name": "CLOSE_ABNORMAL",
            "value": 1006
          },
          {
            "name": "CLOSE_INVALID_PAYLOAD",
            "value": 1007
          },
          {
            "name": "CLOSE_POLICY_VIOLATION",
            "value": 1008
          },
          {
            "name": "CLOSE_TOO_LARGE",
            "value": 1009
          },
          {
            "name": "CLOSE_EXTENSION_MISSING",
            "value": 1010
          },
          {
            "name": "CLOSE_INTERNAL_ERROR",
            "value": 1011
          },
          {
            "name": "CLOSE_TLS_FAILED",
            "value": 1015
          }
        ],
        "enums": [],
        "id": "nsIWebSocketChannel",
        "members": [
          {
            "name": "originalURI",
            "readonly": true,
            "type": "nsIURI"
          },
          {
            "name": "URI",
            "readonly": true,
            "type": "nsIURI"
          },
          {
            "name": "notificationCallbacks",
            "readonly": false,
            "type": "nsIInterfaceRequestor"
          },
          {
            "name": "securityInfo",
            "readonly": true,
            "type": "nsITransportSecurityInfo"
          },
          {
            "name": "loadGroup",
            "readonly": false,
            "type": "nsILoadGroup"
          },
          {
            "name": "loadInfo",
            "readonly": false,
            "type": "nsILoadInfo"
          },
          {
            "name": "protocol",
            "readonly": false,
            "type": "string"
          },
          {
            "name": "extensions",
            "readonly": true,
            "type": "string"
          },
          {
            "name": "httpChannelId",
            "readonly": true,
            "type": "u64"
          },
          {
            "args": [
              {
                "name": "aLoadingNode",
                "optional": false,
                "type": "Node"
              },
              {
                "name": "aLoadingPrincipal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "aTriggeringPrincipal",
                "optional": false,
                "type": "nsIPrincipal"
              },
              {
                "name": "aSecurityFlags",
                "optional": false,
                "type": "u32"
              },
              {
                "name": "aContentPolicyType",
                "optional": false,
                "type": "nsContentPolicyType"
              }
            ],
            "iid_is": null,
            "name": "initLoadInfo",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aURI",
                "optional": false,
                "type": "nsIURI"
              },
              {
                "name": "aOrigin",
                "optional": false,
                "type": "string"
              },
              {
                "name": "aOriginAttributes",
                "optional": false,
                "type": "any"
              },
              {
                "name": "aInnerWindowID",
                "optional": false,
                "type": "u64"
              },
              {
                "name": "aListener",
                "optional": false,
                "type": "nsIWebSocketListener"
              },
              {
                "name": "aContext",
                "optional": false,
                "type": "nsISupports"
              }
            ],
            "iid_is": null,
            "name": "asyncOpen",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aCode",
                "optional": false,
                "type": "u16"
              },
              {
                "name": "aReason",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "close",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aMsg",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "sendMsg",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aMsg",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "sendBinaryMsg",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aStream",
                "optional": false,
                "type": "nsIInputStream"
              },
              {
                "name": "length",
                "optional": false,
                "type": "u32"
              }
            ],
            "iid_is": null,
            "name": "sendBinaryStream",
            "type": "void"
          },
          {
            "name": "pingInterval",
            "readonly": false,
            "type": "u32"
          },
          {
            "name": "pingTimeout",
            "readonly": false,
            "type": "u32"
          },
          {
            "name": "serial",
            "readonly": false,
            "type": "u32"
          },
          {
            "args": [
              {
                "name": "aProvider",
                "optional": false,
                "type": "nsITransportProvider"
              },
              {
                "name": "aNegotiatedExtensions",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "setServerParameters",
            "type": "void"
          }
        ]
      }
    ],
    "path": "netwerk/protocol/websocket/nsIWebSocketChannel.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ],
      [
        "nsContentPolicyType",
        "nsIContentPolicy.nsContentPolicyType"
      ]
    ]
  },
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [
          {
            "name": "OPCODE_CONTINUATION",
            "value": 0
          },
          {
            "name": "OPCODE_TEXT",
            "value": 1
          },
          {
            "name": "OPCODE_BINARY",
            "value": 2
          },
          {
            "name": "OPCODE_CLOSE",
            "value": 8
          },
          {
            "name": "OPCODE_PING",
            "value": 9
          },
          {
            "name": "OPCODE_PONG",
            "value": 10
          }
        ],
        "enums": [],
        "id": "nsIWebSocketFrame",
        "members": [
          {
            "name": "timeStamp",
            "readonly": true,
            "type": "DOMHighResTimeStamp"
          },
          {
            "name": "finBit",
            "readonly": true,
            "type": "boolean"
          },
          {
            "name": "rsvBit1",
            "readonly": true,
            "type": "boolean"
          },
          {
            "name": "rsvBit2",
            "readonly": true,
            "type": "boolean"
          },
          {
            "name": "rsvBit3",
            "readonly": true,
            "type": "boolean"
          },
          {
            "name": "opCode",
            "readonly": true,
            "type": "u16"
          },
          {
            "name": "maskBit",
            "readonly": true,
            "type": "boolean"
          },
          {
            "name": "mask",
            "readonly": true,
            "type": "u32"
          },
          {
            "name": "payload",
            "readonly": true,
            "type": "string"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [
          {
            "name": "TYPE_STRING",
            "value": 0
          },
          {
            "name": "TYPE_BLOB",
            "value": 1
          },
          {
            "name": "TYPE_ARRAYBUFFER",
            "value": 2
          }
        ],
        "enums": [],
        "id": "nsIWebSocketEventListener",
        "members": [
          {
            "args": [
              {
                "name": "aWebSocketSerialID",
                "optional": false,
                "type": "u32"
              },
              {
                "name": "aURI",
                "optional": false,
                "type": "string"
              },
              {
                "name": "aProtocols",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "webSocketCreated",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aWebSocketSerialID",
                "optional": false,
                "type": "u32"
              },
              {
                "name": "aEffectiveURI",
                "optional": false,
                "type": "string"
              },
              {
                "name": "aProtocols",
                "optional": false,
                "type": "string"
              },
              {
                "name": "aExtensions",
                "optional": false,
                "type": "string"
              },
              {
                "name": "aHttpChannelId",
                "optional": false,
                "type": "u64"
              }
            ],
            "iid_is": null,
            "name": "webSocketOpened",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aWebSocketSerialID",
                "optional": false,
                "type": "u32"
              },
              {
                "name": "aMessage",
                "optional": false,
                "type": "string"
              },
              {
                "name": "aType",
                "optional": false,
                "type": "u16"
              }
            ],
            "iid_is": null,
            "name": "webSocketMessageAvailable",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aWebSocketSerialID",
                "optional": false,
                "type": "u32"
              },
              {
                "name": "aHttpChannelId",
                "optional": false,
                "type": "u64"
              },
              {
                "name": "aWasClean",
                "optional": false,
                "type": "boolean"
              },
              {
                "name": "aCode",
                "optional": false,
                "type": "u16"
              },
              {
                "name": "aReason",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "webSocketClosed",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aWebSocketSerialID",
                "optional": false,
                "type": "u32"
              },
              {
                "name": "aHttpChannelId",
                "optional": false,
                "type": "u64"
              },
              {
                "name": "aFrame",
                "optional": false,
                "type": "nsIWebSocketFrame"
              }
            ],
            "iid_is": null,
            "name": "frameReceived",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aWebSocketSerialID",
                "optional": false,
                "type": "u32"
              },
              {
                "name": "aHttpChannelId",
                "optional": false,
                "type": "u64"
              },
              {
                "name": "aFrame",
                "optional": false,
                "type": "nsIWebSocketFrame"
              }
            ],
            "iid_is": null,
            "name": "frameSent",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIWebSocketEventService",
        "members": [
          {
            "args": [
              {
                "name": "aWebSocketSerialID",
                "optional": false,
                "type": "u32"
              },
              {
                "name": "aMessage",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "sendMessage",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aInnerWindowID",
                "optional": false,
                "type": "u64"
              },
              {
                "name": "aListener",
                "optional": false,
                "type": "nsIWebSocketEventListener"
              }
            ],
            "iid_is": null,
            "name": "addListener",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aInnerWindowID",
                "optional": false,
                "type": "u64"
              },
              {
                "name": "aListener",
                "optional": false,
                "type": "nsIWebSocketEventListener"
              }
            ],
            "iid_is": null,
            "name": "removeListener",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aInnerWindowID",
                "optional": false,
                "type": "u64"
              }
            ],
            "iid_is": null,
            "name": "hasListenerFor",
            "type": "boolean"
          }
        ]
      }
    ],
    "path": "netwerk/protocol/websocket/nsIWebSocketEventService.idl",
    "typedefs": [
      [
        "DOMHighResTimeStamp",
        "double"
      ],
      [
        "DOMTimeStamp",
        "u64"
      ],
      [
        "EpochTimeStamp",
        "u64"
      ],
      [
        "PRTime",
        "i64"
      ],
      [
        "nsViewID",
        "u64"
      ]
    ]
  },
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIWebSocketImpl",
        "members": [
          {
            "args": [
              {
                "name": "aMessage",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "sendMessage",
            "type": "void"
          }
        ]
      }
    ],
    "path": "netwerk/protocol/websocket/nsIWebSocketImpl.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  },
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIWebSocketListener",
        "members": [
          {
            "args": [
              {
                "name": "aContext",
                "optional": false,
                "type": "nsISupports"
              }
            ],
            "iid_is": null,
            "name": "onStart",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aContext",
                "optional": false,
                "type": "nsISupports"
              },
              {
                "name": "aStatusCode",
                "optional": false,
                "type": "nsresult"
              }
            ],
            "iid_is": null,
            "name": "onStop",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aContext",
                "optional": false,
                "type": "nsISupports"
              },
              {
                "name": "aMsg",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "onMessageAvailable",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aContext",
                "optional": false,
                "type": "nsISupports"
              },
              {
                "name": "aMsg",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "onBinaryMessageAvailable",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aContext",
                "optional": false,
                "type": "nsISupports"
              },
              {
                "name": "aSize",
                "optional": false,
                "type": "u32"
              }
            ],
            "iid_is": null,
            "name": "onAcknowledge",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aContext",
                "optional": false,
                "type": "nsISupports"
              },
              {
                "name": "aCode",
                "optional": false,
                "type": "u16"
              },
              {
                "name": "aReason",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "onServerClose",
            "type": "void"
          },
          {
            "args": [],
            "iid_is": null,
            "name": "OnError",
            "type": "void"
          }
        ]
      }
    ],
    "path": "netwerk/protocol/websocket/nsIWebSocketListener.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  },
  {
    "interfaces": [
      {
        "base": "nsIProtocolHandler",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIWebSocketProtocolHandler",
        "members": [
          {
            "args": [],
            "iid_is": null,
            "name": "newWebSocketChannel",
            "type": "nsIWebSocketChannel"
          }
        ]
      }
    ],
    "path": "netwerk/protocol/websocket/nsIWebSocketProtocolHandler.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  }
]