Source code

Revision control

Copy as Markdown

Other Tools

# -*- Mode:Python; tab-width:8; indent-tabs-mode:nil -*- */
# vim: set ts=8 sts=4 et sw=4 tw=80: */
# 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
# WebExtension WebIDL API Bindings Configuration, used by the script
# `dom/extensions-webidl/`
# to customize the WebIDL generated based on the WebExtensions API JSON Schemas.
# Generating the WebIDL definitions for some of the WebExtensions API does require
# some special handling, there are corresponding entries in the configuration tables
# below.
# Mapping table between the JSON Schema types (represented as keys of the map)
# and the related WebIDL type (represented by the value in the map).
# Any mapping missing from this table will fallback to use the "any" webidl type
# (See WebIDLHelpers.webidl_type_from_mapping method).
# NOTE: Please keep this table in alphabetic order (upper and lower case in two
# separate alphabetic orders, group of the upcase ones first).
"ExpectedError": "any", # Only used in test.assertThrows/assertRejects
"Port": "ExtensionPort",
"Promise": "Promise<any>",
"StreamFilter": "ExtensionStreamFilter",
"any": "any",
"boolean": "boolean",
"number": "float",
"function": "Function",
"integer": "long",
"object": "any", # TODO: as a follow up we may look into generating webidl dictionaries to achieve a more precise mapping
"runtime.Port": "ExtensionPort",
"string": "DOMString",
"types.Setting": "ExtensionSetting",
# Set of the types from the WEBEXT_TYPES_MAPPING that will be threated as primitive
# types (e.g. used to omit optional attribute in the WebIDL methods type signatures).
# NOTE: Please keep this table in alphabetic order (upper and lower case in two
# separate alphabetic orders, group of the update ones first).
# Mapping table for some APIs that do require special handling and a
# specific stub method should be set in the generated webidl extended
# attribute `WebExtensionStub`.
# The key in this map represent the API method name (including the
# API namespace that is part of), the value is the value to set on the
# `WebExtensionStub` webidl extended attribute:
# "namespace.methodName": "WebExtensionStubName",
# NOTE: Please keep this table in alphabetic order.
"dns.resolve": "AsyncAmbiguous",
"runtime.connect": "ReturnsPort",
"runtime.connectNative": "ReturnsPort",
"runtime.getURL": "ReturnsString",
# TODO: Bug 1782690 - This method accepts functions/args so we'll need to
# serialize them.
"scripting.executeScript": "NotImplementedAsync",
"scripting.getRegisteredContentScripts": "AsyncAmbiguous",
"scripting.unregisterContentScripts": "AsyncAmbiguous",
"test.assertEq": "AssertEq",
"test.assertRejects": False, # No WebExtensionStub attribute.
"test.assertThrows": False, # No WebExtensionStub attribute.
"test.withHandlingUserInput": "NotImplementedNoReturn",
# Mapping table for the directories where the JSON API schema will be loaded
# from.
"toolkit": ["toolkit", "components", "extensions", "schemas"],
"browser": ["browser", "components", "extensions", "schemas"],
"mobile": ["mobile", "android", "components", "extensions", "schemas"],
# List of toolkit-level WebExtensions API namespaces that are not included
# in android builds.
# NOTE: keep this list in sync with the API namespaces excluded in
# - toolkit/components/extensions/
# - toolkit/components/extensions/schemas/