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

# Public stuff.
EXPORTS.mozilla.dom += [
    'FileReaderSync.h',
    'ServiceWorkerCommon.h',
    'ServiceWorkerContainer.h',
    'ServiceWorkerEvents.h',
    'ServiceWorkerRegistrar.h',
    'ServiceWorkerRegistration.h',
    'WorkerLocation.h',
    'WorkerNavigator.h',
    'WorkerPrefs.h',
    'WorkerPrivate.h',
    'WorkerRunnable.h',
    'WorkerScope.h',
]

EXPORTS.mozilla.dom.workers += [
    'RuntimeService.h',
    'ServiceWorkerInfo.h',
    'ServiceWorkerManager.h',
    'ServiceWorkerRegistrationInfo.h',
    'WorkerDebuggerManager.h',
    'Workers.h',
]

# Stuff needed for the bindings, not really public though.
EXPORTS.mozilla.dom.workers.bindings += [
    'ServiceWorker.h',
    'ServiceWorkerClient.h',
    'ServiceWorkerClients.h',
    'ServiceWorkerWindowClient.h',
    'SharedWorker.h',
    'WorkerHolder.h',
]

XPIDL_MODULE = 'dom_workers'

XPIDL_SOURCES += [
    'nsIWorkerDebugger.idl',
    'nsIWorkerDebuggerManager.idl',
]

UNIFIED_SOURCES += [
    'ChromeWorkerScope.cpp',
    'FileReaderSync.cpp',
    'Principal.cpp',
    'RegisterBindings.cpp',
    'RuntimeService.cpp',
    'ScriptLoader.cpp',
    'ServiceWorker.cpp',
    'ServiceWorkerClient.cpp',
    'ServiceWorkerClients.cpp',
    'ServiceWorkerContainer.cpp',
    'ServiceWorkerEvents.cpp',
    'ServiceWorkerInfo.cpp',
    'ServiceWorkerJob.cpp',
    'ServiceWorkerJobQueue.cpp',
    'ServiceWorkerManager.cpp',
    'ServiceWorkerManagerChild.cpp',
    'ServiceWorkerManagerParent.cpp',
    'ServiceWorkerManagerService.cpp',
    'ServiceWorkerPrivate.cpp',
    'ServiceWorkerRegisterJob.cpp',
    'ServiceWorkerRegistrar.cpp',
    'ServiceWorkerRegistration.cpp',
    'ServiceWorkerRegistrationInfo.cpp',
    'ServiceWorkerScriptCache.cpp',
    'ServiceWorkerUnregisterJob.cpp',
    'ServiceWorkerUpdateJob.cpp',
    'ServiceWorkerWindowClient.cpp',
    'SharedWorker.cpp',
    'WorkerDebuggerManager.cpp',
    'WorkerHolder.cpp',
    'WorkerLocation.cpp',
    'WorkerNavigator.cpp',
    'WorkerPrivate.cpp',
    'WorkerRunnable.cpp',
    'WorkerScope.cpp',
    'WorkerThread.cpp',
]

IPDL_SOURCES += [
    'PServiceWorkerManager.ipdl',
    'ServiceWorkerRegistrarTypes.ipdlh',
]

LOCAL_INCLUDES += [
    '../base',
    '../system',
    '/dom/base',
    '/xpcom/build',
    '/xpcom/threads',
]

include('/ipc/chromium/chromium-config.mozbuild')

FINAL_LIBRARY = 'xul'

TEST_DIRS += [
    'test/extensions/bootstrap',
    'test/extensions/traditional',
]

MOCHITEST_MANIFESTS += [
    'test/mochitest.ini',
    'test/serviceworkers/mochitest.ini',
]

MOCHITEST_CHROME_MANIFESTS += [
    'test/chrome.ini',
    'test/serviceworkers/chrome.ini'
]

BROWSER_CHROME_MANIFESTS += [
    'test/serviceworkers/browser.ini',
]

XPCSHELL_TESTS_MANIFESTS += ['test/xpcshell/xpcshell.ini']

BROWSER_CHROME_MANIFESTS += ['test/browser.ini']

TEST_DIRS += ['test/gtest']

if CONFIG['GNU_CXX']:
    CXXFLAGS += ['-Wno-error=shadow']