2
* Copyright (C) 2019 Apple Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
13
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23
* THE POSSIBILITY OF SUCH DAMAGE.
28
#if ENABLE(GPU_PROCESS)
30
#include "RemoteMediaResourceIdentifier.h"
31
#include <WebCore/PlatformMediaResourceLoader.h>
32
#include <wtf/WeakPtr.h>
36
class RemoteMediaPlayerProxy;
37
class RemoteMediaResourceManager;
39
class RemoteMediaResource : public WebCore::PlatformMediaResource {
41
static Ref<RemoteMediaResource> create(RemoteMediaResourceManager&, RemoteMediaPlayerProxy&, RemoteMediaResourceIdentifier);
42
~RemoteMediaResource();
44
bool ready() const { return m_ready; }
45
void setReady(bool ready) { m_ready = ready; }
47
// PlatformMediaResource
49
bool didPassAccessControlCheck() const final;
51
void responseReceived(const WebCore::ResourceResponse&, bool, CompletionHandler<void(WebCore::PolicyChecker::ShouldContinue)>&&);
52
void redirectReceived(WebCore::ResourceRequest&&, const WebCore::ResourceResponse&, CompletionHandler<void(WebCore::ResourceRequest&&)>&&);
53
void dataSent(uint64_t, uint64_t);
54
void dataReceived(const char*, int64_t);
55
void accessControlCheckFailed(const WebCore::ResourceError&);
56
void loadFailed(const WebCore::ResourceError&);
60
RemoteMediaResource(RemoteMediaResourceManager&, RemoteMediaPlayerProxy&, RemoteMediaResourceIdentifier);
62
RemoteMediaResourceManager& m_remoteMediaResourceManager;
63
WeakPtr<RemoteMediaPlayerProxy> m_remoteMediaPlayerProxy;
64
RemoteMediaResourceIdentifier m_id;
65
bool m_didPassAccessControlCheck { false };
66
bool m_ready { false };