# Copyright (C) 2019-2020 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1.  Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
# 2.  Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#if ENABLE(GPU_PROCESS)

messages -> GPUProcess LegacyReceiver {
    InitializeGPUProcess(struct WebKit::GPUProcessCreationParameters processCreationParameters)

    CreateGPUConnectionToWebProcess(WebCore::ProcessIdentifier processIdentifier, PAL::SessionID sessionID, struct WebKit::GPUProcessConnectionParameters parameters) -> (std::optional<IPC::Attachment> connectionIdentifier, struct WebKit::GPUProcessConnectionInitializationParameters parameters) Async

    PrepareToSuspend(bool isSuspensionImminent) -> () Async
    ProcessDidResume()

    AddSession(PAL::SessionID sessionID, struct WebKit::GPUProcessSessionParameters parameters)
    RemoveSession(PAL::SessionID sessionID)

#if ENABLE(MEDIA_STREAM)
    SetMockCaptureDevicesEnabled(bool isEnabled)
    SetOrientationForMediaCapture(uint64_t orientation);
    UpdateSandboxAccess(Vector<WebKit::SandboxExtension::Handle> extensions);
    UpdateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier processID) -> () Async
    UpdateCaptureOrigin(struct WebCore::SecurityOriginData originData, WebCore::ProcessIdentifier processID)
    AddMockMediaDevice(struct WebCore::MockMediaDevice device)
    ClearMockMediaDevices()
    RemoveMockMediaDevice(String persistentId)
    ResetMockMediaDevices()
    SetMockCaptureDevicesInterrupted(bool isCameraInterrupted, bool isMicrophoneInterrupted)
#endif
#if PLATFORM(MAC)
    DisplayConfigurationChanged(CGDirectDisplayID displayID, CGDisplayChangeSummaryFlags flags)
    SetScreenProperties(struct WebCore::ScreenProperties screenProperties)
#endif

#endif

#if HAVE(SC_CONTENT_SHARING_SESSION)
    ShowWindowPicker() -> (std::optional<WebCore::CaptureDevice> device) Async
    ShowScreenPicker() -> (std::optional<WebCore::CaptureDevice> device) Async
#endif

#if ENABLE(MEDIA_SOURCE)
    SetWebMParserEnabled(bool enabled);
#endif

#if ENABLE(WEBM_FORMAT_READER)
    SetWebMFormatReaderEnabled(bool enabled);
#endif

#if ENABLE(OPUS)
    SetOpusDecoderEnabled(bool enabled);
#endif

#if ENABLE(VORBIS)
    SetVorbisDecoderEnabled(bool enabled);
#endif

#if ENABLE(MEDIA_SOURCE) && HAVE(AVSAMPLEBUFFERVIDEOOUTPUT)
    SetMediaSourceInlinePaintingEnabled(bool enabled);
#endif

#if HAVE(SCREEN_CAPTURE_KIT)
    SetUseScreenCaptureKit(bool use);
#endif

    RequestBitmapImageForCurrentTime(WebCore::ProcessIdentifier processIdentifier, WebCore::MediaPlayerIdentifier playerIdentifier) -> (WebKit::ShareableBitmap::Handle handle) Async

#if ENABLE(CFPREFS_DIRECT_MODE)
    NotifyPreferencesChanged(String domain, String key, std::optional<String> encodedValue)
#endif

    WebProcessConnectionCountForTesting() -> (uint64_t count) Async
}

#endif // ENABLE(GPU_PROCESS)
