This change corrects some problems with the unit tests and make files for the libcleardrmengine. Change-Id: Iafd8aae2ecae3885ad4bbfdf9257bce6f62f98dc
125 lines
4.1 KiB
C++
125 lines
4.1 KiB
C++
/*
|
|
* Copyright 2012 Google Inc. All Rights Reserved.
|
|
*/
|
|
|
|
#include "utils/UniquePtr.h"
|
|
#include "WVDrmPluginFactory.h"
|
|
#include "media/drm/DrmClientAPI.h"
|
|
#include "OEMCryptoDASH.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
using namespace wvclearkey;
|
|
|
|
const uint8_t kWidevineUUID[16] = {
|
|
0xED,0xEF,0x8B,0xA9,0x79,0xD6,0x4A,0xCE,
|
|
0xA3,0xC8,0x27,0xDC,0xD5,0x1D,0x21,0xED
|
|
};
|
|
|
|
const uint8_t kOldNetflixWidevineUUID[16] = {
|
|
0x29,0x70,0x1F,0xE4,0x3C,0xC7,0x4A,0x34,
|
|
0x8C,0x5B,0xAE,0x90,0xC7,0x43,0x9A,0x47
|
|
};
|
|
|
|
const uint8_t kUnknownUUID[16] = {
|
|
0x6A,0x7F,0xAA,0xB0,0x83,0xC7,0x9E,0x20,
|
|
0x08,0xBC,0xEF,0x32,0x34,0x1A,0x9A,0x26
|
|
};
|
|
|
|
TEST(WVDrmPluginFactoryTest, SupportsSupportedCryptoSchemes) {
|
|
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
|
|
|
|
EXPECT_TRUE(factory->isCryptoSchemeSupported(kWidevineUUID)) <<
|
|
"WVDrmPluginFactory does not support Widevine's UUID";
|
|
|
|
EXPECT_TRUE(factory->isCryptoSchemeSupported(kOldNetflixWidevineUUID)) <<
|
|
"WVDrmPluginFactory does not support the old Netflix Widevine UUID";
|
|
}
|
|
|
|
TEST(WVDrmPluginFactoryTest, DoesNotSupportUnsupportedCryptoSchemes) {
|
|
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
|
|
|
|
EXPECT_FALSE(factory->isCryptoSchemeSupported(kUnknownUUID)) <<
|
|
"WVDrmPluginFactory incorrectly claims to support an unknown UUID";
|
|
}
|
|
|
|
TEST(WVDrmPluginFactoryTest, CreatesCryptoPlugins) {
|
|
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
|
|
android::CryptoPlugin *plugin;
|
|
|
|
status_t result = factory->createCryptoPlugin(kWidevineUUID, NULL, 0, &plugin);
|
|
|
|
EXPECT_EQ(android::OK, result) <<
|
|
"WVDrmPluginFactory returned error from createCryptoPlugin()";
|
|
EXPECT_NE((android::CryptoPlugin *)NULL, plugin) <<
|
|
"WVDrmPluginFactory's createCryptoPlugin() did not create a plugin";
|
|
|
|
delete plugin;
|
|
}
|
|
|
|
TEST(WVDrmPluginFactoryTest, DoesNotCreateDrmClientPlugins) {
|
|
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
|
|
android::DrmClientPlugin *plugin;
|
|
|
|
status_t result = factory->createDrmClientPlugin(kWidevineUUID, NULL, 0, &plugin);
|
|
|
|
EXPECT_EQ(-EPERM, result) <<
|
|
"WVDrmPluginFactory did not indicate that createDrmClientPlugin() is not implemented";
|
|
EXPECT_EQ((android::DrmClientPlugin *)NULL, plugin) <<
|
|
"WVDrmPluginFactory's createDrmClientPlugin() created a plugin (?!?)";
|
|
|
|
delete plugin;
|
|
}
|
|
|
|
TEST(WVDrmPluginFactoryTest, RefusesToCreateWithUnsupportedCryptoScheme) {
|
|
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
|
|
android::CryptoPlugin *cryptoPlugin;
|
|
android::DrmClientPlugin *drmClientPlugin;
|
|
status_t result;
|
|
|
|
result = factory->createCryptoPlugin(kUnknownUUID, NULL, 0, &cryptoPlugin);
|
|
EXPECT_EQ(android::BAD_VALUE, result) <<
|
|
"WVDrmPluginFactory did not reject unknown UUID when creating a CryptoPlugin";
|
|
EXPECT_EQ((android::CryptoPlugin *)NULL, cryptoPlugin) <<
|
|
"WVDrmPluginFactory created a CryptoPlugin despite having an unknown UUID";
|
|
|
|
result = factory->createDrmClientPlugin(kUnknownUUID, NULL, 0, &drmClientPlugin);
|
|
EXPECT_EQ(android::BAD_VALUE, result) <<
|
|
"WVDrmPluginFactory did not reject unknown UUID when creating a DrmClientPlugin";
|
|
EXPECT_EQ((android::DrmClientPlugin *)NULL, drmClientPlugin) <<
|
|
"WVDrmPluginFactory created a DrmClientPlugin despite having an unknown UUID";
|
|
|
|
delete cryptoPlugin;
|
|
delete drmClientPlugin;
|
|
}
|
|
|
|
bool oemCryptoInitialized;
|
|
bool oemCryptoTerminated;
|
|
|
|
extern "C" {
|
|
OEMCryptoResult OEMCrypto_Initialize(void) {
|
|
oemCryptoInitialized = true;
|
|
return OEMCrypto_SUCCESS;
|
|
}
|
|
|
|
OEMCryptoResult OEMCrypto_Terminate(void) {
|
|
oemCryptoTerminated = true;
|
|
return OEMCrypto_SUCCESS;
|
|
}
|
|
|
|
}
|
|
|
|
TEST(WVDrmPluginFactoryTest, CallsOemCrypto) {
|
|
oemCryptoInitialized = false;
|
|
oemCryptoTerminated = false;
|
|
|
|
WVDrmPluginFactory *factory = new WVDrmPluginFactory();
|
|
|
|
EXPECT_EQ(true, oemCryptoInitialized) <<
|
|
"WVDrmPluginFactory did not call OEMCrypto_Initialize()";
|
|
|
|
delete factory;
|
|
|
|
EXPECT_EQ(true, oemCryptoTerminated) <<
|
|
"WVDrmPluginFactory did not call OEMCrypto_Terminate()";
|
|
}
|