[
  {
    "interfaces": [
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIAsyncShutdownBlocker",
        "members": [
          {
            "name": "name",
            "readonly": true,
            "type": "string"
          },
          {
            "args": [
              {
                "name": "aBarrierClient",
                "optional": false,
                "type": "nsIAsyncShutdownClient"
              }
            ],
            "iid_is": null,
            "name": "blockShutdown",
            "type": "void"
          },
          {
            "name": "state",
            "readonly": true,
            "type": "nsIPropertyBag"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIAsyncShutdownClient",
        "members": [
          {
            "name": "name",
            "readonly": true,
            "type": "string"
          },
          {
            "name": "isClosed",
            "readonly": true,
            "type": "boolean"
          },
          {
            "args": [
              {
                "name": "aBlocker",
                "optional": false,
                "type": "nsIAsyncShutdownBlocker"
              },
              {
                "name": "aFileName",
                "optional": false,
                "type": "string"
              },
              {
                "name": "aLineNumber",
                "optional": false,
                "type": "i32"
              },
              {
                "name": "aStack",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "addBlocker",
            "type": "void"
          },
          {
            "args": [
              {
                "name": "aBlocker",
                "optional": false,
                "type": "nsIAsyncShutdownBlocker"
              }
            ],
            "iid_is": null,
            "name": "removeBlocker",
            "type": "void"
          },
          {
            "name": "jsclient",
            "readonly": true,
            "type": "any"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": true,
        "consts": [],
        "enums": [],
        "id": "nsIAsyncShutdownCompletionCallback",
        "members": [
          {
            "args": [],
            "iid_is": null,
            "name": "done",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIAsyncShutdownBarrier",
        "members": [
          {
            "name": "client",
            "readonly": true,
            "type": "nsIAsyncShutdownClient"
          },
          {
            "name": "state",
            "readonly": true,
            "type": "nsIPropertyBag"
          },
          {
            "args": [
              {
                "name": "aOnReady",
                "optional": false,
                "type": "nsIAsyncShutdownCompletionCallback"
              }
            ],
            "iid_is": null,
            "name": "wait",
            "type": "void"
          }
        ]
      },
      {
        "base": "nsISupports",
        "callable": false,
        "consts": [],
        "enums": [],
        "id": "nsIAsyncShutdownService",
        "members": [
          {
            "args": [
              {
                "name": "aName",
                "optional": false,
                "type": "string"
              }
            ],
            "iid_is": null,
            "name": "makeBarrier",
            "type": "nsIAsyncShutdownBarrier"
          },
          {
            "name": "profileBeforeChange",
            "readonly": true,
            "type": "nsIAsyncShutdownClient"
          },
          {
            "name": "profileChangeTeardown",
            "readonly": true,
            "type": "nsIAsyncShutdownClient"
          },
          {
            "name": "appShutdownConfirmed",
            "readonly": true,
            "type": "nsIAsyncShutdownClient"
          },
          {
            "name": "sendTelemetry",
            "readonly": true,
            "type": "nsIAsyncShutdownClient"
          },
          {
            "name": "webWorkersShutdown",
            "readonly": true,
            "type": "nsIAsyncShutdownClient"
          },
          {
            "name": "xpcomWillShutdown",
            "readonly": true,
            "type": "nsIAsyncShutdownClient"
          }
        ]
      }
    ],
    "path": "toolkit/components/asyncshutdown/nsIAsyncShutdown.idl",
    "typedefs": [
      [
        "PRTime",
        "i64"
      ]
    ]
  }
]