blob: e7f795c4d550450e971ada71b745f0f7945a5418 [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_browser_test.h"
#include <string>
#include "chrome/browser/ash/login/users/fake_chrome_user_manager.h"
#include "components/user_manager/user_manager.h"
#include "extensions/test/result_catcher.h"
#include "extensions/test/test_extension_dir.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromeos {
namespace {
constexpr char kManifest[] = R"(
{
// Sample telemetry extension public key. Currently, this is the only
// allowed extension to declare "chromeos_system_extension" key.
// See //chrome/common/chromeos/extensions/api/_manifest_features.json
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt2CwI94nqAQzLTBHSIwtkMlkoRyhu27rmkDsBneMprscOzl4524Y0bEA+0RSjNZB+kZgP6M8QAZQJHCpAzULXa49MooDDIdzzmqQswswguAALm2FS7XP2N0p2UYQneQce4Wehq/C5Yr65mxasAgjXgDWlYBwV3mgiISDPXI/5WG94TM2Z3PDQePJ91msDAjN08jdBme3hAN976yH3Q44M7cP1r+OWRkZGwMA6TSQjeESEuBbkimaLgPIyzlJp2k6jwuorG5ujmbAGFiTQoSDFBFCjwPEtywUMLKcZjH4fD76pcIQIdkuuzRQCVyuImsGzm1cmGosJ/Z4iyb80c1ytwIDAQAB",
"name": "Test Telemetry Extension",
"version": "1",
"manifest_version": 3,
"chromeos_system_extension": {},
"background": {
"service_worker": "sw.js"
},
"permissions": [ "os.telemetry" ],
"externally_connectable": {
"ids": [
"*"
]
}
}
)";
} // namespace
BaseTelemetryExtensionBrowserTest::BaseTelemetryExtensionBrowserTest() =
default;
BaseTelemetryExtensionBrowserTest::~BaseTelemetryExtensionBrowserTest() =
default;
void BaseTelemetryExtensionBrowserTest::SetUpOnMainThread() {
extensions::ExtensionBrowserTest::SetUpOnMainThread();
// Make sure that current user is not a device owner.
auto* const user_manager =
static_cast<FakeChromeUserManager*>(user_manager::UserManager::Get());
const AccountId regular_user = AccountId::FromUserEmail("regular@gmail.com");
user_manager->AddUser(regular_user);
user_manager->SetOwnerId(regular_user);
}
const extensions::Extension*
BaseTelemetryExtensionBrowserTest::LoadExtensionWithManifestAndServiceWorker(
extensions::TestExtensionDir& test_dir,
const std::string& manifest_content,
const std::string& service_worker_content) {
test_dir.WriteManifest(manifest_content);
test_dir.WriteFile(FILE_PATH_LITERAL("sw.js"), service_worker_content);
return LoadExtension(test_dir.UnpackedPath());
}
const extensions::Extension*
BaseTelemetryExtensionBrowserTest::LoadExtensionWithServiceWorker(
extensions::TestExtensionDir& test_dir,
const std::string& service_worker_content) {
return LoadExtensionWithManifestAndServiceWorker(test_dir, kManifest,
service_worker_content);
}
void BaseTelemetryExtensionBrowserTest::CreateExtensionAndRunServiceWorker(
const std::string& service_worker_content) {
// Must be outlive the extension.
extensions::TestExtensionDir test_dir;
// Must be initialised before loading extension.
extensions::ResultCatcher result_catcher;
const auto* extension = LoadExtensionWithManifestAndServiceWorker(
test_dir, kManifest, service_worker_content);
ASSERT_TRUE(extension);
EXPECT_TRUE(result_catcher.GetNextResult()) << result_catcher.message();
}
BaseTelemetryExtensionApiAllowedBrowserTest::
BaseTelemetryExtensionApiAllowedBrowserTest() = default;
BaseTelemetryExtensionApiAllowedBrowserTest::
~BaseTelemetryExtensionApiAllowedBrowserTest() = default;
void BaseTelemetryExtensionApiAllowedBrowserTest::SetUpOnMainThread() {
BaseTelemetryExtensionBrowserTest::SetUpOnMainThread();
// Make sure that current user is a device owner.
auto* const user_manager =
static_cast<FakeChromeUserManager*>(user_manager::UserManager::Get());
user_manager->SetOwnerId(
user_manager::UserManager::Get()->GetActiveUser()->GetAccountId());
}
} // namespace chromeos