1 // Copyright 2020 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef MEDIA_MOJO_SERVICES_FUCHSIA_CDM_PROVISIONING_FETCHER_IMPL_H_
6 #define MEDIA_MOJO_SERVICES_FUCHSIA_CDM_PROVISIONING_FETCHER_IMPL_H_
8 #include <fuchsia/media/drm/cpp/fidl.h>
9 #include <lib/fidl/cpp/binding.h>
10 #include <lib/fidl/cpp/interface_handle.h>
13 #include "base/functional/callback_forward.h"
14 #include "media/base/provision_fetcher.h"
15 #include "media/mojo/services/media_mojo_export.h"
19 // Server end implementation of the fuchsia.media.drm.ProvisioningFetcher
20 // protocol. The client end is provided to the fuchsia.media.drm.KeySystem so
21 // that the KeySystem can invoke provisioning retrieval when necessary.
22 class MEDIA_MOJO_EXPORT FuchsiaCdmProvisioningFetcherImpl
23 : public fuchsia::media::drm::ProvisioningFetcher {
25 explicit FuchsiaCdmProvisioningFetcherImpl(
26 CreateFetcherCB create_fetcher_callback);
27 ~FuchsiaCdmProvisioningFetcherImpl() override;
29 // Disallow copy and move
30 FuchsiaCdmProvisioningFetcherImpl(const FuchsiaCdmProvisioningFetcherImpl&) =
32 FuchsiaCdmProvisioningFetcherImpl(FuchsiaCdmProvisioningFetcherImpl&&) =
34 FuchsiaCdmProvisioningFetcherImpl& operator=(
35 const FuchsiaCdmProvisioningFetcherImpl&) = delete;
36 FuchsiaCdmProvisioningFetcherImpl& operator=(
37 FuchsiaCdmProvisioningFetcherImpl&&) = delete;
39 fidl::InterfaceHandle<fuchsia::media::drm::ProvisioningFetcher> Bind(
40 base::OnceClosure error_callback);
42 // fuchsia::media::drm::ProvisioningFetcher implementation.
43 void Fetch(fuchsia::media::drm::ProvisioningRequest request,
44 FetchCallback callback) override;
47 void OnRetrieveComplete(FetchCallback callback,
49 const std::string& response);
50 void OnError(zx_status_t status);
53 CreateFetcherCB create_fetcher_callback_;
54 fidl::Binding<fuchsia::media::drm::ProvisioningFetcher> binding_;
55 base::OnceClosure error_callback_;
56 std::unique_ptr<media::ProvisionFetcher> fetcher_;
57 bool retrieve_in_progress_ = false;
62 #endif // MEDIA_MOJO_SERVICES_FUCHSIA_CDM_PROVISIONING_FETCHER_IMPL_H_