blob: e8ce92fb65eb20a040b96f7be8fb20b6be8082f6 [file] [log] [blame]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/extensions/extension_apitest.h"
#include "content/public/test/browser_test.h"
#include "extensions/browser/api/system_cpu/cpu_info_provider.h"
namespace extensions {
using api::system_cpu::CpuInfo;
class MockCpuInfoProviderImpl : public CpuInfoProvider {
public:
MockCpuInfoProviderImpl() = default;
MockCpuInfoProviderImpl(const MockCpuInfoProviderImpl&) = delete;
MockCpuInfoProviderImpl& operator=(const MockCpuInfoProviderImpl&) = delete;
bool QueryInfo() override {
info_.num_of_processors = 4;
info_.arch_name = "x86";
info_.model_name = "unknown";
info_.features.clear();
info_.features.push_back("mmx");
info_.features.push_back("avx");
info_.processors.clear();
info_.processors.emplace_back(api::system_cpu::ProcessorInfo());
info_.processors[0].usage.kernel = 1;
info_.processors[0].usage.user = 2;
info_.processors[0].usage.idle = 3;
info_.processors[0].usage.total = 6;
// The fractional part of these values should be exactly represented as
// floating points to avoid rounding errors.
info_.temperatures = {30.125, 40.0625};
return true;
}
private:
~MockCpuInfoProviderImpl() override = default;
};
using ContextType = ExtensionBrowserTest::ContextType;
class SystemCpuApiTest : public ExtensionApiTest,
public testing::WithParamInterface<ContextType> {
public:
SystemCpuApiTest() : ExtensionApiTest(GetParam()) {}
~SystemCpuApiTest() override = default;
SystemCpuApiTest(const SystemCpuApiTest&) = delete;
SystemCpuApiTest& operator=(const SystemCpuApiTest&) = delete;
};
INSTANTIATE_TEST_SUITE_P(EventPage,
SystemCpuApiTest,
::testing::Values(ContextType::kEventPage));
INSTANTIATE_TEST_SUITE_P(ServiceWorker,
SystemCpuApiTest,
::testing::Values(ContextType::kServiceWorker));
IN_PROC_BROWSER_TEST_P(SystemCpuApiTest, Cpu) {
scoped_refptr<CpuInfoProvider> provider = new MockCpuInfoProviderImpl;
// The provider is owned by the single CpuInfoProvider instance.
CpuInfoProvider::InitializeForTesting(provider);
ASSERT_TRUE(RunExtensionTest("system_cpu")) << message_;
}
} // namespace extensions