| Index: chrome/browser/extensions/extension_install_checker_unittest.cc
|
| diff --git a/chrome/browser/extensions/extension_install_checker_unittest.cc b/chrome/browser/extensions/extension_install_checker_unittest.cc
|
| deleted file mode 100644
|
| index 5c4238a457e30df10ca46118b0113ce039fbcd5d..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/extension_install_checker_unittest.cc
|
| +++ /dev/null
|
| @@ -1,309 +0,0 @@
|
| -// Copyright 2014 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/extensions/extension_install_checker.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/location.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "extensions/browser/preload_check_test_util.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace extensions {
|
| -
|
| -namespace {
|
| -
|
| -const PreloadCheck::Error kBlacklistError = PreloadCheck::BLACKLISTED_ID;
|
| -const char kDummyRequirementsError[] = "Requirements error";
|
| -const char kDummyPolicyError[] = "Cannot install extension";
|
| -
|
| -} // namespace
|
| -
|
| -// Stubs most of the checks since we are interested in validating the logic in
|
| -// the install checker. This class implements a synchronous version of all
|
| -// checks.
|
| -class ExtensionInstallCheckerForTest : public ExtensionInstallChecker {
|
| - public:
|
| - ExtensionInstallCheckerForTest(int enabled_checks, bool fail_fast)
|
| - : ExtensionInstallChecker(nullptr, nullptr, enabled_checks, fail_fast) {}
|
| -
|
| - ~ExtensionInstallCheckerForTest() override {}
|
| -
|
| - bool is_async() const { return is_async_; }
|
| - void set_is_async(bool is_async) { is_async_ = is_async; }
|
| -
|
| - private:
|
| - // Whether to run the requirements and blacklist checks asynchronously, as
|
| - // they often do in ExtensionInstallChecker.
|
| - bool is_async_ = false;
|
| -};
|
| -
|
| -class CheckObserver {
|
| - public:
|
| - CheckObserver() : result_(0), call_count_(0) {}
|
| -
|
| - int result() const { return result_; }
|
| - int call_count() const { return call_count_; }
|
| -
|
| - void OnChecksComplete(int checks_failed) {
|
| - result_ = checks_failed;
|
| - ++call_count_;
|
| - }
|
| -
|
| - void Wait() {
|
| - if (call_count_)
|
| - return;
|
| -
|
| - base::RunLoop().RunUntilIdle();
|
| - }
|
| -
|
| - private:
|
| - int result_;
|
| - int call_count_;
|
| -};
|
| -
|
| -class ExtensionInstallCheckerTest : public testing::Test {
|
| - public:
|
| - ExtensionInstallCheckerTest() {}
|
| - ~ExtensionInstallCheckerTest() override {}
|
| -
|
| - void SetBlacklistError(ExtensionInstallCheckerForTest* checker,
|
| - PreloadCheck::Error error) {
|
| - auto blacklist_check = base::MakeUnique<PreloadCheckStub>();
|
| - blacklist_check->set_is_async(checker->is_async());
|
| - if (error != PreloadCheck::NONE)
|
| - blacklist_check->AddError(error);
|
| - checker->SetBlacklistCheckForTesting(std::move(blacklist_check));
|
| - }
|
| -
|
| - void SetPolicyError(ExtensionInstallCheckerForTest* checker,
|
| - PreloadCheck::Error error,
|
| - std::string message) {
|
| - // The policy check always runs synchronously.
|
| - auto policy_check = base::MakeUnique<PreloadCheckStub>();
|
| - if (error != PreloadCheck::NONE) {
|
| - policy_check->AddError(error);
|
| - policy_check->set_error_message(base::UTF8ToUTF16(message));
|
| - }
|
| - checker->SetPolicyCheckForTesting(std::move(policy_check));
|
| - }
|
| -
|
| - void SetRequirementsError(ExtensionInstallCheckerForTest* checker,
|
| - PreloadCheck::Error error,
|
| - const std::string& message) {
|
| - auto requirements_check = base::MakeUnique<PreloadCheckStub>();
|
| - requirements_check->set_is_async(checker->is_async());
|
| - if (error != PreloadCheck::NONE) {
|
| - requirements_check->AddError(error);
|
| - requirements_check->set_error_message(base::UTF8ToUTF16(message));
|
| - }
|
| - checker->SetRequirementsCheckForTesting(std::move(requirements_check));
|
| - }
|
| -
|
| - protected:
|
| - void SetAllPass(ExtensionInstallCheckerForTest* checker) {
|
| - SetBlacklistError(checker, PreloadCheck::NONE);
|
| - SetPolicyError(checker, PreloadCheck::NONE, "");
|
| - SetRequirementsError(checker, PreloadCheck::NONE, "");
|
| - }
|
| -
|
| - void SetAllErrors(ExtensionInstallCheckerForTest* checker) {
|
| - SetBlacklistError(checker, kBlacklistError);
|
| - SetPolicyError(checker, PreloadCheck::DISALLOWED_BY_POLICY,
|
| - kDummyPolicyError);
|
| - SetRequirementsError(checker, PreloadCheck::NPAPI_NOT_SUPPORTED,
|
| - kDummyRequirementsError);
|
| - }
|
| -
|
| - void ExpectRequirementsPass(const ExtensionInstallCheckerForTest& checker) {
|
| - EXPECT_EQ(base::string16(), checker.requirements_error_message());
|
| - }
|
| -
|
| - void ExpectRequirementsError(const char* expected_error,
|
| - const ExtensionInstallCheckerForTest& checker) {
|
| - EXPECT_EQ(base::UTF8ToUTF16(expected_error),
|
| - checker.requirements_error_message());
|
| - }
|
| -
|
| - void ExpectRequirementsError(const ExtensionInstallCheckerForTest& checker) {
|
| - ExpectRequirementsError(kDummyRequirementsError, checker);
|
| - }
|
| -
|
| - void ExpectBlacklistPass(const ExtensionInstallCheckerForTest& checker) {
|
| - EXPECT_EQ(PreloadCheck::NONE, checker.blacklist_error());
|
| - }
|
| -
|
| - void ExpectBlacklistError(const ExtensionInstallCheckerForTest& checker) {
|
| - EXPECT_EQ(kBlacklistError, checker.blacklist_error());
|
| - }
|
| -
|
| - void ExpectPolicyPass(const ExtensionInstallCheckerForTest& checker) {
|
| - EXPECT_TRUE(checker.policy_error().empty());
|
| - }
|
| -
|
| - void ExpectPolicyError(const char* expected_error,
|
| - const ExtensionInstallCheckerForTest& checker) {
|
| - EXPECT_FALSE(checker.policy_error().empty());
|
| - EXPECT_EQ(base::UTF8ToUTF16(expected_error), checker.policy_error());
|
| - }
|
| -
|
| - void ExpectPolicyError(const ExtensionInstallCheckerForTest& checker) {
|
| - ExpectPolicyError(kDummyPolicyError, checker);
|
| - }
|
| -
|
| - void RunChecker(ExtensionInstallCheckerForTest* checker,
|
| - int expected_result) {
|
| - CheckObserver observer;
|
| - checker->Start(base::Bind(&CheckObserver::OnChecksComplete,
|
| - base::Unretained(&observer)));
|
| - observer.Wait();
|
| -
|
| - EXPECT_FALSE(checker->is_running());
|
| - EXPECT_EQ(expected_result, observer.result());
|
| - EXPECT_EQ(1, observer.call_count());
|
| - }
|
| -
|
| - void DoRunAllChecksPass(ExtensionInstallCheckerForTest* checker) {
|
| - SetAllPass(checker);
|
| - RunChecker(checker,
|
| - 0);
|
| -
|
| - ExpectRequirementsPass(*checker);
|
| - ExpectPolicyPass(*checker);
|
| - ExpectBlacklistPass(*checker);
|
| - }
|
| -
|
| - void DoRunAllChecksFail(ExtensionInstallCheckerForTest* checker) {
|
| - SetAllErrors(checker);
|
| - RunChecker(checker,
|
| - ExtensionInstallChecker::CHECK_ALL);
|
| -
|
| - ExpectRequirementsError(*checker);
|
| - ExpectPolicyError(*checker);
|
| - ExpectBlacklistError(*checker);
|
| - }
|
| -
|
| - void DoRunSubsetOfChecks(int checks_to_run) {
|
| - ExtensionInstallCheckerForTest sync_checker(checks_to_run,
|
| - /*fail_fast=*/false);
|
| - ExtensionInstallCheckerForTest async_checker(checks_to_run,
|
| - /*fail_fast=*/false);
|
| - async_checker.set_is_async(true);
|
| -
|
| - for (auto* checker : {&sync_checker, &async_checker}) {
|
| - SetAllErrors(checker);
|
| - RunChecker(checker, checks_to_run);
|
| -
|
| - if (checks_to_run & ExtensionInstallChecker::CHECK_REQUIREMENTS)
|
| - ExpectRequirementsError(*checker);
|
| - else
|
| - ExpectRequirementsPass(*checker);
|
| -
|
| - if (checks_to_run & ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY)
|
| - ExpectPolicyError(*checker);
|
| - else
|
| - ExpectPolicyPass(*checker);
|
| -
|
| - if (checks_to_run & ExtensionInstallChecker::CHECK_BLACKLIST)
|
| - ExpectBlacklistError(*checker);
|
| - else
|
| - ExpectBlacklistPass(*checker);
|
| - }
|
| - }
|
| -
|
| - private:
|
| - // A message loop is required for the asynchronous tests.
|
| - base::MessageLoop message_loop;
|
| -};
|
| -
|
| -// Test the case where all tests pass.
|
| -TEST_F(ExtensionInstallCheckerTest, AllSucceeded) {
|
| - ExtensionInstallCheckerForTest sync_checker(
|
| - ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false);
|
| - DoRunAllChecksPass(&sync_checker);
|
| -
|
| - ExtensionInstallCheckerForTest async_checker(
|
| - ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false);
|
| - async_checker.set_is_async(true);
|
| - DoRunAllChecksPass(&async_checker);
|
| -}
|
| -
|
| -// Test the case where all tests fail.
|
| -TEST_F(ExtensionInstallCheckerTest, AllFailed) {
|
| - ExtensionInstallCheckerForTest sync_checker(
|
| - ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false);
|
| - DoRunAllChecksFail(&sync_checker);
|
| -
|
| - ExtensionInstallCheckerForTest async_checker(
|
| - ExtensionInstallChecker::CHECK_ALL, /*fail_fast=*/false);
|
| - async_checker.set_is_async(true);
|
| - DoRunAllChecksFail(&async_checker);
|
| -}
|
| -
|
| -// Test running only a subset of tests.
|
| -TEST_F(ExtensionInstallCheckerTest, RunSubsetOfChecks) {
|
| - DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY |
|
| - ExtensionInstallChecker::CHECK_REQUIREMENTS);
|
| - DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_BLACKLIST |
|
| - ExtensionInstallChecker::CHECK_REQUIREMENTS);
|
| - DoRunSubsetOfChecks(ExtensionInstallChecker::CHECK_BLACKLIST);
|
| -}
|
| -
|
| -// Test fail fast with synchronous callbacks.
|
| -TEST_F(ExtensionInstallCheckerTest, FailFastSync) {
|
| - // This test assumes some internal knowledge of the implementation - that
|
| - // the policy check runs first.
|
| - {
|
| - ExtensionInstallCheckerForTest checker(ExtensionInstallChecker::CHECK_ALL,
|
| - /*fail_fast=*/true);
|
| - SetAllErrors(&checker);
|
| - RunChecker(&checker, ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY);
|
| -
|
| - ExpectRequirementsPass(checker);
|
| - ExpectPolicyError(checker);
|
| - ExpectBlacklistPass(checker);
|
| - }
|
| -
|
| - {
|
| - ExtensionInstallCheckerForTest checker(
|
| - ExtensionInstallChecker::CHECK_REQUIREMENTS |
|
| - ExtensionInstallChecker::CHECK_BLACKLIST,
|
| - /*fail_fast=*/true);
|
| - SetAllErrors(&checker);
|
| - RunChecker(&checker, ExtensionInstallChecker::CHECK_REQUIREMENTS);
|
| -
|
| - ExpectRequirementsError(checker);
|
| - ExpectPolicyPass(checker);
|
| - ExpectBlacklistPass(checker);
|
| - }
|
| -}
|
| -
|
| -// Test fail fast with asynchronous callbacks.
|
| -TEST_F(ExtensionInstallCheckerTest, FailFastAsync) {
|
| - // This test assumes some internal knowledge of the implementation - that
|
| - // the requirements check runs before the blacklist check. Both checks should
|
| - // be called, but the requirements check callback arrives first and the
|
| - // blacklist result will be discarded.
|
| - ExtensionInstallCheckerForTest checker(ExtensionInstallChecker::CHECK_ALL,
|
| - /*fail_fast=*/true);
|
| - checker.set_is_async(true);
|
| - SetAllErrors(&checker);
|
| -
|
| - // The policy check is synchronous and needs to pass for the other tests to
|
| - // run.
|
| - SetPolicyError(&checker, PreloadCheck::NONE, "");
|
| -
|
| - RunChecker(&checker,
|
| - ExtensionInstallChecker::CHECK_REQUIREMENTS);
|
| -
|
| - ExpectRequirementsError(checker);
|
| - ExpectPolicyPass(checker);
|
| - ExpectBlacklistPass(checker);
|
| -}
|
| -
|
| -} // namespace extensions
|
|
|