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

Headers = [
    '/widget/windows/nsWidgetFactory.h',
]

InitFunc = 'nsWidgetWindowsModuleCtor'
UnloadFunc = 'nsWidgetWindowsModuleDtor'

Classes = [
    {
        'cid': '{4c9dee4a-b083-4261-8bbe-c6883d2a6bc9}',
        'contract_ids': ['@mozilla.org/gfx/parent/screenmanager;1'],
        'singleton': True,
        'type': 'mozilla::widget::ScreenManager',
        'constructor': 'mozilla::widget::ScreenManager::GetAddRefedSingleton',
        'headers': ['/widget/ScreenManager.h'],
        'processes': ProcessSelector.ALLOW_IN_GPU_AND_MAIN_PROCESS,
    },
    {
        'cid': '{2d96b3df-c051-11d1-a827-0040959a28c9}',
        'contract_ids': ['@mozilla.org/widget/appshell/win;1'],
        'headers': ['/widget/windows/nsWidgetFactory.h'],
        'legacy_constructor': 'nsAppShellConstructor',
        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
    },
    {
        'cid': '{6987230e-0098-4e78-bc5f-1493ee7519fa}',
        'contract_ids': ['@mozilla.org/widget/useridleservice;1'],
        'singleton': True,
        'type': 'nsUserIdleServiceWin',
        'constructor': 'nsUserIdleServiceWin::GetInstance',
        'headers': ['/widget/windows/nsUserIdleServiceWin.h', 'nsUserIdleService.h'],
    },
    {
        'cid': '{b148eed2-236d-11d3-b35c-00a0cc3c1cde}',
        'contract_ids': ['@mozilla.org/sound;1'],
        'singleton': True,
        'type': 'nsISound',
        'constructor': 'nsSound::GetInstance',
        'headers': ['/widget/windows/nsSound.h'],
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
    {
        'cid': '{77221d5a-1dd2-11b2-8c69-c710f15d2ed5}',
        'contract_ids': ['@mozilla.org/widget/clipboardhelper;1'],
        'type': 'nsClipboardHelper',
        'headers': ['/widget/nsClipboardHelper.h'],
    },
    {
        'cid': '{b8e5bc54-a22f-4eb2-b061-24cb6d19c15f}',
        'contract_ids': ['@mozilla.org/windows-taskbar;1'],
        'type': 'mozilla::widget::WinTaskbar',
        'headers': ['/widget/windows/WinTaskbar.h'],
    },
    {
        'cid': '{e04a55e8-fee3-4ea2-a98b-41d2621adc3c}',
        'contract_ids': ['@mozilla.org/windows-ui-utils;1'],
        'type': 'WindowsUIUtils',
        'headers': ['/widget/windows/WindowsUIUtils.h'],
    },
    {
        'cid': '{8b5314bc-db01-11d2-96ce-0060b0fb9956}',
        'contract_ids': ['@mozilla.org/widget/transferable;1'],
        'type': 'nsTransferable',
        'headers': ['/widget/nsTransferable.h'],
    },
    {
        'cid': '{948a0023-e3a7-11d2-96cf-0060b0fb9956}',
        'contract_ids': ['@mozilla.org/widget/htmlformatconverter;1'],
        'type': 'nsHTMLFormatConverter',
        'headers': ['/widget/nsHTMLFormatConverter.h'],
    },
    {
        'cid': '{f92e733e-33a3-4752-90e5-25801ddeaf7b}',
        'contract_ids': ['@mozilla.org/widget/parent/dragservice;1'],
        'type': 'nsDragService',
        'headers': ['/widget/windows/nsDragService.h'],
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
    {
        'cid': '{9a0cb62b-d638-4faf-9588-ae96f5e29093}',
        'contract_ids': ['@mozilla.org/widget/taskbar-preview-callback;1'],
        'type': 'mozilla::widget::TaskbarPreviewCallback',
        'headers': ['/widget/windows/TaskbarPreview.h'],
    },
    {
        'name': 'GfxInfo',
        'cid': '{d755a760-9f27-11df-0800-200c9a664242}',
        'contract_ids': ['@mozilla.org/gfx/info;1'],
        'type': 'mozilla::widget::GfxInfo',
        'headers': ['/widget/windows/GfxInfo.h'],
        'init_method': 'Init',
        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_SOCKET_AND_UTILITY_PROCESS,
    },
    {
        'cid': '{e2fc3e45-c893-4b34-8f6d-b87faf65a897}',
        'contract_ids': ['@mozilla.org/parent/filepicker;1'],
        'type': 'nsFilePicker',
        'headers': ['/widget/windows/nsFilePicker.h'],
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
    {
        'cid': '{035d92f3-3802-4cf5-87cb-1758bfc5d4da}',
        'contract_ids': ['@mozilla.org/parent/colorpicker;1'],
        'type': 'nsColorPicker',
        'headers': ['/widget/windows/nsColorPicker.h'],
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
    {
        'cid': '{1201d357-8417-4926-a694-e6408fbedcf8}',
        'contract_ids': ['@mozilla.org/sharepicker;1'],
        'type': 'nsSharePicker',
        'headers': ['/widget/windows/nsSharePicker.h'],
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
    {
        'cid': '{25b4efa0-7054-4787-9cd6-630efb3fe6fa}',
        'contract_ids': ['@mozilla.org/widget/parent/clipboard;1'],
        'interfaces': ['nsIClipboard'],
        'type': 'nsIClipboard',
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
    {
        'cid': '{b6e1a890-b2b8-4883-a65f-9476f6185313}',
        'contract_ids': ['@mozilla.org/widget/systemstatusbar;1'],
        'singleton': True,
        'init_method': 'Init',
        'type': 'mozilla::widget::SystemStatusBar',
        'constructor': 'mozilla::widget::SystemStatusBar::GetAddRefedSingleton',
        'headers': ['/widget/windows/SystemStatusBar.h'],
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
    {
        'name': 'nsIWindowsTestDebug',
        'cid': '{2d63d37b-d0d8-4427-b2ee-3ad706fa923f}',
        'contract_ids': ['@mozilla.org/win-test-debug;1'],
        'type': 'mozilla::widget::WindowsTestDebug',
        'headers': ['/widget/windows/WindowsTestDebug.h'],
        'processes': ProcessSelector.MAIN_PROCESS_ONLY,
    },
]

if buildconfig.substs['CC_TYPE'] == 'clang-cl':
    Classes += [
        {
            'cid': '{84e11f80-ca55-11dd-ad8b-0800200c9a66}',
            'contract_ids': ['@mozilla.org/system-alerts-service;1'],
            'type': 'mozilla::widget::ToastNotification',
            'headers': ['/widget/windows/ToastNotification.h'],
            'init_method': 'Init',
            'processes': ProcessSelector.MAIN_PROCESS_ONLY,
        },
        {
            'cid': '{a46c385b-a45c-4b48-ab7c-aaed1252bb83}',
            'contract_ids': ['@mozilla.org/windows-alert-notification;1'],
            'type': 'mozilla::widget::WindowsAlertNotification',
            'headers': ['/widget/windows/ToastNotification.h'],
            'processes': ProcessSelector.MAIN_PROCESS_ONLY,
        },
        {
            'cid': '{e49ee096-7a38-4721-ad2d-ac4e08a77dfa}',
            'contract_ids': ['@mozilla.org/windows-alerts-service-rust;1'],
            'headers': ['/widget/windows/rust/src/AlertsServiceRust.h'],
            'legacy_constructor': 'new_windows_alerts_service',
            'processes': ProcessSelector.MAIN_PROCESS_ONLY,
        },
    ]

if defined('NS_PRINTING'):
    Classes += [
        {
            'cid': '{d3f69889-e13a-4321-980c-a39332e21f34}',
            'contract_ids': ['@mozilla.org/gfx/devicecontextspec;1'],
            'type': 'nsDeviceContextSpecWin',
            'headers': ['/widget/windows/nsDeviceContextSpecWin.h'],
            'processes': ProcessSelector.MAIN_PROCESS_ONLY,
        },
        {
            'cid': '{06beec76-a183-4d9f-85dd-085f26da565a}',
            'contract_ids': ['@mozilla.org/widget/printdialog-service;1'],
            'type': 'nsPrintDialogServiceWin',
            'headers': ['/widget/windows/nsPrintDialogWin.h'],
            'init_method': 'Init',
            'processes': ProcessSelector.MAIN_PROCESS_ONLY,
        },
        {
            'cid': '{841387c8-72e6-484b-9296-bf6eea80d58a}',
            'contract_ids': ['@mozilla.org/gfx/printsettings-service;1'],
            'type': 'nsPrintSettingsServiceWin',
            'headers': ['/widget/windows/nsPrintSettingsServiceWin.h'],
            'init_method': 'Init',
        },
        {
            'cid': '{a6cf9129-15b3-11d2-932e-00805f8add32}',
            'contract_ids': ['@mozilla.org/gfx/printerlist;1'],
            'type': 'nsPrinterListWin',
            'headers': ['/widget/windows/nsDeviceContextSpecWin.h'],
            'processes': ProcessSelector.MAIN_PROCESS_ONLY,
        },
    ]
