| Index: chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc
|
| diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc
|
| index 6e6c0068eccbc9efc38a7c3929f85ad4a0eb33d6..069dd04ae4abae1bc18c78a35af68dadc6ff0419 100644
|
| --- a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc
|
| +++ b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc
|
| @@ -9,10 +9,12 @@
|
| #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h"
|
| #include "chrome/browser/extensions/extension_apitest.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| -#include "chrome/browser/net/nss_context.h"
|
| +#include "chrome/browser/net/cert_database_service_factory.h"
|
| #include "chrome/browser/net/url_request_mock_util.h"
|
| #include "chromeos/chromeos_switches.h"
|
| #include "chromeos/login/user_names.h"
|
| +#include "chromeos/tpm_token_loader.h"
|
| +#include "components/cert_database/public/cert_database_service.h"
|
| #include "components/policy/core/browser/browser_policy_connector.h"
|
| #include "components/policy/core/common/mock_configuration_policy_provider.h"
|
| #include "components/policy/core/common/policy_map.h"
|
| @@ -136,7 +138,7 @@ const char kTestExtensionID[] = "aecpbnckhoppanpmefllkdkohionpmig";
|
|
|
| class EnterprisePlatformKeysTest : public ExtensionApiTest {
|
| public:
|
| - EnterprisePlatformKeysTest() : nss_db_(NULL) {}
|
| + EnterprisePlatformKeysTest() {}
|
|
|
| virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
|
| ExtensionApiTest::SetUpCommandLine(command_line);
|
| @@ -177,45 +179,20 @@ class EnterprisePlatformKeysTest : public ExtensionApiTest {
|
|
|
| {
|
| base::RunLoop loop;
|
| - GetNSSCertDatabaseForProfile(
|
| - browser()->profile(),
|
| - base::Bind(&EnterprisePlatformKeysTest::DidGetCertDatabase,
|
| - base::Unretained(this),
|
| - loop.QuitClosure()));
|
| + CertDatabaseServiceFactory::GetForBrowserContext(browser()->profile())
|
| + ->GetNSSCertDatabase(
|
| + base::Bind(&EnterprisePlatformKeysTest::DidGetCertDatabase,
|
| + base::Unretained(this),
|
| + loop.QuitClosure()));
|
| loop.Run();
|
| }
|
|
|
| SetPolicy();
|
| }
|
|
|
| - void SetUpTestSystemSlot() {
|
| - base::RunLoop loop;
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(&EnterprisePlatformKeysTest::SetUpTestSystemSlotOnIO,
|
| - base::Unretained(this),
|
| - browser()->profile()->GetResourceContext(),
|
| - loop.QuitClosure()));
|
| - loop.Run();
|
| - }
|
| -
|
| - void TearDownTestSystemSlot() {
|
| - base::RunLoop loop;
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(&EnterprisePlatformKeysTest::TearDownTestSystemSlotOnIO,
|
| - base::Unretained(this),
|
| - loop.QuitClosure()));
|
| - loop.Run();
|
| - }
|
| -
|
| private:
|
| void DidGetCertDatabase(const base::Closure& done_callback,
|
| net::NSSCertDatabase* cert_db) {
|
| - nss_db_ = cert_db;
|
| -
|
| // In order to use a prepared certificate, import a private key to the
|
| // user's token for which the Javscript test will import the certificate.
|
| ImportPrivateKeyPKCS8ToSlot(privateKeyPkcs8User,
|
| @@ -224,28 +201,6 @@ class EnterprisePlatformKeysTest : public ExtensionApiTest {
|
| done_callback.Run();
|
| }
|
|
|
| - void SetUpTestSystemSlotOnIO(content::ResourceContext* context,
|
| - const base::Closure& done_callback) {
|
| - test_system_slot_.reset(new crypto::ScopedTestSystemNSSKeySlot());
|
| - ASSERT_TRUE(test_system_slot_->ConstructedSuccessfully());
|
| -
|
| - // Import a private key to the system slot. The Javascript part of this
|
| - // test has a prepared certificate for this key.
|
| - ImportPrivateKeyPKCS8ToSlot(privateKeyPkcs8System,
|
| - arraysize(privateKeyPkcs8System),
|
| - test_system_slot_->slot());
|
| -
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::UI, FROM_HERE, done_callback);
|
| - }
|
| -
|
| - void TearDownTestSystemSlotOnIO(const base::Closure& done_callback) {
|
| - test_system_slot_.reset();
|
| -
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::UI, FROM_HERE, done_callback);
|
| - }
|
| -
|
| void SetPolicy() {
|
| // Extensions that are force-installed come from an update URL, which
|
| // defaults to the webstore. Use a mock URL for this test with an update
|
| @@ -274,23 +229,72 @@ class EnterprisePlatformKeysTest : public ExtensionApiTest {
|
| observer.Wait();
|
| }
|
|
|
| - net::NSSCertDatabase* nss_db_;
|
| policy::DevicePolicyCrosTestHelper device_policy_test_helper_;
|
| - scoped_ptr<crypto::ScopedTestSystemNSSKeySlot> test_system_slot_;
|
| policy::MockConfigurationPolicyProvider policy_provider_;
|
| };
|
|
|
| -} // namespace
|
| +class EnterprisePlatformKeysTestWithSystemToken
|
| + : public EnterprisePlatformKeysTest {
|
| + public:
|
| + EnterprisePlatformKeysTestWithSystemToken() {
|
| + chromeos::TPMTokenLoader::InitializeForTest();
|
| + }
|
|
|
| -IN_PROC_BROWSER_TEST_F(EnterprisePlatformKeysTest, SystemTokenEnabled) {
|
| - SetUpTestSystemSlot();
|
| - ASSERT_TRUE(RunExtensionSubtest(
|
| - "",
|
| - base::StringPrintf("chrome-extension://%s/basic.html?systemTokenEnabled",
|
| - kTestExtensionID)))
|
| - << message_;
|
| - TearDownTestSystemSlot();
|
| -}
|
| + virtual void SetUpOnMainThread() OVERRIDE {
|
| + base::RunLoop loop;
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &EnterprisePlatformKeysTestWithSystemToken::SetUpTestSystemSlotOnIO,
|
| + base::Unretained(this),
|
| + browser()->profile()->GetResourceContext(),
|
| + loop.QuitClosure()));
|
| + loop.Run();
|
| +
|
| + EnterprisePlatformKeysTest::SetUpOnMainThread();
|
| + }
|
| +
|
| + virtual void TearDownOnMainThread() OVERRIDE {
|
| + EnterprisePlatformKeysTest::TearDownOnMainThread();
|
| + base::RunLoop loop;
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(&EnterprisePlatformKeysTestWithSystemToken::
|
| + TearDownTestSystemSlotOnIO,
|
| + base::Unretained(this),
|
| + loop.QuitClosure()));
|
| + loop.Run();
|
| + }
|
| +
|
| + private:
|
| + void SetUpTestSystemSlotOnIO(content::ResourceContext* context,
|
| + const base::Closure& done_callback) {
|
| + test_system_slot_.reset(new crypto::ScopedTestSystemNSSKeySlot());
|
| + ASSERT_TRUE(test_system_slot_->ConstructedSuccessfully());
|
| +
|
| + // Import a private key to the system slot. The Javascript part of this
|
| + // test has a prepared certificate for this key.
|
| + ImportPrivateKeyPKCS8ToSlot(privateKeyPkcs8System,
|
| + arraysize(privateKeyPkcs8System),
|
| + test_system_slot_->slot());
|
| +
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::UI, FROM_HERE, done_callback);
|
| + }
|
| +
|
| + void TearDownTestSystemSlotOnIO(const base::Closure& done_callback) {
|
| + test_system_slot_.reset();
|
| +
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::UI, FROM_HERE, done_callback);
|
| + }
|
| +
|
| + scoped_ptr<crypto::ScopedTestSystemNSSKeySlot> test_system_slot_;
|
| +};
|
| +
|
| +} // namespace
|
|
|
| IN_PROC_BROWSER_TEST_F(EnterprisePlatformKeysTest, SystemTokenDisabled) {
|
| ASSERT_TRUE(RunExtensionSubtest(
|
| @@ -321,3 +325,12 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest,
|
| "location.",
|
| extension->install_warnings()[0].message);
|
| }
|
| +
|
| +IN_PROC_BROWSER_TEST_F(EnterprisePlatformKeysTestWithSystemToken,
|
| + SystemTokenEnabled) {
|
| + ASSERT_TRUE(RunExtensionSubtest(
|
| + "",
|
| + base::StringPrintf("chrome-extension://%s/basic.html?systemTokenEnabled",
|
| + kTestExtensionID)))
|
| + << message_;
|
| +}
|
|
|