[M120 Migration][MM][CAPI] Fix the logic for media using capi player.
[platform/framework/web/chromium-efl.git] / media / mojo / services / cdm_service_broker_unittest.cc
1 // Copyright 2021 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 #include "media/mojo/services/cdm_service_broker.h"
6
7 #include <memory>
8
9 #include "base/files/file_path.h"
10 #include "base/functional/bind.h"
11 #include "base/memory/raw_ptr.h"
12 #include "base/test/task_environment.h"
13 #include "build/build_config.h"
14 #include "media/base/cdm_factory.h"
15 #include "media/media_buildflags.h"
16 #include "mojo/public/cpp/bindings/remote.h"
17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h"
19
20 namespace media {
21
22 namespace {
23
24 class MockCdmServiceClient : public media::CdmService::Client {
25  public:
26   MockCdmServiceClient() = default;
27   ~MockCdmServiceClient() override = default;
28
29   // media::CdmService::Client implementation.
30   MOCK_METHOD0(EnsureSandboxed, void());
31   std::unique_ptr<media::CdmFactory> CreateCdmFactory(
32       mojom::FrameInterfaceFactory* frame_interfaces) override {
33     return nullptr;
34   }
35 #if BUILDFLAG(ENABLE_CDM_HOST_VERIFICATION)
36   void AddCdmHostFilePaths(std::vector<media::CdmHostFilePath>*) override {}
37 #endif  // BUILDFLAG(ENABLE_CDM_HOST_VERIFICATION)
38 };
39
40 class CdmServiceBrokerTest : public testing::Test {
41  public:
42   CdmServiceBrokerTest() = default;
43   ~CdmServiceBrokerTest() override = default;
44
45   void Initialize() {
46     auto mock_cdm_service_client = std::make_unique<MockCdmServiceClient>();
47     mock_cdm_service_client_ = mock_cdm_service_client.get();
48
49     broker_ = std::make_unique<CdmServiceBroker>(
50         std::move(mock_cdm_service_client),
51         remote_.BindNewPipeAndPassReceiver());
52   }
53
54   MockCdmServiceClient* mock_cdm_service_client() {
55     return mock_cdm_service_client_;
56   }
57
58   base::test::TaskEnvironment task_environment_;
59   raw_ptr<MockCdmServiceClient, AcrossTasksDanglingUntriaged>
60       mock_cdm_service_client_ = nullptr;
61   mojo::Remote<mojom::CdmServiceBroker> remote_;
62   std::unique_ptr<CdmServiceBroker> broker_;
63 };
64
65 }  // namespace
66
67 TEST_F(CdmServiceBrokerTest, GetService) {
68   Initialize();
69
70   // Even with a dummy path where the CDM cannot be loaded, EnsureSandboxed()
71   // should still be called to ensure the process is sandboxed.
72   EXPECT_CALL(*mock_cdm_service_client(), EnsureSandboxed());
73
74   mojo::Remote<mojom::CdmService> service_remote_;
75
76   base::FilePath cdm_path(FILE_PATH_LITERAL("dummy path"));
77 #if BUILDFLAG(IS_MAC)
78   // Token provider will not be used since the path is a dummy path.
79   remote_->GetService(cdm_path, mojo::NullRemote(),
80                       service_remote_.BindNewPipeAndPassReceiver());
81 #else
82   remote_->GetService(cdm_path, service_remote_.BindNewPipeAndPassReceiver());
83 #endif
84
85   remote_.FlushForTesting();
86 }
87
88 }  // namespace media