OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "extensions/browser/api/declarative_webrequest/webrequest_condition_att
ribute.h" | 5 #include "extensions/browser/api/declarative_webrequest/webrequest_condition_att
ribute.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 const size_t length = array.size(); | 378 const size_t length = array.size(); |
379 CHECK(length % 2 == 0); | 379 CHECK(length % 2 == 0); |
380 | 380 |
381 std::unique_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue); | 381 std::unique_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue); |
382 for (size_t i = 0; i < length; i += 2) { | 382 for (size_t i = 0; i < length; i += 2) { |
383 const std::string* name = array[i]; | 383 const std::string* name = array[i]; |
384 const std::string* value = array[i+1]; | 384 const std::string* value = array[i+1]; |
385 if (dictionary->HasKey(*name)) { | 385 if (dictionary->HasKey(*name)) { |
386 base::Value* entry = NULL; | 386 base::Value* entry = NULL; |
387 std::unique_ptr<base::Value> entry_owned; | 387 std::unique_ptr<base::Value> entry_owned; |
388 base::ListValue* list = NULL; | 388 std::unique_ptr<base::ListValue> list; |
389 if (!dictionary->GetWithoutPathExpansion(*name, &entry)) | 389 if (!dictionary->GetWithoutPathExpansion(*name, &entry)) |
390 return std::unique_ptr<base::DictionaryValue>(); | 390 return std::unique_ptr<base::DictionaryValue>(); |
391 switch (entry->GetType()) { | 391 switch (entry->GetType()) { |
392 case base::Value::Type::STRING: | 392 case base::Value::Type::STRING: |
393 // Replace the present string with a list. | 393 // Replace the present string with a list. |
394 list = new base::ListValue; | 394 list = base::MakeUnique<base::ListValue>(); |
395 // Ignoring return value, we already verified the entry is there. | 395 // Ignoring return value, we already verified the entry is there. |
396 dictionary->RemoveWithoutPathExpansion(*name, &entry_owned); | 396 dictionary->RemoveWithoutPathExpansion(*name, &entry_owned); |
397 list->Append(std::move(entry_owned)); | 397 list->Append(std::move(entry_owned)); |
398 list->AppendString(*value); | 398 list->AppendString(*value); |
399 dictionary->SetWithoutPathExpansion(*name, base::WrapUnique(list)); | 399 dictionary->SetWithoutPathExpansion(*name, std::move(list)); |
400 break; | 400 break; |
401 case base::Value::Type::LIST: // Just append to the list. | 401 case base::Value::Type::LIST: // Just append to the list. |
402 CHECK(entry->GetAsList(&list)); | 402 entry->GetList().emplace_back(*value); |
403 list->AppendString(*value); | |
404 break; | 403 break; |
405 default: | 404 default: |
406 NOTREACHED(); // We never put other Values here. | 405 NOTREACHED(); // We never put other Values here. |
407 return std::unique_ptr<base::DictionaryValue>(); | 406 return std::unique_ptr<base::DictionaryValue>(); |
408 } | 407 } |
409 } else { | 408 } else { |
410 dictionary->SetString(*name, *value); | 409 dictionary->SetString(*name, *value); |
411 } | 410 } |
412 } | 411 } |
413 return dictionary; | 412 return dictionary; |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 }; | 718 }; |
720 const size_t kExistingSize[] = { arraysize(kExisting) }; | 719 const size_t kExistingSize[] = { arraysize(kExisting) }; |
721 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests); | 720 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests); |
722 MatchAndCheck(tests, keys::kExcludeResponseHeadersKey, stage, | 721 MatchAndCheck(tests, keys::kExcludeResponseHeadersKey, stage, |
723 url_request.get(), &result); | 722 url_request.get(), &result); |
724 EXPECT_FALSE(result); | 723 EXPECT_FALSE(result); |
725 } | 724 } |
726 | 725 |
727 } // namespace | 726 } // namespace |
728 } // namespace extensions | 727 } // namespace extensions |
OLD | NEW |