Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / media / base / android / media_drm_bridge_unittest.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
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 "base/basictypes.h"
6 #include "base/logging.h"
7 #include "media/base/android/media_drm_bridge.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 #include "widevine_cdm_version.h"  // In SHARED_INTERMEDIATE_DIR.
11
12 namespace media {
13
14 #define EXPECT_TRUE_IF_AVAILABLE(a)                   \
15   do {                                                \
16     if (!MediaDrmBridge::IsAvailable()) {             \
17       VLOG(0) << "MediaDrm not supported on device."; \
18       EXPECT_FALSE(a);                                \
19     } else {                                          \
20       EXPECT_TRUE(a);                                 \
21     }                                                 \
22   } while (0)
23
24 const char kAudioMp4[] = "audio/mp4";
25 const char kVideoMp4[] = "video/mp4";
26 const char kAudioWebM[] = "audio/webm";
27 const char kVideoWebM[] = "video/webm";
28 const char kInvalidKeySystem[] = "invalid.keysystem";
29 const MediaDrmBridge::SecurityLevel kLNone =
30     MediaDrmBridge::SECURITY_LEVEL_NONE;
31 const MediaDrmBridge::SecurityLevel kL1 = MediaDrmBridge::SECURITY_LEVEL_1;
32 const MediaDrmBridge::SecurityLevel kL3 = MediaDrmBridge::SECURITY_LEVEL_3;
33
34 // Helper functions to avoid typing "MediaDrmBridge::" in tests.
35
36 static bool IsKeySystemSupported(const std::string& key_system) {
37   return MediaDrmBridge::IsKeySystemSupported(key_system);
38 }
39
40 static bool IsKeySystemSupportedWithType(
41     const std::string& key_system,
42     const std::string& container_mime_type) {
43   return MediaDrmBridge::IsKeySystemSupportedWithType(key_system,
44                                                       container_mime_type);
45 }
46
47 static bool IsSecurityLevelSupported(
48     const std::string& key_system,
49     MediaDrmBridge::SecurityLevel security_level) {
50   return MediaDrmBridge::IsSecurityLevelSupported(key_system, security_level);
51 }
52
53 TEST(MediaDrmBridgeTest, IsSecurityLevelSupported_Widevine) {
54   EXPECT_FALSE(IsSecurityLevelSupported(kWidevineKeySystem, kLNone));
55   // We test "L3" fully. But for "L1" we don't check the result as it depends on
56   // whether the test device supports "L1".
57   EXPECT_TRUE_IF_AVAILABLE(IsSecurityLevelSupported(kWidevineKeySystem, kL3));
58   IsSecurityLevelSupported(kWidevineKeySystem, kL1);
59 }
60
61 // Invalid keysytem is NOT supported regardless whether MediaDrm is available.
62 TEST(MediaDrmBridgeTest, IsSecurityLevelSupported_InvalidKeySystem) {
63   EXPECT_FALSE(IsSecurityLevelSupported(kInvalidKeySystem, kLNone));
64   EXPECT_FALSE(IsSecurityLevelSupported(kInvalidKeySystem, kL1));
65   EXPECT_FALSE(IsSecurityLevelSupported(kInvalidKeySystem, kL3));
66 }
67
68 TEST(MediaDrmBridgeTest, IsKeySystemSupported_Widevine) {
69   EXPECT_TRUE_IF_AVAILABLE(IsKeySystemSupported(kWidevineKeySystem));
70
71   // TODO(xhwang): Enable when b/13564917 is fixed.
72   // EXPECT_TRUE_IF_AVAILABLE(
73   //     IsKeySystemSupportedWithType(kWidevineKeySystem, kAudioMp4));
74   EXPECT_TRUE_IF_AVAILABLE(
75       IsKeySystemSupportedWithType(kWidevineKeySystem, kVideoMp4));
76
77   EXPECT_FALSE(IsKeySystemSupportedWithType(kWidevineKeySystem, kAudioWebM));
78   EXPECT_FALSE(IsKeySystemSupportedWithType(kWidevineKeySystem, kVideoWebM));
79   EXPECT_FALSE(IsKeySystemSupportedWithType(kWidevineKeySystem, "unknown"));
80   EXPECT_FALSE(IsKeySystemSupportedWithType(kWidevineKeySystem, "video/avi"));
81   EXPECT_FALSE(IsKeySystemSupportedWithType(kWidevineKeySystem, "audio/mp3"));
82 }
83
84 // Invalid keysytem is NOT supported regardless whether MediaDrm is available.
85 TEST(MediaDrmBridgeTest, IsKeySystemSupported_InvalidKeySystem) {
86   EXPECT_FALSE(IsKeySystemSupported(kInvalidKeySystem));
87   EXPECT_FALSE(IsKeySystemSupportedWithType(kInvalidKeySystem, kAudioMp4));
88   EXPECT_FALSE(IsKeySystemSupportedWithType(kInvalidKeySystem, kVideoMp4));
89   EXPECT_FALSE(IsKeySystemSupportedWithType(kInvalidKeySystem, kAudioWebM));
90   EXPECT_FALSE(IsKeySystemSupportedWithType(kInvalidKeySystem, kVideoWebM));
91   EXPECT_FALSE(IsKeySystemSupportedWithType(kInvalidKeySystem, "unknown"));
92   EXPECT_FALSE(IsKeySystemSupportedWithType(kInvalidKeySystem, "video/avi"));
93   EXPECT_FALSE(IsKeySystemSupportedWithType(kInvalidKeySystem, "audio/mp3"));
94 }
95
96 }  // namespace media