[M120 Migration][MM][CAPI] Fix the logic for media using capi player.
[platform/framework/web/chromium-efl.git] / media / mojo / services / fuchsia_cdm_provisioning_fetcher_impl.h
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.
4
5 #ifndef MEDIA_MOJO_SERVICES_FUCHSIA_CDM_PROVISIONING_FETCHER_IMPL_H_
6 #define MEDIA_MOJO_SERVICES_FUCHSIA_CDM_PROVISIONING_FETCHER_IMPL_H_
7
8 #include <fuchsia/media/drm/cpp/fidl.h>
9 #include <lib/fidl/cpp/binding.h>
10 #include <lib/fidl/cpp/interface_handle.h>
11 #include <memory>
12
13 #include "base/functional/callback_forward.h"
14 #include "media/base/provision_fetcher.h"
15 #include "media/mojo/services/media_mojo_export.h"
16
17 namespace media {
18
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 {
24  public:
25   explicit FuchsiaCdmProvisioningFetcherImpl(
26       CreateFetcherCB create_fetcher_callback);
27   ~FuchsiaCdmProvisioningFetcherImpl() override;
28
29   // Disallow copy and move
30   FuchsiaCdmProvisioningFetcherImpl(const FuchsiaCdmProvisioningFetcherImpl&) =
31       delete;
32   FuchsiaCdmProvisioningFetcherImpl(FuchsiaCdmProvisioningFetcherImpl&&) =
33       delete;
34   FuchsiaCdmProvisioningFetcherImpl& operator=(
35       const FuchsiaCdmProvisioningFetcherImpl&) = delete;
36   FuchsiaCdmProvisioningFetcherImpl& operator=(
37       FuchsiaCdmProvisioningFetcherImpl&&) = delete;
38
39   fidl::InterfaceHandle<fuchsia::media::drm::ProvisioningFetcher> Bind(
40       base::OnceClosure error_callback);
41
42   // fuchsia::media::drm::ProvisioningFetcher implementation.
43   void Fetch(fuchsia::media::drm::ProvisioningRequest request,
44              FetchCallback callback) override;
45
46  protected:
47   void OnRetrieveComplete(FetchCallback callback,
48                           bool success,
49                           const std::string& response);
50   void OnError(zx_status_t status);
51
52  private:
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;
58 };
59
60 }  // namespace media
61
62 #endif  // MEDIA_MOJO_SERVICES_FUCHSIA_CDM_PROVISIONING_FETCHER_IMPL_H_