Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1941)

Unified Diff: chrome/browser/chromeos/settings/device_settings_service_unittest.cc

Issue 23532034: Postpone loading about:flags ui until the certificates have been loaded (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/settings/device_settings_service.cc ('k') | chrome/browser/resources/flags.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/settings/device_settings_service_unittest.cc
diff --git a/chrome/browser/chromeos/settings/device_settings_service_unittest.cc b/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
index 7accb8ec54e996d15195f9e14ee62b8b9cd96198..acdf6d10bf2d09a0218c416356d56721d8c463ae 100644
--- a/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
+++ b/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
@@ -39,16 +39,20 @@ class DeviceSettingsServiceTest : public DeviceSettingsTestBase {
}
void SetOwnershipStatus(
- DeviceSettingsService::OwnershipStatus ownership_status,
- bool is_owner) {
- is_owner_ = is_owner;
+ DeviceSettingsService::OwnershipStatus ownership_status) {
ownership_status_ = ownership_status;
}
+ void OnIsOwner(bool is_owner) {
+ is_owner_ = is_owner;
+ is_owner_set_ = true;
+ }
+
protected:
DeviceSettingsServiceTest()
: operation_completed_(false),
is_owner_(true),
+ is_owner_set_(false),
ownership_status_(DeviceSettingsService::OWNERSHIP_UNKNOWN) {}
virtual void SetUp() OVERRIDE {
@@ -68,6 +72,7 @@ class DeviceSettingsServiceTest : public DeviceSettingsTestBase {
bool operation_completed_;
bool is_owner_;
+ bool is_owner_set_;
DeviceSettingsService::OwnershipStatus ownership_status_;
private:
@@ -281,7 +286,6 @@ TEST_F(DeviceSettingsServiceTest, OwnershipStatus) {
EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
EXPECT_EQ(DeviceSettingsService::OWNERSHIP_NONE,
device_settings_service_.GetOwnershipStatus());
- EXPECT_FALSE(is_owner_);
EXPECT_EQ(DeviceSettingsService::OWNERSHIP_NONE, ownership_status_);
owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
@@ -299,7 +303,6 @@ TEST_F(DeviceSettingsServiceTest, OwnershipStatus) {
EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
device_settings_service_.GetOwnershipStatus());
- EXPECT_FALSE(is_owner_);
EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN, ownership_status_);
owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
@@ -316,10 +319,144 @@ TEST_F(DeviceSettingsServiceTest, OwnershipStatus) {
EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key());
EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
device_settings_service_.GetOwnershipStatus());
- EXPECT_TRUE(is_owner_);
EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN, ownership_status_);
}
+TEST_F(DeviceSettingsServiceTest, OnCertificatesLoadedForNonOwner) {
+ owner_key_util_->Clear();
+
+ EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
+ EXPECT_FALSE(device_settings_service_.GetOwnerKey().get());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_UNKNOWN,
+ device_settings_service_.GetOwnershipStatus());
+
+ device_settings_service_.IsCurrentUserOwnerAsync(
+ base::Bind(&DeviceSettingsServiceTest::OnIsOwner,
+ base::Unretained(this)));
+
+ owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
+ ReloadDeviceSettings();
+
+ EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
+ std::vector<uint8> key;
+ ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
+ EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
+ EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
+ device_settings_service_.GetOwnershipStatus());
+ EXPECT_FALSE(is_owner_set_);
+
+ // Simulate CertLoader reporting a new set of certificates. The passed
+ // certificates are ignored.
+ device_settings_service_.OnCertificatesLoaded(net::CertificateList(), true);
+ FlushDeviceSettings();
+
+ EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
+ ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
+ EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
+ EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
+ device_settings_service_.GetOwnershipStatus());
+ EXPECT_TRUE(is_owner_set_);
+ EXPECT_FALSE(is_owner_);
+}
+
+TEST_F(DeviceSettingsServiceTest, OnCertificatesLoadedForOwner) {
+ owner_key_util_->Clear();
+
+ EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
+ EXPECT_FALSE(device_settings_service_.GetOwnerKey().get());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_UNKNOWN,
+ device_settings_service_.GetOwnershipStatus());
+
+ device_settings_service_.IsCurrentUserOwnerAsync(
+ base::Bind(&DeviceSettingsServiceTest::OnIsOwner,
+ base::Unretained(this)));
+
+ owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
+ ReloadDeviceSettings();
+
+ EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
+ std::vector<uint8> key;
+ ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
+ EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
+ EXPECT_FALSE(device_settings_service_.GetOwnerKey()->private_key());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
+ device_settings_service_.GetOwnershipStatus());
+ EXPECT_FALSE(is_owner_set_);
+
+ owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
+ device_settings_service_.SetUsername(device_policy_.policy_data().username());
+ // Simulate CertLoader reporting a new set of certificates. The passed
+ // certificates are ignored.
+ device_settings_service_.OnCertificatesLoaded(net::CertificateList(), true);
+ FlushDeviceSettings();
+
+ EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
+ ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
+ EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
+ EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
+ device_settings_service_.GetOwnershipStatus());
+ EXPECT_TRUE(is_owner_set_);
+ EXPECT_TRUE(is_owner_);
+}
+
+TEST_F(DeviceSettingsServiceTest, IsCurrentUserOwnerAsyncWithLoadedCerts) {
+ owner_key_util_->Clear();
+
+ EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
+ EXPECT_FALSE(device_settings_service_.GetOwnerKey().get());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_UNKNOWN,
+ device_settings_service_.GetOwnershipStatus());
+
+ owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
+ owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
+ device_settings_service_.SetUsername(device_policy_.policy_data().username());
+ ReloadDeviceSettings();
+
+ // Simulate CertLoader reporting a new set of certificates. The passed
+ // certificates are ignored.
+ device_settings_service_.OnCertificatesLoaded(net::CertificateList(), true);
+ FlushDeviceSettings();
+
+ EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
+ std::vector<uint8> key;
+ ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
+ EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
+ EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
+ device_settings_service_.GetOwnershipStatus());
+ EXPECT_FALSE(is_owner_set_);
+
+ device_settings_service_.IsCurrentUserOwnerAsync(
+ base::Bind(&DeviceSettingsServiceTest::OnIsOwner,
+ base::Unretained(this)));
+ // The callback should be called immediately.
+ base::MessageLoop::current()->RunUntilIdle();
+
+ EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey().get());
+ ASSERT_TRUE(device_settings_service_.GetOwnerKey()->public_key());
+ ASSERT_TRUE(device_policy_.GetSigningKey()->ExportPublicKey(&key));
+ EXPECT_EQ(*device_settings_service_.GetOwnerKey()->public_key(), key);
+ EXPECT_TRUE(device_settings_service_.GetOwnerKey()->private_key());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
+ device_settings_service_.GetOwnershipStatus());
+ EXPECT_TRUE(is_owner_set_);
+ EXPECT_TRUE(is_owner_);
+}
+
TEST_F(DeviceSettingsServiceTest, Observer) {
owner_key_util_->Clear();
MockDeviceSettingsObserver observer_;
« no previous file with comments | « chrome/browser/chromeos/settings/device_settings_service.cc ('k') | chrome/browser/resources/flags.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698