[M120 Migration][MM][CAPI] Fix the logic for media using capi player.
[platform/framework/web/chromium-efl.git] / media / mojo / services / mojo_media_drm_storage.h
1 // Copyright 2017 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_MOJO_MEDIA_DRM_STORAGE_H_
6 #define MEDIA_MOJO_SERVICES_MOJO_MEDIA_DRM_STORAGE_H_
7
8 #include <string>
9
10 #include "base/compiler_specific.h"
11 #include "base/memory/weak_ptr.h"
12 #include "media/base/media_drm_storage.h"
13 #include "media/mojo/mojom/media_drm_storage.mojom.h"
14 #include "media/mojo/services/media_mojo_export.h"
15 #include "mojo/public/cpp/bindings/pending_remote.h"
16 #include "mojo/public/cpp/bindings/remote.h"
17
18 namespace media {
19
20 // A MediaDrmStorage that proxies to a Remote<mojom::MediaDrmStorage>.
21 class MEDIA_MOJO_EXPORT MojoMediaDrmStorage final : public MediaDrmStorage {
22  public:
23   explicit MojoMediaDrmStorage(
24       mojo::PendingRemote<mojom::MediaDrmStorage> media_drm_storage);
25
26   MojoMediaDrmStorage(const MojoMediaDrmStorage&) = delete;
27   MojoMediaDrmStorage& operator=(const MojoMediaDrmStorage&) = delete;
28
29   ~MojoMediaDrmStorage() override;
30
31   // MediaDrmStorage implementation:
32   void Initialize(InitCB init_cb) override;
33   void OnProvisioned(ResultCB result_cb) override;
34   void SavePersistentSession(const std::string& session_id,
35                              const SessionData& session_data,
36                              ResultCB result_cb) override;
37   void LoadPersistentSession(
38       const std::string& session_id,
39       LoadPersistentSessionCB load_persistent_session_cb) override;
40   void RemovePersistentSession(const std::string& session_id,
41                                ResultCB result_cb) override;
42
43  private:
44   void OnPersistentSessionLoaded(
45       LoadPersistentSessionCB load_persistent_session_cb,
46       mojom::SessionDataPtr session_data);
47
48   mojo::Remote<mojom::MediaDrmStorage> media_drm_storage_;
49   base::WeakPtrFactory<MojoMediaDrmStorage> weak_factory_{this};
50 };
51
52 }  // namespace media
53
54 #endif  // MEDIA_MOJO_SERVICES_MOJO_MEDIA_DRM_STORAGE_H_