blob: 92f6a871ff4c783e7afd0449211a12cc9ff0ef37 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "media/cdm/cdm_paths.h"
#include <string>
#include "base/files/file_path.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "media/media_buildflags.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace media {
namespace {
// Name of the component platform.
const char kComponentPlatform[] =
#if BUILDFLAG(IS_MAC)
"mac";
#elif BUILDFLAG(IS_WIN)
"win";
#elif BUILDFLAG(IS_CHROMEOS)
"cros";
#elif BUILDFLAG(IS_LINUX)
"linux";
#elif BUILDFLAG(IS_FUCHSIA)
"fuchsia";
#else
#error unsupported platform
#endif
// Name of the component architecture.
const char kComponentArch[] =
#if defined(ARCH_CPU_X86)
"x86";
#elif defined(ARCH_CPU_X86_64)
"x64";
#elif defined(ARCH_CPU_ARMEL)
"arm";
#elif defined(ARCH_CPU_ARM64)
"arm64";
#else
#error unsupported architecture
#endif
} // namespace
TEST(CdmPathsTest, FlagSpecified) {
EXPECT_FALSE(std::string(BUILDFLAG(CDM_PLATFORM_SPECIFIC_PATH)).empty());
}
TEST(CdmPathsTest, Prefix) {
const char kPrefix[] = "prefix";
auto path = GetPlatformSpecificDirectory(kPrefix);
EXPECT_TRUE(base::StartsWith(path.MaybeAsASCII(), kPrefix,
base::CompareCase::SENSITIVE));
}
TEST(CdmPathsTest, Expected) {
// The same prefix that will be passed to the function under test followed by
// the special path used by Chrome's component updater.
std::string expected_path = base::StringPrintf(
"SomeCdm/_platform_specific/%s_%s", kComponentPlatform, kComponentArch);
#if BUILDFLAG(IS_WIN)
EXPECT_TRUE(base::ReplaceChars(expected_path, "/", "\\", &expected_path));
#endif
EXPECT_EQ(base::FilePath::FromUTF8Unsafe(expected_path),
GetPlatformSpecificDirectory("SomeCdm"));
}
} // namespace media