Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
| 6 | 6 |
| 7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "chrome/browser/extensions/settings/settings_backend.h" | 11 #include "chrome/browser/extensions/settings/settings_backend.h" |
| 12 #include "chrome/browser/extensions/settings/settings_storage_cache.h" | 12 #include "chrome/browser/extensions/settings/settings_storage_cache.h" |
| 13 #include "chrome/browser/extensions/settings/settings_storage_quota_enforcer.h" | 13 #include "chrome/browser/extensions/settings/settings_storage_quota_enforcer.h" |
| 14 #include "chrome/browser/extensions/settings/testing_settings_storage.h" | 14 #include "chrome/browser/extensions/settings/testing_settings_storage.h" |
| 15 | 15 |
| 16 namespace extensions { | 16 namespace extensions { |
| 17 | 17 |
| 18 // To save typing SettingsStorage::DEFAULTS/FORCE everywhere. | |
| 19 const SettingsStorage::WriteOptions DEFAULTS = SettingsStorage::DEFAULTS; | |
| 20 const SettingsStorage::WriteOptions FORCE = SettingsStorage::FORCE; | |
| 21 | |
| 18 class ExtensionSettingsQuotaTest : public testing::Test { | 22 class ExtensionSettingsQuotaTest : public testing::Test { |
| 19 public: | 23 public: |
| 20 ExtensionSettingsQuotaTest() | 24 ExtensionSettingsQuotaTest() |
| 21 : byte_value_1_(Value::CreateIntegerValue(1)), | 25 : byte_value_1_(Value::CreateIntegerValue(1)), |
| 22 byte_value_16_(Value::CreateStringValue("sixteen bytes.")), | 26 byte_value_16_(Value::CreateStringValue("sixteen bytes.")), |
| 23 byte_value_256_(new ListValue()), | 27 byte_value_256_(new ListValue()), |
| 24 delegate_(new SettingsStorageCache(new TestingSettingsStorage())) { | 28 delegate_(new SettingsStorageCache(new TestingSettingsStorage())) { |
| 25 for (int i = 1; i < 89; ++i) { | 29 for (int i = 1; i < 89; ++i) { |
| 26 byte_value_256_->Append(Value::CreateIntegerValue(i)); | 30 byte_value_256_->Append(Value::CreateIntegerValue(i)); |
| 27 } | 31 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 68 scoped_ptr<SettingsStorageQuotaEnforcer> storage_; | 72 scoped_ptr<SettingsStorageQuotaEnforcer> storage_; |
| 69 | 73 |
| 70 // In-memory storage area being delegated to. Always owned by |storage_|. | 74 // In-memory storage area being delegated to. Always owned by |storage_|. |
| 71 SettingsStorageCache* delegate_; | 75 SettingsStorageCache* delegate_; |
| 72 }; | 76 }; |
| 73 | 77 |
| 74 TEST_F(ExtensionSettingsQuotaTest, ZeroQuotaBytes) { | 78 TEST_F(ExtensionSettingsQuotaTest, ZeroQuotaBytes) { |
| 75 DictionaryValue empty; | 79 DictionaryValue empty; |
| 76 CreateStorage(0, UINT_MAX, UINT_MAX); | 80 CreateStorage(0, UINT_MAX, UINT_MAX); |
| 77 | 81 |
| 78 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 82 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 79 EXPECT_FALSE(storage_->Remove("a").HasError()); | 83 EXPECT_FALSE(storage_->Remove(DEFAULTS, "a").HasError()); |
| 80 EXPECT_FALSE(storage_->Remove("b").HasError()); | 84 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
| 81 EXPECT_TRUE(SettingsEqual(empty)); | 85 EXPECT_TRUE(SettingsEqual(empty)); |
| 82 } | 86 } |
| 83 | 87 |
| 84 TEST_F(ExtensionSettingsQuotaTest, KeySizeTakenIntoAccount) { | 88 TEST_F(ExtensionSettingsQuotaTest, KeySizeTakenIntoAccount) { |
| 85 DictionaryValue empty; | 89 DictionaryValue empty; |
| 86 CreateStorage(8u, UINT_MAX, UINT_MAX); | 90 CreateStorage(8u, UINT_MAX, UINT_MAX); |
| 87 EXPECT_TRUE(storage_->Set("Really long key", *byte_value_1_).HasError()); | 91 EXPECT_TRUE( |
| 92 storage_->Set(DEFAULTS, "Really long key", *byte_value_1_).HasError()); | |
| 88 EXPECT_TRUE(SettingsEqual(empty)); | 93 EXPECT_TRUE(SettingsEqual(empty)); |
| 89 } | 94 } |
| 90 | 95 |
| 91 TEST_F(ExtensionSettingsQuotaTest, SmallByteQuota) { | 96 TEST_F(ExtensionSettingsQuotaTest, SmallByteQuota) { |
| 92 DictionaryValue settings; | 97 DictionaryValue settings; |
| 93 CreateStorage(8u, UINT_MAX, UINT_MAX); | 98 CreateStorage(8u, UINT_MAX, UINT_MAX); |
| 94 | 99 |
| 95 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 100 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 96 settings.Set("a", byte_value_1_->DeepCopy()); | 101 settings.Set("a", byte_value_1_->DeepCopy()); |
| 97 EXPECT_TRUE(SettingsEqual(settings)); | 102 EXPECT_TRUE(SettingsEqual(settings)); |
| 98 | 103 |
| 99 EXPECT_TRUE(storage_->Set("b", *byte_value_16_).HasError()); | 104 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
| 100 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 105 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
| 101 EXPECT_TRUE(SettingsEqual(settings)); | 106 EXPECT_TRUE(SettingsEqual(settings)); |
| 102 } | 107 } |
| 103 | 108 |
| 104 TEST_F(ExtensionSettingsQuotaTest, MediumByteQuota) { | 109 TEST_F(ExtensionSettingsQuotaTest, MediumByteQuota) { |
| 105 DictionaryValue settings; | 110 DictionaryValue settings; |
| 106 CreateStorage(40, UINT_MAX, UINT_MAX); | 111 CreateStorage(40, UINT_MAX, UINT_MAX); |
| 107 | 112 |
| 108 DictionaryValue to_set; | 113 DictionaryValue to_set; |
| 109 to_set.Set("a", byte_value_1_->DeepCopy()); | 114 to_set.Set("a", byte_value_1_->DeepCopy()); |
| 110 to_set.Set("b", byte_value_16_->DeepCopy()); | 115 to_set.Set("b", byte_value_16_->DeepCopy()); |
| 111 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 116 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 112 settings.Set("a", byte_value_1_->DeepCopy()); | 117 settings.Set("a", byte_value_1_->DeepCopy()); |
| 113 settings.Set("b", byte_value_16_->DeepCopy()); | 118 settings.Set("b", byte_value_16_->DeepCopy()); |
| 114 EXPECT_TRUE(SettingsEqual(settings)); | 119 EXPECT_TRUE(SettingsEqual(settings)); |
| 115 | 120 |
| 116 // Should be able to set value to other under-quota value. | 121 // Should be able to set value to other under-quota value. |
| 117 to_set.Set("a", byte_value_16_->DeepCopy()); | 122 to_set.Set("a", byte_value_16_->DeepCopy()); |
| 118 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 123 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 119 settings.Set("a", byte_value_16_->DeepCopy()); | 124 settings.Set("a", byte_value_16_->DeepCopy()); |
| 120 EXPECT_TRUE(SettingsEqual(settings)); | 125 EXPECT_TRUE(SettingsEqual(settings)); |
| 121 | 126 |
| 122 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 127 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
| 123 EXPECT_TRUE(SettingsEqual(settings)); | 128 EXPECT_TRUE(SettingsEqual(settings)); |
| 124 } | 129 } |
| 125 | 130 |
| 126 TEST_F(ExtensionSettingsQuotaTest, ZeroMaxKeys) { | 131 TEST_F(ExtensionSettingsQuotaTest, ZeroMaxKeys) { |
| 127 DictionaryValue empty; | 132 DictionaryValue empty; |
| 128 CreateStorage(UINT_MAX, UINT_MAX, 0); | 133 CreateStorage(UINT_MAX, UINT_MAX, 0); |
| 129 | 134 |
| 130 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 135 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 131 EXPECT_FALSE(storage_->Remove("a").HasError()); | 136 EXPECT_FALSE(storage_->Remove(DEFAULTS, "a").HasError()); |
| 132 EXPECT_FALSE(storage_->Remove("b").HasError()); | 137 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
| 133 EXPECT_TRUE(SettingsEqual(empty)); | 138 EXPECT_TRUE(SettingsEqual(empty)); |
| 134 } | 139 } |
| 135 | 140 |
| 136 TEST_F(ExtensionSettingsQuotaTest, SmallMaxKeys) { | 141 TEST_F(ExtensionSettingsQuotaTest, SmallMaxKeys) { |
| 137 DictionaryValue settings; | 142 DictionaryValue settings; |
| 138 CreateStorage(UINT_MAX, UINT_MAX, 1); | 143 CreateStorage(UINT_MAX, UINT_MAX, 1); |
| 139 | 144 |
| 140 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 145 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 141 settings.Set("a", byte_value_1_->DeepCopy()); | 146 settings.Set("a", byte_value_1_->DeepCopy()); |
| 142 EXPECT_TRUE(SettingsEqual(settings)); | 147 EXPECT_TRUE(SettingsEqual(settings)); |
| 143 | 148 |
| 144 // Should be able to set existing key to other value without going over quota. | 149 // Should be able to set existing key to other value without going over quota. |
| 145 EXPECT_FALSE(storage_->Set("a", *byte_value_16_).HasError()); | 150 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_16_).HasError()); |
| 146 settings.Set("a", byte_value_16_->DeepCopy()); | 151 settings.Set("a", byte_value_16_->DeepCopy()); |
| 147 EXPECT_TRUE(SettingsEqual(settings)); | 152 EXPECT_TRUE(SettingsEqual(settings)); |
| 148 | 153 |
| 149 EXPECT_TRUE(storage_->Set("b", *byte_value_16_).HasError()); | 154 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
| 150 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 155 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
| 151 EXPECT_TRUE(SettingsEqual(settings)); | 156 EXPECT_TRUE(SettingsEqual(settings)); |
| 152 } | 157 } |
| 153 | 158 |
| 154 TEST_F(ExtensionSettingsQuotaTest, MediumMaxKeys) { | 159 TEST_F(ExtensionSettingsQuotaTest, MediumMaxKeys) { |
| 155 DictionaryValue settings; | 160 DictionaryValue settings; |
| 156 CreateStorage(UINT_MAX, UINT_MAX, 2); | 161 CreateStorage(UINT_MAX, UINT_MAX, 2); |
| 157 | 162 |
| 158 DictionaryValue to_set; | 163 DictionaryValue to_set; |
| 159 to_set.Set("a", byte_value_1_->DeepCopy()); | 164 to_set.Set("a", byte_value_1_->DeepCopy()); |
| 160 to_set.Set("b", byte_value_16_->DeepCopy()); | 165 to_set.Set("b", byte_value_16_->DeepCopy()); |
| 161 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 166 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 162 settings.Set("a", byte_value_1_->DeepCopy()); | 167 settings.Set("a", byte_value_1_->DeepCopy()); |
| 163 settings.Set("b", byte_value_16_->DeepCopy()); | 168 settings.Set("b", byte_value_16_->DeepCopy()); |
| 164 EXPECT_TRUE(SettingsEqual(settings)); | 169 EXPECT_TRUE(SettingsEqual(settings)); |
| 165 | 170 |
| 166 // Should be able to set existing keys to other values without going over | 171 // Should be able to set existing keys to other values without going over |
| 167 // quota. | 172 // quota. |
| 168 to_set.Set("a", byte_value_16_->DeepCopy()); | 173 to_set.Set("a", byte_value_16_->DeepCopy()); |
| 169 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 174 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 170 settings.Set("a", byte_value_16_->DeepCopy()); | 175 settings.Set("a", byte_value_16_->DeepCopy()); |
| 171 EXPECT_TRUE(SettingsEqual(settings)); | 176 EXPECT_TRUE(SettingsEqual(settings)); |
| 172 | 177 |
| 173 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 178 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
| 174 EXPECT_TRUE(SettingsEqual(settings)); | 179 EXPECT_TRUE(SettingsEqual(settings)); |
| 175 } | 180 } |
| 176 | 181 |
| 177 TEST_F(ExtensionSettingsQuotaTest, RemovingExistingSettings) { | 182 TEST_F(ExtensionSettingsQuotaTest, RemovingExistingSettings) { |
| 178 DictionaryValue settings; | 183 DictionaryValue settings; |
| 179 CreateStorage(266, UINT_MAX, 2); | 184 CreateStorage(266, UINT_MAX, 2); |
| 180 | 185 |
| 181 storage_->Set("b", *byte_value_16_); | 186 storage_->Set(DEFAULTS, "b", *byte_value_16_); |
| 182 settings.Set("b", byte_value_16_->DeepCopy()); | 187 settings.Set("b", byte_value_16_->DeepCopy()); |
| 183 // Not enough quota. | 188 // Not enough quota. |
| 184 storage_->Set("c", *byte_value_256_); | 189 storage_->Set(DEFAULTS, "c", *byte_value_256_); |
| 185 EXPECT_TRUE(SettingsEqual(settings)); | 190 EXPECT_TRUE(SettingsEqual(settings)); |
| 186 | 191 |
| 187 // Try again with "b" removed, enough quota. | 192 // Try again with "b" removed, enough quota. |
| 188 EXPECT_FALSE(storage_->Remove("b").HasError()); | 193 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
| 189 settings.Remove("b", NULL); | 194 settings.Remove("b", NULL); |
| 190 EXPECT_FALSE(storage_->Set("c", *byte_value_256_).HasError()); | 195 EXPECT_FALSE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
| 191 settings.Set("c", byte_value_256_->DeepCopy()); | 196 settings.Set("c", byte_value_256_->DeepCopy()); |
| 192 EXPECT_TRUE(SettingsEqual(settings)); | 197 EXPECT_TRUE(SettingsEqual(settings)); |
| 193 | 198 |
| 194 // Enough byte quota but max keys not high enough. | 199 // Enough byte quota but max keys not high enough. |
| 195 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 200 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 196 settings.Set("a", byte_value_1_->DeepCopy()); | 201 settings.Set("a", byte_value_1_->DeepCopy()); |
| 197 EXPECT_TRUE(SettingsEqual(settings)); | 202 EXPECT_TRUE(SettingsEqual(settings)); |
| 198 | 203 |
| 199 EXPECT_TRUE(storage_->Set("b", *byte_value_1_).HasError()); | 204 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
| 200 EXPECT_TRUE(SettingsEqual(settings)); | 205 EXPECT_TRUE(SettingsEqual(settings)); |
| 201 | 206 |
| 202 // Back under max keys. | 207 // Back under max keys. |
| 203 EXPECT_FALSE(storage_->Remove("a").HasError()); | 208 EXPECT_FALSE(storage_->Remove(DEFAULTS, "a").HasError()); |
| 204 settings.Remove("a", NULL); | 209 settings.Remove("a", NULL); |
| 205 EXPECT_FALSE(storage_->Set("b", *byte_value_1_).HasError()); | 210 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
| 206 settings.Set("b", byte_value_1_->DeepCopy()); | 211 settings.Set("b", byte_value_1_->DeepCopy()); |
| 207 EXPECT_TRUE(SettingsEqual(settings)); | 212 EXPECT_TRUE(SettingsEqual(settings)); |
| 208 } | 213 } |
| 209 | 214 |
| 210 TEST_F(ExtensionSettingsQuotaTest, RemovingNonexistentSettings) { | 215 TEST_F(ExtensionSettingsQuotaTest, RemovingNonexistentSettings) { |
| 211 DictionaryValue settings; | 216 DictionaryValue settings; |
| 212 CreateStorage(36, UINT_MAX, 3); | 217 CreateStorage(36, UINT_MAX, 3); |
| 213 | 218 |
| 214 // Max out bytes. | 219 // Max out bytes. |
| 215 DictionaryValue to_set; | 220 DictionaryValue to_set; |
| 216 to_set.Set("b1", byte_value_16_->DeepCopy()); | 221 to_set.Set("b1", byte_value_16_->DeepCopy()); |
| 217 to_set.Set("b2", byte_value_16_->DeepCopy()); | 222 to_set.Set("b2", byte_value_16_->DeepCopy()); |
| 218 storage_->Set(to_set); | 223 storage_->Set(DEFAULTS, to_set); |
| 219 settings.Set("b1", byte_value_16_->DeepCopy()); | 224 settings.Set("b1", byte_value_16_->DeepCopy()); |
| 220 settings.Set("b2", byte_value_16_->DeepCopy()); | 225 settings.Set("b2", byte_value_16_->DeepCopy()); |
| 221 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 226 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 222 EXPECT_TRUE(SettingsEqual(settings)); | 227 EXPECT_TRUE(SettingsEqual(settings)); |
| 223 | 228 |
| 224 // Remove some settings that don't exist. | 229 // Remove some settings that don't exist. |
| 225 std::vector<std::string> to_remove; | 230 std::vector<std::string> to_remove; |
| 226 to_remove.push_back("a1"); | 231 to_remove.push_back("a1"); |
| 227 to_remove.push_back("a2"); | 232 to_remove.push_back("a2"); |
| 228 EXPECT_FALSE(storage_->Remove(to_remove).HasError()); | 233 EXPECT_FALSE(storage_->Remove(DEFAULTS, to_remove).HasError()); |
| 229 EXPECT_FALSE(storage_->Remove("b").HasError()); | 234 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
| 230 EXPECT_TRUE(SettingsEqual(settings)); | 235 EXPECT_TRUE(SettingsEqual(settings)); |
| 231 | 236 |
| 232 // Still no quota. | 237 // Still no quota. |
| 233 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 238 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 234 EXPECT_TRUE(SettingsEqual(settings)); | 239 EXPECT_TRUE(SettingsEqual(settings)); |
| 235 | 240 |
| 236 // Max out key count. | 241 // Max out key count. |
| 237 to_set.Clear(); | 242 to_set.Clear(); |
| 238 to_set.Set("b1", byte_value_1_->DeepCopy()); | 243 to_set.Set("b1", byte_value_1_->DeepCopy()); |
| 239 to_set.Set("b2", byte_value_1_->DeepCopy()); | 244 to_set.Set("b2", byte_value_1_->DeepCopy()); |
| 240 storage_->Set(to_set); | 245 storage_->Set(DEFAULTS, to_set); |
| 241 settings.Set("b1", byte_value_1_->DeepCopy()); | 246 settings.Set("b1", byte_value_1_->DeepCopy()); |
| 242 settings.Set("b2", byte_value_1_->DeepCopy()); | 247 settings.Set("b2", byte_value_1_->DeepCopy()); |
| 243 storage_->Set("b3", *byte_value_1_); | 248 storage_->Set(DEFAULTS, "b3", *byte_value_1_); |
| 244 settings.Set("b3", byte_value_1_->DeepCopy()); | 249 settings.Set("b3", byte_value_1_->DeepCopy()); |
| 245 EXPECT_TRUE(SettingsEqual(settings)); | 250 EXPECT_TRUE(SettingsEqual(settings)); |
| 246 | 251 |
| 247 // Remove some settings that don't exist. | 252 // Remove some settings that don't exist. |
| 248 to_remove.clear(); | 253 to_remove.clear(); |
| 249 to_remove.push_back("a1"); | 254 to_remove.push_back("a1"); |
| 250 to_remove.push_back("a2"); | 255 to_remove.push_back("a2"); |
| 251 EXPECT_FALSE(storage_->Remove(to_remove).HasError()); | 256 EXPECT_FALSE(storage_->Remove(DEFAULTS, to_remove).HasError()); |
| 252 EXPECT_FALSE(storage_->Remove("b").HasError()); | 257 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
| 253 EXPECT_TRUE(SettingsEqual(settings)); | 258 EXPECT_TRUE(SettingsEqual(settings)); |
| 254 | 259 |
| 255 // Still no quota. | 260 // Still no quota. |
| 256 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 261 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 257 EXPECT_TRUE(SettingsEqual(settings)); | 262 EXPECT_TRUE(SettingsEqual(settings)); |
| 258 } | 263 } |
| 259 | 264 |
| 260 TEST_F(ExtensionSettingsQuotaTest, Clear) { | 265 TEST_F(ExtensionSettingsQuotaTest, Clear) { |
| 261 DictionaryValue settings; | 266 DictionaryValue settings; |
| 262 CreateStorage(40, UINT_MAX, 5); | 267 CreateStorage(40, UINT_MAX, 5); |
| 263 | 268 |
| 264 // Test running out of byte quota. | 269 // Test running out of byte quota. |
| 265 { | 270 { |
| 266 DictionaryValue to_set; | 271 DictionaryValue to_set; |
| 267 to_set.Set("a", byte_value_16_->DeepCopy()); | 272 to_set.Set("a", byte_value_16_->DeepCopy()); |
| 268 to_set.Set("b", byte_value_16_->DeepCopy()); | 273 to_set.Set("b", byte_value_16_->DeepCopy()); |
| 269 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 274 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 270 EXPECT_TRUE(storage_->Set("c", *byte_value_16_).HasError()); | 275 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
| 271 | 276 |
| 272 EXPECT_FALSE(storage_->Clear().HasError()); | 277 EXPECT_FALSE(storage_->Clear(DEFAULTS).HasError()); |
| 273 | 278 |
| 274 // (repeat) | 279 // (repeat) |
| 275 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 280 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 276 EXPECT_TRUE(storage_->Set("c", *byte_value_16_).HasError()); | 281 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
| 277 } | 282 } |
| 278 | 283 |
| 279 // Test reaching max keys. | 284 // Test reaching max keys. |
| 280 storage_->Clear(); | 285 storage_->Clear(DEFAULTS); |
| 281 { | 286 { |
| 282 DictionaryValue to_set; | 287 DictionaryValue to_set; |
| 283 to_set.Set("a", byte_value_1_->DeepCopy()); | 288 to_set.Set("a", byte_value_1_->DeepCopy()); |
| 284 to_set.Set("b", byte_value_1_->DeepCopy()); | 289 to_set.Set("b", byte_value_1_->DeepCopy()); |
| 285 to_set.Set("c", byte_value_1_->DeepCopy()); | 290 to_set.Set("c", byte_value_1_->DeepCopy()); |
| 286 to_set.Set("d", byte_value_1_->DeepCopy()); | 291 to_set.Set("d", byte_value_1_->DeepCopy()); |
| 287 to_set.Set("e", byte_value_1_->DeepCopy()); | 292 to_set.Set("e", byte_value_1_->DeepCopy()); |
| 288 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 293 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 289 EXPECT_TRUE(storage_->Set("f", *byte_value_1_).HasError()); | 294 EXPECT_TRUE(storage_->Set(DEFAULTS, "f", *byte_value_1_).HasError()); |
| 290 | 295 |
| 291 storage_->Clear(); | 296 storage_->Clear(DEFAULTS); |
| 292 | 297 |
| 293 // (repeat) | 298 // (repeat) |
| 294 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 299 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 295 EXPECT_TRUE(storage_->Set("f", *byte_value_1_).HasError()); | 300 EXPECT_TRUE(storage_->Set(DEFAULTS, "f", *byte_value_1_).HasError()); |
| 296 } | 301 } |
| 297 } | 302 } |
| 298 | 303 |
| 299 TEST_F(ExtensionSettingsQuotaTest, ChangingUsedBytesWithSet) { | 304 TEST_F(ExtensionSettingsQuotaTest, ChangingUsedBytesWithSet) { |
| 300 DictionaryValue settings; | 305 DictionaryValue settings; |
| 301 CreateStorage(20, UINT_MAX, UINT_MAX); | 306 CreateStorage(20, UINT_MAX, UINT_MAX); |
| 302 | 307 |
| 303 // Change a setting to make it go over quota. | 308 // Change a setting to make it go over quota. |
| 304 storage_->Set("a", *byte_value_16_); | 309 storage_->Set(DEFAULTS, "a", *byte_value_16_); |
| 305 settings.Set("a", byte_value_16_->DeepCopy()); | 310 settings.Set("a", byte_value_16_->DeepCopy()); |
| 306 EXPECT_TRUE(SettingsEqual(settings)); | 311 EXPECT_TRUE(SettingsEqual(settings)); |
| 307 | 312 |
| 308 EXPECT_TRUE(storage_->Set("a", *byte_value_256_).HasError()); | 313 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_256_).HasError()); |
| 309 EXPECT_TRUE(SettingsEqual(settings)); | 314 EXPECT_TRUE(SettingsEqual(settings)); |
| 310 | 315 |
| 311 // Change a setting to reduce usage and room for another setting. | 316 // Change a setting to reduce usage and room for another setting. |
| 312 EXPECT_TRUE(storage_->Set("foobar", *byte_value_1_).HasError()); | 317 EXPECT_TRUE(storage_->Set(DEFAULTS, "foobar", *byte_value_1_).HasError()); |
| 313 storage_->Set("a", *byte_value_1_); | 318 storage_->Set(DEFAULTS, "a", *byte_value_1_); |
| 314 settings.Set("a", byte_value_1_->DeepCopy()); | 319 settings.Set("a", byte_value_1_->DeepCopy()); |
| 315 | 320 |
| 316 EXPECT_FALSE(storage_->Set("foobar", *byte_value_1_).HasError()); | 321 EXPECT_FALSE(storage_->Set(DEFAULTS, "foobar", *byte_value_1_).HasError()); |
| 317 settings.Set("foobar", byte_value_1_->DeepCopy()); | 322 settings.Set("foobar", byte_value_1_->DeepCopy()); |
| 318 EXPECT_TRUE(SettingsEqual(settings)); | 323 EXPECT_TRUE(SettingsEqual(settings)); |
| 319 } | 324 } |
| 320 | 325 |
| 321 TEST_F(ExtensionSettingsQuotaTest, SetsOnlyEntirelyCompletedWithByteQuota) { | 326 TEST_F(ExtensionSettingsQuotaTest, SetsOnlyEntirelyCompletedWithByteQuota) { |
| 322 DictionaryValue settings; | 327 DictionaryValue settings; |
| 323 CreateStorage(40, UINT_MAX, UINT_MAX); | 328 CreateStorage(40, UINT_MAX, UINT_MAX); |
| 324 | 329 |
| 325 storage_->Set("a", *byte_value_16_); | 330 storage_->Set(DEFAULTS, "a", *byte_value_16_); |
| 326 settings.Set("a", byte_value_16_->DeepCopy()); | 331 settings.Set("a", byte_value_16_->DeepCopy()); |
| 327 | 332 |
| 328 // The entire change is over quota. | 333 // The entire change is over quota. |
| 329 DictionaryValue to_set; | 334 DictionaryValue to_set; |
| 330 to_set.Set("b", byte_value_16_->DeepCopy()); | 335 to_set.Set("b", byte_value_16_->DeepCopy()); |
| 331 to_set.Set("c", byte_value_16_->DeepCopy()); | 336 to_set.Set("c", byte_value_16_->DeepCopy()); |
| 332 EXPECT_TRUE(storage_->Set(to_set).HasError()); | 337 EXPECT_TRUE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 333 EXPECT_TRUE(SettingsEqual(settings)); | 338 EXPECT_TRUE(SettingsEqual(settings)); |
| 334 | 339 |
| 335 // The entire change is over quota, but quota reduced in existing key. | 340 // The entire change is over quota, but quota reduced in existing key. |
| 336 to_set.Set("a", byte_value_1_->DeepCopy()); | 341 to_set.Set("a", byte_value_1_->DeepCopy()); |
| 337 EXPECT_FALSE(storage_->Set(to_set).HasError()); | 342 EXPECT_FALSE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 338 settings.Set("a", byte_value_1_->DeepCopy()); | 343 settings.Set("a", byte_value_1_->DeepCopy()); |
| 339 settings.Set("b", byte_value_16_->DeepCopy()); | 344 settings.Set("b", byte_value_16_->DeepCopy()); |
| 340 settings.Set("c", byte_value_16_->DeepCopy()); | 345 settings.Set("c", byte_value_16_->DeepCopy()); |
| 341 EXPECT_TRUE(SettingsEqual(settings)); | 346 EXPECT_TRUE(SettingsEqual(settings)); |
| 342 } | 347 } |
| 343 | 348 |
| 344 TEST_F(ExtensionSettingsQuotaTest, SetsOnlyEntireCompletedWithMaxKeys) { | 349 TEST_F(ExtensionSettingsQuotaTest, SetsOnlyEntireCompletedWithMaxKeys) { |
| 345 DictionaryValue settings; | 350 DictionaryValue settings; |
| 346 CreateStorage(UINT_MAX, UINT_MAX, 2); | 351 CreateStorage(UINT_MAX, UINT_MAX, 2); |
| 347 | 352 |
| 348 storage_->Set("a", *byte_value_1_); | 353 storage_->Set(DEFAULTS, "a", *byte_value_1_); |
| 349 settings.Set("a", byte_value_1_->DeepCopy()); | 354 settings.Set("a", byte_value_1_->DeepCopy()); |
| 350 | 355 |
| 351 DictionaryValue to_set; | 356 DictionaryValue to_set; |
| 352 to_set.Set("b", byte_value_16_->DeepCopy()); | 357 to_set.Set("b", byte_value_16_->DeepCopy()); |
| 353 to_set.Set("c", byte_value_16_->DeepCopy()); | 358 to_set.Set("c", byte_value_16_->DeepCopy()); |
| 354 EXPECT_TRUE(storage_->Set(to_set).HasError()); | 359 EXPECT_TRUE(storage_->Set(DEFAULTS, to_set).HasError()); |
| 355 EXPECT_TRUE(SettingsEqual(settings)); | 360 EXPECT_TRUE(SettingsEqual(settings)); |
| 356 } | 361 } |
| 357 | 362 |
| 358 TEST_F(ExtensionSettingsQuotaTest, WithInitialDataAndByteQuota) { | 363 TEST_F(ExtensionSettingsQuotaTest, WithInitialDataAndByteQuota) { |
| 359 DictionaryValue settings; | 364 DictionaryValue settings; |
| 360 delegate_->Set("a", *byte_value_256_); | 365 delegate_->Set(DEFAULTS, "a", *byte_value_256_); |
| 361 settings.Set("a", byte_value_256_->DeepCopy()); | 366 settings.Set("a", byte_value_256_->DeepCopy()); |
| 362 | 367 |
| 363 CreateStorage(280, UINT_MAX, UINT_MAX); | 368 CreateStorage(280, UINT_MAX, UINT_MAX); |
| 364 EXPECT_TRUE(SettingsEqual(settings)); | 369 EXPECT_TRUE(SettingsEqual(settings)); |
| 365 | 370 |
| 366 // Add some data. | 371 // Add some data. |
| 367 EXPECT_FALSE(storage_->Set("b", *byte_value_16_).HasError()); | 372 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
| 368 settings.Set("b", byte_value_16_->DeepCopy()); | 373 settings.Set("b", byte_value_16_->DeepCopy()); |
| 369 EXPECT_TRUE(SettingsEqual(settings)); | 374 EXPECT_TRUE(SettingsEqual(settings)); |
| 370 | 375 |
| 371 // Not enough quota. | 376 // Not enough quota. |
| 372 EXPECT_TRUE(storage_->Set("c", *byte_value_16_).HasError()); | 377 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
| 373 EXPECT_TRUE(SettingsEqual(settings)); | 378 EXPECT_TRUE(SettingsEqual(settings)); |
| 374 | 379 |
| 375 // Reduce usage of original setting so that "c" can fit. | 380 // Reduce usage of original setting so that "c" can fit. |
| 376 EXPECT_FALSE(storage_->Set("a", *byte_value_16_).HasError()); | 381 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_16_).HasError()); |
| 377 settings.Set("a", byte_value_16_->DeepCopy()); | 382 settings.Set("a", byte_value_16_->DeepCopy()); |
| 378 EXPECT_TRUE(SettingsEqual(settings)); | 383 EXPECT_TRUE(SettingsEqual(settings)); |
| 379 | 384 |
| 380 EXPECT_FALSE(storage_->Set("c", *byte_value_16_).HasError()); | 385 EXPECT_FALSE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
| 381 settings.Set("c", byte_value_16_->DeepCopy()); | 386 settings.Set("c", byte_value_16_->DeepCopy()); |
| 382 EXPECT_TRUE(SettingsEqual(settings)); | 387 EXPECT_TRUE(SettingsEqual(settings)); |
| 383 | 388 |
| 384 // Remove to free up some more data. | 389 // Remove to free up some more data. |
| 385 EXPECT_TRUE(storage_->Set("d", *byte_value_256_).HasError()); | 390 EXPECT_TRUE(storage_->Set(DEFAULTS, "d", *byte_value_256_).HasError()); |
| 386 | 391 |
| 387 std::vector<std::string> to_remove; | 392 std::vector<std::string> to_remove; |
| 388 to_remove.push_back("a"); | 393 to_remove.push_back("a"); |
| 389 to_remove.push_back("b"); | 394 to_remove.push_back("b"); |
| 390 storage_->Remove(to_remove); | 395 storage_->Remove(DEFAULTS, to_remove); |
| 391 settings.Remove("a", NULL); | 396 settings.Remove("a", NULL); |
| 392 settings.Remove("b", NULL); | 397 settings.Remove("b", NULL); |
| 393 EXPECT_TRUE(SettingsEqual(settings)); | 398 EXPECT_TRUE(SettingsEqual(settings)); |
| 394 | 399 |
| 395 EXPECT_FALSE(storage_->Set("d", *byte_value_256_).HasError()); | 400 EXPECT_FALSE(storage_->Set(DEFAULTS, "d", *byte_value_256_).HasError()); |
| 396 settings.Set("d", byte_value_256_->DeepCopy()); | 401 settings.Set("d", byte_value_256_->DeepCopy()); |
| 397 EXPECT_TRUE(SettingsEqual(settings)); | 402 EXPECT_TRUE(SettingsEqual(settings)); |
| 398 } | 403 } |
| 399 | 404 |
| 400 TEST_F(ExtensionSettingsQuotaTest, WithInitialDataAndMaxKeys) { | 405 TEST_F(ExtensionSettingsQuotaTest, WithInitialDataAndMaxKeys) { |
| 401 DictionaryValue settings; | 406 DictionaryValue settings; |
| 402 delegate_->Set("a", *byte_value_1_); | 407 delegate_->Set(DEFAULTS, "a", *byte_value_1_); |
| 403 settings.Set("a", byte_value_1_->DeepCopy()); | 408 settings.Set("a", byte_value_1_->DeepCopy()); |
| 404 CreateStorage(UINT_MAX, UINT_MAX, 2); | 409 CreateStorage(UINT_MAX, UINT_MAX, 2); |
| 405 | 410 |
| 406 EXPECT_FALSE(storage_->Set("b", *byte_value_1_).HasError()); | 411 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
| 407 settings.Set("b", byte_value_1_->DeepCopy()); | 412 settings.Set("b", byte_value_1_->DeepCopy()); |
| 408 | 413 |
| 409 EXPECT_TRUE(storage_->Set("c", *byte_value_1_).HasError()); | 414 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_1_).HasError()); |
| 410 | 415 |
| 411 EXPECT_TRUE(SettingsEqual(settings)); | 416 EXPECT_TRUE(SettingsEqual(settings)); |
| 412 } | 417 } |
| 413 | 418 |
| 414 TEST_F(ExtensionSettingsQuotaTest, InitiallyOverByteQuota) { | 419 TEST_F(ExtensionSettingsQuotaTest, InitiallyOverByteQuota) { |
| 415 DictionaryValue settings; | 420 DictionaryValue settings; |
| 416 settings.Set("a", byte_value_16_->DeepCopy()); | 421 settings.Set("a", byte_value_16_->DeepCopy()); |
| 417 settings.Set("b", byte_value_16_->DeepCopy()); | 422 settings.Set("b", byte_value_16_->DeepCopy()); |
| 418 settings.Set("c", byte_value_16_->DeepCopy()); | 423 settings.Set("c", byte_value_16_->DeepCopy()); |
| 419 delegate_->Set(settings); | 424 delegate_->Set(DEFAULTS, settings); |
| 420 | 425 |
| 421 CreateStorage(40, UINT_MAX, UINT_MAX); | 426 CreateStorage(40, UINT_MAX, UINT_MAX); |
| 422 EXPECT_TRUE(SettingsEqual(settings)); | 427 EXPECT_TRUE(SettingsEqual(settings)); |
| 423 | 428 |
| 424 EXPECT_TRUE(storage_->Set("d", *byte_value_16_).HasError()); | 429 EXPECT_TRUE(storage_->Set(DEFAULTS, "d", *byte_value_16_).HasError()); |
| 425 | 430 |
| 426 // Take under quota by reducing size of an existing setting | 431 // Take under quota by reducing size of an existing setting |
| 427 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 432 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 428 settings.Set("a", byte_value_1_->DeepCopy()); | 433 settings.Set("a", byte_value_1_->DeepCopy()); |
| 429 EXPECT_TRUE(SettingsEqual(settings)); | 434 EXPECT_TRUE(SettingsEqual(settings)); |
| 430 | 435 |
| 431 // Should be able set another small setting. | 436 // Should be able set another small setting. |
| 432 EXPECT_FALSE(storage_->Set("d", *byte_value_1_).HasError()); | 437 EXPECT_FALSE(storage_->Set(DEFAULTS, "d", *byte_value_1_).HasError()); |
| 433 settings.Set("d", byte_value_1_->DeepCopy()); | 438 settings.Set("d", byte_value_1_->DeepCopy()); |
| 434 EXPECT_TRUE(SettingsEqual(settings)); | 439 EXPECT_TRUE(SettingsEqual(settings)); |
| 435 } | 440 } |
| 436 | 441 |
| 437 TEST_F(ExtensionSettingsQuotaTest, InitiallyOverMaxKeys) { | 442 TEST_F(ExtensionSettingsQuotaTest, InitiallyOverMaxKeys) { |
| 438 DictionaryValue settings; | 443 DictionaryValue settings; |
| 439 settings.Set("a", byte_value_16_->DeepCopy()); | 444 settings.Set("a", byte_value_16_->DeepCopy()); |
| 440 settings.Set("b", byte_value_16_->DeepCopy()); | 445 settings.Set("b", byte_value_16_->DeepCopy()); |
| 441 settings.Set("c", byte_value_16_->DeepCopy()); | 446 settings.Set("c", byte_value_16_->DeepCopy()); |
| 442 delegate_->Set(settings); | 447 delegate_->Set(DEFAULTS, settings); |
| 443 | 448 |
| 444 CreateStorage(UINT_MAX, UINT_MAX, 2); | 449 CreateStorage(UINT_MAX, UINT_MAX, 2); |
| 445 EXPECT_TRUE(SettingsEqual(settings)); | 450 EXPECT_TRUE(SettingsEqual(settings)); |
| 446 | 451 |
| 447 // Can't set either an existing or new setting. | 452 // Can't set either an existing or new setting. |
| 448 EXPECT_TRUE(storage_->Set("d", *byte_value_16_).HasError()); | 453 EXPECT_TRUE(storage_->Set(DEFAULTS, "d", *byte_value_16_).HasError()); |
| 449 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 454 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 450 EXPECT_TRUE(SettingsEqual(settings)); | 455 EXPECT_TRUE(SettingsEqual(settings)); |
| 451 | 456 |
| 452 // Should be able after removing 2. | 457 // Should be able after removing 2. |
| 453 storage_->Remove("a"); | 458 storage_->Remove(DEFAULTS, "a"); |
| 454 settings.Remove("a", NULL); | 459 settings.Remove("a", NULL); |
| 455 storage_->Remove("b"); | 460 storage_->Remove(DEFAULTS, "b"); |
| 456 settings.Remove("b", NULL); | 461 settings.Remove("b", NULL); |
| 457 EXPECT_TRUE(SettingsEqual(settings)); | 462 EXPECT_TRUE(SettingsEqual(settings)); |
| 458 | 463 |
| 459 EXPECT_FALSE(storage_->Set("e", *byte_value_1_).HasError()); | 464 EXPECT_FALSE(storage_->Set(DEFAULTS, "e", *byte_value_1_).HasError()); |
| 460 settings.Set("e", byte_value_1_->DeepCopy()); | 465 settings.Set("e", byte_value_1_->DeepCopy()); |
| 461 EXPECT_TRUE(SettingsEqual(settings)); | 466 EXPECT_TRUE(SettingsEqual(settings)); |
| 462 | 467 |
| 463 // Still can't set any. | 468 // Still can't set any. |
| 464 EXPECT_TRUE(storage_->Set("d", *byte_value_16_).HasError()); | 469 EXPECT_TRUE(storage_->Set(DEFAULTS, "d", *byte_value_16_).HasError()); |
| 465 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 470 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 466 EXPECT_TRUE(SettingsEqual(settings)); | 471 EXPECT_TRUE(SettingsEqual(settings)); |
| 467 } | 472 } |
| 468 | 473 |
| 469 TEST_F(ExtensionSettingsQuotaTest, ZeroQuotaBytesPerSetting) { | 474 TEST_F(ExtensionSettingsQuotaTest, ZeroQuotaBytesPerSetting) { |
| 470 DictionaryValue empty; | 475 DictionaryValue empty; |
| 471 CreateStorage(UINT_MAX, 0, UINT_MAX); | 476 CreateStorage(UINT_MAX, 0, UINT_MAX); |
| 472 | 477 |
| 473 EXPECT_TRUE(storage_->Set("a", *byte_value_1_).HasError()); | 478 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 474 EXPECT_FALSE(storage_->Remove("a").HasError()); | 479 EXPECT_FALSE(storage_->Remove(DEFAULTS, "a").HasError()); |
| 475 EXPECT_FALSE(storage_->Remove("b").HasError()); | 480 EXPECT_FALSE(storage_->Remove(DEFAULTS, "b").HasError()); |
| 476 EXPECT_TRUE(SettingsEqual(empty)); | 481 EXPECT_TRUE(SettingsEqual(empty)); |
| 477 } | 482 } |
| 478 | 483 |
| 479 TEST_F(ExtensionSettingsQuotaTest, QuotaBytesPerSetting) { | 484 TEST_F(ExtensionSettingsQuotaTest, QuotaBytesPerSetting) { |
| 480 DictionaryValue settings; | 485 DictionaryValue settings; |
| 481 | 486 |
| 482 CreateStorage(UINT_MAX, 20, UINT_MAX); | 487 CreateStorage(UINT_MAX, 20, UINT_MAX); |
| 483 | 488 |
| 484 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 489 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 485 EXPECT_FALSE(storage_->Set("a", *byte_value_16_).HasError()); | 490 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_16_).HasError()); |
| 486 settings.Set("a", byte_value_16_->DeepCopy()); | 491 settings.Set("a", byte_value_16_->DeepCopy()); |
| 487 EXPECT_TRUE(storage_->Set("a", *byte_value_256_).HasError()); | 492 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_256_).HasError()); |
| 488 | 493 |
| 489 EXPECT_FALSE(storage_->Set("b", *byte_value_1_).HasError()); | 494 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
| 490 EXPECT_FALSE(storage_->Set("b", *byte_value_16_).HasError()); | 495 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
| 491 settings.Set("b", byte_value_16_->DeepCopy()); | 496 settings.Set("b", byte_value_16_->DeepCopy()); |
| 492 EXPECT_TRUE(storage_->Set("b", *byte_value_256_).HasError()); | 497 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_256_).HasError()); |
| 493 | 498 |
| 494 EXPECT_TRUE(SettingsEqual(settings)); | 499 EXPECT_TRUE(SettingsEqual(settings)); |
| 495 } | 500 } |
| 496 | 501 |
| 497 TEST_F(ExtensionSettingsQuotaTest, QuotaBytesPerSettingWithInitialSettings) { | 502 TEST_F(ExtensionSettingsQuotaTest, QuotaBytesPerSettingWithInitialSettings) { |
| 498 DictionaryValue settings; | 503 DictionaryValue settings; |
| 499 | 504 |
| 500 delegate_->Set("a", *byte_value_1_); | 505 delegate_->Set(DEFAULTS, "a", *byte_value_1_); |
| 501 delegate_->Set("b", *byte_value_16_); | 506 delegate_->Set(DEFAULTS, "b", *byte_value_16_); |
| 502 delegate_->Set("c", *byte_value_256_); | 507 delegate_->Set(DEFAULTS, "c", *byte_value_256_); |
| 503 CreateStorage(UINT_MAX, 20, UINT_MAX); | 508 CreateStorage(UINT_MAX, 20, UINT_MAX); |
| 504 | 509 |
| 505 EXPECT_FALSE(storage_->Set("a", *byte_value_1_).HasError()); | 510 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_1_).HasError()); |
| 506 EXPECT_FALSE(storage_->Set("a", *byte_value_16_).HasError()); | 511 EXPECT_FALSE(storage_->Set(DEFAULTS, "a", *byte_value_16_).HasError()); |
| 507 settings.Set("a", byte_value_16_->DeepCopy()); | 512 settings.Set("a", byte_value_16_->DeepCopy()); |
| 508 EXPECT_TRUE(storage_->Set("a", *byte_value_256_).HasError()); | 513 EXPECT_TRUE(storage_->Set(DEFAULTS, "a", *byte_value_256_).HasError()); |
| 509 | 514 |
| 510 EXPECT_FALSE(storage_->Set("b", *byte_value_1_).HasError()); | 515 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_1_).HasError()); |
| 511 EXPECT_FALSE(storage_->Set("b", *byte_value_16_).HasError()); | 516 EXPECT_FALSE(storage_->Set(DEFAULTS, "b", *byte_value_16_).HasError()); |
| 512 settings.Set("b", byte_value_16_->DeepCopy()); | 517 settings.Set("b", byte_value_16_->DeepCopy()); |
| 513 EXPECT_TRUE(storage_->Set("b", *byte_value_256_).HasError()); | 518 EXPECT_TRUE(storage_->Set(DEFAULTS, "b", *byte_value_256_).HasError()); |
| 514 | 519 |
| 515 EXPECT_FALSE(storage_->Set("c", *byte_value_1_).HasError()); | 520 EXPECT_FALSE(storage_->Set(DEFAULTS, "c", *byte_value_1_).HasError()); |
| 516 EXPECT_FALSE(storage_->Set("c", *byte_value_16_).HasError()); | 521 EXPECT_FALSE(storage_->Set(DEFAULTS, "c", *byte_value_16_).HasError()); |
| 517 settings.Set("c", byte_value_16_->DeepCopy()); | 522 settings.Set("c", byte_value_16_->DeepCopy()); |
| 518 EXPECT_TRUE(storage_->Set("c", *byte_value_256_).HasError()); | 523 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); |
| 519 | 524 |
| 520 EXPECT_TRUE(SettingsEqual(settings)); | 525 EXPECT_TRUE(SettingsEqual(settings)); |
| 521 } | 526 } |
| 527 | |
| 528 TEST_F(ExtensionSettingsQuotaTest, | |
| 529 QuotaBytesPerSettingWithInitialSettingsForced) { | |
|
not at google - send to devlin
2011/11/17 07:02:53
Change #1: a test.
| |
| 530 // This is a lazy test to make sure FORCE lets through changes: the test above | |
| 531 // copied, but using FORCE and asserting nothing is ever rejected... | |
| 532 DictionaryValue settings; | |
| 533 | |
| 534 delegate_->Set(DEFAULTS, "a", *byte_value_1_); | |
| 535 delegate_->Set(DEFAULTS, "b", *byte_value_16_); | |
| 536 delegate_->Set(DEFAULTS, "c", *byte_value_256_); | |
| 537 CreateStorage(UINT_MAX, 20, UINT_MAX); | |
| 538 | |
| 539 EXPECT_FALSE(storage_->Set(FORCE, "a", *byte_value_1_).HasError()); | |
| 540 EXPECT_FALSE(storage_->Set(FORCE, "a", *byte_value_16_).HasError()); | |
| 541 EXPECT_FALSE(storage_->Set(FORCE, "a", *byte_value_256_).HasError()); | |
| 542 settings.Set("a", byte_value_256_->DeepCopy()); | |
| 543 | |
| 544 EXPECT_FALSE(storage_->Set(FORCE, "b", *byte_value_1_).HasError()); | |
| 545 EXPECT_FALSE(storage_->Set(FORCE, "b", *byte_value_16_).HasError()); | |
| 546 EXPECT_FALSE(storage_->Set(FORCE, "b", *byte_value_256_).HasError()); | |
| 547 settings.Set("b", byte_value_256_->DeepCopy()); | |
| 548 | |
| 549 EXPECT_FALSE(storage_->Set(FORCE, "c", *byte_value_1_).HasError()); | |
| 550 EXPECT_FALSE(storage_->Set(FORCE, "c", *byte_value_16_).HasError()); | |
| 551 settings.Set("c", byte_value_16_->DeepCopy()); | |
| 552 | |
| 553 // ... except the last. Make sure it can still fail. | |
| 554 EXPECT_TRUE(storage_->Set(DEFAULTS, "c", *byte_value_256_).HasError()); | |
| 555 | |
| 556 EXPECT_TRUE(SettingsEqual(settings)); | |
| 557 } | |
| 522 | 558 |
| 523 } // namespace extensions | 559 } // namespace extensions |
| OLD | NEW |