Index: chrome/browser/chromeos/platform_keys/platform_keys_service.cc |
diff --git a/chrome/browser/chromeos/platform_keys/platform_keys_service.cc b/chrome/browser/chromeos/platform_keys/platform_keys_service.cc |
index 7ba138c69202d7817d7b3ea4e940fde0b9810338..b4bdd1cb6e1cda98099e76c5b045792e0eede5ee 100644 |
--- a/chrome/browser/chromeos/platform_keys/platform_keys_service.cc |
+++ b/chrome/browser/chromeos/platform_keys/platform_keys_service.cc |
@@ -17,7 +17,6 @@ namespace chromeos { |
namespace { |
-const char kErrorInternal[] = "Internal Error."; |
const char kErrorKeyNotAllowedForSigning[] = |
"This key is not allowed for signing. Either it was used for signing " |
"before or it was not correctly generated."; |
@@ -30,16 +29,10 @@ scoped_ptr<base::StringValue> GetPublicKeyValue( |
return make_scoped_ptr(new base::StringValue(public_key_spki_der_b64)); |
} |
-// Wraps |callback| into a void(bool) callback which forwards |
-// |public_key_spki_der| if |true| is passed to it. |
-void WrapGenerateKeyCallback( |
+void RunGenerateKeyCallback( |
const PlatformKeysService::GenerateKeyCallback& callback, |
- const std::string& public_key_spki_der, |
- bool success) { |
- if (success) |
- callback.Run(public_key_spki_der, std::string() /* no error */); |
- else |
- callback.Run(std::string() /* no public key */, kErrorInternal); |
+ const std::string& public_key_spki_der) { |
+ callback.Run(public_key_spki_der, std::string() /* no error */); |
} |
// Callback used by |PlatformKeysService::Sign|. |
@@ -118,7 +111,7 @@ void PlatformKeysService::Sign(const std::string& token_id, |
void PlatformKeysService::RegisterPublicKey( |
const std::string& extension_id, |
const std::string& public_key_spki_der, |
- const base::Callback<void(bool)>& callback) { |
+ const base::Closure& callback) { |
GetPlatformKeysOfExtension( |
extension_id, |
base::Bind(&PlatformKeysService::RegisterPublicKeyGotPlatformKeys, |
@@ -144,12 +137,16 @@ void PlatformKeysService::GetPlatformKeysOfExtension( |
const std::string& extension_id, |
const GetPlatformKeysCallback& callback) { |
state_store_->GetExtensionValue( |
- extension_id, |
- kStateStorePlatformKeys, |
+ extension_id, kStateStorePlatformKeys, |
base::Bind(&PlatformKeysService::GotPlatformKeysOfExtension, |
- weak_factory_.GetWeakPtr(), |
- extension_id, |
- callback)); |
+ weak_factory_.GetWeakPtr(), extension_id, callback)); |
+} |
+ |
+void PlatformKeysService::SetPlatformKeysOfExtension( |
+ const std::string& extension_id, |
+ scoped_ptr<base::ListValue> platform_keys) { |
+ state_store_->SetExtensionValue(extension_id, kStateStorePlatformKeys, |
+ platform_keys.Pass()); |
} |
void PlatformKeysService::GenerateRSAKeyCallback( |
@@ -161,22 +158,16 @@ void PlatformKeysService::GenerateRSAKeyCallback( |
callback.Run(std::string() /* no public key */, error_message); |
return; |
} |
- base::Callback<void(bool)> wrapped_callback( |
- base::Bind(&WrapGenerateKeyCallback, callback, public_key_spki_der)); |
+ base::Closure wrapped_callback( |
+ base::Bind(&RunGenerateKeyCallback, callback, public_key_spki_der)); |
RegisterPublicKey(extension_id, public_key_spki_der, wrapped_callback); |
} |
void PlatformKeysService::RegisterPublicKeyGotPlatformKeys( |
const std::string& extension_id, |
const std::string& public_key_spki_der, |
- const base::Callback<void(bool)>& callback, |
+ const base::Closure& callback, |
scoped_ptr<base::ListValue> platform_keys) { |
- if (!platform_keys) { |
- LOG(ERROR) << "Error while reading the platform keys."; |
- callback.Run(false); |
- return; |
- } |
- |
scoped_ptr<base::StringValue> key_value( |
GetPublicKeyValue(public_key_spki_der)); |
@@ -184,10 +175,8 @@ void PlatformKeysService::RegisterPublicKeyGotPlatformKeys( |
<< "Keys are assumed to be generated and not to be registered multiple " |
"times."; |
platform_keys->Append(key_value.release()); |
- |
- state_store_->SetExtensionValue( |
- extension_id, kStateStorePlatformKeys, platform_keys.Pass()); |
- callback.Run(true); |
+ SetPlatformKeysOfExtension(extension_id, platform_keys.Pass()); |
+ callback.Run(); |
} |
void PlatformKeysService::InvalidateKey( |
@@ -205,8 +194,7 @@ void PlatformKeysService::InvalidateKey( |
return; |
} |
- state_store_->SetExtensionValue( |
- extension_id, kStateStorePlatformKeys, platform_keys.Pass()); |
+ SetPlatformKeysOfExtension(extension_id, platform_keys.Pass()); |
callback.Run(true); |
} |
@@ -220,8 +208,11 @@ void PlatformKeysService::GotPlatformKeysOfExtension( |
base::ListValue* keys = NULL; |
if (!value->GetAsList(&keys)) { |
LOG(ERROR) << "Found a value of wrong type."; |
- value.reset(); |
+ |
+ keys = new base::ListValue; |
+ value.reset(keys); |
} |
+ |
ignore_result(value.release()); |
callback.Run(make_scoped_ptr(keys)); |
} |