Chromium Code Reviews| Index: chrome/browser/load_library_perf_test.cc |
| diff --git a/chrome/browser/load_library_perf_test.cc b/chrome/browser/load_library_perf_test.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..25f94bf9e009054e2eb421ce2d6ac3e872313eb5 |
| --- /dev/null |
| +++ b/chrome/browser/load_library_perf_test.cc |
| @@ -0,0 +1,62 @@ |
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
|
Lei Zhang
2014/02/12 20:25:06
nit: no (c)
shadi1
2014/02/12 20:49:24
Done.
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/files/file_path.h" |
| +#include "base/path_service.h" |
| +#include "base/scoped_native_library.h" |
| +#include "base/strings/utf_string_conversions.h" |
| +#include "base/time/time.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| +#include "testing/perf/perf_test.h" |
| +#include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. |
| + |
| + |
| +void MeasureTimeToLoadNativeLibrary(const base::FilePath& library_name) { |
| + base::FilePath output_dir; |
| + EXPECT_TRUE(PathService::Get(base::DIR_MODULE, &output_dir)); |
|
Lei Zhang
2014/02/12 20:25:06
I'd ASSERT_TRUE() here so you don't accidentally l
shadi1
2014/02/12 20:49:24
Done.
|
| + base::FilePath library_path = output_dir.Append(library_name); |
|
Lei Zhang
2014/02/12 20:25:06
Just use AppendASCII() so MeasureTimeToLoadNativeL
shadi1
2014/02/12 20:49:24
I wanted |library_name| to be a FilePath in case t
Lei Zhang
2014/02/12 21:03:56
Ok, that's fine. I thought it's just a simple name
|
| + std::string error; |
| + base::TimeTicks start = base::TimeTicks::HighResNow(); |
| + base::NativeLibrary native_library = |
|
Lei Zhang
2014/02/12 20:25:06
check this isn't null
shadi1
2014/02/12 20:49:24
This was done in l.25 EXPECT_TRUE(native_library)
|
| + base::LoadNativeLibrary(library_path, &error); |
| + double delta = (base::TimeTicks::HighResNow() - start).InMillisecondsF(); |
| + base::UnloadNativeLibrary(native_library); |
| + EXPECT_TRUE(native_library) << "Error loading library:\n" << error; |
| + perf_test::PrintResult("time_to_load_library", |
| + "", |
| + library_name.value(), |
| + delta, |
| + "ms", |
| + true); |
| +} |
| + |
| +// Use the base name of the library to dynamically get the platform specific |
| +// name. See base::GetNativeLibraryName() for details. |
| +void MeasureTimeToLoadNativeLibraryByBaseName( |
| + const std::string& base_library_name) { |
| + MeasureTimeToLoadNativeLibrary(base::FilePath::FromUTF16Unsafe( |
| + base::GetNativeLibraryName(base::ASCIIToUTF16(base_library_name)))); |
| +} |
| + |
| +#if defined(ENABLE_PEPPER_CDMS) |
| +#if defined(WIDEVINE_CDM_AVAILABLE) |
| +TEST(LoadCDMPerfTest, Widevine) { |
| + MeasureTimeToLoadNativeLibrary( |
| + base::FilePath(FILE_PATH_LITERAL(kWidevineCdmFileName))); |
| +} |
| + |
| +TEST(LoadCDMPerfTest, WidevineAdapter) { |
| + MeasureTimeToLoadNativeLibrary( |
| + base::FilePath(FILE_PATH_LITERAL(kWidevineCdmAdapterFileName))); |
| +} |
| +#endif // defined(WIDEVINE_CDM_AVAILABLE) |
| + |
| +TEST(LoadCDMPerfTest, ExternalClearKey) { |
| + MeasureTimeToLoadNativeLibraryByBaseName("clearkeycdm"); |
| +} |
| + |
| +TEST(LoadCDMPerfTest, ExternalClearKeyAdapter) { |
| + MeasureTimeToLoadNativeLibraryByBaseName("clearkeycdmadapter"); |
| +} |
| +#endif // defined(ENABLE_PEPPER_CDMS) |