| Index: chrome/browser/value_store/testing_value_store.cc
|
| diff --git a/chrome/browser/value_store/testing_value_store.cc b/chrome/browser/value_store/testing_value_store.cc
|
| index c8d177c55147d5f26d0d2ef15853853dbc36cc4d..d6ef91a09bb8293afff3ca7276faa714fd41a9fe 100644
|
| --- a/chrome/browser/value_store/testing_value_store.cc
|
| +++ b/chrome/browser/value_store/testing_value_store.cc
|
| @@ -124,6 +124,29 @@ ValueStore::WriteResult TestingValueStore::Clear() {
|
| return Remove(keys);
|
| }
|
|
|
| +bool TestingValueStore::Restore() {
|
| + ReadResult result = Get();
|
| + std::string previous_key;
|
| + while (result->IsCorruption()) {
|
| + if (!result->error().key.get() || *result->error().key == previous_key ||
|
| + !RestoreKey(*result->error().key)) {
|
| + Clear();
|
| + result = Get();
|
| + break;
|
| + }
|
| + previous_key = *result->error().key;
|
| + result = Get();
|
| + }
|
| + return !result->IsCorruption();
|
| +}
|
| +
|
| +bool TestingValueStore::RestoreKey(const std::string& key) {
|
| + ReadResult result = Get(key);
|
| + if (result->IsCorruption())
|
| + Remove(key);
|
| + return !Get(key)->IsCorruption();
|
| +}
|
| +
|
| scoped_ptr<ValueStore::Error> TestingValueStore::TestingError() {
|
| return make_scoped_ptr(new ValueStore::Error(
|
| error_code_, kGenericErrorMessage, scoped_ptr<std::string>()));
|
|
|