| // Copyright 2022 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/certificate_provider/test_certificate_provider_extension_mixin.h" |
| |
| #include <memory> |
| |
| #include "chrome/browser/certificate_provider/test_certificate_provider_extension.h" |
| #include "chrome/browser/policy/extension_force_install_mixin.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/test/base/mixin_based_in_process_browser_test.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace ash { |
| |
| TestCertificateProviderExtensionMixin::TestCertificateProviderExtensionMixin( |
| InProcessBrowserTestMixinHost* host, |
| ExtensionForceInstallMixin* extension_force_install_mixin) |
| : InProcessBrowserTestMixin(host), |
| extension_force_install_mixin_(extension_force_install_mixin) {} |
| |
| TestCertificateProviderExtensionMixin:: |
| ~TestCertificateProviderExtensionMixin() = default; |
| |
| void TestCertificateProviderExtensionMixin::TearDownOnMainThread() { |
| certificate_provider_extension_.reset(); |
| } |
| |
| void TestCertificateProviderExtensionMixin::ForceInstall( |
| Profile* profile, |
| bool wait_on_extension_loaded, |
| bool immediately_provide_certificates) { |
| DCHECK(wait_on_extension_loaded || !immediately_provide_certificates) |
| << "When wait_on_extension_loaded is unset, " |
| "immediately_provide_certificates must also be unset!"; |
| DCHECK(extension_force_install_mixin_->initialized()) |
| << "ExtensionForceInstallMixin must be initialized before calling " |
| "ForceInstall!"; |
| DCHECK(!certificate_provider_extension_) << "ForceInstall already called!"; |
| certificate_provider_extension_ = |
| std::make_unique<TestCertificateProviderExtension>(profile); |
| ASSERT_TRUE(extension_force_install_mixin_->ForceInstallFromSourceDir( |
| TestCertificateProviderExtension::GetExtensionSourcePath(), |
| TestCertificateProviderExtension::GetExtensionPemPath(), |
| wait_on_extension_loaded |
| ? ExtensionForceInstallMixin::WaitMode::kBackgroundPageFirstLoad |
| : ExtensionForceInstallMixin::WaitMode::kPrefSet)); |
| if (wait_on_extension_loaded && immediately_provide_certificates) |
| certificate_provider_extension_->TriggerSetCertificates(); |
| } |
| |
| } // namespace ash |