# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.

Classes = [
    {
        'cid': '{c521a612-2aad-46db-b6ab-3b821fb150b1}',
        'contract_ids': ['@mozilla.org/binaryinputstream;1'],
        'type': 'nsBinaryInputStream',
        'headers': ['/xpcom/io/nsBinaryStream.h'],
    },
    {
        'cid': '{86c37b9a-74e7-4672-844e-6e7dd83ba484}',
        'contract_ids': ['@mozilla.org/binaryoutputstream;1'],
        'type': 'nsBinaryOutputStream',
        'headers': ['/xpcom/io/nsBinaryStream.h'],
    },
    {
        'cid': '{61ba33c0-3031-11d3-8cd0-0060b0fc14a3}',
        'contract_ids': ['@mozilla.org/network/protocol;1?name=chrome'],
        'type': 'nsChromeProtocolHandler',
        'headers': ['/chrome/nsChromeProtocolHandler.h'],
        'protocol_config': {
            'scheme': 'chrome',
            'flags': [
                'URI_STD',
                'URI_IS_UI_RESOURCE',
                'URI_IS_LOCAL_RESOURCE',
                'URI_HAS_WEB_EXPOSED_ORIGIN',
            ],
        },
    },
    {
        'name': 'ChromeRegistry',
        'cid': '{47049e42-1d87-482a-984d-56ae185e367a}',
        'contract_ids': ['@mozilla.org/chrome/chrome-registry;1'],
        'singleton': True,
        'type': 'nsChromeRegistry',
        'headers': ['/chrome/nsChromeRegistry.h'],
        'constructor': 'nsChromeRegistry::GetSingleton',
    },
    {
        'name': 'Console',
        'js_name': 'console',
        'cid': '{7e3ff85c-1dd2-11b2-8d4b-eb452cb0ff40}',
        'contract_ids': ['@mozilla.org/consoleservice;1'],
        'interfaces': ['nsIConsoleService'],
        'type': 'nsConsoleService',
        'headers': ['/xpcom/base/nsConsoleService.h'],
        'init_method': 'Init',
    },
    {
        'cid': '{678c50b8-6bcb-4ad0-b9b8-c81175955199}',
        'contract_ids': ['@mozilla.org/hash-property-bag;1'],
        'type': 'nsHashPropertyBagCC',
        'headers': ['nsHashPropertyBag.h'],
    },
    {
        'cid': '{eb833911-4f49-4623-845f-e58a8e6de4c2}',
        'contract_ids': ['@mozilla.org/io-util;1'],
        'type': 'nsIOUtil',
        'headers': ['/xpcom/io/nsIOUtil.h'],
    },
    {
        'cid': '{2e23e220-60be-11d3-8c4a-000064657374}',
        'contract_ids': ['@mozilla.org/file/local;1'],
        'legacy_constructor': 'nsLocalFileConstructor',
    },
    {
        'cid': '{00bd71fb-7f09-4ec3-96af-a0b522b77969}',
        'contract_ids': ['@mozilla.org/memory-info-dumper;1'],
        'type': 'nsMemoryInfoDumper',
        'headers': ['mozilla/nsMemoryInfoDumper.h'],
    },
    {
        'cid': '{fb97e4f5-32dd-497a-baa2-7d1e55079910}',
        'contract_ids': ['@mozilla.org/memory-reporter-manager;1'],
        'type': 'nsMemoryReporterManager',
        'headers': ['/xpcom/base/nsMemoryReporterManager.h'],
        'init_method': 'Init',
        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
    },
    {
        'cid': '{7b4eeb20-d781-11d4-8a83-0010a4e0c9ca}',
        'contract_ids': ['@mozilla.org/process/util;1'],
        'type': 'nsProcess',
        'headers': ['nsProcess.h'],
    },
    {
        'cid': '{aaf68860-f849-40ee-bb7a-b229bce036a3}',
        'contract_ids': ['@mozilla.org/scriptablebase64encoder;1'],
        'type': 'nsScriptableBase64Encoder',
        'headers': ['/xpcom/io/nsScriptableBase64Encoder.h'],
    },
    {
        'cid': '{43ebf210-8a7b-4ddb-a83d-b87c51a058db}',
        'contract_ids': ['@mozilla.org/securityconsole/message;1'],
        'type': 'nsSecurityConsoleMessage',
        'headers': ['/xpcom/base/nsSecurityConsoleMessage.h'],
    },
    {
        'cid': '{669a9795-6ff7-4ed4-9150-c34ce2971b63}',
        'contract_ids': ['@mozilla.org/storagestream;1'],
        'type': 'nsStorageStream',
        'headers': ['nsStorageStream.h'],
    },
    {
        'cid': '{acf8dc41-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-cstring;1'],
        'type': 'nsSupportsCString',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc4a-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-char;1'],
        'type': 'nsSupportsChar',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{cbf86871-4ac0-11d3-baea-00805f8a5dd7}',
        'contract_ids': ['@mozilla.org/supports-double;1'],
        'type': 'nsSupportsDouble',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{cbf86870-4ac0-11d3-baea-00805f8a5dd7}',
        'contract_ids': ['@mozilla.org/supports-float;1'],
        'type': 'nsSupportsFloat',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{a99febba-1dd1-11b2-a943-b02334a6d083}',
        'contract_ids': ['@mozilla.org/supports-interface-pointer;1'],
        'type': 'nsSupportsInterfacePointer',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc43-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRBool;1'],
        'type': 'nsSupportsPRBool',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc4b-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRInt16;1'],
        'type': 'nsSupportsPRInt16',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc4c-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRInt32;1'],
        'type': 'nsSupportsPRInt32',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc4d-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRInt64;1'],
        'type': 'nsSupportsPRInt64',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc49-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRTime;1'],
        'type': 'nsSupportsPRTime',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc46-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRUint16;1'],
        'type': 'nsSupportsPRUint16',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc47-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRUint32;1'],
        'type': 'nsSupportsPRUint32',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc48-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRUint64;1'],
        'type': 'nsSupportsPRUint64',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc44-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-PRUint8;1'],
        'type': 'nsSupportsPRUint8',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'cid': '{acf8dc42-4a25-11d3-9890-006008962422}',
        'contract_ids': ['@mozilla.org/supports-string;1'],
        'type': 'nsSupportsString',
        'headers': ['nsSupportsPrimitives.h'],
    },
    {
        'name': 'SystemInfo',
        'js_name': 'sysinfo',
        'cid': '{d962398a-99e5-49b2-857a-c159049c7f6c}',
        'contract_ids': ['@mozilla.org/system-info;1'],
        'interfaces': ['nsIPropertyBag2', 'nsISystemInfo'],
        'type': 'nsSystemInfo',
        'headers': ['nsSystemInfo.h'],
        'init_method': 'Init',
        'overridable': True,
    },
    {
        'js_name': 'tm',
        'cid': '{7a4204c6-e45a-4c37-8ebb-6709a22c917c}',
        'contract_ids': ['@mozilla.org/thread-manager;1'],
        'interfaces': ['nsIThreadManager'],
        'legacy_constructor': 'nsThreadManagerGetSingleton',
        'headers': ['/xpcom/build/XPCOMModule.h'],
    },
    {
        'js_name': 'uuid',
        'name': 'UUIDGenerator',
        'cid': '{706d36bb-bf79-4293-81f2-8f6828c18f9d}',
        'contract_ids': ['@mozilla.org/uuid-generator;1'],
        'interfaces': ['nsIUUIDGenerator'],
        'type': 'nsUUIDGenerator',
        'headers': ['/xpcom/base/nsUUIDGenerator.h'],
        'processes': ProcessSelector.ALLOW_IN_SOCKET_PROCESS,
    },
    {
        'cid': '{0d6ea1d0-879c-11d5-90ef-0010a4e73d9a}',
        'contract_ids': ['@mozilla.org/variant;1'],
        'type': 'nsVariantCC',
        'headers': ['nsVariant.h'],
    },
    {
        'js_name': 'vc',
        'cid': '{c6e47036-ca94-4be3-963a-9abd8705f7a8}',
        'contract_ids': ['@mozilla.org/xpcom/version-comparator;1'],
        'interfaces': ['nsIVersionComparator'],
        'type': 'nsVersionComparatorImpl',
        'headers': ['/xpcom/base/nsVersionComparatorImpl.h'],
    },
    {
        'cid': '{dfac10a9-dd24-43cf-a095-6ffa2e4b6a6c}',
        'contract_ids': ['@mozilla.org/xpcom/ini-parser-factory;1'],
        'type': 'nsINIParserFactory',
        'headers': ['/xpcom/ds/nsINIParserImpl.h'],
        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
    },
]

if buildconfig.substs['OS_ARCH'] == 'WINNT':
    Classes += [
        {
            'cid': '{a53bc624-d577-4839-b8ec-bb5040a52ff4}',
            'contract_ids': ['@mozilla.org/windows-registry-key;1'],
            'legacy_constructor': 'nsWindowsRegKeyConstructor',
            'headers': ['nsWindowsRegKey.h'],
        },
    ]

if buildconfig.substs['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    Classes += [
        {
            'cid': '{b0f20595-88ce-4738-a1a4-24de78eb8051}',
            'contract_ids': ['@mozilla.org/mac-preferences-reader;1'],
            'type': 'nsMacPreferencesReader',
            'headers': ['mozilla/nsMacPreferencesReader.h'],
        },
    ]
