# -*- 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/.

IS_ANDROID = buildconfig.substs['MOZ_WIDGET_TOOLKIT'] == 'android'
IS_WINDOWS = buildconfig.substs['MOZ_WIDGET_TOOLKIT'] == 'windows'

MOZ_HAS_TERMINATOR = not IS_ANDROID

Classes = [
    {
        'name': 'AddonContentPolicy',
        'cid': '{c26a8241-ecf4-4aed-9f3c-f1f5c713b9a5}',
        'contract_ids': ['@mozilla.org/addons/content-policy;1'],
        'type': 'AddonContentPolicy',
        'headers': ['mozilla/AddonContentPolicy.h'],
    },
    {
        'cid': '{17a59a6b-92b8-42e5-bce0-ab434c7a7135}',
        'contract_ids': ['@mozilla.org/addons/addon-manager-startup;1'],
        'singleton': True,
        'type': 'mozilla::AddonManagerStartup',
        'headers': ['mozilla/AddonManagerStartup.h'],
        'constructor': 'mozilla::AddonManagerStartup::GetInstance',
    },
    {
        'name': 'AlertNotification',
        'cid': '{9a7b7a41-0b47-47f7-b61b-15a210d6f020}',
        'contract_ids': ['@mozilla.org/alert-notification;1'],
        'type': 'mozilla::AlertNotification',
        'headers': ['mozilla/AlertNotification.h'],
    },
    {
        'name': 'ApplicationReputation',
        'cid': '{d21b4c33-716f-4117-8041-2770b59ff8a6}',
        'contract_ids': ['@mozilla.org/reputationservice/application-reputation-service;1'],
        'singleton': True,
        'type': 'ApplicationReputationService',
        'headers': ['/toolkit/components/reputationservice/ApplicationReputation.h'],
        'constructor': 'ApplicationReputationService::GetSingleton',
    },
    {
        'name': 'DownloadPlatform',
        'cid': '{649a14c9-fe5c-48ec-9c85-00cad9ccf32e}',
        'contract_ids': ['@mozilla.org/toolkit/download-platform;1'],
        'type': 'DownloadPlatform',
        'headers': ['/toolkit/components/downloads/DownloadPlatform.h'],
    },
    {
        'name': 'ExtensionPolicy',
        'cid': '{562de129-8338-482c-bb96-a1ff09ee53cc}',
        'contract_ids': ['@mozilla.org/addons/policy-service;1'],
        'singleton': True,
        'type': 'mozilla::ExtensionPolicyService',
        'headers': ['mozilla/ExtensionPolicyService.h'],
        'constructor': 'mozilla::ExtensionPolicyService::GetInstance',
    },
    {
        'cid': '{15686f9d-483e-4361-98cd-37f1e8f1e61d}',
        'contract_ids': ['@mozilla.org/toolkit/finalizationwitness;1'],
        'type': 'mozilla::FinalizationWitnessService',
        'headers': ['mozilla/FinalizationWitnessService.h'],
        'init_method': 'Init',
    },
    {
        'name': 'Alerts',
        'cid': '{a0ccaaf8-09da-44d8-b250-9ac3e93c8117}',
        'contract_ids': ['@mozilla.org/alerts-service;1'],
        'type': 'nsAlertsService',
        'headers': ['/toolkit/components/alerts/nsAlertsService.h'],
        'overridable': True,
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
    {
        'name': 'AppStartup',
        'js_name': 'startup',
        'cid': '{7dd4d320-c84b-4624-8d45-7bb9b2356977}',
        'contract_ids': ['@mozilla.org/toolkit/app-startup;1'],
        'interfaces': ['nsIAppStartup'],
        'type': 'nsAppStartup',
        'headers': ['/toolkit/components/startup/nsAppStartup.h'],
        'init_method': 'Init',
    },
    {
        'cid': '{6356aa16-7916-4215-a825-cbc2692ca87a}',
        'contract_ids': ['@mozilla.org/appshell/component/browser-status-filter;1'],
        'type': 'nsBrowserStatusFilter',
        'headers': ['nsBrowserStatusFilter.h'],
    },
    {
        'name': 'FindService',
        'cid': '{5060b803-340e-11d5-be5b-b3e063ec6a3c}',
        'contract_ids': ['@mozilla.org/find/find_service;1'],
        'type': 'nsFindService',
        'headers': ['/toolkit/components/find/nsFindService.h'],
    },
    {
        'name': 'TypeAheadFind',
        'cid': '{e7f70966-9a37-48d7-8aeb-35998f31090e}',
        'contract_ids': ['@mozilla.org/typeaheadfind;1'],
        'type': 'nsTypeAheadFind',
        'headers': ['/toolkit/components/typeaheadfind/nsTypeAheadFind.h'],
    },
    {
        'name': 'UrlClassifierDB',
        'cid': '{7a258022-6765-11e5-b379-b37b1f2354be}',
        'contract_ids': [
            '@mozilla.org/uriclassifierservice',
            '@mozilla.org/url-classifier/dbservice;1',
        ],
        'type': 'nsISupports',
        'legacy_constructor': 'nsUrlClassifierDBServiceConstructor',
        'headers': ['/toolkit/components/build/nsToolkitCompsModule.h'],
    },
    {
        'name': 'UrlClassifierPrefixSet',
        'cid': '{3d8579f0-75fa-4e00-ba41-38661d5b5d17}',
        'contract_ids': ['@mozilla.org/url-classifier/prefixset;1'],
        'type': 'nsUrlClassifierPrefixSet',
        'headers': ['nsUrlClassifierPrefixSet.h'],
    },
    {
        'name': 'UrlClassifierStreamUpdater',
        'cid': '{e1797597-f4d6-4dd3-a1e1-745ad352cd80}',
        'contract_ids': ['@mozilla.org/url-classifier/streamupdater;1'],
        'type': 'nsUrlClassifierStreamUpdater',
        'headers': ['/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.h'],
    },
    {
        'name': 'UrlClassifierUtils',
        'cid': '{b7b2ccec-7912-4ea6-a548-b038447004bd}',
        'contract_ids': ['@mozilla.org/url-classifier/utils;1'],
        'type': 'nsUrlClassifierUtils',
        'headers': ['/toolkit/components/url-classifier/nsUrlClassifierUtils.h'],
        'constructor': 'nsUrlClassifierUtils::GetXPCOMSingleton',
    },
]

if defined('MOZ_UPDATER') and not IS_ANDROID:
    Classes += [
        {
            'cid': '{f3dcf644-79e8-4f59-a1bb-878454488ef9}',
            'contract_ids': ['@mozilla.org/updates/update-processor;1'],
            'type': 'nsUpdateProcessor',
            'headers': ['/toolkit/xre/nsUpdateDriver.h'],
        },
        {
            'cid': '{cf4c4487-66d9-4e18-a2e9-39002245332f}',
            'contract_ids': ['@mozilla.org/updates/update-sync-manager;1'],
            'type': 'nsUpdateSyncManager',
            'singleton': True,
            'headers': ['/toolkit/xre/nsUpdateSyncManager.h'],
            'constructor': 'nsUpdateSyncManager::GetSingleton',
            'processes': ProcessSelector.MAIN_PROCESS_ONLY,
            'categories': {'xpcom-startup': 'nsUpdateSyncManager'},
        },
        {
            'cid': '{a553d37f-9a10-496f-a864-d3e4d7d09c3a}',
            'contract_ids': ['@mozilla.org/updates/update-mutex;1'],
            'type': 'nsUpdateMutex',
            'headers': ['/toolkit/xre/nsUpdateMutex.h'],
            'processes': ProcessSelector.MAIN_PROCESS_ONLY,
        },
    ]

if not defined('MOZ_DISABLE_PARENTAL_CONTROLS'):
    Classes += [
        {
            'cid': '{580530e5-118c-4bc7-ab88-bc2cd2b97223}',
            'contract_ids': ['@mozilla.org/parental-controls-service;1'],
            'type': 'nsParentalControlsService',
            'headers': ['/toolkit/components/parentalcontrols/nsParentalControlsService.h'],
        },
    ]

if MOZ_HAS_TERMINATOR:
    Classes += [
        {
            'cid': '{2e59cc70-f83a-412f-89d4-453885837217}',
            'contract_ids': ['@mozilla.org/toolkit/shutdown-terminator;1'],
            'type': 'mozilla::nsTerminator',
            'headers': ['nsTerminator.h'],
        },
    ]
