# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/WebKit/Source/core/core.gni")

blink_core_sources("workers") {
  sources = [
    "AbstractWorker.cpp",
    "AbstractWorker.h",
    "DedicatedWorkerGlobalScope.cpp",
    "DedicatedWorkerGlobalScope.h",
    "DedicatedWorkerMessagingProxy.cpp",
    "DedicatedWorkerMessagingProxy.h",
    "DedicatedWorkerMessagingProxyProvider.cpp",
    "DedicatedWorkerMessagingProxyProvider.h",
    "DedicatedWorkerThread.cpp",
    "DedicatedWorkerThread.h",
    "InProcessWorkerBase.cpp",
    "InProcessWorkerBase.h",
    "InProcessWorkerMessagingProxy.cpp",
    "InProcessWorkerMessagingProxy.h",
    "InProcessWorkerObjectProxy.cpp",
    "InProcessWorkerObjectProxy.h",
    "MainThreadWorkletGlobalScope.cpp",
    "MainThreadWorkletGlobalScope.h",
    "ParentFrameTaskRunners.cpp",
    "ParentFrameTaskRunners.h",
    "SharedWorker.cpp",
    "SharedWorker.h",
    "SharedWorkerGlobalScope.cpp",
    "SharedWorkerGlobalScope.h",
    "SharedWorkerRepositoryClient.h",
    "SharedWorkerThread.cpp",
    "SharedWorkerThread.h",
    "ThreadedMessagingProxyBase.cpp",
    "ThreadedMessagingProxyBase.h",
    "ThreadedWorkletGlobalScope.cpp",
    "ThreadedWorkletGlobalScope.h",
    "ThreadedWorkletGlobalScopeProxy.h",
    "ThreadedWorkletMessagingProxy.cpp",
    "ThreadedWorkletMessagingProxy.h",
    "ThreadedWorkletObjectProxy.cpp",
    "ThreadedWorkletObjectProxy.h",
    "Worker.cpp",
    "Worker.h",
    "WorkerBackingThread.cpp",
    "WorkerBackingThread.h",
    "WorkerClients.cpp",
    "WorkerClients.h",
    "WorkerEventQueue.cpp",
    "WorkerEventQueue.h",
    "WorkerGlobalScope.cpp",
    "WorkerGlobalScope.h",
    "WorkerInspectorProxy.cpp",
    "WorkerInspectorProxy.h",
    "WorkerLoaderProxy.cpp",
    "WorkerLoaderProxy.h",
    "WorkerLocation.h",
    "WorkerNavigator.cpp",
    "WorkerNavigator.h",
    "WorkerOrWorkletGlobalScope.h",
    "WorkerReportingProxy.h",
    "WorkerScriptLoader.cpp",
    "WorkerScriptLoader.h",
    "WorkerSettings.cpp",
    "WorkerSettings.h",
    "WorkerThread.cpp",
    "WorkerThread.h",
    "WorkerThreadLifecycleObserver.cpp",
    "WorkerThreadLifecycleObserver.h",
    "WorkerThreadStartupData.cpp",
    "WorkerThreadStartupData.h",
    "Worklet.cpp",
    "Worklet.h",
    "WorkletGlobalScope.cpp",
    "WorkletGlobalScope.h",
    "WorkletScriptLoader.cpp",
    "WorkletScriptLoader.h",
  ]

  configs += [
    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",
  ]
}
