Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/net/sdch_owner_pref_storage.h" | |
| 6 | |
| 7 #include "base/prefs/persistent_pref_store.h" | |
| 8 #include "base/values.h" | |
| 9 | |
| 10 namespace chrome_browser_net { | |
| 11 | |
| 12 SdchOwnerPrefStorage::SdchOwnerPrefStorage(PersistentPrefStore* storage) | |
| 13 : storage_(storage), | |
| 14 storage_key_("SDCH"), | |
|
Randy Smith (Not in Mondays)
2016/01/27 21:48:17
I'd like this to be abstracted out into a constant
| |
| 15 init_observer_(nullptr) { | |
| 16 } | |
| 17 | |
| 18 SdchOwnerPrefStorage::~SdchOwnerPrefStorage() { | |
| 19 if (init_observer_) | |
| 20 storage_->RemoveObserver(this); | |
| 21 } | |
| 22 | |
| 23 net::SdchOwner::PrefStorage::ReadError | |
| 24 SdchOwnerPrefStorage::GetReadError() const { | |
| 25 PersistentPrefStore::PrefReadError error = storage_->GetReadError(); | |
| 26 | |
| 27 DCHECK_NE(error, | |
| 28 PersistentPrefStore::PREF_READ_ERROR_ASYNCHRONOUS_TASK_INCOMPLETE); | |
| 29 DCHECK_NE(error, PersistentPrefStore::PREF_READ_ERROR_MAX_ENUM); | |
| 30 | |
| 31 switch (error) { | |
| 32 case PersistentPrefStore::PREF_READ_ERROR_NONE: | |
| 33 return PERSISTENCE_FAILURE_NONE; | |
| 34 | |
| 35 case PersistentPrefStore::PREF_READ_ERROR_NO_FILE: | |
| 36 return PERSISTENCE_FAILURE_REASON_NO_FILE; | |
| 37 | |
| 38 case PersistentPrefStore::PREF_READ_ERROR_JSON_PARSE: | |
| 39 case PersistentPrefStore::PREF_READ_ERROR_JSON_TYPE: | |
| 40 case PersistentPrefStore::PREF_READ_ERROR_FILE_OTHER: | |
| 41 case PersistentPrefStore::PREF_READ_ERROR_FILE_LOCKED: | |
| 42 case PersistentPrefStore::PREF_READ_ERROR_JSON_REPEAT: | |
| 43 return PERSISTENCE_FAILURE_REASON_READ_FAILED; | |
| 44 | |
| 45 case PersistentPrefStore::PREF_READ_ERROR_ACCESS_DENIED: | |
| 46 case PersistentPrefStore::PREF_READ_ERROR_FILE_NOT_SPECIFIED: | |
| 47 case PersistentPrefStore::PREF_READ_ERROR_ASYNCHRONOUS_TASK_INCOMPLETE: | |
| 48 case PersistentPrefStore::PREF_READ_ERROR_MAX_ENUM: | |
| 49 default: | |
| 50 // This may seem a bit odd but our goal here is to map errors we expect | |
| 51 // to a histogram that the SDCH system cares about. We don't expect to | |
| 52 // get these errors with our usage, and there is no histogram value for | |
| 53 // them, which is why we return "none" rather than having a general | |
| 54 // "other" error value. | |
|
Randy Smith (Not in Mondays)
2016/01/27 21:48:17
Could you say a bit more about your logic here? I
brettw
2016/01/27 22:23:54
I was trying to avoid updating the histogram but n
| |
| 55 NOTREACHED(); | |
| 56 return PERSISTENCE_FAILURE_NONE; | |
| 57 } | |
| 58 } | |
| 59 | |
| 60 bool SdchOwnerPrefStorage::GetValue( | |
| 61 const base::DictionaryValue** result) const { | |
| 62 const base::Value* result_value = nullptr; | |
| 63 if (!storage_->GetValue(storage_key_, &result_value)) | |
| 64 return false; | |
| 65 return result_value->GetAsDictionary(result); | |
| 66 } | |
| 67 | |
| 68 bool SdchOwnerPrefStorage::GetMutableValue(base::DictionaryValue** result) { | |
| 69 base::Value* result_value = nullptr; | |
| 70 if (!storage_->GetMutableValue(storage_key_, &result_value)) | |
| 71 return false; | |
| 72 return result_value->GetAsDictionary(result); | |
| 73 } | |
| 74 | |
| 75 void SdchOwnerPrefStorage::SetValue(scoped_ptr<base::DictionaryValue> value) { | |
| 76 storage_->SetValue(storage_key_, std::move(value), | |
| 77 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | |
| 78 } | |
| 79 | |
| 80 void SdchOwnerPrefStorage::ReportValueChanged() { | |
| 81 storage_->ReportValueChanged(storage_key_, | |
| 82 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS); | |
| 83 } | |
| 84 | |
| 85 bool SdchOwnerPrefStorage::IsInitializationComplete() { | |
| 86 return storage_->IsInitializationComplete(); | |
| 87 } | |
| 88 | |
| 89 void SdchOwnerPrefStorage::StartObservingInit(net::SdchOwner* observer) { | |
| 90 DCHECK(!init_observer_); | |
| 91 init_observer_ = observer; | |
| 92 storage_->AddObserver(this); | |
| 93 } | |
| 94 | |
| 95 void SdchOwnerPrefStorage::StopObservingInit() { | |
| 96 DCHECK(init_observer_); | |
| 97 init_observer_ = nullptr; | |
| 98 storage_->RemoveObserver(this); | |
| 99 } | |
| 100 | |
| 101 void SdchOwnerPrefStorage::OnPrefValueChanged(const std::string& key) { | |
| 102 } | |
| 103 | |
| 104 void SdchOwnerPrefStorage::OnInitializationCompleted(bool succeeded) { | |
| 105 init_observer_->OnPrefStorageInitializationComplete(succeeded); | |
|
Randy Smith (Not in Mondays)
2016/01/27 21:48:17
There's an implication in this line about the inte
brettw
2016/01/27 22:23:54
I changed the comments in the interface to make th
Randy Smith (Not in Mondays)
2016/01/28 17:45:56
Ah, gotcha. That makes sense. Sorry about the mi
| |
| 106 } | |
| 107 | |
| 108 } // namespace chrome_browser_net | |
| OLD | NEW |