From df600cdcab705df0e7a43823c1bca99924542cb4 Mon Sep 17 00:00:00 2001 From: rouslan Date: Tue, 11 Apr 2017 07:58:00 -0700 Subject: [PATCH] Revert of Change base::Value::ListStorage to std::vector (patchset #14 id:260001 of https://codereview.chromium.org/2740143002/ ) Reason for revert: Appears to have broken compile on ChromeOS. Needs a rebase? FAILED: obj/extensions/browser/api/networking_private/networking_private/networking_private_chromeos.o In file included from ../../extensions/browser/api/networking_private/networking_private_chromeos.cc:21: In file included from ../../chromeos/network/network_connection_handler.h:18: In file included from ../../chromeos/cert_loader.h:18: In file included from ../../net/cert/cert_database.h:13: ../../net/cert/x509_certificate.h:22:10: fatal error: 'net/net_features.h' file not found #include "net/net_features.h" ^~~~~~~~~~~~~~~~~~~~ 1 error generated. https://build.chromium.org/p/chromium.chrome/builders/Google%20Chrome%20ChromeOS/builds/32152 Original issue's description: > Change base::Value::ListStorage to std::vector > > This CL is a first step to inlining base::ListValue. It is proposed to use an > std::vector as the underlying ListStorage. This CL implements the > change and updates the code accordingly. > > TBR=bajones@chromium.org, dbeam@chromium.org, stevenjb@chromium.org > BUG=646113 > CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel > > Review-Url: https://codereview.chromium.org/2740143002 > Cr-Commit-Position: refs/heads/master@{#463618} > Committed: https://chromium.googlesource.com/chromium/src/+/ebab0defaea3aed024283a64088ebc0cd352b47f TBR=brettw@chromium.org,rdevlin.cronin@chromium.org,flackr@chromium.org,skym@chromium.org,rsesek@chromium.org,bajones@chromium.org,dbeam@chromium.org,stevenjb@chromium.org,jdoerrie@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=646113 Review-Url: https://codereview.chromium.org/2816513002 Cr-Commit-Position: refs/heads/master@{#463630} --- base/json/json_writer.cc | 4 +- base/test/gtest_util.cc | 2 +- base/trace_event/trace_event_argument.cc | 11 +- .../trace_event_memory_overhead.cc | 2 +- base/values.cc | 97 +++++---- base/values.h | 8 +- base/values_unittest.cc | 6 +- cc/test/layer_tree_json_parser.cc | 2 +- .../bookmarks/partner_bookmarks_shim.cc | 2 +- .../browser/android/vr_shell/gltf_parser.cc | 8 +- chrome/browser/android/vr_shell/ui_scene.cc | 2 +- chrome/browser/chrome_browser_main.cc | 4 +- .../browser/chrome_content_browser_client.cc | 2 +- .../app_mode/arc/arc_kiosk_app_manager.cc | 2 +- .../chromeos/arc/policy/arc_policy_bridge.cc | 4 +- ...ocal_account_management_policy_provider.cc | 4 +- .../quick_unlock_private_api_unittest.cc | 9 +- .../chromeos/file_system_provider/registry.cc | 2 +- .../easy_unlock/easy_unlock_key_manager.cc | 2 +- .../screens/chrome_user_selection_screen.cc | 2 +- .../owner_settings_service_chromeos.cc | 6 +- .../chromeos/platform_keys/key_permissions.cc | 11 +- .../configuration_policy_handler_chromeos.cc | 2 +- .../network_configuration_updater_unittest.cc | 2 +- .../chromeos/printing/printers_manager.cc | 2 +- .../chromeos/settings/cros_settings.cc | 2 +- .../sw_reporter_installer_win.cc | 4 +- .../chrome_devtools_manager_delegate.cc | 6 +- .../device/devtools_device_discovery.cc | 4 +- .../devtools_embedder_message_dispatcher.cc | 3 +- chrome/browser/devtools/devtools_window.cc | 2 +- .../content_settings_store.cc | 4 +- .../api/declarative_content/content_action.cc | 2 +- .../webrequest_action_unittest.cc | 2 +- .../api/font_settings/font_settings_api.cc | 2 +- .../api/identity/identity_apitest.cc | 6 +- .../native_messaging_host_manifest.cc | 2 +- .../native_messaging_policy_handler.cc | 2 +- .../extensions/extension_management.cc | 10 +- .../extensions/extension_override_apitest.cc | 2 +- chrome/browser/extensions/extension_web_ui.cc | 35 ++-- chrome/browser/extensions/install_signer.cc | 2 +- chrome/browser/extensions/menu_manager.cc | 9 +- chrome/browser/extensions/policy_handlers.cc | 6 +- .../extensions/webstore_inline_installer.cc | 2 +- .../webstore_inline_installer_browsertest.cc | 2 +- .../log_sources/chrome_internal_log_source.cc | 2 +- .../chromeos_login_media_access_handler.cc | 2 +- .../webrtc_getmediadevices_browsertest.cc | 2 +- .../media_galleries_preferences.cc | 24 +-- .../media_galleries_preferences_unittest.cc | 2 +- .../metrics/plugin_metrics_provider.cc | 8 +- chrome/browser/net/predictor.cc | 5 +- chrome/browser/net/predictor_unittest.cc | 2 - .../permissions/chooser_context_base.cc | 7 +- chrome/browser/plugins/plugin_finder.cc | 6 +- .../browser/plugins/plugin_finder_unittest.cc | 8 +- chrome/browser/plugins/plugin_prefs.cc | 4 +- .../managed_bookmarks_policy_handler.cc | 5 +- .../policy/policy_prefs_browsertest.cc | 2 +- ...chrome_command_line_pref_store_unittest.cc | 2 +- .../cloud_print/cloud_print_printer_list.cc | 4 +- .../profile_resetter_unittest.cc | 2 +- chrome/browser/profiles/profile_manager.cc | 14 +- .../spellchecker/spellcheck_service.cc | 4 +- .../spellcheck_service_browsertest.cc | 2 +- .../child_accounts/family_info_fetcher.cc | 4 +- .../supervised_user_site_list.cc | 2 +- .../test/integration/preferences_helper.cc | 4 +- .../search/webstore/webstore_provider.cc | 2 +- .../ui/webui/browsing_history_handler.cc | 11 +- .../ui/webui/certificate_viewer_webui.cc | 186 ++++++++---------- .../device_emulator_message_handler.cc | 2 +- .../ui/webui/chromeos/login/l10n_util.cc | 4 +- .../chromeos/login/signin_screen_handler.cc | 2 +- .../downloads_list_tracker_unittest.cc | 2 +- .../options/certificate_manager_handler.cc | 7 +- .../chromeos/core_chromeos_options_handler.cc | 2 +- .../chromeos/display_options_handler.cc | 2 +- .../webui/options/content_settings_handler.cc | 4 +- .../language_options_handler_common.cc | 2 +- .../ui/webui/settings/certificates_handler.cc | 11 +- .../browser/ui/webui/site_settings_helper.cc | 2 +- .../api/common_extension_api_unittest.cc | 2 +- .../api/extension_action/action_info.cc | 3 +- .../file_browser_handler.cc | 4 +- .../api/url_handlers/url_handlers_parser.cc | 2 +- .../manifest_handlers/linked_app_icons.cc | 2 +- .../cloud_print/printer_job_queue_handler.cc | 2 +- .../chromedriver/chrome/network_conditions.cc | 2 +- chrome/test/chromedriver/logging.cc | 4 +- .../test/chromedriver/performance_logger.cc | 4 +- chrome/utility/importer/nss_decryptor.cc | 4 +- chromecast/crash/linux/crash_testing_utils.cc | 4 +- .../linux/synchronized_minidump_manager.cc | 4 +- chromeos/dbus/fake_shill_manager_client.cc | 6 +- chromeos/dbus/shill_client_helper.cc | 2 +- chromeos/dbus/shill_ipconfig_client.cc | 6 +- chromeos/network/geolocation_handler.cc | 2 +- ...aged_network_configuration_handler_impl.cc | 4 +- chromeos/network/network_sms_handler.cc | 6 +- chromeos/network/network_state_handler.cc | 2 +- chromeos/network/network_util.cc | 2 +- .../onc/onc_certificate_importer_impl.cc | 2 +- chromeos/network/onc/onc_mapper.cc | 7 +- chromeos/network/onc/onc_merger.cc | 2 +- .../onc/onc_translator_shill_to_onc.cc | 2 +- chromeos/network/onc/onc_utils.cc | 22 +-- chromeos/network/onc/onc_utils_unittest.cc | 6 +- chromeos/network/onc/onc_validator.cc | 4 +- chromeos/network/policy_applicator.cc | 2 +- .../prohibited_technologies_handler.cc | 2 +- chromeos/network/shill_property_handler.cc | 12 +- .../shill_property_handler_unittest.cc | 2 +- chromeos/printing/ppd_provider.cc | 12 +- chromeos/system/statistics_provider.cc | 2 +- components/arc/net/arc_net_host_impl.cc | 6 +- .../content/browser/risk/fingerprint.cc | 2 +- .../core/browser/autofill_address_util.cc | 2 - .../bookmark_expanded_state_tracker.cc | 2 +- .../data_reduction_proxy_event_store.cc | 2 +- .../error_page/common/localized_error.cc | 3 - .../flags_ui/pref_service_flags_storage.cc | 2 +- .../click_based_category_ranker.cc | 6 +- .../content_suggestions_service.cc | 6 +- components/ntp_snippets/pref_util.cc | 4 +- .../ntp_snippets/remote/remote_suggestion.cc | 4 +- .../remote/remote_suggestions_fetcher.cc | 4 +- .../remote_suggestions_provider_impl.cc | 12 +- .../browser/configuration_policy_handler.cc | 2 +- .../browser/url_blacklist_policy_handler.cc | 6 +- .../policy/core/common/policy_loader_win.cc | 2 +- .../core/common/policy_loader_win_unittest.cc | 2 +- .../policy/core/common/policy_test_utils.cc | 2 +- .../policy/core/common/registry_dict.cc | 2 +- components/policy/core/common/schema.cc | 9 +- components/prefs/pref_member.cc | 2 +- .../search_engines/template_url_data_util.cc | 4 +- .../core/browser/account_tracker_service.cc | 4 +- .../ssl_config_service_manager_pref.cc | 2 +- components/sync/driver/about_sync_util.cc | 62 ------ components/sync/syncable/model_type.cc | 2 +- .../test/fake_server/fake_server_verifier.cc | 2 +- .../sync_preferences/pref_model_associator.cc | 2 +- .../translate/core/browser/translate_prefs.cc | 3 +- components/update_client/component_patcher.cc | 2 +- components/url_matcher/url_matcher_factory.cc | 6 +- .../accessibility_tree_formatter_auralinux.cc | 2 +- .../accessibility_tree_formatter_win.cc | 2 +- .../java/gin_java_method_invocation_helper.cc | 10 +- .../browsing_data/clear_site_data_throttle.cc | 6 +- .../devtools/protocol/tracing_handler.cc | 2 +- .../tracing/background_tracing_config_impl.cc | 4 +- .../webrtc/webrtc_getusermedia_browsertest.cc | 4 +- content/browser/webrtc/webrtc_internals.cc | 4 +- .../webrtc/webrtc_internals_unittest.cc | 10 +- content/renderer/gpu/actions_parser.cc | 4 +- content/test/fuzzer/renderer_tree_fuzzer.cc | 2 +- dbus/values_util.cc | 2 +- .../api/declarative/declarative_api.cc | 10 +- .../webrequest_condition_attribute.cc | 8 +- .../browser/api/device_permissions_manager.cc | 2 +- .../networking_private_api.cc | 2 +- .../networking_private_chromeos.cc | 4 +- .../networking_private_linux.cc | 4 +- extensions/browser/api/storage/storage_api.cc | 2 +- .../system_network_api_unittest.cc | 2 +- extensions/browser/extension_prefs.cc | 2 +- extensions/browser/verified_contents.cc | 18 +- .../declarative/declarative_manifest_data.cc | 4 +- .../common/extension_l10n_util_unittest.cc | 5 +- .../action_handlers_handler.cc | 4 +- .../manifest_handlers/kiosk_mode_info.cc | 2 +- .../manifest_handlers/requirements_info.cc | 2 +- extensions/renderer/api_binding.cc | 12 +- extensions/renderer/api_event_handler.cc | 2 +- extensions/renderer/api_request_handler.cc | 2 +- extensions/renderer/api_signature.cc | 2 +- extensions/renderer/argument_spec.cc | 2 +- extensions/renderer/dispatcher.cc | 2 +- google_apis/gaia/gaia_auth_fetcher.cc | 2 +- headless/public/internal/value_conversions.h | 2 +- ios/chrome/browser/autofill/autofill_agent.mm | 8 +- ios/web/web_state/ui/crw_web_controller.mm | 2 +- ipc/ipc_message_utils.cc | 4 +- mojo/common/values_struct_traits.h | 2 +- net/http/http_request_headers.cc | 2 +- net/http/http_response_headers.cc | 2 +- net/http/http_server_properties_manager.cc | 4 +- ...http_server_properties_manager_unittest.cc | 2 +- .../spawned_test_server/local_test_server.cc | 2 +- remoting/protocol/http_ice_config_request.cc | 8 +- remoting/test/host_info.cc | 2 +- remoting/test/host_list_fetcher.cc | 4 +- services/catalog/entry.cc | 2 +- tools/gn/command_desc.cc | 2 +- tools/gn/commands.cc | 2 +- tools/json_schema_compiler/cc_generator.py | 13 +- tools/json_schema_compiler/util.h | 4 +- ui/app_list/search/history_data_store.cc | 2 +- ui/display/manager/json_converter.cc | 2 +- 201 files changed, 562 insertions(+), 634 deletions(-) diff --git a/base/json/json_writer.cc b/base/json/json_writer.cc index 19f28f21ada24f..07b9d5091c80f6 100644 --- a/base/json/json_writer.cc +++ b/base/json/json_writer.cc @@ -128,7 +128,7 @@ bool JSONWriter::BuildJSONString(const Value& node, size_t depth) { bool result = node.GetAsList(&list); DCHECK(result); for (const auto& value : *list) { - if (omit_binary_values_ && value.GetType() == Value::Type::BINARY) + if (omit_binary_values_ && value->GetType() == Value::Type::BINARY) continue; if (first_value_has_been_output) { @@ -137,7 +137,7 @@ bool JSONWriter::BuildJSONString(const Value& node, size_t depth) { json_string_->push_back(' '); } - if (!BuildJSONString(value, depth)) + if (!BuildJSONString(*value, depth)) result = false; first_value_has_been_output = true; diff --git a/base/test/gtest_util.cc b/base/test/gtest_util.cc index 1552c1a2500a50..6da902da2e0985 100644 --- a/base/test/gtest_util.cc +++ b/base/test/gtest_util.cc @@ -85,7 +85,7 @@ bool ReadTestNamesFromFile(const FilePath& path, std::vector result; for (base::ListValue::iterator i = tests->begin(); i != tests->end(); ++i) { base::DictionaryValue* test = nullptr; - if (!i->GetAsDictionary(&test)) + if (!(*i)->GetAsDictionary(&test)) return false; TestIdentifier test_data; diff --git a/base/trace_event/trace_event_argument.cc b/base/trace_event/trace_event_argument.cc index 646b1f2168794f..db702b6231e524 100644 --- a/base/trace_event/trace_event_argument.cc +++ b/base/trace_event/trace_event_argument.cc @@ -289,7 +289,7 @@ void TracedValue::SetBaseValueWithCopiedName(base::StringPiece name, value.GetAsList(&list_value); BeginArrayWithCopiedName(name); for (const auto& base_value : *list_value) - AppendBaseValue(base_value); + AppendBaseValue(*base_value); EndArray(); } break; } @@ -343,7 +343,7 @@ void TracedValue::AppendBaseValue(const base::Value& value) { value.GetAsList(&list_value); BeginArray(); for (const auto& base_value : *list_value) - AppendBaseValue(base_value); + AppendBaseValue(*base_value); EndArray(); } break; } @@ -369,11 +369,9 @@ std::unique_ptr TracedValue::ToBaseValue() const { cur_dict = new_dict; } else { cur_list->Append(WrapUnique(new_dict)); - // |new_dict| is invalidated at this point, so |cur_dict| needs to be - // reset. - cur_list->GetDictionary(cur_list->GetSize() - 1, &cur_dict); stack.push_back(cur_list); cur_list = nullptr; + cur_dict = new_dict; } } break; @@ -398,8 +396,7 @@ std::unique_ptr TracedValue::ToBaseValue() const { } else { cur_list->Append(WrapUnique(new_list)); stack.push_back(cur_list); - // |cur_list| is invalidated at this point, so it needs to be reset. - cur_list->GetList(cur_list->GetSize() - 1, &cur_list); + cur_list = new_list; } } break; diff --git a/base/trace_event/trace_event_memory_overhead.cc b/base/trace_event/trace_event_memory_overhead.cc index 99f0240a8be4e9..ffc4c087029694 100644 --- a/base/trace_event/trace_event_memory_overhead.cc +++ b/base/trace_event/trace_event_memory_overhead.cc @@ -105,7 +105,7 @@ void TraceEventMemoryOverhead::AddValue(const Value& value) { value.GetAsList(&list_value); Add("ListValue", sizeof(ListValue)); for (const auto& v : *list_value) - AddValue(v); + AddValue(*v); } break; default: diff --git a/base/values.cc b/base/values.cc index 74e83b9900f560..ca12edcb00cd61 100644 --- a/base/values.cc +++ b/base/values.cc @@ -35,7 +35,7 @@ std::unique_ptr CopyWithoutEmptyChildren(const Value& node); std::unique_ptr CopyListWithoutEmptyChildren(const ListValue& list) { std::unique_ptr copy; for (const auto& entry : list) { - std::unique_ptr child_copy = CopyWithoutEmptyChildren(entry); + std::unique_ptr child_copy = CopyWithoutEmptyChildren(*entry); if (child_copy) { if (!copy) copy.reset(new ListValue); @@ -375,7 +375,12 @@ bool operator==(const Value& lhs, const Value& rhs) { std::tie(v.first, *v.second); }); case Value::Type::LIST: - return *lhs.list_ == *rhs.list_; + if (lhs.list_->size() != rhs.list_->size()) + return false; + return std::equal( + std::begin(*lhs.list_), std::end(*lhs.list_), std::begin(*rhs.list_), + [](const Value::ListStorage::value_type& u, + const Value::ListStorage::value_type& v) { return *u == *v; }); } NOTREACHED(); @@ -414,7 +419,11 @@ bool operator<(const Value& lhs, const Value& rhs) { return std::tie(u.first, *u.second) < std::tie(v.first, *v.second); }); case Value::Type::LIST: - return *lhs.list_ < *rhs.list_; + return std::lexicographical_compare( + std::begin(*lhs.list_), std::end(*lhs.list_), std::begin(*rhs.list_), + std::end(*rhs.list_), + [](const Value::ListStorage::value_type& u, + const Value::ListStorage::value_type& v) { return *u < *v; }); } NOTREACHED(); @@ -485,10 +494,11 @@ void Value::InternalCopyConstructFrom(const Value& that) { case Type::BINARY: binary_value_.Init(*that.binary_value_); return; - // DictStorage is a move-only type due to the presence of unique_ptrs. This - // is why the explicit copy of every element is necessary here. - // TODO(crbug.com/646113): Clean this up when DictStorage can be copied - // directly. + // DictStorage and ListStorage are move-only types due to the presence of + // unique_ptrs. This is why the explicit copy of every element is necessary + // here. + // TODO(crbug.com/646113): Clean this up when DictStorage and ListStorage + // can be copied directly. case Type::DICTIONARY: dict_ptr_.Init(MakeUnique()); for (const auto& it : **that.dict_ptr_) { @@ -498,7 +508,10 @@ void Value::InternalCopyConstructFrom(const Value& that) { } return; case Type::LIST: - list_.Init(*that.list_); + list_.Init(); + list_->reserve(that.list_->size()); + for (const auto& it : *that.list_) + list_->push_back(MakeUnique(*it)); return; } } @@ -548,17 +561,16 @@ void Value::InternalCopyAssignFromSameType(const Value& that) { case Type::BINARY: *binary_value_ = *that.binary_value_; return; - // DictStorage is a move-only type due to the presence of unique_ptrs. This - // is why the explicit call to the copy constructor is necessary here. - // TODO(crbug.com/646113): Clean this up when DictStorage can be copied - // directly. - case Type::DICTIONARY: { - Value copy = that; - *dict_ptr_ = std::move(*copy.dict_ptr_); + // DictStorage and ListStorage are move-only types due to the presence of + // unique_ptrs. This is why the explicit call to the copy constructor is + // necessary here. + // TODO(crbug.com/646113): Clean this up when DictStorage and ListStorage + // can be copied directly. + case Type::DICTIONARY: + *dict_ptr_ = std::move(*Value(that).dict_ptr_); return; - } case Type::LIST: - *list_ = *that.list_; + *list_ = std::move(*Value(that).list_); return; } } @@ -1065,10 +1077,6 @@ void ListValue::Clear() { list_->clear(); } -void ListValue::Reserve(size_t n) { - list_->reserve(n); -} - bool ListValue::Set(size_t index, Value* in_value) { return Set(index, WrapUnique(in_value)); } @@ -1083,7 +1091,9 @@ bool ListValue::Set(size_t index, std::unique_ptr in_value) { Append(MakeUnique()); Append(std::move(in_value)); } else { - (*list_)[index] = std::move(*in_value); + // TODO(dcheng): remove this DCHECK once the raw pointer version is removed? + DCHECK((*list_)[index] != in_value); + (*list_)[index] = std::move(in_value); } return true; } @@ -1093,7 +1103,7 @@ bool ListValue::Get(size_t index, const Value** out_value) const { return false; if (out_value) - *out_value = &(*list_)[index]; + *out_value = (*list_)[index].get(); return true; } @@ -1203,35 +1213,36 @@ bool ListValue::Remove(size_t index, std::unique_ptr* out_value) { return false; if (out_value) - *out_value = MakeUnique(std::move((*list_)[index])); + *out_value = std::move((*list_)[index]); list_->erase(list_->begin() + index); return true; } bool ListValue::Remove(const Value& value, size_t* index) { - auto it = std::find(list_->begin(), list_->end(), value); - - if (it == list_->end()) - return false; - - if (index) - *index = std::distance(list_->begin(), it); + for (auto it = list_->begin(); it != list_->end(); ++it) { + if (**it == value) { + size_t previous_index = it - list_->begin(); + list_->erase(it); - list_->erase(it); - return true; + if (index) + *index = previous_index; + return true; + } + } + return false; } ListValue::iterator ListValue::Erase(iterator iter, std::unique_ptr* out_value) { if (out_value) - *out_value = MakeUnique(std::move(*iter)); + *out_value = std::move(*ListStorage::iterator(iter)); return list_->erase(iter); } void ListValue::Append(std::unique_ptr in_value) { - list_->push_back(std::move(*in_value)); + list_->push_back(std::move(in_value)); } #if !defined(OS_LINUX) @@ -1277,10 +1288,11 @@ void ListValue::AppendStrings(const std::vector& in_values) { bool ListValue::AppendIfNotPresent(std::unique_ptr in_value) { DCHECK(in_value); - if (std::find(list_->begin(), list_->end(), *in_value) != list_->end()) - return false; - - list_->push_back(std::move(*in_value)); + for (const auto& entry : *list_) { + if (*entry == *in_value) + return false; + } + list_->push_back(std::move(in_value)); return true; } @@ -1289,12 +1301,15 @@ bool ListValue::Insert(size_t index, std::unique_ptr in_value) { if (index > list_->size()) return false; - list_->insert(list_->begin() + index, std::move(*in_value)); + list_->insert(list_->begin() + index, std::move(in_value)); return true; } ListValue::const_iterator ListValue::Find(const Value& value) const { - return std::find(list_->begin(), list_->end(), value); + return std::find_if(list_->begin(), list_->end(), + [&value](const std::unique_ptr& entry) { + return *entry == value; + }); } void ListValue::Swap(ListValue* other) { diff --git a/base/values.h b/base/values.h index 075bc9fbb8fed7..ace8b43651a816 100644 --- a/base/values.h +++ b/base/values.h @@ -49,7 +49,7 @@ class Value; class BASE_EXPORT Value { public: using DictStorage = base::flat_map>; - using ListStorage = std::vector; + using ListStorage = std::vector>; enum class Type { NONE = 0, @@ -390,15 +390,9 @@ class BASE_EXPORT ListValue : public Value { // Returns the number of Values in this list. size_t GetSize() const { return list_->size(); } - // Returns the capacity of storage for Values in this list. - size_t capacity() const { return list_->capacity(); } - // Returns whether the list is empty. bool empty() const { return list_->empty(); } - // Reserves storage for at least |n| values. - void Reserve(size_t n); - // Sets the list item at the given index to be the Value specified by // the value given. If the index beyond the current end of the list, null // Values will be used to pad out the list. diff --git a/base/values_unittest.cc b/base/values_unittest.cc index ae91658064d3fd..077f54ce73c0c6 100644 --- a/base/values_unittest.cc +++ b/base/values_unittest.cc @@ -437,7 +437,7 @@ TEST(ValuesTest, List) { base::Value not_found_value(false); ASSERT_NE(mixed_list->end(), mixed_list->Find(sought_value)); - ASSERT_TRUE((*mixed_list->Find(sought_value)).GetAsInteger(&int_value)); + ASSERT_TRUE((*mixed_list->Find(sought_value))->GetAsInteger(&int_value)); ASSERT_EQ(42, int_value); ASSERT_EQ(mixed_list->end(), mixed_list->Find(not_found_value)); } @@ -540,10 +540,10 @@ TEST(ValuesTest, ListRemoval) { { ListValue list; auto value = MakeUnique(); - Value original_value = *value; + Value* original_value = value.get(); list.Append(std::move(value)); size_t index = 0; - list.Remove(original_value, &index); + list.Remove(*original_value, &index); EXPECT_EQ(0U, index); EXPECT_EQ(0U, list.GetSize()); } diff --git a/cc/test/layer_tree_json_parser.cc b/cc/test/layer_tree_json_parser.cc index d0738a00f0fb7b..11645168b3c4ed 100644 --- a/cc/test/layer_tree_json_parser.cc +++ b/cc/test/layer_tree_json_parser.cc @@ -152,7 +152,7 @@ scoped_refptr ParseTreeFromValue(const base::Value& val, success &= dict->GetList("Children", &list); for (const auto& value : *list) { - new_layer->AddChild(ParseTreeFromValue(value, content_client)); + new_layer->AddChild(ParseTreeFromValue(*value, content_client)); } if (!success) diff --git a/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc b/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc index bd15315a24d0f7..6b5a706d777f68 100644 --- a/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc +++ b/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc @@ -253,7 +253,7 @@ void PartnerBookmarksShim::ReloadNodeMapping() { for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { const base::DictionaryValue* dict = NULL; - if (!it->GetAsDictionary(&dict)) { + if (!*it || !(*it)->GetAsDictionary(&dict)) { NOTREACHED(); continue; } diff --git a/chrome/browser/android/vr_shell/gltf_parser.cc b/chrome/browser/android/vr_shell/gltf_parser.cc index 6dbde77ac9e81a..b8f5bd7ec62966 100644 --- a/chrome/browser/android/vr_shell/gltf_parser.cc +++ b/chrome/browser/android/vr_shell/gltf_parser.cc @@ -206,7 +206,7 @@ bool GltfParser::SetMeshes(const base::DictionaryValue& dict) { if (mesh_dict->GetList("primitives", &list)) { for (const auto& primitive_value : *list) { const base::DictionaryValue* primitive_dict; - if (!primitive_value.GetAsDictionary(&primitive_dict)) + if (!primitive_value->GetAsDictionary(&primitive_dict)) return false; auto primitive = ProcessPrimitive(*primitive_dict); @@ -261,7 +261,7 @@ bool GltfParser::SetNodes(const base::DictionaryValue& dict) { if (node_dict->GetList("meshes", &list)) { std::string mesh_key; for (const auto& mesh_value : *list) { - if (!mesh_value.GetAsString(&mesh_key)) + if (!mesh_value->GetAsString(&mesh_key)) return false; auto mesh_it = mesh_ids_.find(mesh_key); if (mesh_it == mesh_ids_.end()) @@ -284,7 +284,7 @@ bool GltfParser::SetNodes(const base::DictionaryValue& dict) { if (node_dict->GetList("children", &list)) { std::string node_key; for (const auto& mesh_value : *list) { - if (!mesh_value.GetAsString(&node_key)) + if (!mesh_value->GetAsString(&node_key)) return false; auto node_it = nodes.find(node_key); if (node_it == nodes.end()) @@ -308,7 +308,7 @@ bool GltfParser::SetScenes(const base::DictionaryValue& dict) { if (scene_dict->GetList("nodes", &list)) { std::string node_key; for (const auto& node_value : *list) { - if (!node_value.GetAsString(&node_key)) + if (!node_value->GetAsString(&node_key)) return false; auto node_it = node_ids_.find(node_key); if (node_it == node_ids_.end()) diff --git a/chrome/browser/android/vr_shell/ui_scene.cc b/chrome/browser/android/vr_shell/ui_scene.cc index e6e1620361698a..d1c387ae92d8c7 100644 --- a/chrome/browser/android/vr_shell/ui_scene.cc +++ b/chrome/browser/android/vr_shell/ui_scene.cc @@ -290,7 +290,7 @@ void UiScene::HandleCommands(std::unique_ptr commands, const base::TimeTicks& time) { for (auto& item : *commands) { base::DictionaryValue* dict; - CHECK(item.GetAsDictionary(&dict)); + CHECK(item->GetAsDictionary(&dict)); Command type; base::DictionaryValue* data; diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index 612d16bd9b979e..df7b1cc1046295 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc @@ -855,7 +855,7 @@ void ChromeBrowserMainParts::SetupOriginTrialsCommandLine() { std::vector disabled_features; base::StringPiece disabled_feature; for (const auto& item : *override_disabled_feature_list) { - if (item.GetAsString(&disabled_feature)) { + if (item->GetAsString(&disabled_feature)) { disabled_features.push_back(disabled_feature); } } @@ -874,7 +874,7 @@ void ChromeBrowserMainParts::SetupOriginTrialsCommandLine() { std::vector disabled_tokens; base::StringPiece disabled_token; for (const auto& item : *disabled_token_list) { - if (item.GetAsString(&disabled_token)) { + if (item->GetAsString(&disabled_token)) { disabled_tokens.push_back(disabled_token); } } diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 260c28e23b0541..bf079f4659fac5 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -1790,7 +1790,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( for (base::ListValue::const_iterator it = switches->begin(); it != switches->end(); ++it) { std::string switch_to_enable; - if (it->GetAsString(&switch_to_enable)) + if ((*it)->GetAsString(&switch_to_enable)) command_line->AppendSwitch(switch_to_enable); } } diff --git a/chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.cc b/chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.cc index 4cfbd6dbb75873..6a4426ea7a5be3 100644 --- a/chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.cc +++ b/chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.cc @@ -79,7 +79,7 @@ void PerformDelayedCryptohomeRemovals(bool service_is_available) { for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { std::string entry; - if (!it->GetAsString(&entry)) { + if (!(*it)->GetAsString(&entry)) { LOG(ERROR) << "List of cryptohome ids is broken"; continue; } diff --git a/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc b/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc index f628eb5e8cdf48..0aea7cbca4dc7b 100644 --- a/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc +++ b/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc @@ -147,7 +147,7 @@ void AddOncCaCertsToPolicies(const policy::PolicyMap& policy_map, base::MakeUnique()); for (const auto& entry : certificates) { const base::DictionaryValue* certificate = nullptr; - if (!entry.GetAsDictionary(&certificate)) { + if (!entry->GetAsDictionary(&certificate)) { DLOG(FATAL) << "Value of a certificate entry is not a dictionary " << "value."; continue; @@ -168,7 +168,7 @@ void AddOncCaCertsToPolicies(const policy::PolicyMap& policy_map, bool web_trust_flag = false; for (const auto& list_val : *trust_list) { std::string trust_type; - if (!list_val.GetAsString(&trust_type)) + if (!list_val->GetAsString(&trust_type)) NOTREACHED(); if (trust_type == ::onc::certificate::kWeb) { diff --git a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc index b32a2954c071fe..0938b0d2df1e98 100644 --- a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc +++ b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc @@ -763,7 +763,7 @@ bool IsSafeForPublicSession(const extensions::Extension* extension) { for (auto it2 = list_value->begin(); it2 != list_value->end(); ++it2) { // Try to read as dictionary. const base::DictionaryValue *dict_value; - if (it2->GetAsDictionary(&dict_value)) { + if ((*it2)->GetAsDictionary(&dict_value)) { if (dict_value->size() != 1) { LOG(ERROR) << extension->id() << " has dict in permission list with size " @@ -785,7 +785,7 @@ bool IsSafeForPublicSession(const extensions::Extension* extension) { } // Try to read as string. std::string permission_string; - if (!it2->GetAsString(&permission_string)) { + if (!(*it2)->GetAsString(&permission_string)) { LOG(ERROR) << extension->id() << ": " << it.key() << " contains a token that's neither a string nor a dict."; safe = false; diff --git a/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc b/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc index a249299a36d175..20013f9ef37f01 100644 --- a/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc +++ b/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc @@ -114,9 +114,10 @@ class QuickUnlockPrivateUnitTest : public ExtensionApiUnittest { base::ListValue* list = nullptr; EXPECT_TRUE(result->GetAsList(&list)); - for (const base::Value& value : *list) { + // Consume the unique_ptr by reference so we don't take ownership. + for (const std::unique_ptr& value : (*list)) { std::string mode; - EXPECT_TRUE(value.GetAsString(&mode)); + EXPECT_TRUE(value->GetAsString(&mode)); modes.push_back(quick_unlock_private::ParseQuickUnlockMode(mode)); } @@ -133,9 +134,9 @@ class QuickUnlockPrivateUnitTest : public ExtensionApiUnittest { base::ListValue* list = nullptr; EXPECT_TRUE(result->GetAsList(&list)); - for (const base::Value& value : *list) { + for (const std::unique_ptr& value : *list) { std::string mode; - EXPECT_TRUE(value.GetAsString(&mode)); + EXPECT_TRUE(value->GetAsString(&mode)); modes.push_back(quick_unlock_private::ParseQuickUnlockMode(mode)); } diff --git a/chrome/browser/chromeos/file_system_provider/registry.cc b/chrome/browser/chromeos/file_system_provider/registry.cc index e9b0ef9faf87b7..bc0e4c3ba6155a 100644 --- a/chrome/browser/chromeos/file_system_provider/registry.cc +++ b/chrome/browser/chromeos/file_system_provider/registry.cc @@ -228,7 +228,7 @@ std::unique_ptr Registry::RestoreFileSystems( restored_watcher.last_tag = last_tag; for (const auto& persistent_origin : *persistent_origins) { std::string origin; - if (persistent_origin.GetAsString(&origin)) { + if (persistent_origin->GetAsString(&origin)) { LOG(ERROR) << "Malformed subscriber information in preferences."; continue; } diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc index 94a5e8957b10df..f2f7d365c4e944 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.cc @@ -184,7 +184,7 @@ bool EasyUnlockKeyManager::RemoteDeviceListToDeviceDataList( it != device_list.end(); ++it) { const base::DictionaryValue* dict; - if (!it->GetAsDictionary(&dict) || !dict) + if (!(*it)->GetAsDictionary(&dict) || !dict) return false; EasyUnlockDeviceKeyData data; diff --git a/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.cc b/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.cc index f912b3500f6c11..affc58b8f27559 100644 --- a/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.cc +++ b/chrome/browser/chromeos/login/screens/chrome_user_selection_screen.cc @@ -132,7 +132,7 @@ void ChromeUserSelectionScreen::CheckForPublicSessionLocalePolicyChange( for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { std::string locale; - if (!it->GetAsString(&locale)) { + if (!(*it)->GetAsString(&locale)) { NOTREACHED(); new_recommended_locales.clear(); break; diff --git a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc index 4259daad5692f2..39a9d04d4dc6fe 100644 --- a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc +++ b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc @@ -474,7 +474,7 @@ void OwnerSettingsServiceChromeOS::UpdateDeviceSettings( entry != accounts_list->end(); ++entry) { const base::DictionaryValue* entry_dict = NULL; - if (entry->GetAsDictionary(&entry_dict)) { + if ((*entry)->GetAsDictionary(&entry_dict)) { em::DeviceLocalAccountInfoProto* account = device_local_accounts->add_account(); std::string account_id; @@ -572,7 +572,7 @@ void OwnerSettingsServiceChromeOS::UpdateDeviceSettings( i != users->end(); ++i) { std::string email; - if (i->GetAsString(&email)) + if ((*i)->GetAsString(&email)) whitelist_proto->add_user_whitelist(email); } } @@ -604,7 +604,7 @@ void OwnerSettingsServiceChromeOS::UpdateDeviceSettings( i != flags->end(); ++i) { std::string flag; - if (i->GetAsString(&flag)) + if ((*i)->GetAsString(&flag)) flags_proto->add_flags(flag); } } diff --git a/chrome/browser/chromeos/platform_keys/key_permissions.cc b/chrome/browser/chromeos/platform_keys/key_permissions.cc index 4957a74d2761c9..e02671d6522553 100644 --- a/chrome/browser/chromeos/platform_keys/key_permissions.cc +++ b/chrome/browser/chromeos/platform_keys/key_permissions.cc @@ -247,15 +247,20 @@ void KeyPermissions::PermissionsForExtension::KeyEntriesFromState( return; } for (const auto& entry : *entries) { + if (!entry) { + LOG(ERROR) << "Found invalid NULL entry in PlatformKeys state store."; + continue; + } + std::string spki_b64; const base::DictionaryValue* dict_entry = nullptr; - if (entry.GetAsString(&spki_b64)) { + if (entry->GetAsString(&spki_b64)) { // This handles the case that the store contained a plain list of base64 // and DER-encoded SPKIs from an older version of ChromeOS. KeyEntry new_entry(spki_b64); new_entry.sign_once = true; state_store_entries_.push_back(new_entry); - } else if (entry.GetAsDictionary(&dict_entry)) { + } else if (entry->GetAsDictionary(&dict_entry)) { dict_entry->GetStringWithoutPathExpansion(kStateStoreSPKI, &spki_b64); KeyEntry new_entry(spki_b64); dict_entry->GetBooleanWithoutPathExpansion(kStateStoreSignOnce, @@ -264,7 +269,7 @@ void KeyPermissions::PermissionsForExtension::KeyEntriesFromState( &new_entry.sign_unlimited); state_store_entries_.push_back(new_entry); } else { - LOG(ERROR) << "Found invalid entry of type " << entry.GetType() + LOG(ERROR) << "Found invalid entry of type " << entry->GetType() << " in PlatformKeys state store."; continue; } diff --git a/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc b/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc index aa75b6e220a073..0824588448779a 100644 --- a/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc +++ b/chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.cc @@ -324,7 +324,7 @@ void PinnedLauncherAppsPolicyHandler::ApplyPolicySettings( for (base::ListValue::const_iterator entry(policy_list->begin()); entry != policy_list->end(); ++entry) { std::string id; - if (entry->GetAsString(&id)) { + if ((*entry)->GetAsString(&id)) { auto app_dict = base::MakeUnique(); app_dict->SetString(ash::launcher::kPinnedAppsPrefAppIDPath, id); pinned_apps_list->Append(std::move(app_dict)); diff --git a/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc b/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc index fef96508ad4b5c..e6123b8836b63f 100644 --- a/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc +++ b/chrome/browser/chromeos/policy/network_configuration_updater_unittest.cc @@ -186,7 +186,7 @@ std::string ValueToString(const base::Value& value) { void AppendAll(const base::ListValue& from, base::ListValue* to) { for (const auto& value : from) - to->Append(value.CreateDeepCopy()); + to->Append(value->CreateDeepCopy()); } // Matcher to match base::Value. diff --git a/chrome/browser/chromeos/printing/printers_manager.cc b/chrome/browser/chromeos/printing/printers_manager.cc index 4bcef70c45e766..0cded680791601 100644 --- a/chrome/browser/chromeos/printing/printers_manager.cc +++ b/chrome/browser/chromeos/printing/printers_manager.cc @@ -180,7 +180,7 @@ void PrintersManager::UpdateRecommendedPrinters() { recommended_printer_ids_.clear(); for (const auto& value : *values) { std::string printer_json; - if (!value.GetAsString(&printer_json)) { + if (!value->GetAsString(&printer_json)) { NOTREACHED(); continue; } diff --git a/chrome/browser/chromeos/settings/cros_settings.cc b/chrome/browser/chromeos/settings/cros_settings.cc index b49a02e4588d74..91042aac401f18 100644 --- a/chrome/browser/chromeos/settings/cros_settings.cc +++ b/chrome/browser/chromeos/settings/cros_settings.cc @@ -245,7 +245,7 @@ bool CrosSettings::FindEmailInList(const std::string& path, entry != list->end(); ++entry) { std::string entry_string; - if (!entry->GetAsString(&entry_string)) { + if (!(*entry)->GetAsString(&entry_string)) { NOTREACHED(); continue; } diff --git a/chrome/browser/component_updater/sw_reporter_installer_win.cc b/chrome/browser/component_updater/sw_reporter_installer_win.cc index bca424f8beed4e..d8019d43fd4e0e 100644 --- a/chrome/browser/component_updater/sw_reporter_installer_win.cc +++ b/chrome/browser/component_updater/sw_reporter_installer_win.cc @@ -209,7 +209,7 @@ void RunExperimentalSwReporter(const base::FilePath& exe_path, safe_browsing::SwReporterQueue invocations; for (const auto& iter : *parameter_list) { const base::DictionaryValue* invocation_params = nullptr; - if (!iter.GetAsDictionary(&invocation_params)) { + if (!iter->GetAsDictionary(&invocation_params)) { ReportExperimentError(SW_REPORTER_EXPERIMENT_ERROR_BAD_PARAMS); return; } @@ -240,7 +240,7 @@ void RunExperimentalSwReporter(const base::FilePath& exe_path, std::vector argv = {exe_path.value()}; for (const auto& value : *arguments) { base::string16 argument; - if (!value.GetAsString(&argument)) { + if (!value->GetAsString(&argument)) { ReportExperimentError(SW_REPORTER_EXPERIMENT_ERROR_BAD_PARAMS); return; } diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc index 3939cc6e914437..d2008b54831d2a 100644 --- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc +++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc @@ -262,12 +262,12 @@ ChromeDevToolsManagerDelegate::SetRemoteLocations( return DevToolsProtocol::CreateInvalidParamsResponse(command_id, kLocationsParam); for (const auto& item : *locations) { - if (!item.IsType(base::Value::Type::DICTIONARY)) { + if (!item->IsType(base::Value::Type::DICTIONARY)) { return DevToolsProtocol::CreateInvalidParamsResponse(command_id, kLocationsParam); } - const base::DictionaryValue* dictionary = - static_cast(&item); + base::DictionaryValue* dictionary = + static_cast(item.get()); std::string host; if (!dictionary->GetStringWithoutPathExpansion(kHostParam, &host)) { return DevToolsProtocol::CreateInvalidParamsResponse(command_id, diff --git a/chrome/browser/devtools/device/devtools_device_discovery.cc b/chrome/browser/devtools/device/devtools_device_discovery.cc index 306b25068f3f4f..7c2f83a8284698 100644 --- a/chrome/browser/devtools/device/devtools_device_discovery.cc +++ b/chrome/browser/devtools/device/devtools_device_discovery.cc @@ -483,8 +483,8 @@ void DevToolsDeviceDiscovery::DiscoveryRequest::ReceivedPages( base::ListValue* list_value; if (value && value->GetAsList(&list_value)) { for (const auto& page_value : *list_value) { - const base::DictionaryValue* dict; - if (page_value.GetAsDictionary(&dict)) + base::DictionaryValue* dict; + if (page_value->GetAsDictionary(&dict)) browser->pages_.push_back( new RemotePage(device, browser->browser_id_, *dict)); } diff --git a/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc b/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc index 80cb32e3be72cb..397292aeb74f33 100644 --- a/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc +++ b/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc @@ -67,7 +67,8 @@ template struct ParamTuple { bool Parse(const base::ListValue& list, const base::ListValue::const_iterator& it) { - return it != list.end() && GetValue(*it, &head) && tail.Parse(list, it + 1); + return it != list.end() && GetValue(**it, &head) && + tail.Parse(list, it + 1); } template diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc index 14aefab9a43aea..6993861a1ba083 100644 --- a/chrome/browser/devtools/devtools_window.cc +++ b/chrome/browser/devtools/devtools_window.cc @@ -257,7 +257,7 @@ void DevToolsEventForwarder::SetWhitelistedShortcuts( base::ListValue::iterator it = shortcut_list->begin(); for (; it != shortcut_list->end(); ++it) { base::DictionaryValue* dictionary; - if (!it->GetAsDictionary(&dictionary)) + if (!(*it)->GetAsDictionary(&dictionary)) continue; int key_code = 0; dictionary->GetInteger("keyCode", &key_code); diff --git a/chrome/browser/extensions/api/content_settings/content_settings_store.cc b/chrome/browser/extensions/api/content_settings/content_settings_store.cc index 6f2a5797051cf8..8bed231ad3a349 100644 --- a/chrome/browser/extensions/api/content_settings/content_settings_store.cc +++ b/chrome/browser/extensions/api/content_settings/content_settings_store.cc @@ -294,8 +294,8 @@ void ContentSettingsStore::SetExtensionContentSettingFromList( const base::ListValue* list, ExtensionPrefsScope scope) { for (const auto& value : *list) { - const base::DictionaryValue* dict = nullptr; - if (!value.GetAsDictionary(&dict)) { + base::DictionaryValue* dict; + if (!value->GetAsDictionary(&dict)) { NOTREACHED(); continue; } diff --git a/chrome/browser/extensions/api/declarative_content/content_action.cc b/chrome/browser/extensions/api/declarative_content/content_action.cc index 5185a417e7551f..6da57a16b916dc 100644 --- a/chrome/browser/extensions/api/declarative_content/content_action.cc +++ b/chrome/browser/extensions/api/declarative_content/content_action.cc @@ -170,7 +170,7 @@ static bool AppendJSStringsToCPPStrings(const base::ListValue& append_strings, it != append_strings.end(); ++it) { std::string value; - if (it->GetAsString(&value)) { + if ((*it)->GetAsString(&value)) { append_to->push_back(value); } else { return false; diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc index e5ecb2cf045cb4..396d22bc8ec209 100644 --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc @@ -55,7 +55,7 @@ std::unique_ptr CreateSetOfActions(const char* json) { it != parsed_list->end(); ++it) { const base::DictionaryValue* dict; - CHECK(it->GetAsDictionary(&dict)); + CHECK((*it)->GetAsDictionary(&dict)); actions.push_back(dict->CreateDeepCopy()); } diff --git a/chrome/browser/extensions/api/font_settings/font_settings_api.cc b/chrome/browser/extensions/api/font_settings/font_settings_api.cc index 31f9f9d8003adf..b3e2457e5cc921 100644 --- a/chrome/browser/extensions/api/font_settings/font_settings_api.cc +++ b/chrome/browser/extensions/api/font_settings/font_settings_api.cc @@ -301,7 +301,7 @@ bool FontSettingsGetFontListFunction::CopyFontsToResult( for (base::ListValue::iterator it = fonts->begin(); it != fonts->end(); ++it) { base::ListValue* font_list_value; - if (!it->GetAsList(&font_list_value)) { + if (!(*it)->GetAsList(&font_list_value)) { NOTREACHED(); return false; } diff --git a/chrome/browser/extensions/api/identity/identity_apitest.cc b/chrome/browser/extensions/api/identity/identity_apitest.cc index db214edbb9e2bd..d21fdb86ff3fef 100644 --- a/chrome/browser/extensions/api/identity/identity_apitest.cc +++ b/chrome/browser/extensions/api/identity/identity_apitest.cc @@ -422,7 +422,7 @@ class IdentityGetAccountsFunctionTest : public ExtensionBrowserTest { it != results->end(); ++it) { std::unique_ptr info = - api::identity::AccountInfo::FromValue(*it); + api::identity::AccountInfo::FromValue(**it); if (info.get()) result_ids.insert(info->id); else @@ -454,11 +454,11 @@ class IdentityGetAccountsFunctionTest : public ExtensionBrowserTest { } else { for (const auto& result : *results) { std::unique_ptr info = - api::identity::AccountInfo::FromValue(result); + api::identity::AccountInfo::FromValue(*result); if (info.get()) msg << info->id << " "; else - msg << result << "<-" << result.GetType() << " "; + msg << *result << "<-" << result->GetType() << " "; } } diff --git a/chrome/browser/extensions/api/messaging/native_messaging_host_manifest.cc b/chrome/browser/extensions/api/messaging/native_messaging_host_manifest.cc index b5106121b375fe..e54984f45d9bdd 100644 --- a/chrome/browser/extensions/api/messaging/native_messaging_host_manifest.cc +++ b/chrome/browser/extensions/api/messaging/native_messaging_host_manifest.cc @@ -112,7 +112,7 @@ bool NativeMessagingHostManifest::Parse(base::DictionaryValue* dictionary, for (base::ListValue::const_iterator it = allowed_origins_list->begin(); it != allowed_origins_list->end(); ++it) { std::string pattern_string; - if (!it->GetAsString(&pattern_string)) { + if (!(*it)->GetAsString(&pattern_string)) { *error_message = "allowed_origins must be list of strings."; return false; } diff --git a/chrome/browser/extensions/api/messaging/native_messaging_policy_handler.cc b/chrome/browser/extensions/api/messaging/native_messaging_policy_handler.cc index 8f9410f00a44ce..bb153dc8f1a8c1 100644 --- a/chrome/browser/extensions/api/messaging/native_messaging_policy_handler.cc +++ b/chrome/browser/extensions/api/messaging/native_messaging_policy_handler.cc @@ -68,7 +68,7 @@ bool NativeMessagingHostListPolicyHandler::CheckAndGetList( for (base::ListValue::const_iterator entry(list_value->begin()); entry != list_value->end(); ++entry) { std::string name; - if (!entry->GetAsString(&name)) { + if (!(*entry)->GetAsString(&name)) { errors->AddError(policy_name(), entry - list_value->begin(), IDS_POLICY_TYPE_ERROR, base::Value::GetTypeName(base::Value::Type::STRING)); diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc index f4333d3cb95d95..202f84c8ec6e29 100644 --- a/chrome/browser/extensions/extension_management.cc +++ b/chrome/browser/extensions/extension_management.cc @@ -299,7 +299,7 @@ void ExtensionManagement::Refresh() { if (allowed_list_pref) { for (base::ListValue::const_iterator it = allowed_list_pref->begin(); it != allowed_list_pref->end(); ++it) { - if (it->GetAsString(&id) && crx_file::id_util::IdIsValid(id)) + if ((*it)->GetAsString(&id) && crx_file::id_util::IdIsValid(id)) AccessById(id)->installation_mode = INSTALLATION_ALLOWED; } } @@ -307,7 +307,7 @@ void ExtensionManagement::Refresh() { if (denied_list_pref) { for (base::ListValue::const_iterator it = denied_list_pref->begin(); it != denied_list_pref->end(); ++it) { - if (it->GetAsString(&id) && crx_file::id_util::IdIsValid(id)) + if ((*it)->GetAsString(&id) && crx_file::id_util::IdIsValid(id)) AccessById(id)->installation_mode = INSTALLATION_BLOCKED; } } @@ -320,7 +320,7 @@ void ExtensionManagement::Refresh() { for (base::ListValue::const_iterator it = install_sources_pref->begin(); it != install_sources_pref->end(); ++it) { std::string url_pattern; - if (it->GetAsString(&url_pattern)) { + if ((*it)->GetAsString(&url_pattern)) { URLPattern entry(URLPattern::SCHEME_ALL); if (entry.Parse(url_pattern) == URLPattern::PARSE_SUCCESS) { global_settings_->install_sources.AddPattern(entry); @@ -339,11 +339,11 @@ void ExtensionManagement::Refresh() { it != allowed_types_pref->end(); ++it) { int int_value; std::string string_value; - if (it->GetAsInteger(&int_value) && int_value >= 0 && + if ((*it)->GetAsInteger(&int_value) && int_value >= 0 && int_value < Manifest::Type::NUM_LOAD_TYPES) { global_settings_->allowed_types.push_back( static_cast(int_value)); - } else if (it->GetAsString(&string_value)) { + } else if ((*it)->GetAsString(&string_value)) { Manifest::Type manifest_type = schema_constants::GetManifestType(string_value); if (manifest_type != Manifest::TYPE_UNKNOWN) diff --git a/chrome/browser/extensions/extension_override_apitest.cc b/chrome/browser/extensions/extension_override_apitest.cc index 1f9d817a626a72..21ce6d0513afae 100644 --- a/chrome/browser/extensions/extension_override_apitest.cc +++ b/chrome/browser/extensions/extension_override_apitest.cc @@ -50,7 +50,7 @@ class ExtensionOverrideTest : public ExtensionApiTest { for (const auto& val : *values) { const base::DictionaryValue* dict = nullptr; std::string entry; - if (!val.GetAsDictionary(&dict) || !dict->GetString("entry", &entry) || + if (!val->GetAsDictionary(&dict) || !dict->GetString("entry", &entry) || seen_overrides.count(entry) != 0) return false; seen_overrides.insert(entry); diff --git a/chrome/browser/extensions/extension_web_ui.cc b/chrome/browser/extensions/extension_web_ui.cc index b7cceb7f15e3f9..9ebeb1c52b5fbc 100644 --- a/chrome/browser/extensions/extension_web_ui.cc +++ b/chrome/browser/extensions/extension_web_ui.cc @@ -67,17 +67,17 @@ const char kActive[] = "active"; void InitializeOverridesList(base::ListValue* list) { base::ListValue migrated; std::set seen_entries; - for (auto& val : *list) { + for (const auto& val : *list) { std::unique_ptr new_dict( new base::DictionaryValue()); std::string entry_name; base::DictionaryValue* existing_dict = nullptr; - if (val.GetAsDictionary(&existing_dict)) { + if (val->GetAsDictionary(&existing_dict)) { bool success = existing_dict->GetString(kEntry, &entry_name); if (!success) // See comment about CHECK(success) in ForEachOverrideList. continue; new_dict->Swap(existing_dict); - } else if (val.GetAsString(&entry_name)) { + } else if (val->GetAsString(&entry_name)) { new_dict->SetString(kEntry, entry_name); new_dict->SetBoolean(kActive, true); } else { @@ -98,10 +98,10 @@ void InitializeOverridesList(base::ListValue* list) { // marks it as active. void AddOverridesToList(base::ListValue* list, const std::string& override) { - for (auto& val : *list) { + for (const auto& val : *list) { base::DictionaryValue* dict = nullptr; std::string entry; - if (!val.GetAsDictionary(&dict) || !dict->GetString(kEntry, &entry)) { + if (!val->GetAsDictionary(&dict) || !dict->GetString(kEntry, &entry)) { NOTREACHED(); continue; } @@ -123,10 +123,10 @@ void AddOverridesToList(base::ListValue* list, void ValidateOverridesList(const extensions::ExtensionSet* all_extensions, base::ListValue* list) { base::ListValue migrated; - for (auto& val : *list) { + for (const auto& val : *list) { base::DictionaryValue* dict = nullptr; std::string entry; - if (!val.GetAsDictionary(&dict) || !dict->GetString(kEntry, &entry)) { + if (!val->GetAsDictionary(&dict) || !dict->GetString(kEntry, &entry)) { NOTREACHED(); continue; } @@ -177,19 +177,20 @@ enum UpdateBehavior { bool UpdateOverridesList(base::ListValue* overrides_list, const std::string& override_url, UpdateBehavior behavior) { - base::ListValue::iterator iter = std::find_if( - overrides_list->begin(), overrides_list->end(), - [&override_url](const base::Value& value) { - std::string entry; - const base::DictionaryValue* dict = nullptr; - return value.GetAsDictionary(&dict) && - dict->GetString(kEntry, &entry) && entry == override_url; - }); + base::ListValue::iterator iter = + std::find_if(overrides_list->begin(), overrides_list->end(), + [&override_url](const std::unique_ptr& value) { + std::string entry; + const base::DictionaryValue* dict = nullptr; + return value->GetAsDictionary(&dict) && + dict->GetString(kEntry, &entry) && + entry == override_url; + }); if (iter != overrides_list->end()) { switch (behavior) { case UPDATE_DEACTIVATE: { base::DictionaryValue* dict = nullptr; - bool success = iter->GetAsDictionary(&dict); + bool success = (*iter)->GetAsDictionary(&dict); // See comment about CHECK(success) in ForEachOverrideList. if (success) { dict->SetBoolean(kActive, false); @@ -427,7 +428,7 @@ bool ExtensionWebUI::HandleChromeURLOverrideReverse( for (base::ListValue::const_iterator list_iter = url_list->begin(); list_iter != url_list->end(); ++list_iter) { const base::DictionaryValue* dict = nullptr; - if (!list_iter->GetAsDictionary(&dict)) + if (!(*list_iter)->GetAsDictionary(&dict)) continue; std::string override; if (!dict->GetString(kEntry, &override)) diff --git a/chrome/browser/extensions/install_signer.cc b/chrome/browser/extensions/install_signer.cc index b73da46ffe22df..d96ad631e75613 100644 --- a/chrome/browser/extensions/install_signer.cc +++ b/chrome/browser/extensions/install_signer.cc @@ -146,7 +146,7 @@ bool GetExtensionIdSet(const base::DictionaryValue& dictionary, i != id_list->end(); ++i) { std::string id; - if (!i->GetAsString(&id)) { + if (!(*i)->GetAsString(&id)) { return false; } ids->insert(id); diff --git a/chrome/browser/extensions/menu_manager.cc b/chrome/browser/extensions/menu_manager.cc index 7bfaf2d878036e..dc1abda3af58c2 100644 --- a/chrome/browser/extensions/menu_manager.cc +++ b/chrome/browser/extensions/menu_manager.cc @@ -625,6 +625,7 @@ void MenuManager::ExecuteCommand(content::BrowserContext* context, if (item->type() == MenuItem::RADIO) RadioItemSelected(item); + std::unique_ptr args(new base::ListValue()); std::unique_ptr properties( new base::DictionaryValue()); @@ -663,14 +664,8 @@ void MenuManager::ExecuteCommand(content::BrowserContext* context, webview_guest->view_instance_id()); } - auto args = base::MakeUnique(); - args->Reserve(2); + base::DictionaryValue* raw_properties = properties.get(); args->Append(std::move(properties)); - // |properties| is invalidated at this time, which is why |args| needs to be - // queried for the pointer. The obtained pointer is guaranteed to stay valid - // even after further Appends, because enough storage was reserved above. - base::DictionaryValue* raw_properties = nullptr; - args->GetDictionary(0, &raw_properties); // Add the tab info to the argument list. // No tab info in a platform app. diff --git a/chrome/browser/extensions/policy_handlers.cc b/chrome/browser/extensions/policy_handlers.cc index 0b0b2bf14865b4..8ee0bee34a419d 100644 --- a/chrome/browser/extensions/policy_handlers.cc +++ b/chrome/browser/extensions/policy_handlers.cc @@ -78,7 +78,7 @@ bool ExtensionListPolicyHandler::CheckAndGetList( for (base::ListValue::const_iterator entry(list_value->begin()); entry != list_value->end(); ++entry) { std::string id; - if (!entry->GetAsString(&id)) { + if (!(*entry)->GetAsString(&id)) { errors->AddError(policy_name(), entry - list_value->begin(), IDS_POLICY_TYPE_ERROR, base::Value::GetTypeName(base::Value::Type::STRING)); @@ -143,7 +143,7 @@ bool ExtensionInstallListPolicyHandler::ParseList( for (base::ListValue::const_iterator entry(policy_list_value->begin()); entry != policy_list_value->end(); ++entry) { std::string entry_string; - if (!entry->GetAsString(&entry_string)) { + if (!(*entry)->GetAsString(&entry_string)) { if (errors) { errors->AddError(policy_name(), entry - policy_list_value->begin(), IDS_POLICY_TYPE_ERROR, @@ -230,7 +230,7 @@ bool ExtensionURLPatternListPolicyHandler::CheckPolicySettings( for (base::ListValue::const_iterator entry(list_value->begin()); entry != list_value->end(); ++entry) { std::string url_pattern_string; - if (!entry->GetAsString(&url_pattern_string)) { + if (!(*entry)->GetAsString(&url_pattern_string)) { errors->AddError(policy_name(), entry - list_value->begin(), IDS_POLICY_TYPE_ERROR, base::Value::GetTypeName(base::Value::Type::STRING)); diff --git a/chrome/browser/extensions/webstore_inline_installer.cc b/chrome/browser/extensions/webstore_inline_installer.cc index 52f23c280b5365..d6753715db9af1 100644 --- a/chrome/browser/extensions/webstore_inline_installer.cc +++ b/chrome/browser/extensions/webstore_inline_installer.cc @@ -84,7 +84,7 @@ bool WebstoreInlineInstaller::IsRequestorPermitted( for (base::ListValue::const_iterator it = verified_sites->begin(); it != verified_sites->end() && !requestor_is_ok; ++it) { std::string verified_site; - if (!it->GetAsString(&verified_site)) { + if (!(*it)->GetAsString(&verified_site)) { *error = kInvalidWebstoreResponseError; return false; } diff --git a/chrome/browser/extensions/webstore_inline_installer_browsertest.cc b/chrome/browser/extensions/webstore_inline_installer_browsertest.cc index 7c3702f5e388b9..555ef2fd530f0a 100644 --- a/chrome/browser/extensions/webstore_inline_installer_browsertest.cc +++ b/chrome/browser/extensions/webstore_inline_installer_browsertest.cc @@ -434,7 +434,7 @@ IN_PROC_BROWSER_TEST_F(WebstoreInlineInstallerRedirectTest, int i = 0; for (const auto& value : *redirect_list) { std::string value_string; - ASSERT_TRUE(value.GetAsString(&value_string)); + ASSERT_TRUE(value->GetAsString(&value_string)); GURL redirect_url(value_string); EXPECT_EQ(expected_redirect_domains[i++], redirect_url.host()); } diff --git a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc index 886b108b294a31..68e086d40919d1 100644 --- a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc +++ b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc @@ -173,7 +173,7 @@ void ChromeInternalLogSource::PopulateSyncLogs(SystemLogsResponse* response) { for (base::ListValue::iterator it = details->begin(); it != details->end(); ++it) { base::DictionaryValue* dict = NULL; - if (it->GetAsDictionary(&dict)) { + if ((*it)->GetAsDictionary(&dict)) { std::string title; dict->GetString("title", &title); if (title == syncer::sync_ui_util::kIdentityTitle) { diff --git a/chrome/browser/media/chromeos_login_media_access_handler.cc b/chrome/browser/media/chromeos_login_media_access_handler.cc index e413fdae407ee6..0b79c9707b089c 100644 --- a/chrome/browser/media/chromeos_login_media_access_handler.cc +++ b/chrome/browser/media/chromeos_login_media_access_handler.cc @@ -63,7 +63,7 @@ bool ChromeOSLoginMediaAccessHandler::CheckMediaAccessPermission( DCHECK(is_list); for (const auto& base_value : *list_value) { std::string value; - if (base_value.GetAsString(&value)) { + if (base_value->GetAsString(&value)) { const ContentSettingsPattern pattern = ContentSettingsPattern::FromString(value); // Force administrators to specify more-specific patterns by ignoring the diff --git a/chrome/browser/media/webrtc/webrtc_getmediadevices_browsertest.cc b/chrome/browser/media/webrtc/webrtc_getmediadevices_browsertest.cc index 861af6431e3b0a..54e282628c1ffc 100644 --- a/chrome/browser/media/webrtc/webrtc_getmediadevices_browsertest.cc +++ b/chrome/browser/media/webrtc/webrtc_getmediadevices_browsertest.cc @@ -87,7 +87,7 @@ class WebRtcGetMediaDevicesBrowserTest it != values->end(); ++it) { const base::DictionaryValue* dict; MediaDeviceInfo device; - ASSERT_TRUE(it->GetAsDictionary(&dict)); + ASSERT_TRUE((*it)->GetAsDictionary(&dict)); ASSERT_TRUE(dict->GetString("deviceId", &device.device_id)); ASSERT_TRUE(dict->GetString("kind", &device.kind)); ASSERT_TRUE(dict->GetString("label", &device.label)); diff --git a/chrome/browser/media_galleries/media_galleries_preferences.cc b/chrome/browser/media_galleries/media_galleries_preferences.cc index 649e3102995d15..db859f57d8e692 100644 --- a/chrome/browser/media_galleries/media_galleries_preferences.cc +++ b/chrome/browser/media_galleries/media_galleries_preferences.cc @@ -621,7 +621,7 @@ bool MediaGalleriesPreferences::UpdateDeviceIDForSingletonType( iter != list->end(); ++iter) { // All of these calls should succeed, but preferences file can be corrupt. base::DictionaryValue* dict; - if (!iter->GetAsDictionary(&dict)) + if (!(*iter)->GetAsDictionary(&dict)) continue; std::string this_device_id; if (!dict->GetString(kMediaGalleriesDeviceIdKey, &this_device_id)) @@ -713,7 +713,7 @@ void MediaGalleriesPreferences::InitFromPrefs() { for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { const base::DictionaryValue* dict = NULL; - if (!it->GetAsDictionary(&dict)) + if (!(*it)->GetAsDictionary(&dict)) continue; MediaGalleryPrefInfo gallery_info; @@ -957,11 +957,13 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddOrUpdateGalleryInternal( new ListPrefUpdate(prefs, prefs::kMediaGalleriesRememberedGalleries)); base::ListValue* list = update->Get(); - for (base::ListValue::iterator list_iter = list->begin(); - list_iter != list->end(); ++list_iter) { + for (base::ListValue::const_iterator list_iter = list->begin(); + list_iter != list->end(); + ++list_iter) { base::DictionaryValue* dict; MediaGalleryPrefId iter_id; - if (list_iter->GetAsDictionary(&dict) && GetPrefId(*dict, &iter_id) && + if ((*list_iter)->GetAsDictionary(&dict) && + GetPrefId(*dict, &iter_id) && *pref_id_it == iter_id) { if (update_gallery_type) dict->SetString(kMediaGalleriesTypeKey, TypeToStringValue(new_type)); @@ -1056,7 +1058,7 @@ void MediaGalleriesPreferences::UpdateDefaultGalleriesPaths() { base::DictionaryValue* dict; MediaGalleryPrefId pref_id; - if (!(iter->GetAsDictionary(&dict) && GetPrefId(*dict, &pref_id))) + if (!((*iter)->GetAsDictionary(&dict) && GetPrefId(*dict, &pref_id))) continue; std::string default_gallery_type_string; @@ -1153,7 +1155,7 @@ void MediaGalleriesPreferences::EraseOrBlacklistGalleryById( iter != list->end(); ++iter) { base::DictionaryValue* dict; MediaGalleryPrefId iter_id; - if (iter->GetAsDictionary(&dict) && GetPrefId(*dict, &iter_id) && + if ((*iter)->GetAsDictionary(&dict) && GetPrefId(*dict, &iter_id) && id == iter_id) { RemoveGalleryPermissionsFromPrefs(id); MediaGalleryPrefInfo::Type type; @@ -1331,7 +1333,7 @@ bool MediaGalleriesPreferences::SetGalleryPermissionInPrefs( for (base::ListValue::iterator iter = permissions->begin(); iter != permissions->end(); ++iter) { base::DictionaryValue* dict = NULL; - if (!iter->GetAsDictionary(&dict)) + if (!(*iter)->GetAsDictionary(&dict)) continue; MediaGalleryPermission perm; if (!GetMediaGalleryPermissionFromDictionary(dict, &perm)) @@ -1368,7 +1370,7 @@ bool MediaGalleriesPreferences::UnsetGalleryPermissionInPrefs( for (base::ListValue::iterator iter = permissions->begin(); iter != permissions->end(); ++iter) { const base::DictionaryValue* dict = NULL; - if (!iter->GetAsDictionary(&dict)) + if (!(*iter)->GetAsDictionary(&dict)) continue; MediaGalleryPermission perm; if (!GetMediaGalleryPermissionFromDictionary(dict, &perm)) @@ -1395,8 +1397,8 @@ MediaGalleriesPreferences::GetGalleryPermissionsFromPrefs( for (base::ListValue::const_iterator iter = permissions->begin(); iter != permissions->end(); ++iter) { - const base::DictionaryValue* dict = NULL; - if (!iter->GetAsDictionary(&dict)) + base::DictionaryValue* dict = NULL; + if (!(*iter)->GetAsDictionary(&dict)) continue; MediaGalleryPermission perm; if (!GetMediaGalleryPermissionFromDictionary(dict, &perm)) diff --git a/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc b/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc index f292e1c12a2af7..7e966caf0e0635 100644 --- a/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc +++ b/chrome/browser/media_galleries/media_galleries_preferences_unittest.cc @@ -191,7 +191,7 @@ class MediaGalleriesPreferencesTest : public testing::Test { ++iter) { base::DictionaryValue* dict; - if (iter->GetAsDictionary(&dict)) { + if ((*iter)->GetAsDictionary(&dict)) { // Setting the prefs version to 2 which is the version before // default_gallery_type was added. dict->SetInteger(kMediaGalleriesPrefsVersionKey, 2); diff --git a/chrome/browser/metrics/plugin_metrics_provider.cc b/chrome/browser/metrics/plugin_metrics_provider.cc index aaa2f5fc9ab25b..ebd235a596b0df 100644 --- a/chrome/browser/metrics/plugin_metrics_provider.cc +++ b/chrome/browser/metrics/plugin_metrics_provider.cc @@ -144,8 +144,8 @@ void PluginMetricsProvider::ProvideStabilityMetrics( metrics::SystemProfileProto::Stability* stability = system_profile_proto->mutable_stability(); for (const auto& value : *plugin_stats_list) { - const base::DictionaryValue* plugin_dict; - if (!value.GetAsDictionary(&plugin_dict)) { + base::DictionaryValue* plugin_dict; + if (!value->GetAsDictionary(&plugin_dict)) { NOTREACHED(); continue; } @@ -210,9 +210,9 @@ void PluginMetricsProvider::RecordCurrentState() { base::ListValue* plugins = update.Get(); DCHECK(plugins); - for (auto& value : *plugins) { + for (const auto& value : *plugins) { base::DictionaryValue* plugin_dict; - if (!value.GetAsDictionary(&plugin_dict)) { + if (!value->GetAsDictionary(&plugin_dict)) { NOTREACHED(); continue; } diff --git a/chrome/browser/net/predictor.cc b/chrome/browser/net/predictor.cc index 04a7ec42475525..72266b380b2840 100644 --- a/chrome/browser/net/predictor.cc +++ b/chrome/browser/net/predictor.cc @@ -269,12 +269,13 @@ std::vector Predictor::GetPredictedUrlListAtStartup( if (startup_list) { base::ListValue::const_iterator it = startup_list->begin(); int format_version = -1; - if (it != startup_list->end() && it->GetAsInteger(&format_version) && + if (it != startup_list->end() && + (*it)->GetAsInteger(&format_version) && format_version == kPredictorStartupFormatVersion) { ++it; for (; it != startup_list->end(); ++it) { std::string url_spec; - if (!it->GetAsString(&url_spec)) { + if (!(*it)->GetAsString(&url_spec)) { LOG(DFATAL); break; // Format incompatibility. } diff --git a/chrome/browser/net/predictor_unittest.cc b/chrome/browser/net/predictor_unittest.cc index 04690c7424e741..9b947c0b02e020 100644 --- a/chrome/browser/net/predictor_unittest.cc +++ b/chrome/browser/net/predictor_unittest.cc @@ -106,8 +106,6 @@ static void AddToSerializedList(const GURL& motivation, // ...and make it part of the serialized referral_list. referral_list->Append(base::WrapUnique(motivation_list)); - // |motivation_list| is invalidated at this point, so it needs to be reset. - referral_list->GetList(referral_list->GetSize() - 1, &motivation_list); } base::ListValue* subresource_list(NULL); diff --git a/chrome/browser/permissions/chooser_context_base.cc b/chrome/browser/permissions/chooser_context_base.cc index 1214898c8b39f6..3b99bad21385d3 100644 --- a/chrome/browser/permissions/chooser_context_base.cc +++ b/chrome/browser/permissions/chooser_context_base.cc @@ -58,8 +58,7 @@ ChooserContextBase::GetGrantedObjects(const GURL& requesting_origin, for (auto& object : *object_list) { // Steal ownership of |object| from |object_list|. std::unique_ptr object_dict = - base::DictionaryValue::From( - base::MakeUnique(std::move(object))); + base::DictionaryValue::From(std::move(object)); if (object_dict && IsValidObject(*object_dict)) results.push_back(std::move(object_dict)); } @@ -85,9 +84,9 @@ ChooserContextBase::GetAllGrantedObjects() { if (!setting->GetList(kObjectListKey, &object_list)) continue; - for (auto& object : *object_list) { + for (const auto& object : *object_list) { base::DictionaryValue* object_dict; - if (!object.GetAsDictionary(&object_dict) || + if (!object->GetAsDictionary(&object_dict) || !IsValidObject(*object_dict)) { continue; } diff --git a/chrome/browser/plugins/plugin_finder.cc b/chrome/browser/plugins/plugin_finder.cc index 75c6ecab9a8d0d..5ac803d22d08c9 100644 --- a/chrome/browser/plugins/plugin_finder.cc +++ b/chrome/browser/plugins/plugin_finder.cc @@ -80,7 +80,7 @@ void LoadMimeTypes(bool matching_mime_types, for (base::ListValue::const_iterator mime_type_it = mime_types->begin(); mime_type_it != mime_types->end(); ++mime_type_it) { std::string mime_type_str; - success = mime_type_it->GetAsString(&mime_type_str); + success = (*mime_type_it)->GetAsString(&mime_type_str); DCHECK(success); if (matching_mime_types) { plugin->AddMatchingMimeType(mime_type_str); @@ -115,8 +115,8 @@ std::unique_ptr CreatePluginMetadata( if (plugin_dict->GetList("versions", &versions)) { for (base::ListValue::const_iterator it = versions->begin(); it != versions->end(); ++it) { - const base::DictionaryValue* version_dict = NULL; - if (!it->GetAsDictionary(&version_dict)) { + base::DictionaryValue* version_dict = NULL; + if (!(*it)->GetAsDictionary(&version_dict)) { NOTREACHED(); continue; } diff --git a/chrome/browser/plugins/plugin_finder_unittest.cc b/chrome/browser/plugins/plugin_finder_unittest.cc index d906f06f292c1f..4cb60f83beb513 100644 --- a/chrome/browser/plugins/plugin_finder_unittest.cc +++ b/chrome/browser/plugins/plugin_finder_unittest.cc @@ -43,7 +43,7 @@ TEST(PluginFinderTest, JsonSyntax) { if (plugin->GetList("mime_types", &mime_types)) { for (base::ListValue::const_iterator mime_type_it = mime_types->begin(); mime_type_it != mime_types->end(); ++mime_type_it) { - EXPECT_TRUE(mime_type_it->GetAsString(&dummy_str)); + EXPECT_TRUE((*mime_type_it)->GetAsString(&dummy_str)); } } @@ -51,7 +51,7 @@ TEST(PluginFinderTest, JsonSyntax) { if (plugin->GetList("matching_mime_types", &matching_mime_types)) { for (base::ListValue::const_iterator it = matching_mime_types->begin(); it != matching_mime_types->end(); ++it) { - EXPECT_TRUE(it->GetAsString(&dummy_str)); + EXPECT_TRUE((*it)->GetAsString(&dummy_str)); } } @@ -61,8 +61,8 @@ TEST(PluginFinderTest, JsonSyntax) { for (base::ListValue::const_iterator it = versions->begin(); it != versions->end(); ++it) { - const base::DictionaryValue* version_dict = NULL; - ASSERT_TRUE(it->GetAsDictionary(&version_dict)); + base::DictionaryValue* version_dict = NULL; + ASSERT_TRUE((*it)->GetAsDictionary(&version_dict)); EXPECT_TRUE(version_dict->GetString("version", &dummy_str)); std::string status_str; EXPECT_TRUE(version_dict->GetString("status", &status_str)); diff --git a/chrome/browser/plugins/plugin_prefs.cc b/chrome/browser/plugins/plugin_prefs.cc index 0c418d1cdd0cbc..3f8c20c06bc9fd 100644 --- a/chrome/browser/plugins/plugin_prefs.cc +++ b/chrome/browser/plugins/plugin_prefs.cc @@ -129,9 +129,9 @@ void PluginPrefs::SetPrefs(PrefService* prefs) { ListPrefUpdate update(prefs_, prefs::kPluginsPluginsList); base::ListValue* saved_plugins_list = update.Get(); if (saved_plugins_list && !saved_plugins_list->empty()) { - for (auto& plugin_value : *saved_plugins_list) { + for (const auto& plugin_value : *saved_plugins_list) { base::DictionaryValue* plugin; - if (!plugin_value.GetAsDictionary(&plugin)) { + if (!plugin_value->GetAsDictionary(&plugin)) { LOG(WARNING) << "Invalid entry in " << prefs::kPluginsPluginsList; continue; // Oops, don't know what to do with this item. } diff --git a/chrome/browser/policy/managed_bookmarks_policy_handler.cc b/chrome/browser/policy/managed_bookmarks_policy_handler.cc index b112a0ccae13ec..dd5fa8bec559ad 100644 --- a/chrome/browser/policy/managed_bookmarks_policy_handler.cc +++ b/chrome/browser/policy/managed_bookmarks_policy_handler.cc @@ -51,8 +51,7 @@ ManagedBookmarksPolicyHandler::GetFolderName(const base::ListValue& list) { // Iterate over the list, and try to find the FolderName. for (const auto& el : list) { const base::DictionaryValue* dict = NULL; - if (!el.GetAsDictionary(&dict)) - continue; + if (!el || !el->GetAsDictionary(&dict)) continue; std::string name; if (dict->GetString(ManagedBookmarksTracker::kFolderName, &name)) { @@ -69,7 +68,7 @@ void ManagedBookmarksPolicyHandler::FilterBookmarks(base::ListValue* list) { base::ListValue::iterator it = list->begin(); while (it != list->end()) { base::DictionaryValue* dict = NULL; - if (!it->GetAsDictionary(&dict)) { + if (!*it || !(*it)->GetAsDictionary(&dict)) { it = list->Erase(it, NULL); continue; } diff --git a/chrome/browser/policy/policy_prefs_browsertest.cc b/chrome/browser/policy/policy_prefs_browsertest.cc index 7517b24021565e..89b5b7ae23df10 100644 --- a/chrome/browser/policy/policy_prefs_browsertest.cc +++ b/chrome/browser/policy/policy_prefs_browsertest.cc @@ -452,7 +452,7 @@ void VerifyControlledSettingIndicators(Browser* browser, for (base::ListValue::const_iterator indicator = indicators->begin(); indicator != indicators->end(); ++indicator) { const base::DictionaryValue* properties = NULL; - ASSERT_TRUE(indicator->GetAsDictionary(&properties)); + ASSERT_TRUE((*indicator)->GetAsDictionary(&properties)); std::string indicator_value; std::string indicator_controlled_by; bool indicator_readonly; diff --git a/chrome/browser/prefs/chrome_command_line_pref_store_unittest.cc b/chrome/browser/prefs/chrome_command_line_pref_store_unittest.cc index f52d8aa7567f32..524477104815ae 100644 --- a/chrome/browser/prefs/chrome_command_line_pref_store_unittest.cc +++ b/chrome/browser/prefs/chrome_command_line_pref_store_unittest.cc @@ -57,7 +57,7 @@ class TestCommandLinePrefStore : public ChromeCommandLinePrefStore { std::string cipher_string; for (base::ListValue::const_iterator it = list_value->begin(); it != list_value->end(); ++it, ++ciphers) { - ASSERT_TRUE(it->GetAsString(&cipher_string)); + ASSERT_TRUE((*it)->GetAsString(&cipher_string)); EXPECT_EQ(*ciphers, cipher_string); } } diff --git a/chrome/browser/printing/cloud_print/cloud_print_printer_list.cc b/chrome/browser/printing/cloud_print/cloud_print_printer_list.cc index 3e12b0ecf2592b..d826da16d2e45c 100644 --- a/chrome/browser/printing/cloud_print/cloud_print_printer_list.cc +++ b/chrome/browser/printing/cloud_print/cloud_print_printer_list.cc @@ -32,8 +32,8 @@ void CloudPrintPrinterList::OnGCDApiFlowComplete( DeviceList devices; for (const auto& printer : *printers) { - const base::DictionaryValue* printer_dict; - if (!printer.GetAsDictionary(&printer_dict)) + base::DictionaryValue* printer_dict; + if (!printer->GetAsDictionary(&printer_dict)) continue; Device printer_details; diff --git a/chrome/browser/profile_resetter/profile_resetter_unittest.cc b/chrome/browser/profile_resetter/profile_resetter_unittest.cc index 88de55f30083b7..018ce88d0d37f1 100644 --- a/chrome/browser/profile_resetter/profile_resetter_unittest.cc +++ b/chrome/browser/profile_resetter/profile_resetter_unittest.cc @@ -825,7 +825,7 @@ TEST_F(ConfigParserTest, ParseConfig) { for (base::ListValue::iterator i = startup_list->begin(); i != startup_list->end(); ++i) { std::string url; - EXPECT_TRUE(i->GetAsString(&url)); + EXPECT_TRUE((*i)->GetAsString(&url)); startup_pages.push_back(url); } ASSERT_EQ(2u, startup_pages.size()); diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc index 26308bfd7f1d13..93f1a8b9d34194 100644 --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc @@ -680,7 +680,8 @@ std::vector ProfileManager::GetLastOpenedProfiles( base::ListValue::const_iterator it; for (it = profile_list->begin(); it != profile_list->end(); ++it) { std::string profile_path; - if (!it->GetAsString(&profile_path) || profile_path.empty() || + if (!(*it)->GetAsString(&profile_path) || + profile_path.empty() || profile_path == base::FilePath(chrome::kSystemProfileDir).AsUTF8Unsafe()) { LOG(WARNING) << "Invalid entry in " << prefs::kProfilesLastActive; @@ -902,10 +903,10 @@ void ProfileManager::CleanUpDeletedProfiles() { local_state->GetList(prefs::kProfilesDeleted); DCHECK(deleted_profiles); - for (const base::Value& value : *deleted_profiles) { + for (const std::unique_ptr& value : *deleted_profiles) { base::FilePath profile_path; bool is_valid_profile_path = - base::GetValueAsFilePath(value, &profile_path) && + base::GetValueAsFilePath(*value, &profile_path) && profile_path.DirName() == user_data_dir(); // Although it should never happen, make sure this is a valid path in the // user_data_dir, so we don't accidentially delete something else. @@ -916,11 +917,12 @@ void ProfileManager::CleanUpDeletedProfiles() { BrowserThread::PostTaskAndReply( BrowserThread::FILE, FROM_HERE, base::Bind(&NukeProfileFromDisk, profile_path), - base::Bind(&ProfileCleanedUp, &value)); + base::Bind(&ProfileCleanedUp, value.get())); } else { // Everything is fine, the profile was removed on shutdown. - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(&ProfileCleanedUp, &value)); + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::Bind(&ProfileCleanedUp, value.get())); } } else { LOG(ERROR) << "Found invalid profile path in deleted_profiles: " diff --git a/chrome/browser/spellchecker/spellcheck_service.cc b/chrome/browser/spellchecker/spellcheck_service.cc index e496d8909d595f..d07712f5fec4a8 100644 --- a/chrome/browser/spellchecker/spellcheck_service.cc +++ b/chrome/browser/spellchecker/spellcheck_service.cc @@ -127,7 +127,7 @@ void SpellcheckService::GetDictionaries(base::SupportsUserData* browser_context, for (const auto& value : *prefs->GetList(spellcheck::prefs::kSpellCheckDictionaries)) { std::string dictionary; - if (value.GetAsString(&dictionary)) + if (value->GetAsString(&dictionary)) spellcheck_dictionaries.insert(dictionary); } @@ -216,7 +216,7 @@ void SpellcheckService::LoadHunspellDictionaries() { for (const auto& dictionary_value : *dictionary_values) { std::string dictionary; - dictionary_value.GetAsString(&dictionary); + dictionary_value->GetAsString(&dictionary); hunspell_dictionaries_.push_back( base::MakeUnique( dictionary, diff --git a/chrome/browser/spellchecker/spellcheck_service_browsertest.cc b/chrome/browser/spellchecker/spellcheck_service_browsertest.cc index 0c3895af3d36af..ca047baed3e606 100644 --- a/chrome/browser/spellchecker/spellcheck_service_browsertest.cc +++ b/chrome/browser/spellchecker/spellcheck_service_browsertest.cc @@ -133,7 +133,7 @@ class SpellcheckServiceBrowserTest : public InProcessBrowserTest { std::vector dictionaries; for (const auto& item_value : *list_value) { base::StringPiece dictionary; - EXPECT_TRUE(item_value.GetAsString(&dictionary)); + EXPECT_TRUE(item_value->GetAsString(&dictionary)); dictionaries.push_back(dictionary); } return base::JoinString(dictionaries, ","); diff --git a/chrome/browser/supervised_user/child_accounts/family_info_fetcher.cc b/chrome/browser/supervised_user/child_accounts/family_info_fetcher.cc index 41ea8ef0c8961c..35f06fc9250087 100644 --- a/chrome/browser/supervised_user/child_accounts/family_info_fetcher.cc +++ b/chrome/browser/supervised_user/child_accounts/family_info_fetcher.cc @@ -268,8 +268,8 @@ bool FamilyInfoFetcher::ParseMembers(const base::ListValue* list, it != list->end(); it++) { FamilyMember member; - const base::DictionaryValue* dict = NULL; - if (!it->GetAsDictionary(&dict) || !ParseMember(dict, &member)) { + base::DictionaryValue* dict = NULL; + if (!(*it)->GetAsDictionary(&dict) || !ParseMember(dict, &member)) { return false; } members->push_back(member); diff --git a/chrome/browser/supervised_user/supervised_user_site_list.cc b/chrome/browser/supervised_user/supervised_user_site_list.cc index 8b9253b26ec009..5d6c0627272d6a 100644 --- a/chrome/browser/supervised_user/supervised_user_site_list.cc +++ b/chrome/browser/supervised_user/supervised_user_site_list.cc @@ -48,7 +48,7 @@ std::vector ConvertListValues(const base::ListValue* list_values) { if (list_values) { for (const auto& entry : *list_values) { std::string entry_string; - if (!entry.GetAsString(&entry_string)) { + if (!entry->GetAsString(&entry_string)) { LOG(ERROR) << "Invalid whitelist entry"; continue; } diff --git a/chrome/browser/sync/test/integration/preferences_helper.cc b/chrome/browser/sync/test/integration/preferences_helper.cc index 3b50d009175bb3..3989df9e7fb1da 100644 --- a/chrome/browser/sync/test/integration/preferences_helper.cc +++ b/chrome/browser/sync/test/integration/preferences_helper.cc @@ -77,7 +77,7 @@ void ChangeListPref(int index, for (base::ListValue::const_iterator it = new_value.begin(); it != new_value.end(); ++it) { - list->Append(it->CreateDeepCopy()); + list->Append((*it)->CreateDeepCopy()); } } @@ -87,7 +87,7 @@ void ChangeListPref(int index, for (base::ListValue::const_iterator it = new_value.begin(); it != new_value.end(); ++it) { - list_verifier->Append(it->CreateDeepCopy()); + list_verifier->Append((*it)->CreateDeepCopy()); } } } diff --git a/chrome/browser/ui/app_list/search/webstore/webstore_provider.cc b/chrome/browser/ui/app_list/search/webstore/webstore_provider.cc index 7999174d30741c..12b0c57595eb52 100644 --- a/chrome/browser/ui/app_list/search/webstore/webstore_provider.cc +++ b/chrome/browser/ui/app_list/search/webstore/webstore_provider.cc @@ -139,7 +139,7 @@ void WebstoreProvider::ProcessWebstoreSearchResults( it != result_list->end(); ++it) { const base::DictionaryValue* dict; - if (!it->GetAsDictionary(&dict)) + if (!(*it)->GetAsDictionary(&dict)) continue; std::unique_ptr result(CreateResult(query, *dict)); diff --git a/chrome/browser/ui/webui/browsing_history_handler.cc b/chrome/browser/ui/webui/browsing_history_handler.cc index 046516dc3d9d39..87b3e8d3a90db9 100644 --- a/chrome/browser/ui/webui/browsing_history_handler.cc +++ b/chrome/browser/ui/webui/browsing_history_handler.cc @@ -364,13 +364,14 @@ void BrowsingHistoryHandler::HandleRemoveVisits(const base::ListValue* args) { items_to_remove.reserve(args->GetSize()); for (base::ListValue::const_iterator it = args->begin(); it != args->end(); ++it) { - const base::DictionaryValue* deletion = NULL; + base::DictionaryValue* deletion = NULL; base::string16 url; - const base::ListValue* timestamps = NULL; + base::ListValue* timestamps = NULL; // Each argument is a dictionary with properties "url" and "timestamps". - if (!(it->GetAsDictionary(&deletion) && deletion->GetString("url", &url) && - deletion->GetList("timestamps", ×tamps))) { + if (!((*it)->GetAsDictionary(&deletion) && + deletion->GetString("url", &url) && + deletion->GetList("timestamps", ×tamps))) { NOTREACHED() << "Unable to extract arguments"; return; } @@ -383,7 +384,7 @@ void BrowsingHistoryHandler::HandleRemoveVisits(const base::ListValue* args) { double timestamp; for (base::ListValue::const_iterator ts_iterator = timestamps->begin(); ts_iterator != timestamps->end(); ++ts_iterator) { - if (!ts_iterator->GetAsDouble(×tamp)) { + if (!(*ts_iterator)->GetAsDouble(×tamp)) { NOTREACHED() << "Unable to extract visit timestamp."; continue; } diff --git a/chrome/browser/ui/webui/certificate_viewer_webui.cc b/chrome/browser/ui/webui/certificate_viewer_webui.cc index eebe9f1998f233..1ab60ce8fe4fd9 100644 --- a/chrome/browser/ui/webui/certificate_viewer_webui.cc +++ b/chrome/browser/ui/webui/certificate_viewer_webui.cc @@ -291,55 +291,74 @@ void CertificateViewerDialogHandler::RequestCertificateFields( net::X509Certificate::OSCertHandle cert = cert_chain_[cert_index]; + base::ListValue root_list; + base::DictionaryValue* node_details; + base::DictionaryValue* alt_node_details; + base::ListValue* cert_sub_fields; + root_list.Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", x509_certificate_model::GetTitle(cert)); + + base::ListValue* cert_fields; + node_details->Set("children", cert_fields = new base::ListValue()); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE)); + node_details->Set("children", cert_fields = new base::ListValue()); + // Main certificate fields. - auto cert_fields = base::MakeUnique(); - auto node_details = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VERSION)); std::string version = x509_certificate_model::GetVersion(cert); - if (!version.empty()) { + if (!version.empty()) node_details->SetString("payload.val", l10n_util::GetStringFUTF8(IDS_CERT_DETAILS_VERSION_FORMAT, base::UTF8ToUTF16(version))); - } - cert_fields->Append(std::move(node_details)); - node_details = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SERIAL_NUMBER)); node_details->SetString("payload.val", x509_certificate_model::GetSerialNumberHexified(cert, l10n_util::GetStringUTF8(IDS_CERT_INFO_FIELD_NOT_PRESENT))); - cert_fields->Append(std::move(node_details)); - node_details = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG)); node_details->SetString("payload.val", x509_certificate_model::ProcessSecAlgorithmSignature(cert)); - cert_fields->Append(std::move(node_details)); - node_details = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_ISSUER)); node_details->SetString("payload.val", x509_certificate_model::GetIssuerName(cert)); - cert_fields->Append(std::move(node_details)); // Validity period. - auto cert_sub_fields = base::MakeUnique(); - - auto sub_node_details = base::MakeUnique(); - sub_node_details->SetString( - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE)); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY)); - auto alt_node_details = base::MakeUnique(); + node_details->Set("children", cert_sub_fields = new base::ListValue()); + cert_sub_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE)); + cert_sub_fields->Append( + base::WrapUnique(alt_node_details = new base::DictionaryValue())); alt_node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_AFTER)); - base::Time issued, expires; if (x509_certificate_model::GetTimes(cert, &issued, &expires)) { - sub_node_details->SetString( + node_details->SetString( "payload.val", base::UTF16ToUTF8( base::TimeFormatShortDateAndTimeWithTimeZone(issued))); @@ -348,45 +367,33 @@ void CertificateViewerDialogHandler::RequestCertificateFields( base::UTF16ToUTF8( base::TimeFormatShortDateAndTimeWithTimeZone(expires))); } - cert_sub_fields->Append(std::move(sub_node_details)); - cert_sub_fields->Append(std::move(alt_node_details)); - node_details = base::MakeUnique(); - node_details->SetString("label", - l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY)); - node_details->Set("children", std::move(cert_sub_fields)); - cert_fields->Append(std::move(node_details)); - - node_details = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT)); node_details->SetString("payload.val", x509_certificate_model::GetSubjectName(cert)); - cert_fields->Append(std::move(node_details)); // Subject key information. - cert_sub_fields = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO)); - sub_node_details = base::MakeUnique(); - sub_node_details->SetString( - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG)); - sub_node_details->SetString( - "payload.val", + node_details->Set("children", cert_sub_fields = new base::ListValue()); + cert_sub_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG)); + node_details->SetString("payload.val", x509_certificate_model::ProcessSecAlgorithmSubjectPublicKey(cert)); - cert_sub_fields->Append(std::move(sub_node_details)); - - sub_node_details = base::MakeUnique(); - sub_node_details->SetString( - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY)); - sub_node_details->SetString( - "payload.val", x509_certificate_model::ProcessSubjectPublicKeyInfo(cert)); - cert_sub_fields->Append(std::move(sub_node_details)); - - node_details = base::MakeUnique(); - node_details->SetString( - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO)); - node_details->Set("children", std::move(cert_sub_fields)); - cert_fields->Append(std::move(node_details)); + cert_sub_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY)); + node_details->SetString("payload.val", + x509_certificate_model::ProcessSubjectPublicKeyInfo(cert)); // Extensions. x509_certificate_model::Extensions extensions; @@ -396,76 +403,53 @@ void CertificateViewerDialogHandler::RequestCertificateFields( cert, &extensions); if (!extensions.empty()) { - cert_sub_fields = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS)); + node_details->Set("children", cert_sub_fields = new base::ListValue()); for (x509_certificate_model::Extensions::const_iterator i = extensions.begin(); i != extensions.end(); ++i) { - sub_node_details = base::MakeUnique(); - sub_node_details->SetString("label", i->name); - sub_node_details->SetString("payload.val", i->value); - cert_sub_fields->Append(std::move(sub_node_details)); + cert_sub_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", i->name); + node_details->SetString("payload.val", i->value); } - - node_details = base::MakeUnique(); - node_details->SetString( - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS)); - node_details->Set("children", std::move(cert_sub_fields)); - cert_fields->Append(std::move(node_details)); } - // Details certificate information. - node_details = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG)); node_details->SetString("payload.val", x509_certificate_model::ProcessSecAlgorithmSignatureWrap(cert)); - cert_fields->Append(std::move(node_details)); - node_details = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_VALUE)); node_details->SetString("payload.val", x509_certificate_model::ProcessRawBitsSignatureWrap(cert)); - cert_fields->Append(std::move(node_details)); - // Fingerprint information. - cert_sub_fields = base::MakeUnique(); + cert_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP)); + node_details->Set("children", cert_sub_fields = new base::ListValue()); - sub_node_details = base::MakeUnique(); - sub_node_details->SetString( - "label", + cert_sub_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL)); - sub_node_details->SetString("payload.val", - x509_certificate_model::HashCertSHA256(cert)); - cert_sub_fields->Append(std::move(sub_node_details)); - - sub_node_details = base::MakeUnique(); - sub_node_details->SetString( - "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL)); - sub_node_details->SetString("payload.val", - x509_certificate_model::HashCertSHA1(cert)); - cert_sub_fields->Append(std::move(sub_node_details)); - - node_details = base::MakeUnique(); - node_details->SetString( - "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP)); - node_details->Set("children", std::move(cert_sub_fields)); - cert_fields->Append(std::move(node_details)); - - // Certificate information. - node_details = base::MakeUnique(); - node_details->SetString( - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE)); - node_details->Set("children", std::move(cert_fields)); - cert_fields = base::MakeUnique(); - cert_fields->Append(std::move(node_details)); - - // Top level information. - base::ListValue root_list; - node_details = base::MakeUnique(); - node_details->SetString("label", x509_certificate_model::GetTitle(cert)); - node_details->Set("children", std::move(cert_fields)); - root_list.Append(std::move(node_details)); + node_details->SetString("payload.val", + x509_certificate_model::HashCertSHA256(cert)); + cert_sub_fields->Append( + base::WrapUnique(node_details = new base::DictionaryValue())); + node_details->SetString("label", + l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL)); + node_details->SetString("payload.val", + x509_certificate_model::HashCertSHA1(cert)); // Send certificate information to javascript. web_ui()->CallJavascriptFunctionUnsafe("cert_viewer.getCertificateFields", diff --git a/chrome/browser/ui/webui/chromeos/emulator/device_emulator_message_handler.cc b/chrome/browser/ui/webui/chromeos/emulator/device_emulator_message_handler.cc index c38c67ecfb8415..bd117e45fce0ab 100644 --- a/chrome/browser/ui/webui/chromeos/emulator/device_emulator_message_handler.cc +++ b/chrome/browser/ui/webui/chromeos/emulator/device_emulator_message_handler.cc @@ -426,7 +426,7 @@ void DeviceEmulatorMessageHandler::UpdatePowerSources( nullptr; for (const auto& val : *sources) { const base::DictionaryValue* dict; - CHECK(val.GetAsDictionary(&dict)); + CHECK(val->GetAsDictionary(&dict)); power_manager::PowerSupplyProperties_PowerSource* source = props.add_available_external_power_source(); std::string id; diff --git a/chrome/browser/ui/webui/chromeos/login/l10n_util.cc b/chrome/browser/ui/webui/chromeos/login/l10n_util.cc index c4157b3001c05e..dbc4ab355df974 100644 --- a/chrome/browser/ui/webui/chromeos/login/l10n_util.cc +++ b/chrome/browser/ui/webui/chromeos/login/l10n_util.cc @@ -477,9 +477,9 @@ std::string FindMostRelevantLocale( for (base::ListValue::const_iterator available_it = available_locales.begin(); available_it != available_locales.end(); ++available_it) { - const base::DictionaryValue* dict; + base::DictionaryValue* dict; std::string available_locale; - if (!available_it->GetAsDictionary(&dict) || + if (!(*available_it)->GetAsDictionary(&dict) || !dict->GetString("value", &available_locale)) { NOTREACHED(); continue; diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc index bcb26d6f24a0a5..fa32d34f6f1af8 100644 --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc @@ -247,7 +247,7 @@ void EnforcePolicyInputMethods(std::string user_input_method) { std::string input_method; for (const auto& input_method_entry : *login_screen_input_methods) { - if (input_method_entry.GetAsString(&input_method)) + if (input_method_entry->GetAsString(&input_method)) allowed_input_methods.push_back(input_method); } chromeos::input_method::InputMethodManager* imm = diff --git a/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc b/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc index 8e0263824e73d8..4a0f275b04b5f0 100644 --- a/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc +++ b/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc @@ -46,7 +46,7 @@ std::vector GetIds(const base::Value& value) { const base::ListValue* list; if (value.GetAsList(&list)) { for (const auto& list_item : *list) - ids.push_back(GetId(list_item)); + ids.push_back(GetId(*list_item)); } else { ids.push_back(GetId(value)); } diff --git a/chrome/browser/ui/webui/options/certificate_manager_handler.cc b/chrome/browser/ui/webui/options/certificate_manager_handler.cc index e4c42f4fd52a24..cce634b34b878f 100644 --- a/chrome/browser/ui/webui/options/certificate_manager_handler.cc +++ b/chrome/browser/ui/webui/options/certificate_manager_handler.cc @@ -88,12 +88,13 @@ struct DictionaryIdComparator { : collator_(collator) { } - bool operator()(const base::Value& a, const base::Value& b) const { + bool operator()(const std::unique_ptr& a, + const std::unique_ptr& b) const { const base::DictionaryValue* a_dict; - bool a_is_dictionary = a.GetAsDictionary(&a_dict); + bool a_is_dictionary = a->GetAsDictionary(&a_dict); DCHECK(a_is_dictionary); const base::DictionaryValue* b_dict; - bool b_is_dictionary = b.GetAsDictionary(&b_dict); + bool b_is_dictionary = b->GetAsDictionary(&b_dict); DCHECK(b_is_dictionary); base::string16 a_str; base::string16 b_str; diff --git a/chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc index 2dfe3d25ba86a1..5f5e0312b657ef 100644 --- a/chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc +++ b/chrome/browser/ui/webui/options/chromeos/core_chromeos_options_handler.cc @@ -98,7 +98,7 @@ base::Value* CreateUsersWhitelist(const base::Value *pref_value) { for (base::ListValue::const_iterator i = list_value->begin(); i != list_value->end(); ++i) { std::string email; - if (i->GetAsString(&email)) { + if ((*i)->GetAsString(&email)) { // Translate email to the display email. const std::string display_email = user_manager->GetUserDisplayEmail(AccountId::FromUserEmail(email)); diff --git a/chrome/browser/ui/webui/options/chromeos/display_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/display_options_handler.cc index 4ea500a53eead1..f6348dded3089d 100644 --- a/chrome/browser/ui/webui/options/chromeos/display_options_handler.cc +++ b/chrome/browser/ui/webui/options/chromeos/display_options_handler.cc @@ -434,7 +434,7 @@ void DisplayOptionsHandler::HandleSetDisplayLayout( builder.ClearPlacements(); for (const auto& layout : *layouts) { const base::DictionaryValue* dictionary; - if (!layout.GetAsDictionary(&dictionary)) { + if (!layout->GetAsDictionary(&dictionary)) { LOG(ERROR) << "Invalid layout dictionary: " << *dictionary; continue; } diff --git a/chrome/browser/ui/webui/options/content_settings_handler.cc b/chrome/browser/ui/webui/options/content_settings_handler.cc index b72dfe7301f741..757ec244d3c5e7 100644 --- a/chrome/browser/ui/webui/options/content_settings_handler.cc +++ b/chrome/browser/ui/webui/options/content_settings_handler.cc @@ -941,8 +941,8 @@ void ContentSettingsHandler::CompareMediaExceptionsWithFlash( settings.exceptions.clear(); for (base::ListValue::const_iterator entry = exceptions.begin(); entry != exceptions.end(); ++entry) { - const base::DictionaryValue* dict = nullptr; - bool valid_dict = entry->GetAsDictionary(&dict); + base::DictionaryValue* dict = nullptr; + bool valid_dict = (*entry)->GetAsDictionary(&dict); DCHECK(valid_dict); std::string origin; diff --git a/chrome/browser/ui/webui/options/language_options_handler_common.cc b/chrome/browser/ui/webui/options/language_options_handler_common.cc index 151d4d70b42282..820834e22f6606 100644 --- a/chrome/browser/ui/webui/options/language_options_handler_common.cc +++ b/chrome/browser/ui/webui/options/language_options_handler_common.cc @@ -266,7 +266,7 @@ void LanguageOptionsHandlerCommon::UpdateLanguageListCallback( for (base::ListValue::const_iterator it = language_list->begin(); it != language_list->end(); ++it) { std::string lang; - it->GetAsString(&lang); + (*it)->GetAsString(&lang); languages.push_back(lang); } diff --git a/chrome/browser/ui/webui/settings/certificates_handler.cc b/chrome/browser/ui/webui/settings/certificates_handler.cc index d80b14b987706f..9930c7b9bc9ca6 100644 --- a/chrome/browser/ui/webui/settings/certificates_handler.cc +++ b/chrome/browser/ui/webui/settings/certificates_handler.cc @@ -85,14 +85,15 @@ struct DictionaryIdComparator { explicit DictionaryIdComparator(icu::Collator* collator) : collator_(collator) {} - bool operator()(const base::Value& a, const base::Value& b) const { - DCHECK(a.GetType() == base::Value::Type::DICTIONARY); - DCHECK(b.GetType() == base::Value::Type::DICTIONARY); + bool operator()(const std::unique_ptr& a, + const std::unique_ptr& b) const { + DCHECK(a->GetType() == base::Value::Type::DICTIONARY); + DCHECK(b->GetType() == base::Value::Type::DICTIONARY); const base::DictionaryValue* a_dict; - bool a_is_dictionary = a.GetAsDictionary(&a_dict); + bool a_is_dictionary = a->GetAsDictionary(&a_dict); DCHECK(a_is_dictionary); const base::DictionaryValue* b_dict; - bool b_is_dictionary = b.GetAsDictionary(&b_dict); + bool b_is_dictionary = b->GetAsDictionary(&b_dict); DCHECK(b_is_dictionary); base::string16 a_str; base::string16 b_str; diff --git a/chrome/browser/ui/webui/site_settings_helper.cc b/chrome/browser/ui/webui/site_settings_helper.cc index 8c28fbeb998850..70ef6fa8c7af4f 100644 --- a/chrome/browser/ui/webui/site_settings_helper.cc +++ b/chrome/browser/ui/webui/site_settings_helper.cc @@ -307,7 +307,7 @@ void GetPolicyAllowedUrls( std::vector patterns; for (const auto& entry : *policy_urls) { std::string url; - bool valid_string = entry.GetAsString(&url); + bool valid_string = entry->GetAsString(&url); if (!valid_string) continue; diff --git a/chrome/common/extensions/api/common_extension_api_unittest.cc b/chrome/common/extensions/api/common_extension_api_unittest.cc index 3d6e2c6d1a079a..776db1c9758356 100644 --- a/chrome/common/extensions/api/common_extension_api_unittest.cc +++ b/chrome/common/extensions/api/common_extension_api_unittest.cc @@ -802,7 +802,7 @@ TEST(ExtensionAPITest, TypesHaveNamespace) { const base::DictionaryValue* ret = nullptr; for (const auto& val : *list) { const base::DictionaryValue* dict = nullptr; - if (!val.GetAsDictionary(&dict)) + if (!val->GetAsDictionary(&dict)) continue; std::string str; if (dict->GetString(key, &str) && str == value) { diff --git a/chrome/common/extensions/api/extension_action/action_info.cc b/chrome/common/extensions/api/extension_action/action_info.cc index c30141df4dfe67..aa8376b06dcbc5 100644 --- a/chrome/common/extensions/api/extension_action/action_info.cc +++ b/chrome/common/extensions/api/extension_action/action_info.cc @@ -68,7 +68,8 @@ std::unique_ptr ActionInfo::Load(const Extension* extension, dict->GetList(keys::kPageActionIcons, &icons)) { base::ListValue::const_iterator iter = icons->begin(); std::string path; - if (iter == icons->end() || !iter->GetAsString(&path) || + if (iter == icons->end() || + !(*iter)->GetAsString(&path) || !manifest_handler_helpers::NormalizeAndValidatePath(&path)) { *error = base::ASCIIToUTF16(errors::kInvalidPageActionIconPath); return std::unique_ptr(); diff --git a/chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc b/chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc index b07e89cdb5dc14..44a4ff1995a84c 100644 --- a/chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc +++ b/chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc @@ -254,8 +254,8 @@ bool LoadFileBrowserHandlers( FileBrowserHandler::List* result, base::string16* error) { for (const auto& entry : *extension_actions) { - const base::DictionaryValue* dict; - if (!entry.GetAsDictionary(&dict)) { + base::DictionaryValue* dict; + if (!entry->GetAsDictionary(&dict)) { *error = base::ASCIIToUTF16(errors::kInvalidFileBrowserHandler); return false; } diff --git a/chrome/common/extensions/api/url_handlers/url_handlers_parser.cc b/chrome/common/extensions/api/url_handlers/url_handlers_parser.cc index 4f971b94d93650..61dc4998998df1 100644 --- a/chrome/common/extensions/api/url_handlers/url_handlers_parser.cc +++ b/chrome/common/extensions/api/url_handlers/url_handlers_parser.cc @@ -114,7 +114,7 @@ bool ParseUrlHandler(const std::string& handler_id, for (base::ListValue::const_iterator it = manif_patterns->begin(); it != manif_patterns->end(); ++it) { std::string str_pattern; - it->GetAsString(&str_pattern); + (*it)->GetAsString(&str_pattern); // TODO(sergeygs): Limit this to non-top-level domains. // TODO(sergeygs): Also add a verification to the CWS installer that the // URL patterns claimed here belong to the app's author verified sites. diff --git a/chrome/common/extensions/manifest_handlers/linked_app_icons.cc b/chrome/common/extensions/manifest_handlers/linked_app_icons.cc index d8e2fac5fe1991..744a2d16db352b 100644 --- a/chrome/common/extensions/manifest_handlers/linked_app_icons.cc +++ b/chrome/common/extensions/manifest_handlers/linked_app_icons.cc @@ -70,7 +70,7 @@ bool LinkedAppIconsHandler::Parse(Extension* extension, base::string16* error) { for (const auto& icon_value : *icons_list) { const base::DictionaryValue* icon_dict = nullptr; - if (!icon_value.GetAsDictionary(&icon_dict)) { + if (!icon_value->GetAsDictionary(&icon_dict)) { *error = base::UTF8ToUTF16( extensions::manifest_errors::kInvalidLinkedAppIcon); return false; diff --git a/chrome/service/cloud_print/printer_job_queue_handler.cc b/chrome/service/cloud_print/printer_job_queue_handler.cc index 64aa593b1c18bc..4757bd9344a49a 100644 --- a/chrome/service/cloud_print/printer_job_queue_handler.cc +++ b/chrome/service/cloud_print/printer_job_queue_handler.cc @@ -120,7 +120,7 @@ std::vector PrinterJobQueueHandler::GetJobsFromQueue( std::vector jobs_with_timeouts; for (const auto& job_value : *job_list) { const base::DictionaryValue* job_data = nullptr; - if (!job_value.GetAsDictionary(&job_data)) + if (!job_value->GetAsDictionary(&job_data)) continue; JobDetails job_details_current = ConstructJobDetailsFromJson(*job_data); diff --git a/chrome/test/chromedriver/chrome/network_conditions.cc b/chrome/test/chromedriver/chrome/network_conditions.cc index bc28c9e7943ec8..86166eb21e82dd 100644 --- a/chrome/test/chromedriver/chrome/network_conditions.cc +++ b/chrome/test/chromedriver/chrome/network_conditions.cc @@ -39,7 +39,7 @@ Status FindPresetNetwork(std::string network_name, it != networks->end(); ++it) { base::DictionaryValue* network = NULL; - if (!it->GetAsDictionary(&network)) { + if (!(*it)->GetAsDictionary(&network)) { return Status(kUnknownError, "malformed network in list: should be a dictionary"); } diff --git a/chrome/test/chromedriver/logging.cc b/chrome/test/chromedriver/logging.cc index f99a04928d9485..71dfbd5659d655 100644 --- a/chrome/test/chromedriver/logging.cc +++ b/chrome/test/chromedriver/logging.cc @@ -171,8 +171,8 @@ bool GetFirstErrorMessageFromList(const base::ListValue* list, for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { - const base::DictionaryValue* log_entry = NULL; - it->GetAsDictionary(&log_entry); + base::DictionaryValue* log_entry = NULL; + (*it)->GetAsDictionary(&log_entry); if (log_entry != NULL) { std::string level; if (log_entry->GetString("level", &level)) diff --git a/chrome/test/chromedriver/performance_logger.cc b/chrome/test/chromedriver/performance_logger.cc index 23d94e91549fc7..d7f61c545c3f32 100644 --- a/chrome/test/chromedriver/performance_logger.cc +++ b/chrome/test/chromedriver/performance_logger.cc @@ -190,8 +190,8 @@ Status PerformanceLogger::HandleTraceEvents( "received DevTools trace data in unexpected format"); } for (const auto& trace : *traces) { - const base::DictionaryValue* event_dict; - if (!trace.GetAsDictionary(&event_dict)) + base::DictionaryValue* event_dict; + if (!trace->GetAsDictionary(&event_dict)) return Status(kUnknownError, "trace event must be a dictionary"); AddLogEntry(client->GetId(), "Tracing.dataCollected", *event_dict); } diff --git a/chrome/utility/importer/nss_decryptor.cc b/chrome/utility/importer/nss_decryptor.cc index 3c45524ae50c99..1698420e1e01b0 100644 --- a/chrome/utility/importer/nss_decryptor.cc +++ b/chrome/utility/importer/nss_decryptor.cc @@ -306,7 +306,7 @@ bool NSSDecryptor::ReadAndParseLogins( if (password_dict->GetList("disabledHosts", &blacklist_domains)) { for (const auto& value : *blacklist_domains) { std::string disabled_host; - if (!value.GetAsString(&disabled_host)) + if (!value->GetAsString(&disabled_host)) continue; forms->push_back(CreateBlacklistPasswordForm(disabled_host)); } @@ -315,7 +315,7 @@ bool NSSDecryptor::ReadAndParseLogins( if (password_dict->GetList("logins", &password_list)) { for (const auto& value : *password_list) { const base::DictionaryValue* password_detail; - if (!value.GetAsDictionary(&password_detail)) + if (!value->GetAsDictionary(&password_detail)) continue; FirefoxRawPasswordInfo raw_password_info; diff --git a/chromecast/crash/linux/crash_testing_utils.cc b/chromecast/crash/linux/crash_testing_utils.cc index 6ba362fd4658fc..4649fc9924fa22 100644 --- a/chromecast/crash/linux/crash_testing_utils.cc +++ b/chromecast/crash/linux/crash_testing_utils.cc @@ -63,7 +63,7 @@ int WriteLockFile(const std::string& path, base::ListValue* contents) { std::string lockfile; for (const auto& elem : *contents) { - std::unique_ptr dump_info = SerializeToJson(elem); + std::unique_ptr dump_info = SerializeToJson(*elem); RCHECK(dump_info, -1, "Failed to serialize DumpInfo"); lockfile += *dump_info; lockfile += "\n"; // Add line seperatators @@ -95,7 +95,7 @@ bool FetchDumps(const std::string& lockfile_path, dumps->clear(); for (const auto& elem : *dump_list) { - std::unique_ptr dump(new DumpInfo(&elem)); + std::unique_ptr dump(new DumpInfo(elem.get())); RCHECK(dump->valid(), false, "Invalid DumpInfo"); dumps->push_back(std::move(dump)); } diff --git a/chromecast/crash/linux/synchronized_minidump_manager.cc b/chromecast/crash/linux/synchronized_minidump_manager.cc index 49cb3ddf342349..4f1b79180f5f97 100644 --- a/chromecast/crash/linux/synchronized_minidump_manager.cc +++ b/chromecast/crash/linux/synchronized_minidump_manager.cc @@ -267,7 +267,7 @@ bool SynchronizedMinidumpManager::WriteFiles(const base::ListValue* dumps, std::string lockfile; for (const auto& elem : *dumps) { - std::unique_ptr dump_info = SerializeToJson(elem); + std::unique_ptr dump_info = SerializeToJson(*elem); RCHECK(dump_info, false); lockfile += *dump_info; lockfile += "\n"; // Add line seperatators @@ -332,7 +332,7 @@ std::vector> SynchronizedMinidumpManager::GetDumps() { std::vector> dumps; for (const auto& elem : *dumps_) { - dumps.push_back(std::unique_ptr(new DumpInfo(&elem))); + dumps.push_back(std::unique_ptr(new DumpInfo(elem.get()))); } return dumps; diff --git a/chromeos/dbus/fake_shill_manager_client.cc b/chromeos/dbus/fake_shill_manager_client.cc index 9a1029b8906468..0c103e7161ea21 100644 --- a/chromeos/dbus/fake_shill_manager_client.cc +++ b/chromeos/dbus/fake_shill_manager_client.cc @@ -67,7 +67,7 @@ void AppendServicesForType( for (base::ListValue::const_iterator iter = service_list_in->begin(); iter != service_list_in->end(); ++iter) { std::string service_path; - if (!iter->GetAsString(&service_path)) + if (!(*iter)->GetAsString(&service_path)) continue; const base::DictionaryValue* properties = service_client->GetServiceProperties(service_path); @@ -1027,7 +1027,7 @@ base::ListValue* FakeShillManagerClient::GetEnabledServiceList( for (base::ListValue::const_iterator iter = service_list->begin(); iter != service_list->end(); ++iter) { std::string service_path; - if (!iter->GetAsString(&service_path)) + if (!(*iter)->GetAsString(&service_path)) continue; const base::DictionaryValue* properties = service_client->GetServiceProperties(service_path); @@ -1038,7 +1038,7 @@ base::ListValue* FakeShillManagerClient::GetEnabledServiceList( std::string type; properties->GetString(shill::kTypeProperty, &type); if (TechnologyEnabled(type)) - new_service_list->Append(iter->CreateDeepCopy()); + new_service_list->Append((*iter)->CreateDeepCopy()); } } return new_service_list; diff --git a/chromeos/dbus/shill_client_helper.cc b/chromeos/dbus/shill_client_helper.cc index fbff2082173912..46ba9b5b8f5b26 100644 --- a/chromeos/dbus/shill_client_helper.cc +++ b/chromeos/dbus/shill_client_helper.cc @@ -465,7 +465,7 @@ void AppendValueDataAsVariantInternal(dbus::MessageWriter* writer, variant_writer.OpenArray("s", &array_writer); for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { - const base::Value& value = *it; + const base::Value& value = **it; std::string value_string; if (!value.GetAsString(&value_string)) NET_LOG(ERROR) << "List value not a string: " << value; diff --git a/chromeos/dbus/shill_ipconfig_client.cc b/chromeos/dbus/shill_ipconfig_client.cc index c58c0c06fbab3c..84c1e1a11b18ff 100644 --- a/chromeos/dbus/shill_ipconfig_client.cc +++ b/chromeos/dbus/shill_ipconfig_client.cc @@ -126,10 +126,10 @@ void ShillIPConfigClientImpl::SetProperty( for (base::ListValue::const_iterator it = list_value->begin(); it != list_value->end(); ++it) { - DLOG_IF(ERROR, it->GetType() != base::Value::Type::STRING) - << "Unexpected type " << it->GetType(); + DLOG_IF(ERROR, (*it)->GetType() != base::Value::Type::STRING) + << "Unexpected type " << (*it)->GetType(); std::string str; - it->GetAsString(&str); + (*it)->GetAsString(&str); array_writer.AppendString(str); } variant_writer.CloseContainer(&array_writer); diff --git a/chromeos/network/geolocation_handler.cc b/chromeos/network/geolocation_handler.cc index 7ae451c51aed6c..a1c0b5eaf63986 100644 --- a/chromeos/network/geolocation_handler.cc +++ b/chromeos/network/geolocation_handler.cc @@ -112,7 +112,7 @@ void GeolocationHandler::HandlePropertyChanged(const std::string& key, for (base::ListValue::const_iterator iter = technologies->begin(); iter != technologies->end(); ++iter) { std::string technology; - iter->GetAsString(&technology); + (*iter)->GetAsString(&technology); if (technology == shill::kTypeWifi) { wifi_enabled_ = true; } else if (technology == shill::kTypeCellular) { diff --git a/chromeos/network/managed_network_configuration_handler_impl.cc b/chromeos/network/managed_network_configuration_handler_impl.cc index 8ada86f35ce871..023197e758e0ff 100644 --- a/chromeos/network/managed_network_configuration_handler_impl.cc +++ b/chromeos/network/managed_network_configuration_handler_impl.cc @@ -496,8 +496,8 @@ void ManagedNetworkConfigurationHandlerImpl::SetPolicy( for (base::ListValue::const_iterator it = network_configs_onc.begin(); it != network_configs_onc.end(); ++it) { - const base::DictionaryValue* network = NULL; - it->GetAsDictionary(&network); + base::DictionaryValue* network = NULL; + (*it)->GetAsDictionary(&network); DCHECK(network); std::string guid; diff --git a/chromeos/network/network_sms_handler.cc b/chromeos/network/network_sms_handler.cc index 42eaf41f8c6da6..f3eb86eb6fb4d8 100644 --- a/chromeos/network/network_sms_handler.cc +++ b/chromeos/network/network_sms_handler.cc @@ -115,8 +115,8 @@ void NetworkSmsHandler::ModemManagerNetworkSmsDeviceHandler::ListCallback( delete_queue_.clear(); for (base::ListValue::const_iterator iter = message_list.begin(); iter != message_list.end(); ++iter) { - const base::DictionaryValue* message = NULL; - if (iter->GetAsDictionary(&message)) + base::DictionaryValue* message = NULL; + if (!(*iter)->GetAsDictionary(&message)) continue; MessageReceived(*message); double index = 0; @@ -423,7 +423,7 @@ void NetworkSmsHandler::UpdateDevices(const base::ListValue* devices) { for (base::ListValue::const_iterator iter = devices->begin(); iter != devices->end(); ++iter) { std::string device_path; - iter->GetAsString(&device_path); + (*iter)->GetAsString(&device_path); if (!device_path.empty()) { // Request device properties. VLOG(1) << "GetDeviceProperties: " << device_path; diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc index aeba782ca751cf..7581d1e1750a79 100644 --- a/chromeos/network/network_state_handler.cc +++ b/chromeos/network/network_state_handler.cc @@ -602,7 +602,7 @@ void NetworkStateHandler::UpdateManagedList(ManagedState::ManagedType type, std::set list_entries; for (auto& iter : entries) { std::string path; - iter.GetAsString(&path); + iter->GetAsString(&path); if (path.empty() || path == shill::kFlimflamServicePath) { NET_LOG_ERROR(base::StringPrintf("Bad path in list:%d", type), path); continue; diff --git a/chromeos/network/network_util.cc b/chromeos/network/network_util.cc index db4623bf2cbde3..9d08c59fab8cb4 100644 --- a/chromeos/network/network_util.cc +++ b/chromeos/network/network_util.cc @@ -137,7 +137,7 @@ bool ParseCellularScanResults(const base::ListValue& list, scan_results->reserve(list.GetSize()); for (const auto& value : list) { const base::DictionaryValue* dict; - if (!value.GetAsDictionary(&dict)) + if (!value->GetAsDictionary(&dict)) return false; CellularScanResult scan_result; // If the network id property is not present then this network cannot be diff --git a/chromeos/network/onc/onc_certificate_importer_impl.cc b/chromeos/network/onc/onc_certificate_importer_impl.cc index d36a4e5f60847e..0542be3a86e8f9 100644 --- a/chromeos/network/onc/onc_certificate_importer_impl.cc +++ b/chromeos/network/onc/onc_certificate_importer_impl.cc @@ -167,7 +167,7 @@ bool CertificateImporterImpl::ParseServerOrCaCertificate( for (base::ListValue::const_iterator it = trust_list->begin(); it != trust_list->end(); ++it) { std::string trust_type; - if (!it->GetAsString(&trust_type)) + if (!(*it)->GetAsString(&trust_type)) NOTREACHED(); if (trust_type == ::onc::certificate::kWeb) { diff --git a/chromeos/network/onc/onc_mapper.cc b/chromeos/network/onc/onc_mapper.cc index 16c1172c8dfb2e..22f5766e935cfb 100644 --- a/chromeos/network/onc/onc_mapper.cc +++ b/chromeos/network/onc/onc_mapper.cc @@ -120,9 +120,10 @@ std::unique_ptr Mapper::MapArray( int original_index = 0; for (const auto& entry : onc_array) { std::unique_ptr result_entry; - result_entry = - MapEntry(original_index, *array_signature.onc_array_entry_signature, - entry, nested_error); + result_entry = MapEntry(original_index, + *array_signature.onc_array_entry_signature, + *entry, + nested_error); if (result_entry.get() != NULL) result_array->Append(std::move(result_entry)); else diff --git a/chromeos/network/onc/onc_merger.cc b/chromeos/network/onc/onc_merger.cc index 41c6b5807ee89e..df8fd5bd52e65f 100644 --- a/chromeos/network/onc/onc_merger.cc +++ b/chromeos/network/onc/onc_merger.cc @@ -56,7 +56,7 @@ void MarkRecommendedFieldnames(const base::DictionaryValue& policy, for (base::ListValue::const_iterator it = recommended_value->begin(); it != recommended_value->end(); ++it) { std::string entry; - if (it->GetAsString(&entry)) + if ((*it)->GetAsString(&entry)) result->SetBooleanWithoutPathExpansion(entry, true); } } diff --git a/chromeos/network/onc/onc_translator_shill_to_onc.cc b/chromeos/network/onc/onc_translator_shill_to_onc.cc index 7796c2afcbd8b6..eacb2c3763fa6c 100644 --- a/chromeos/network/onc/onc_translator_shill_to_onc.cc +++ b/chromeos/network/onc/onc_translator_shill_to_onc.cc @@ -683,7 +683,7 @@ void ShillToONCTranslator::TranslateAndAddListOfObjects( for (base::ListValue::const_iterator it = list.begin(); it != list.end(); ++it) { const base::DictionaryValue* shill_value = NULL; - if (!it->GetAsDictionary(&shill_value)) + if (!(*it)->GetAsDictionary(&shill_value)) continue; ShillToONCTranslator nested_translator( *shill_value, onc_source_, diff --git a/chromeos/network/onc/onc_utils.cc b/chromeos/network/onc/onc_utils.cc index 4b7b7a38d11d44..7a797e9648d544 100644 --- a/chromeos/network/onc/onc_utils.cc +++ b/chromeos/network/onc/onc_utils.cc @@ -281,9 +281,9 @@ void ExpandStringsInOncObject( void ExpandStringsInNetworks(const StringSubstitution& substitution, base::ListValue* network_configs) { - for (auto& entry : *network_configs) { + for (const auto& entry : *network_configs) { base::DictionaryValue* network = nullptr; - entry.GetAsDictionary(&network); + entry->GetAsDictionary(&network); DCHECK(network); ExpandStringsInOncObject( kNetworkConfigurationSignature, substitution, network); @@ -407,7 +407,7 @@ CertPEMsByGUIDMap GetServerAndCACertsByGUID( CertPEMsByGUIDMap certs_by_guid; for (const auto& entry : certificates) { const base::DictionaryValue* cert = nullptr; - bool entry_is_dictionary = entry.GetAsDictionary(&cert); + bool entry_is_dictionary = entry->GetAsDictionary(&cert); DCHECK(entry_is_dictionary); std::string guid; @@ -435,9 +435,9 @@ CertPEMsByGUIDMap GetServerAndCACertsByGUID( } void FillInHexSSIDFieldsInNetworks(base::ListValue* network_configs) { - for (auto& entry : *network_configs) { + for (const auto& entry : *network_configs) { base::DictionaryValue* network = nullptr; - entry.GetAsDictionary(&network); + entry->GetAsDictionary(&network); DCHECK(network); FillInHexSSIDFieldsInOncObject(kNetworkConfigurationSignature, network); } @@ -603,7 +603,7 @@ bool ResolveCertRefList(const CertPEMsByGUIDMap& certs_by_guid, std::unique_ptr pem_list(new base::ListValue); for (const auto& entry : *guid_ref_list) { std::string guid_ref; - bool entry_is_string = entry.GetAsString(&guid_ref); + bool entry_is_string = entry->GetAsString(&guid_ref); DCHECK(entry_is_string); std::string pem_encoded; @@ -730,7 +730,7 @@ bool ResolveServerCertRefsInNetworks(const CertPEMsByGUIDMap& certs_by_guid, for (base::ListValue::iterator it = network_configs->begin(); it != network_configs->end(); ) { base::DictionaryValue* network = nullptr; - it->GetAsDictionary(&network); + (*it)->GetAsDictionary(&network); if (!ResolveServerCertRefsInNetwork(certs_by_guid, network)) { std::string guid; network->GetStringWithoutPathExpansion(network_config::kGUID, &guid); @@ -857,7 +857,7 @@ net::ProxyBypassRules ConvertOncExcludeDomainsToBypassRules( for (base::ListValue::const_iterator it = onc_exclude_domains.begin(); it != onc_exclude_domains.end(); ++it) { std::string rule; - it->GetAsString(&rule); + (*it)->GetAsString(&rule); rules.AddRuleFromString(rule); } return rules; @@ -1043,7 +1043,7 @@ const base::DictionaryValue* GetNetworkConfigByGUID( for (base::ListValue::const_iterator it = network_configs.begin(); it != network_configs.end(); ++it) { const base::DictionaryValue* network = NULL; - it->GetAsDictionary(&network); + (*it)->GetAsDictionary(&network); DCHECK(network); std::string current_guid; @@ -1061,7 +1061,7 @@ const base::DictionaryValue* GetNetworkConfigForEthernetWithoutEAP( for (base::ListValue::const_iterator it = network_configs.begin(); it != network_configs.end(); ++it) { const base::DictionaryValue* network = NULL; - it->GetAsDictionary(&network); + (*it)->GetAsDictionary(&network); DCHECK(network); std::string type; @@ -1187,7 +1187,7 @@ void ImportNetworksForUser(const user_manager::User* user, for (base::ListValue::const_iterator it = expanded_networks->begin(); it != expanded_networks->end(); ++it) { const base::DictionaryValue* network = NULL; - it->GetAsDictionary(&network); + (*it)->GetAsDictionary(&network); DCHECK(network); // Remove irrelevant fields. diff --git a/chromeos/network/onc/onc_utils_unittest.cc b/chromeos/network/onc/onc_utils_unittest.cc index 8e206067398749..92cbceb1136d67 100644 --- a/chromeos/network/onc/onc_utils_unittest.cc +++ b/chromeos/network/onc/onc_utils_unittest.cc @@ -179,7 +179,7 @@ TEST(ONCUtils, ProxySettingsToProxyConfig) { test_data->GetAsList(&tests2); ASSERT_TRUE(tests2); for (auto iter1 = tests2->begin(); iter1 != tests2->end(); ++iter1) - list_of_tests->Append(iter1->CreateDeepCopy()); + list_of_tests->Append((*iter1)->CreateDeepCopy()); int index = 0; for (auto iter2 = list_of_tests->begin(); iter2 != list_of_tests->end(); @@ -187,7 +187,7 @@ TEST(ONCUtils, ProxySettingsToProxyConfig) { SCOPED_TRACE("Test case #" + base::IntToString(index)); base::DictionaryValue* test_case = nullptr; - iter2->GetAsDictionary(&test_case); + (*iter2)->GetAsDictionary(&test_case); ASSERT_TRUE(test_case); base::DictionaryValue* onc_proxy_settings; @@ -216,7 +216,7 @@ TEST(ONCUtils, ProxyConfigToOncProxySettings) { SCOPED_TRACE("Test case #" + base::IntToString(index)); base::DictionaryValue* test_case; - it->GetAsDictionary(&test_case); + (*it)->GetAsDictionary(&test_case); base::DictionaryValue* shill_proxy_config; test_case->GetDictionary("ProxyConfig", &shill_proxy_config); diff --git a/chromeos/network/onc/onc_validator.cc b/chromeos/network/onc/onc_validator.cc index 97150fdae61239..d4286205ed1954 100644 --- a/chromeos/network/onc/onc_validator.cc +++ b/chromeos/network/onc/onc_validator.cc @@ -245,7 +245,7 @@ bool Validator::ValidateRecommendedField( std::unique_ptr repaired_recommended(new base::ListValue); for (const auto& entry : *recommended_list) { std::string field_name; - if (!entry.GetAsString(&field_name)) { + if (!entry->GetAsString(&field_name)) { NOTREACHED(); // The types of field values are already verified. continue; } @@ -404,7 +404,7 @@ bool Validator::ListFieldContainsValidValues( path_.push_back(field_name); for (const auto& entry : *list) { std::string value; - if (!entry.GetAsString(&value)) { + if (!entry->GetAsString(&value)) { NOTREACHED(); // The types of field values are already verified. continue; } diff --git a/chromeos/network/policy_applicator.cc b/chromeos/network/policy_applicator.cc index 66070bb4aac569..b2fec74d551c22 100644 --- a/chromeos/network/policy_applicator.cc +++ b/chromeos/network/policy_applicator.cc @@ -96,7 +96,7 @@ void PolicyApplicator::GetProfilePropertiesCallback( for (base::ListValue::const_iterator it = entries->begin(); it != entries->end(); ++it) { std::string entry; - it->GetAsString(&entry); + (*it)->GetAsString(&entry); pending_get_entry_calls_.insert(entry); DBusThreadManager::Get()->GetShillProfileClient()->GetEntry( diff --git a/chromeos/network/prohibited_technologies_handler.cc b/chromeos/network/prohibited_technologies_handler.cc index 69bc5039ca1d67..97bdec9d2b1612 100644 --- a/chromeos/network/prohibited_technologies_handler.cc +++ b/chromeos/network/prohibited_technologies_handler.cc @@ -65,7 +65,7 @@ void ProhibitedTechnologiesHandler::SetProhibitedTechnologies( prohibited_technologies_.clear(); for (const auto& item : *prohibited_list) { std::string prohibited_technology; - bool item_is_string = item.GetAsString(&prohibited_technology); + bool item_is_string = item->GetAsString(&prohibited_technology); DCHECK(item_is_string); std::string translated_tech = network_util::TranslateONCTypeToShill(prohibited_technology); diff --git a/chromeos/network/shill_property_handler.cc b/chromeos/network/shill_property_handler.cc index 260c35958f80de..74ea70acdb581e 100644 --- a/chromeos/network/shill_property_handler.cc +++ b/chromeos/network/shill_property_handler.cc @@ -365,7 +365,7 @@ void ShillPropertyHandler::UpdateProperties(ManagedState::ManagedType type, for (base::ListValue::const_iterator iter = entries.begin(); iter != entries.end(); ++iter) { std::string path; - iter->GetAsString(&path); + (*iter)->GetAsString(&path); if (path.empty()) continue; @@ -389,7 +389,7 @@ void ShillPropertyHandler::UpdateObserved(ManagedState::ManagedType type, ShillPropertyObserverMap new_observed; for (const auto& entry : entries) { std::string path; - entry.GetAsString(&path); + entry->GetAsString(&path); if (path.empty()) continue; auto iter = observer_map.find(path); @@ -422,7 +422,7 @@ void ShillPropertyHandler::UpdateAvailableTechnologies( for (base::ListValue::const_iterator iter = technologies.begin(); iter != technologies.end(); ++iter) { std::string technology; - iter->GetAsString(&technology); + (*iter)->GetAsString(&technology); DCHECK(!technology.empty()); available_technologies_.insert(technology); } @@ -436,7 +436,7 @@ void ShillPropertyHandler::UpdateEnabledTechnologies( for (base::ListValue::const_iterator iter = technologies.begin(); iter != technologies.end(); ++iter) { std::string technology; - iter->GetAsString(&technology); + (*iter)->GetAsString(&technology); DCHECK(!technology.empty()); enabled_technologies_.insert(technology); enabling_technologies_.erase(technology); @@ -451,7 +451,7 @@ void ShillPropertyHandler::UpdateUninitializedTechnologies( for (base::ListValue::const_iterator iter = technologies.begin(); iter != technologies.end(); ++iter) { std::string technology; - iter->GetAsString(&technology); + (*iter)->GetAsString(&technology); DCHECK(!technology.empty()); uninitialized_technologies_.insert(technology); } @@ -549,7 +549,7 @@ void ShillPropertyHandler::RequestIPConfigsList( return; for (base::ListValue::const_iterator iter = ip_configs->begin(); iter != ip_configs->end(); ++iter) { - RequestIPConfig(type, path, *iter); + RequestIPConfig(type, path, **iter); } } diff --git a/chromeos/network/shill_property_handler_unittest.cc b/chromeos/network/shill_property_handler_unittest.cc index 47e169e4e4506e..0778663c113548 100644 --- a/chromeos/network/shill_property_handler_unittest.cc +++ b/chromeos/network/shill_property_handler_unittest.cc @@ -131,7 +131,7 @@ class TestListener : public internal::ShillPropertyHandler::Listener { for (base::ListValue::const_iterator iter = entries.begin(); iter != entries.end(); ++iter) { std::string path; - if (iter->GetAsString(&path)) + if ((*iter)->GetAsString(&path)) entries_[type].push_back(path); } } diff --git a/chromeos/printing/ppd_provider.cc b/chromeos/printing/ppd_provider.cc index 37130fc02b61a5..a6a08c59ec79ca 100644 --- a/chromeos/printing/ppd_provider.cc +++ b/chromeos/printing/ppd_provider.cc @@ -431,11 +431,11 @@ class PpdProviderImpl : public PpdProvider, public net::URLFetcherDelegate { // This should just be a simple list of locale strings. std::vector available_locales; bool found_en = false; - for (const base::Value& entry : *top_list) { + for (const std::unique_ptr& entry : *top_list) { std::string tmp; // Locales should have at *least* a two-character country code. 100 is an // arbitrary upper bound for length to protect against extreme bogosity. - if (!entry.GetAsString(&tmp) || tmp.size() < 2 || tmp.size() > 100) { + if (!entry->GetAsString(&tmp) || tmp.size() < 2 || tmp.size() > 100) { FailQueuedMetadataResolutions(PpdProvider::INTERNAL_ERROR); return; } @@ -603,10 +603,10 @@ class PpdProviderImpl : public PpdProvider, public net::URLFetcherDelegate { result = PpdProvider::NOT_FOUND; for (const auto& entry : *top_list) { int device_id; - const base::ListValue* sub_list; + base::ListValue* sub_list; // Each entry should be a size-2 list with an integer and a string. - if (!entry.GetAsList(&sub_list) || sub_list->GetSize() != 2 || + if (!entry->GetAsList(&sub_list) || sub_list->GetSize() != 2 || !sub_list->GetInteger(0, &device_id) || !sub_list->GetString(1, &contents) || device_id < 0 || device_id > 0xffff) { @@ -791,9 +791,9 @@ class PpdProviderImpl : public PpdProvider, public net::URLFetcherDelegate { return PpdProvider::INTERNAL_ERROR; } for (const auto& entry : *top_list) { - const base::ListValue* sub_list; + base::ListValue* sub_list; contents->push_back({}); - if (!entry.GetAsList(&sub_list) || sub_list->GetSize() != 2 || + if (!entry->GetAsList(&sub_list) || sub_list->GetSize() != 2 || !sub_list->GetString(0, &contents->back().first) || !sub_list->GetString(1, &contents->back().second)) { contents->clear(); diff --git a/chromeos/system/statistics_provider.cc b/chromeos/system/statistics_provider.cc index de21ae6e5ecae4..26fb751b78f404 100644 --- a/chromeos/system/statistics_provider.cc +++ b/chromeos/system/statistics_provider.cc @@ -115,7 +115,7 @@ bool JoinListValuesToString(const base::DictionaryValue* dictionary, bool first = true; for (const auto& v : *list) { std::string value; - if (!v.GetAsString(&value)) + if (!v->GetAsString(&value)) return false; if (first) diff --git a/components/arc/net/arc_net_host_impl.cc b/components/arc/net/arc_net_host_impl.cc index 2531cdf881fb5c..05cb78d126c644 100644 --- a/components/arc/net/arc_net_host_impl.cc +++ b/components/arc/net/arc_net_host_impl.cc @@ -374,8 +374,8 @@ void ArcNetHostImpl::GetNetworks(mojom::GetNetworksRequestType type, for (const auto& value : *network_properties_list) { mojom::WifiConfigurationPtr wc = mojom::WifiConfiguration::New(); - const base::DictionaryValue* network_dict = nullptr; - value.GetAsDictionary(&network_dict); + base::DictionaryValue* network_dict = nullptr; + value->GetAsDictionary(&network_dict); DCHECK(network_dict); // kName is a post-processed version of kHexSSID. @@ -389,7 +389,7 @@ void ArcNetHostImpl::GetNetworks(mojom::GetNetworksRequestType type, DCHECK(!tmp.empty()); wc->guid = tmp; - const base::DictionaryValue* wifi_dict = nullptr; + base::DictionaryValue* wifi_dict = nullptr; network_dict->GetDictionary(onc::network_config::kWiFi, &wifi_dict); DCHECK(wifi_dict); diff --git a/components/autofill/content/browser/risk/fingerprint.cc b/components/autofill/content/browser/risk/fingerprint.cc index d382553c87c5af..09041403cccfb6 100644 --- a/components/autofill/content/browser/risk/fingerprint.cc +++ b/components/autofill/content/browser/risk/fingerprint.cc @@ -86,7 +86,7 @@ void AddFontsToFingerprint(const base::ListValue& fonts, // Each item in the list is a two-element list such that the first element // is the font family and the second is the font name. const base::ListValue* font_description = NULL; - bool success = it.GetAsList(&font_description); + bool success = it->GetAsList(&font_description); DCHECK(success); std::string font_name; diff --git a/components/autofill/core/browser/autofill_address_util.cc b/components/autofill/core/browser/autofill_address_util.cc index c232e002651337..e0e9b284e94fd1 100644 --- a/components/autofill/core/browser/autofill_address_util.cc +++ b/components/autofill/core/browser/autofill_address_util.cc @@ -76,8 +76,6 @@ void GetAddressComponents(const std::string& country_code, components[i].length_hint == AddressUiComponent::HINT_LONG) { line = new base::ListValue; address_components->Append(base::WrapUnique(line)); - // |line| is invalidated at this point, so it needs to be reset. - address_components->GetList(address_components->GetSize() - 1, &line); } std::unique_ptr component(new base::DictionaryValue); diff --git a/components/bookmarks/browser/bookmark_expanded_state_tracker.cc b/components/bookmarks/browser/bookmark_expanded_state_tracker.cc index dd3070b039c2c2..c08d8335672d11 100644 --- a/components/bookmarks/browser/bookmark_expanded_state_tracker.cc +++ b/components/bookmarks/browser/bookmark_expanded_state_tracker.cc @@ -50,7 +50,7 @@ BookmarkExpandedStateTracker::GetExpandedNodes() { std::string value; int64_t node_id; const BookmarkNode* node; - if (i->GetAsString(&value) && base::StringToInt64(value, &node_id) && + if ((*i)->GetAsString(&value) && base::StringToInt64(value, &node_id) && (node = GetBookmarkNodeByID(bookmark_model_, node_id)) != NULL && node->is_folder()) { nodes.insert(node); diff --git a/components/data_reduction_proxy/core/common/data_reduction_proxy_event_store.cc b/components/data_reduction_proxy/core/common/data_reduction_proxy_event_store.cc index fd6ddc7bd21373..5283b4523860a6 100644 --- a/components/data_reduction_proxy/core/common/data_reduction_proxy_event_store.cc +++ b/components/data_reduction_proxy/core/common/data_reduction_proxy_event_store.cc @@ -55,7 +55,7 @@ std::string JoinListValueStrings(base::ListValue* list_value) { std::vector values; for (const auto& value : *list_value) { base::StringPiece value_string; - if (!value.GetAsString(&value_string)) + if (!value->GetAsString(&value_string)) return std::string(); values.push_back(value_string); diff --git a/components/error_page/common/localized_error.cc b/components/error_page/common/localized_error.cc index 9047cdc515912f..5192a110541d9c 100644 --- a/components/error_page/common/localized_error.cc +++ b/components/error_page/common/localized_error.cc @@ -757,9 +757,6 @@ base::DictionaryValue* AddSuggestionDetailDictionaryToList( l10n_util::GetStringUTF16(body_message_id)); } list->Append(base::WrapUnique(suggestion_list_item)); - // |suggestion_list_item| is invalidated at this point, so it needs to be - // reset. - list->GetDictionary(list->GetSize() - 1, &suggestion_list_item); return suggestion_list_item; } diff --git a/components/flags_ui/pref_service_flags_storage.cc b/components/flags_ui/pref_service_flags_storage.cc index 2153c1bf6be86f..3c6ddc4dd778ab 100644 --- a/components/flags_ui/pref_service_flags_storage.cc +++ b/components/flags_ui/pref_service_flags_storage.cc @@ -26,7 +26,7 @@ std::set PrefServiceFlagsStorage::GetFlags() { for (base::ListValue::const_iterator it = enabled_experiments->begin(); it != enabled_experiments->end(); ++it) { std::string experiment_name; - if (!it->GetAsString(&experiment_name)) { + if (!(*it)->GetAsString(&experiment_name)) { LOG(WARNING) << "Invalid entry in " << prefs::kEnabledLabsExperiments; continue; } diff --git a/components/ntp_snippets/category_rankers/click_based_category_ranker.cc b/components/ntp_snippets/category_rankers/click_based_category_ranker.cc index 31bf8ae6c60ece..4b4cfa964b72e0 100644 --- a/components/ntp_snippets/category_rankers/click_based_category_ranker.cc +++ b/components/ntp_snippets/category_rankers/click_based_category_ranker.cc @@ -413,9 +413,9 @@ bool ClickBasedCategoryRanker::ReadOrderFromPrefs( return false; } - for (const base::Value& value : *list) { - const base::DictionaryValue* dictionary; - if (!value.GetAsDictionary(&dictionary)) { + for (const std::unique_ptr& value : *list) { + base::DictionaryValue* dictionary; + if (!value->GetAsDictionary(&dictionary)) { LOG(DFATAL) << "Failed to parse category data from prefs param " << prefs::kClickBasedCategoryRankerOrderWithClicks << " into dictionary."; diff --git a/components/ntp_snippets/content_suggestions_service.cc b/components/ntp_snippets/content_suggestions_service.cc index 9d4955e1e2872e..cb54bbb7174ea3 100644 --- a/components/ntp_snippets/content_suggestions_service.cc +++ b/components/ntp_snippets/content_suggestions_service.cc @@ -606,10 +606,10 @@ void ContentSuggestionsService::RestoreDismissedCategoriesFromPrefs() { const base::ListValue* list = pref_service_->GetList(prefs::kDismissedCategories); - for (const base::Value& entry : *list) { + for (const std::unique_ptr& entry : *list) { int id = 0; - if (!entry.GetAsInteger(&id)) { - DLOG(WARNING) << "Invalid category pref value: " << entry; + if (!entry->GetAsInteger(&id)) { + DLOG(WARNING) << "Invalid category pref value: " << *entry; continue; } diff --git a/components/ntp_snippets/pref_util.cc b/components/ntp_snippets/pref_util.cc index 3973cda1b1d53a..a6288f92535611 100644 --- a/components/ntp_snippets/pref_util.cc +++ b/components/ntp_snippets/pref_util.cc @@ -16,9 +16,9 @@ std::set ReadDismissedIDsFromPrefs(const PrefService& pref_service, const std::string& pref_name) { std::set dismissed_ids; const base::ListValue* list = pref_service.GetList(pref_name); - for (const base::Value& value : *list) { + for (const std::unique_ptr& value : *list) { std::string dismissed_id; - bool success = value.GetAsString(&dismissed_id); + bool success = value->GetAsString(&dismissed_id); DCHECK(success) << "Failed to parse dismissed id from prefs param " << pref_name << " into string."; dismissed_ids.insert(dismissed_id); diff --git a/components/ntp_snippets/remote/remote_suggestion.cc b/components/ntp_snippets/remote/remote_suggestion.cc index 988d61a99945dc..a60c0724c82458 100644 --- a/components/ntp_snippets/remote/remote_suggestion.cc +++ b/components/ntp_snippets/remote/remote_suggestion.cc @@ -119,7 +119,7 @@ RemoteSuggestion::CreateFromChromeReaderDictionary( std::vector sources; for (const auto& value : *corpus_infos_list) { const base::DictionaryValue* dict_value = nullptr; - if (!value.GetAsDictionary(&dict_value)) { + if (!value->GetAsDictionary(&dict_value)) { DLOG(WARNING) << "Invalid source info for article " << primary_id; continue; } @@ -228,7 +228,7 @@ RemoteSuggestion::CreateFromContentSuggestionsDictionary( std::vector parsed_ids; for (const auto& value : *ids) { std::string id; - if (!value.GetAsString(&id)) { + if (!value->GetAsString(&id)) { return nullptr; } parsed_ids.push_back(id); diff --git a/components/ntp_snippets/remote/remote_suggestions_fetcher.cc b/components/ntp_snippets/remote/remote_suggestions_fetcher.cc index b07a116dfe379a..8bd852cedd2cc3 100644 --- a/components/ntp_snippets/remote/remote_suggestions_fetcher.cc +++ b/components/ntp_snippets/remote/remote_suggestions_fetcher.cc @@ -112,7 +112,7 @@ bool AddSuggestionsFromListValue(bool content_suggestions_api, const base::Time& fetch_time) { for (const auto& value : list) { const base::DictionaryValue* dict = nullptr; - if (!value.GetAsDictionary(&dict)) { + if (!value->GetAsDictionary(&dict)) { return false; } @@ -458,7 +458,7 @@ bool RemoteSuggestionsFetcher::JsonToSnippets( std::string utf8_title; int remote_category_id = -1; const base::DictionaryValue* category_value = nullptr; - if (!(v.GetAsDictionary(&category_value) && + if (!(v->GetAsDictionary(&category_value) && category_value->GetString("localizedTitle", &utf8_title) && category_value->GetInteger("id", &remote_category_id) && (remote_category_id > 0))) { diff --git a/components/ntp_snippets/remote/remote_suggestions_provider_impl.cc b/components/ntp_snippets/remote/remote_suggestions_provider_impl.cc index 2763aa4762c4d3..af67c654bacc0f 100644 --- a/components/ntp_snippets/remote/remote_suggestions_provider_impl.cc +++ b/components/ntp_snippets/remote/remote_suggestions_provider_impl.cc @@ -1191,29 +1191,29 @@ void RemoteSuggestionsProviderImpl::RestoreCategoriesFromPrefs() { const base::ListValue* list = pref_service_->GetList(prefs::kRemoteSuggestionCategories); - for (const base::Value& entry : *list) { + for (const std::unique_ptr& entry : *list) { const base::DictionaryValue* dict = nullptr; - if (!entry.GetAsDictionary(&dict)) { - DLOG(WARNING) << "Invalid category pref value: " << entry; + if (!entry->GetAsDictionary(&dict)) { + DLOG(WARNING) << "Invalid category pref value: " << *entry; continue; } int id = 0; if (!dict->GetInteger(kCategoryContentId, &id)) { DLOG(WARNING) << "Invalid category pref value, missing '" - << kCategoryContentId << "': " << entry; + << kCategoryContentId << "': " << *entry; continue; } base::string16 title; if (!dict->GetString(kCategoryContentTitle, &title)) { DLOG(WARNING) << "Invalid category pref value, missing '" - << kCategoryContentTitle << "': " << entry; + << kCategoryContentTitle << "': " << *entry; continue; } bool included_in_last_server_response = false; if (!dict->GetBoolean(kCategoryContentProvidedByServer, &included_in_last_server_response)) { DLOG(WARNING) << "Invalid category pref value, missing '" - << kCategoryContentProvidedByServer << "': " << entry; + << kCategoryContentProvidedByServer << "': " << *entry; continue; } bool allow_fetching_more_results = false; diff --git a/components/policy/core/browser/configuration_policy_handler.cc b/components/policy/core/browser/configuration_policy_handler.cc index e591f99acc3fba..17de0cdd109f03 100644 --- a/components/policy/core/browser/configuration_policy_handler.cc +++ b/components/policy/core/browser/configuration_policy_handler.cc @@ -184,7 +184,7 @@ bool StringMappingListPolicyHandler::Convert(const base::Value* input, for (auto entry = list_value->begin(); entry != list_value->end(); ++entry) { std::string entry_value; - if (!entry->GetAsString(&entry_value)) { + if (!(*entry)->GetAsString(&entry_value)) { if (errors) { errors->AddError(policy_name(), entry - list_value->begin(), IDS_POLICY_TYPE_ERROR, diff --git a/components/policy/core/browser/url_blacklist_policy_handler.cc b/components/policy/core/browser/url_blacklist_policy_handler.cc index f74f43d6c1e9a3..15461902a466a8 100644 --- a/components/policy/core/browser/url_blacklist_policy_handler.cc +++ b/components/policy/core/browser/url_blacklist_policy_handler.cc @@ -60,7 +60,7 @@ void URLBlacklistPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, if (disabled_schemes) { for (const auto& entry : *disabled_schemes) { std::string entry_value; - if (entry.GetAsString(&entry_value)) { + if (entry->GetAsString(&entry_value)) { entry_value.append("://*"); merged_url_blacklist->AppendString(entry_value); } @@ -69,8 +69,8 @@ void URLBlacklistPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, if (url_blacklist) { for (const auto& entry : *url_blacklist) { - if (entry.IsType(base::Value::Type::STRING)) - merged_url_blacklist->Append(entry.CreateDeepCopy()); + if (entry->IsType(base::Value::Type::STRING)) + merged_url_blacklist->Append(entry->CreateDeepCopy()); } } diff --git a/components/policy/core/common/policy_loader_win.cc b/components/policy/core/common/policy_loader_win.cc index b5ff23fa626c82..d86ae5dc1ef85f 100644 --- a/components/policy/core/common/policy_loader_win.cc +++ b/components/policy/core/common/policy_loader_win.cc @@ -113,7 +113,7 @@ void FilterUntrustedPolicy(PolicyMap* policy) { std::unique_ptr filtered_values(new base::ListValue); for (const auto& list_entry : *policy_list_value) { std::string entry; - if (!list_entry.GetAsString(&entry)) + if (!list_entry->GetAsString(&entry)) continue; size_t pos = entry.find(';'); if (pos == std::string::npos) diff --git a/components/policy/core/common/policy_loader_win_unittest.cc b/components/policy/core/common/policy_loader_win_unittest.cc index be4652d2a90e78..db72ac7321968e 100644 --- a/components/policy/core/common/policy_loader_win_unittest.cc +++ b/components/policy/core/common/policy_loader_win_unittest.cc @@ -398,7 +398,7 @@ void RegistryTestHarness::InstallStringListPolicy( element != policy_value->end(); ++element) { std::string element_value; - if (!element->GetAsString(&element_value)) + if (!(*element)->GetAsString(&element_value)) continue; std::string name(base::IntToString(index++)); key.WriteValue(UTF8ToUTF16(name).c_str(), diff --git a/components/policy/core/common/policy_test_utils.cc b/components/policy/core/common/policy_test_utils.cc index fcf89f92de80c7..7f4e597376bcea 100644 --- a/components/policy/core/common/policy_test_utils.cc +++ b/components/policy/core/common/policy_test_utils.cc @@ -126,7 +126,7 @@ CFPropertyListRef ValueToProperty(const base::Value& value) { // CFArrayAppendValue() retains |cf_value|, so make sure the reference // created by ValueToProperty() is released. base::ScopedCFTypeRef cf_value( - ValueToProperty(entry)); + ValueToProperty(*entry)); if (cf_value) CFArrayAppendValue(array, cf_value); } diff --git a/components/policy/core/common/registry_dict.cc b/components/policy/core/common/registry_dict.cc index 124a2cd1100a95..f4219042ab507f 100644 --- a/components/policy/core/common/registry_dict.cc +++ b/components/policy/core/common/registry_dict.cc @@ -62,7 +62,7 @@ std::unique_ptr ConvertValue(const base::Value& value, for (base::ListValue::const_iterator entry(list->begin()); entry != list->end(); ++entry) { std::unique_ptr converted = - ConvertValue(*entry, schema.GetItems()); + ConvertValue(**entry, schema.GetItems()); if (converted) result->Append(std::move(converted)); } diff --git a/components/policy/core/common/schema.cc b/components/policy/core/common/schema.cc index 31dae8e6daa8fa..330848cc732364 100644 --- a/components/policy/core/common/schema.cc +++ b/components/policy/core/common/schema.cc @@ -619,7 +619,7 @@ bool Schema::InternalStorage::ParseEnum(const base::DictionaryValue& schema, int value; for (base::ListValue::const_iterator it = possible_values->begin(); it != possible_values->end(); ++it) { - if (!it->GetAsInteger(&value)) { + if (!(*it)->GetAsInteger(&value)) { *error = "Invalid enumeration member type"; return false; } @@ -631,7 +631,7 @@ bool Schema::InternalStorage::ParseEnum(const base::DictionaryValue& schema, std::string value; for (base::ListValue::const_iterator it = possible_values->begin(); it != possible_values->end(); ++it) { - if (!it->GetAsString(&value)) { + if (!(*it)->GetAsString(&value)) { *error = "Invalid enumeration member type"; return false; } @@ -826,7 +826,10 @@ bool Schema::Validate(const base::Value& value, } else if (value.GetAsList(&list)) { for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { - if (!GetItems().Validate(*it, StrategyForNextLevel(strategy), error_path, + if (!*it || + !GetItems().Validate(**it, + StrategyForNextLevel(strategy), + error_path, error)) { // Invalid list item was detected. AddListIndexPrefixToPath(it - list->begin(), error_path); diff --git a/components/prefs/pref_member.cc b/components/prefs/pref_member.cc index f0be267ed5d360..8ed13ee5516769 100644 --- a/components/prefs/pref_member.cc +++ b/components/prefs/pref_member.cc @@ -139,7 +139,7 @@ bool PrefMemberVectorStringUpdate(const base::Value& value, for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { std::string string_value; - if (!it->GetAsString(&string_value)) + if (!(*it)->GetAsString(&string_value)) return false; local_vector.push_back(string_value); diff --git a/components/search_engines/template_url_data_util.cc b/components/search_engines/template_url_data_util.cc index fd3138b7bc7aad..ab76c92ab576e1 100644 --- a/components/search_engines/template_url_data_util.cc +++ b/components/search_engines/template_url_data_util.cc @@ -90,7 +90,7 @@ std::unique_ptr TemplateURLDataFromDictionary( if (dict.GetList(DefaultSearchManager::kAlternateURLs, &alternate_urls)) { for (const auto& it : *alternate_urls) { std::string alternate_url; - if (it.GetAsString(&alternate_url)) + if (it->GetAsString(&alternate_url)) result->alternate_urls.push_back(std::move(alternate_url)); } } @@ -99,7 +99,7 @@ std::unique_ptr TemplateURLDataFromDictionary( if (dict.GetList(DefaultSearchManager::kInputEncodings, &encodings)) { for (const auto& it : *encodings) { std::string encoding; - if (it.GetAsString(&encoding)) + if (it->GetAsString(&encoding)) result->input_encodings.push_back(std::move(encoding)); } } diff --git a/components/signin/core/browser/account_tracker_service.cc b/components/signin/core/browser/account_tracker_service.cc index 129b124288cce6..dd3f339588f527 100644 --- a/components/signin/core/browser/account_tracker_service.cc +++ b/components/signin/core/browser/account_tracker_service.cc @@ -350,7 +350,7 @@ void AccountTrackerService::LoadFromPrefs() { contains_deprecated_service_flags = true; std::string flag_string; for (const auto& flag : *service_flags_list) { - if (flag.GetAsString(&flag_string) && + if (flag->GetAsString(&flag_string) && flag_string == kChildAccountServiceFlag) { is_child_account = true; break; @@ -407,8 +407,6 @@ void AccountTrackerService::SaveToPrefs(const AccountState& state) { if (!dict) { dict = new base::DictionaryValue(); update->Append(base::WrapUnique(dict)); - // |dict| is invalidated at this point, so it needs to be reset. - update->GetDictionary(update->GetSize() - 1, &dict); dict->SetString(kAccountKeyPath, account_id_16); } diff --git a/components/ssl_config/ssl_config_service_manager_pref.cc b/components/ssl_config/ssl_config_service_manager_pref.cc index df78e589992938..4ab20fb55210f7 100644 --- a/components/ssl_config/ssl_config_service_manager_pref.cc +++ b/components/ssl_config/ssl_config_service_manager_pref.cc @@ -41,7 +41,7 @@ std::vector ListValueToStringVector(const base::ListValue* value) { std::string s; for (base::ListValue::const_iterator it = value->begin(); it != value->end(); ++it) { - if (!it->GetAsString(&s)) + if (!(*it)->GetAsString(&s)) continue; results.push_back(s); } diff --git a/components/sync/driver/about_sync_util.cc b/components/sync/driver/about_sync_util.cc index b1863dcb08a7e5..c6c6a8bdddc14f 100644 --- a/components/sync/driver/about_sync_util.cc +++ b/components/sync/driver/about_sync_util.cc @@ -8,7 +8,6 @@ #include #include "base/location.h" -#include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/strings/string16.h" #include "base/strings/stringprintf.h" @@ -77,12 +76,6 @@ base::ListValue* AddSection(base::ListValue* parent_list, section->SetString("title", title); section->Set("data", section_contents); section->SetBoolean("is_sensitive", false); - // If the following |Append| results in a reallocation, pointers to the - // members of |parent_list| will be invalidated. This would result in - // use-after-free in |*SyncStat::SetValue|. This is why the following CHECK is - // necessary to ensure no reallocation takes place. - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - CHECK_LT(parent_list->GetSize(), parent_list->capacity()); parent_list->Append(std::move(section)); return section_contents; } @@ -96,12 +89,6 @@ base::ListValue* AddSensitiveSection(base::ListValue* parent_list, section->SetString("title", title); section->Set("data", section_contents); section->SetBoolean("is_sensitive", true); - // If the following |Append| results in a reallocation, pointers to - // |parent_list| and its members will be invalidated. This would result in - // use-after-free in |*SyncStat::SetValue|. This is why the following CHECK is - // necessary to ensure no reallocation takes place. - CHECK_LT(parent_list->GetSize(), parent_list->capacity()); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. parent_list->Append(std::move(section)); return section_contents; } @@ -130,14 +117,7 @@ StringSyncStat::StringSyncStat(base::ListValue* section, stat_->SetString("stat_name", key); stat_->SetString("stat_value", "Uninitialized"); stat_->SetBoolean("is_valid", false); - // |stat_| will be invalidated by |Append|, so it needs to be reset. - // Furthermore, if |Append| results in a reallocation, |stat_| members of - // other SyncStats will be invalidated. This is why the following check is - // necessary, so that it is guaranteed that a reallocation will not happen. - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - CHECK_LT(section->GetSize(), section->capacity()); section->Append(base::WrapUnique(stat_)); - section->GetDictionary(section->GetSize() - 1, &stat_); } void StringSyncStat::SetValue(const std::string& value) { @@ -165,14 +145,7 @@ BoolSyncStat::BoolSyncStat(base::ListValue* section, const std::string& key) { stat_->SetString("stat_name", key); stat_->SetBoolean("stat_value", false); stat_->SetBoolean("is_valid", false); - // |stat_| will be invalidated by |Append|, so it needs to be reset. - // Furthermore, if |Append| results in a reallocation, |stat_| members of - // other SyncStats will be invalidated. This is why the following check is - // necessary, so that it is guaranteed that a reallocation will not happen. - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - CHECK_LT(section->GetSize(), section->capacity()); section->Append(base::WrapUnique(stat_)); - section->GetDictionary(section->GetSize() - 1, &stat_); } void BoolSyncStat::SetValue(bool value) { @@ -195,14 +168,7 @@ IntSyncStat::IntSyncStat(base::ListValue* section, const std::string& key) { stat_->SetString("stat_name", key); stat_->SetInteger("stat_value", 0); stat_->SetBoolean("is_valid", false); - // |stat_| will be invalidated by |Append|, so it needs to be reset. - // Furthermore, if |Append| results in a reallocation, |stat_| members of - // other SyncStats will be invalidated. This is why the following check is - // necessary, so that it is guaranteed that a reallocation will not happen. - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - CHECK_LT(section->GetSize(), section->capacity()); section->Append(base::WrapUnique(stat_)); - section->GetDictionary(section->GetSize() - 1, &stat_); } void IntSyncStat::SetValue(int value) { @@ -285,34 +251,24 @@ std::unique_ptr ConstructAboutInformation( // 'details': A list of sections. base::ListValue* stats_list = new base::ListValue(); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - stats_list->Reserve(12); // The following lines define the sections and their fields. For each field, // a class is instantiated, which allows us to reference the fields in // 'setter' code later on in this function. base::ListValue* section_summary = AddSection(stats_list, "Summary"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_summary->Reserve(1); StringSyncStat summary_string(section_summary, "Summary"); base::ListValue* section_version = AddSection(stats_list, "Version Info"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_version->Reserve(2); StringSyncStat client_version(section_version, "Client Version"); StringSyncStat server_url(section_version, "Server URL"); base::ListValue* section_identity = AddSensitiveSection(stats_list, kIdentityTitle); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_identity->Reserve(3); StringSyncStat sync_id(section_identity, "Sync Client ID"); StringSyncStat invalidator_id(section_identity, "Invalidator Client ID"); StringSyncStat username(section_identity, "Username"); base::ListValue* section_credentials = AddSection(stats_list, "Credentials"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_credentials->Reserve(4); StringSyncStat request_token_time(section_credentials, "Requested Token"); StringSyncStat receive_token_time(section_credentials, "Received Token"); StringSyncStat token_request_status(section_credentials, @@ -320,8 +276,6 @@ std::unique_ptr ConstructAboutInformation( StringSyncStat next_token_request(section_credentials, "Next Token Request"); base::ListValue* section_local = AddSection(stats_list, "Local State"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_local->Reserve(7); StringSyncStat server_connection(section_local, "Server Connection"); StringSyncStat last_synced(section_local, "Last Synced"); BoolSyncStat is_setup_complete(section_local, @@ -334,16 +288,12 @@ std::unique_ptr ConstructAboutInformation( StringSyncStat local_backend_path(section_local, "Local backend path"); base::ListValue* section_network = AddSection(stats_list, "Network"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_network->Reserve(3); BoolSyncStat is_throttled(section_network, "Throttled"); StringSyncStat retry_time(section_network, "Retry time (maybe stale)"); BoolSyncStat are_notifications_enabled(section_network, "Notifications Enabled"); base::ListValue* section_encryption = AddSection(stats_list, "Encryption"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_encryption->Reserve(9); BoolSyncStat is_using_explicit_passphrase(section_encryption, "Explicit Passphrase"); BoolSyncStat is_passphrase_required(section_encryption, @@ -361,16 +311,12 @@ std::unique_ptr ConstructAboutInformation( base::ListValue* section_last_session = AddSection(stats_list, "Status from Last Completed Session"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_last_session->Reserve(4); StringSyncStat session_source(section_last_session, "Sync Source"); StringSyncStat get_key_result(section_last_session, "GetKey Step Result"); StringSyncStat download_result(section_last_session, "Download Step Result"); StringSyncStat commit_result(section_last_session, "Commit Step Result"); base::ListValue* section_counters = AddSection(stats_list, "Running Totals"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_counters->Reserve(7); IntSyncStat notifications_received(section_counters, "Notifications Received"); IntSyncStat updates_received(section_counters, "Updates Downloaded"); @@ -384,8 +330,6 @@ std::unique_ptr ConstructAboutInformation( base::ListValue* section_this_cycle = AddSection(stats_list, "Transient Counters (this cycle)"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_this_cycle->Reserve(4); IntSyncStat encryption_conflicts(section_this_cycle, "Encryption Conflicts"); IntSyncStat hierarchy_conflicts(section_this_cycle, "Hierarchy Conflicts"); IntSyncStat server_conflicts(section_this_cycle, "Server Conflicts"); @@ -393,16 +337,12 @@ std::unique_ptr ConstructAboutInformation( base::ListValue* section_that_cycle = AddSection( stats_list, "Transient Counters (last cycle of last completed session)"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_that_cycle->Reserve(3); IntSyncStat updates_downloaded(section_that_cycle, "Updates Downloaded"); IntSyncStat committed_count(section_that_cycle, "Committed Count"); IntSyncStat entries(section_that_cycle, "Entries"); base::ListValue* section_nudge_info = AddSection(stats_list, "Nudge Source Counters"); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - section_nudge_info->Reserve(3); IntSyncStat nudge_source_notification(section_nudge_info, "Server Invalidations"); IntSyncStat nudge_source_local(section_nudge_info, "Local Changes"); @@ -551,8 +491,6 @@ std::unique_ptr ConstructAboutInformation( // actionable_error_detected is set. base::ListValue* actionable_error = new base::ListValue(); - // TODO(crbug.com/702230): Remove the usages of raw pointers in this file. - actionable_error->Reserve(4); about_info->Set("actionable_error", actionable_error); StringSyncStat error_type(actionable_error, "Error Type"); diff --git a/components/sync/syncable/model_type.cc b/components/sync/syncable/model_type.cc index 942b898e7fb6f1..bf266b3dc1ffbb 100644 --- a/components/sync/syncable/model_type.cc +++ b/components/sync/syncable/model_type.cc @@ -653,7 +653,7 @@ ModelTypeSet ModelTypeSetFromValue(const base::ListValue& value) { ModelTypeSet result; for (base::ListValue::const_iterator i = value.begin(); i != value.end(); ++i) { - result.Put(ModelTypeFromValue(*i)); + result.Put(ModelTypeFromValue(**i)); } return result; } diff --git a/components/sync/test/fake_server/fake_server_verifier.cc b/components/sync/test/fake_server/fake_server_verifier.cc index f74c28f7cf6bd6..10f68c812f6c1a 100644 --- a/components/sync/test/fake_server/fake_server_verifier.cc +++ b/components/sync/test/fake_server/fake_server_verifier.cc @@ -106,7 +106,7 @@ AssertionResult FakeServerVerifier::VerifyEntityCountByTypeAndName( if (entities->GetList(model_type_string, &entity_list)) { base::Value name_value(name); for (const auto& entity : *entity_list) { - if (name_value.Equals(&entity)) + if (name_value.Equals(entity.get())) actual_count++; } } diff --git a/components/sync_preferences/pref_model_associator.cc b/components/sync_preferences/pref_model_associator.cc index 6bb1801dc52a0c..bf7a081069c34d 100644 --- a/components/sync_preferences/pref_model_associator.cc +++ b/components/sync_preferences/pref_model_associator.cc @@ -291,7 +291,7 @@ base::Value* PrefModelAssociator::MergeListValues(const base::Value& from_value, base::ListValue* result = to_list_value.DeepCopy(); for (const auto& value : from_list_value) { - result->AppendIfNotPresent(value.CreateDeepCopy()); + result->AppendIfNotPresent(value->CreateDeepCopy()); } return result; } diff --git a/components/translate/core/browser/translate_prefs.cc b/components/translate/core/browser/translate_prefs.cc index 63d758b0aa7b2f..6e8f7b6ccfd92f 100644 --- a/components/translate/core/browser/translate_prefs.cc +++ b/components/translate/core/browser/translate_prefs.cc @@ -616,7 +616,8 @@ double TranslatePrefs::GetReadingFromUserLanguageProfile( const base::DictionaryValue* item = nullptr; std::string language; double probability = 0.0; - if (entry.GetAsDictionary(&item) && item->GetString(kLanguage, &language) && + if (entry->GetAsDictionary(&item) && + item->GetString(kLanguage, &language) && item->GetDouble(kProbability, &probability)) { // Normalize the the language code known and supported by // Translate. diff --git a/components/update_client/component_patcher.cc b/components/update_client/component_patcher.cc index 0bd27dd2776140..afafd8744e936d 100644 --- a/components/update_client/component_patcher.cc +++ b/components/update_client/component_patcher.cc @@ -80,7 +80,7 @@ void ComponentPatcher::PatchNextFile() { return; } const base::DictionaryValue* command_args; - if (!next_command_->GetAsDictionary(&command_args)) { + if (!(*next_command_)->GetAsDictionary(&command_args)) { DonePatching(UnpackerError::kDeltaBadCommands, 0); return; } diff --git a/components/url_matcher/url_matcher_factory.cc b/components/url_matcher/url_matcher_factory.cc index 253d022ece1f9e..0a30497d94e9b7 100644 --- a/components/url_matcher/url_matcher_factory.cc +++ b/components/url_matcher/url_matcher_factory.cc @@ -250,10 +250,10 @@ std::unique_ptr URLMatcherFactory::CreateURLMatcherPorts( for (const auto& entry : *value_list) { int port = 0; - const base::ListValue* range = NULL; - if (entry.GetAsInteger(&port)) { + base::ListValue* range = NULL; + if (entry->GetAsInteger(&port)) { ranges.push_back(URLMatcherPortFilter::CreateRange(port)); - } else if (entry.GetAsList(&range)) { + } else if (entry->GetAsList(&range)) { int from = 0, to = 0; if (range->GetSize() != 2u || !range->GetInteger(0, &from) || diff --git a/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc b/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc index 67f70f15a90695..ef954c9e26ca03 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc +++ b/content/browser/accessibility/accessibility_tree_formatter_auralinux.cc @@ -89,7 +89,7 @@ base::string16 AccessibilityTreeFormatterAuraLinux::ToString( for (base::ListValue::const_iterator it = states_value->begin(); it != states_value->end(); ++it) { std::string state_value; - if (it->GetAsString(&state_value)) + if ((*it)->GetAsString(&state_value)) WriteAttribute(true, state_value, &line); } diff --git a/content/browser/accessibility/accessibility_tree_formatter_win.cc b/content/browser/accessibility/accessibility_tree_formatter_win.cc index b454ae26b1bd4f..fe89c7bfc73358 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_win.cc +++ b/content/browser/accessibility/accessibility_tree_formatter_win.cc @@ -404,7 +404,7 @@ base::string16 AccessibilityTreeFormatterWin::ToString( it != list_value->end(); ++it) { base::string16 string_value; - if (it->GetAsString(&string_value)) + if ((*it)->GetAsString(&string_value)) WriteAttribute(false, string_value, &line); } break; diff --git a/content/browser/android/java/gin_java_method_invocation_helper.cc b/content/browser/android/java/gin_java_method_invocation_helper.cc index 1a5d1df6a06cf3..b4a3013e8e1527 100644 --- a/content/browser/android/java/gin_java_method_invocation_helper.cc +++ b/content/browser/android/java/gin_java_method_invocation_helper.cc @@ -57,12 +57,12 @@ void GinJavaMethodInvocationHelper::BuildObjectRefsFromListValue( const base::ListValue* list; list_value.GetAsList(&list); for (const auto& entry : *list) { - if (AppendObjectRef(dispatcher, entry)) + if (AppendObjectRef(dispatcher, *entry)) continue; - if (entry.IsType(base::Value::Type::LIST)) { - BuildObjectRefsFromListValue(dispatcher, entry); - } else if (entry.IsType(base::Value::Type::DICTIONARY)) { - BuildObjectRefsFromDictionaryValue(dispatcher, entry); + if (entry->IsType(base::Value::Type::LIST)) { + BuildObjectRefsFromListValue(dispatcher, *entry); + } else if (entry->IsType(base::Value::Type::DICTIONARY)) { + BuildObjectRefsFromDictionaryValue(dispatcher, *entry); } } } diff --git a/content/browser/browsing_data/clear_site_data_throttle.cc b/content/browser/browsing_data/clear_site_data_throttle.cc index eec778fefe8817..00e57cef1fd0bd 100644 --- a/content/browser/browsing_data/clear_site_data_throttle.cc +++ b/content/browser/browsing_data/clear_site_data_throttle.cc @@ -206,9 +206,9 @@ bool ClearSiteDataThrottle::ParseHeader(const std::string& header, *clear_cache = false; std::vector type_names; - for (const base::Value& value : *types) { + for (const std::unique_ptr& value : *types) { std::string type; - value.GetAsString(&type); + value->GetAsString(&type); bool* datatype = nullptr; @@ -221,7 +221,7 @@ bool ClearSiteDataThrottle::ParseHeader(const std::string& header, } else { std::string serialized_type; JSONStringValueSerializer serializer(&serialized_type); - serializer.Serialize(value); + serializer.Serialize(*value); ConsoleLog( messages, current_url_, base::StringPrintf("Invalid type: %s.", serialized_type.c_str()), diff --git a/content/browser/devtools/protocol/tracing_handler.cc b/content/browser/devtools/protocol/tracing_handler.cc index f522b3aa38ead5..de70cc652702e3 100644 --- a/content/browser/devtools/protocol/tracing_handler.cc +++ b/content/browser/devtools/protocol/tracing_handler.cc @@ -63,7 +63,7 @@ std::unique_ptr ConvertDictKeyStyle(const base::Value& value) { if (value.GetAsList(&list)) { std::unique_ptr out_list(new base::ListValue()); for (const auto& value : *list) - out_list->Append(ConvertDictKeyStyle(value)); + out_list->Append(ConvertDictKeyStyle(*value)); return std::move(out_list); } diff --git a/content/browser/tracing/background_tracing_config_impl.cc b/content/browser/tracing/background_tracing_config_impl.cc index b5d5c9afaa0e6e..3ce2fabf09258a 100644 --- a/content/browser/tracing/background_tracing_config_impl.cc +++ b/content/browser/tracing/background_tracing_config_impl.cc @@ -233,7 +233,7 @@ BackgroundTracingConfigImpl::PreemptiveFromDict( for (const auto& it : *configs_list) { const base::DictionaryValue* config_dict = nullptr; - if (!it.GetAsDictionary(&config_dict)) + if (!it->GetAsDictionary(&config_dict)) return nullptr; config->AddPreemptiveRule(config_dict); @@ -259,7 +259,7 @@ BackgroundTracingConfigImpl::ReactiveFromDict( for (const auto& it : *configs_list) { const base::DictionaryValue* config_dict = nullptr; - if (!it.GetAsDictionary(&config_dict)) + if (!it->GetAsDictionary(&config_dict)) return nullptr; std::string category_preset_string; diff --git a/content/browser/webrtc/webrtc_getusermedia_browsertest.cc b/content/browser/webrtc/webrtc_getusermedia_browsertest.cc index d22b6dd2ed1665..ad4bb8b1ec0c98 100644 --- a/content/browser/webrtc/webrtc_getusermedia_browsertest.cc +++ b/content/browser/webrtc/webrtc_getusermedia_browsertest.cc @@ -250,7 +250,7 @@ class WebRtcGetUserMediaBrowserTest : public WebRtcContentBrowserTestBase { const base::DictionaryValue* dict; std::string kind; std::string device_id; - ASSERT_TRUE(it->GetAsDictionary(&dict)); + ASSERT_TRUE((*it)->GetAsDictionary(&dict)); ASSERT_TRUE(dict->GetString("kind", &kind)); ASSERT_TRUE(dict->GetString("id", &device_id)); ASSERT_FALSE(device_id.empty()); @@ -940,7 +940,7 @@ class WebRtcGetUserMediaOldConstraintsBrowserTest const base::DictionaryValue* dict; std::string kind; std::string device_id; - ASSERT_TRUE(it->GetAsDictionary(&dict)); + ASSERT_TRUE((*it)->GetAsDictionary(&dict)); ASSERT_TRUE(dict->GetString("kind", &kind)); ASSERT_TRUE(dict->GetString("id", &device_id)); ASSERT_FALSE(device_id.empty()); diff --git a/content/browser/webrtc/webrtc_internals.cc b/content/browser/webrtc/webrtc_internals.cc index 376cb139d2470b..6f22232c96b4a6 100644 --- a/content/browser/webrtc/webrtc_internals.cc +++ b/content/browser/webrtc/webrtc_internals.cc @@ -269,7 +269,7 @@ void WebRTCInternals::RemoveObserver(WebRTCInternalsUIObserver* observer) { // TODO(tommi): Consider removing all the peer_connection_data_. for (auto& dictionary : peer_connection_data_) - FreeLogList(&dictionary); + FreeLogList(dictionary.get()); } void WebRTCInternals::UpdateObserver(WebRTCInternalsUIObserver* observer) { @@ -278,7 +278,7 @@ void WebRTCInternals::UpdateObserver(WebRTCInternalsUIObserver* observer) { observer->OnUpdate("updateAllPeerConnections", &peer_connection_data_); for (const auto& request : get_user_media_requests_) { - observer->OnUpdate("addGetUserMedia", &request); + observer->OnUpdate("addGetUserMedia", request.get()); } } diff --git a/content/browser/webrtc/webrtc_internals_unittest.cc b/content/browser/webrtc/webrtc_internals_unittest.cc index bdadf0a0b5c216..d14eef08e32dd2 100644 --- a/content/browser/webrtc/webrtc_internals_unittest.cc +++ b/content/browser/webrtc/webrtc_internals_unittest.cc @@ -141,7 +141,7 @@ TEST_F(WebRtcInternalsTest, EnsureNoLogWhenNoObserver) { ASSERT_TRUE(observer.value()->GetAsList(&list)); EXPECT_EQ(1U, list->GetSize()); base::DictionaryValue* dict = nullptr; - ASSERT_TRUE((*list->begin()).GetAsDictionary(&dict)); + ASSERT_TRUE((*list->begin())->GetAsDictionary(&dict)); base::ListValue* log = nullptr; ASSERT_FALSE(dict->GetList("log", &log)); @@ -167,7 +167,7 @@ TEST_F(WebRtcInternalsTest, EnsureLogIsRemovedWhenObserverIsRemoved) { ASSERT_TRUE(observer.value()->GetAsList(&list)); EXPECT_EQ(1U, list->GetSize()); base::DictionaryValue* dict = nullptr; - ASSERT_TRUE((*list->begin()).GetAsDictionary(&dict)); + ASSERT_TRUE((*list->begin())->GetAsDictionary(&dict)); base::ListValue* log = nullptr; ASSERT_TRUE(dict->GetList("log", &log)); @@ -178,7 +178,7 @@ TEST_F(WebRtcInternalsTest, EnsureLogIsRemovedWhenObserverIsRemoved) { ASSERT_TRUE(observer.value()->GetAsList(&list)); EXPECT_EQ(1U, list->GetSize()); - ASSERT_TRUE((*list->begin()).GetAsDictionary(&dict)); + ASSERT_TRUE((*list->begin())->GetAsDictionary(&dict)); ASSERT_FALSE(dict->GetList("log", &log)); webrtc_internals.OnRemovePeerConnection(3, 4); @@ -332,7 +332,7 @@ TEST_F(WebRtcInternalsTest, SendAllUpdatesWithPeerConnectionUpdate) { EXPECT_EQ(1U, list->GetSize()); base::DictionaryValue* dict = NULL; - EXPECT_TRUE((*list->begin()).GetAsDictionary(&dict)); + EXPECT_TRUE((*list->begin())->GetAsDictionary(&dict)); VerifyInt(dict, "rid", rid); VerifyInt(dict, "pid", pid); @@ -345,7 +345,7 @@ TEST_F(WebRtcInternalsTest, SendAllUpdatesWithPeerConnectionUpdate) { ASSERT_TRUE(dict->GetList("log", &log)); EXPECT_EQ(1U, log->GetSize()); - EXPECT_TRUE((*log->begin()).GetAsDictionary(&dict)); + EXPECT_TRUE((*log->begin())->GetAsDictionary(&dict)); VerifyString(dict, "type", update_type); VerifyString(dict, "value", update_value); std::string time; diff --git a/content/renderer/gpu/actions_parser.cc b/content/renderer/gpu/actions_parser.cc index 127c565f4c0708..650fd439639846 100644 --- a/content/renderer/gpu/actions_parser.cc +++ b/content/renderer/gpu/actions_parser.cc @@ -71,7 +71,7 @@ bool ActionsParser::ParsePointerActionSequence() { for (const auto& pointer_value : *pointer_list) { const base::DictionaryValue* pointer_actions; - if (!pointer_value.GetAsDictionary(&pointer_actions)) { + if (!pointer_value->GetAsDictionary(&pointer_actions)) { error_message_ = base::StringPrintf("pointer actions is missing or not a dictionary"); return false; @@ -157,7 +157,7 @@ bool ActionsParser::ParseActions(const base::ListValue& actions) { SyntheticPointerActionListParams::ParamList param_list; for (const auto& action_value : actions) { const base::DictionaryValue* action; - if (!action_value.GetAsDictionary(&action)) { + if (!action_value->GetAsDictionary(&action)) { error_message_ = base::StringPrintf( "actions[%d].actions is missing or not a dictionary", action_index_); return false; diff --git a/content/test/fuzzer/renderer_tree_fuzzer.cc b/content/test/fuzzer/renderer_tree_fuzzer.cc index ecb62900414003..d941b55bebd1c5 100644 --- a/content/test/fuzzer/renderer_tree_fuzzer.cc +++ b/content/test/fuzzer/renderer_tree_fuzzer.cc @@ -157,7 +157,7 @@ class NodeList : public std::vector> { } for (const auto& listItem : *list) { - std::unique_ptr node(Node::ParseJson(listItem)); + std::unique_ptr node(Node::ParseJson(*listItem)); if (node) { push_back(std::move(node)); } diff --git a/dbus/values_util.cc b/dbus/values_util.cc index e57380d1fa7e0b..1e035c9cfe9e5e 100644 --- a/dbus/values_util.cc +++ b/dbus/values_util.cc @@ -282,7 +282,7 @@ void AppendValueData(MessageWriter* writer, const base::Value& value) { dbus::MessageWriter array_writer(NULL); writer->OpenArray("v", &array_writer); for (const auto& value : *list) { - AppendValueDataAsVariant(&array_writer, value); + AppendValueDataAsVariant(&array_writer, *value); } writer->CloseContainer(&array_writer); break; diff --git a/extensions/browser/api/declarative/declarative_api.cc b/extensions/browser/api/declarative/declarative_api.cc index b2393b2c9a375c..1b7ca1886cfae3 100644 --- a/extensions/browser/api/declarative/declarative_api.cc +++ b/extensions/browser/api/declarative/declarative_api.cc @@ -55,17 +55,17 @@ void ConvertBinaryListElementsToBase64(base::ListValue* args) { size_t index = 0; for (base::ListValue::iterator iter = args->begin(); iter != args->end(); ++iter, ++index) { - if (iter->IsType(base::Value::Type::BINARY)) { + if ((*iter)->IsType(base::Value::Type::BINARY)) { base::Value* binary = NULL; if (args->GetBinary(index, &binary)) args->Set(index, ConvertBinaryToBase64(binary).release()); - } else if (iter->IsType(base::Value::Type::LIST)) { + } else if ((*iter)->IsType(base::Value::Type::LIST)) { base::ListValue* list; - iter->GetAsList(&list); + (*iter)->GetAsList(&list); ConvertBinaryListElementsToBase64(list); - } else if (iter->IsType(base::Value::Type::DICTIONARY)) { + } else if ((*iter)->IsType(base::Value::Type::DICTIONARY)) { base::DictionaryValue* dict; - iter->GetAsDictionary(&dict); + (*iter)->GetAsDictionary(&dict); ConvertBinaryDictionaryValuesToBase64(dict); } } diff --git a/extensions/browser/api/declarative_webrequest/webrequest_condition_attribute.cc b/extensions/browser/api/declarative_webrequest/webrequest_condition_attribute.cc index 626c2433cf3d3d..53edf362b7f66b 100644 --- a/extensions/browser/api/declarative_webrequest/webrequest_condition_attribute.cc +++ b/extensions/browser/api/declarative_webrequest/webrequest_condition_attribute.cc @@ -235,7 +235,7 @@ WebRequestConditionAttributeContentType::Create( for (base::ListValue::const_iterator it = value_as_list->begin(); it != value_as_list->end(); ++it) { std::string content_type; - if (!it->GetAsString(&content_type)) { + if (!(*it)->GetAsString(&content_type)) { *error = ErrorUtils::FormatErrorMessage(kInvalidValue, name); return scoped_refptr(NULL); } @@ -384,7 +384,7 @@ std::unique_ptr HeaderMatcher::Create( for (base::ListValue::const_iterator it = tests->begin(); it != tests->end(); ++it) { const base::DictionaryValue* tests = NULL; - if (!it->GetAsDictionary(&tests)) + if (!(*it)->GetAsDictionary(&tests)) return std::unique_ptr(); std::unique_ptr header_test( @@ -509,7 +509,7 @@ HeaderMatcher::HeaderMatchTest::Create(const base::DictionaryValue* tests) { const base::ListValue* list = NULL; CHECK(content->GetAsList(&list)); for (const auto& it : *list) { - tests->push_back(StringMatchTest::Create(it, match_type, !is_name)); + tests->push_back(StringMatchTest::Create(*it, match_type, !is_name)); } break; } @@ -810,7 +810,7 @@ bool ParseListOfStages(const base::Value& value, int* out_stages) { std::string stage_name; for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { - if (!(it->GetAsString(&stage_name))) + if (!((*it)->GetAsString(&stage_name))) return false; if (stage_name == keys::kOnBeforeRequestEnum) { stages |= ON_BEFORE_REQUEST; diff --git a/extensions/browser/api/device_permissions_manager.cc b/extensions/browser/api/device_permissions_manager.cc index 38b2c7645e45a8..427b56a0d896ea 100644 --- a/extensions/browser/api/device_permissions_manager.cc +++ b/extensions/browser/api/device_permissions_manager.cc @@ -254,7 +254,7 @@ std::set> GetDevicePermissionEntries( for (const auto& entry : *devices) { const base::DictionaryValue* entry_dict; - if (entry.GetAsDictionary(&entry_dict)) { + if (entry->GetAsDictionary(&entry_dict)) { scoped_refptr device_entry = ReadDevicePermissionEntry(entry_dict); if (entry_dict) { diff --git a/extensions/browser/api/networking_private/networking_private_api.cc b/extensions/browser/api/networking_private/networking_private_api.cc index d887a397311eab..61e7ff17749663 100644 --- a/extensions/browser/api/networking_private/networking_private_api.cc +++ b/extensions/browser/api/networking_private/networking_private_api.cc @@ -476,7 +476,7 @@ NetworkingPrivateGetEnabledNetworkTypesFunction::Run() { for (base::ListValue::iterator iter = enabled_networks_onc_types->begin(); iter != enabled_networks_onc_types->end(); ++iter) { std::string type; - if (!iter->GetAsString(&type)) + if (!(*iter)->GetAsString(&type)) NOTREACHED(); if (type == ::onc::network_type::kEthernet) { enabled_networks_list->AppendString( diff --git a/extensions/browser/api/networking_private/networking_private_chromeos.cc b/extensions/browser/api/networking_private/networking_private_chromeos.cc index 58d44947649145..380e7877d49514 100644 --- a/extensions/browser/api/networking_private/networking_private_chromeos.cc +++ b/extensions/browser/api/networking_private/networking_private_chromeos.cc @@ -512,9 +512,9 @@ void NetworkingPrivateChromeOS::GetNetworks( chromeos::network_util::TranslateNetworkListToONC( pattern, configured_only, visible_only, limit); - for (auto& value : *network_properties_list) { + for (const auto& value : *network_properties_list) { base::DictionaryValue* network_dict = nullptr; - value.GetAsDictionary(&network_dict); + value->GetAsDictionary(&network_dict); DCHECK(network_dict); if (GetThirdPartyVPNDictionary(network_dict)) AppendThirdPartyProviderName(network_dict); diff --git a/extensions/browser/api/networking_private/networking_private_linux.cc b/extensions/browser/api/networking_private/networking_private_linux.cc index d7ecf8e7c42287..a184c55fd813e3 100644 --- a/extensions/browser/api/networking_private/networking_private_linux.cc +++ b/extensions/browser/api/networking_private/networking_private_linux.cc @@ -643,8 +643,8 @@ void NetworkingPrivateLinux::SendNetworkListChangedEvent( for (const auto& network : network_list) { std::string guid; - const base::DictionaryValue* dict = nullptr; - if (network.GetAsDictionary(&dict)) { + base::DictionaryValue* dict; + if (network->GetAsDictionary(&dict)) { if (dict->GetString(kAccessPointInfoGuid, &guid)) { guidsForEventCallback.push_back(guid); } diff --git a/extensions/browser/api/storage/storage_api.cc b/extensions/browser/api/storage/storage_api.cc index a844b4bbb64641..e6403a31de7ef2 100644 --- a/extensions/browser/api/storage/storage_api.cc +++ b/extensions/browser/api/storage/storage_api.cc @@ -108,7 +108,7 @@ void AddAllStringValues(const base::ListValue& from, std::string as_string; for (base::ListValue::const_iterator it = from.begin(); it != from.end(); ++it) { - if (it->GetAsString(&as_string)) { + if ((*it)->GetAsString(&as_string)) { to->push_back(as_string); } } diff --git a/extensions/browser/api/system_network/system_network_api_unittest.cc b/extensions/browser/api/system_network/system_network_api_unittest.cc index c2fc879b9e7c3a..1fde445fbeb805 100644 --- a/extensions/browser/api/system_network/system_network_api_unittest.cc +++ b/extensions/browser/api/system_network/system_network_api_unittest.cc @@ -39,7 +39,7 @@ TEST_F(SystemNetworkApiUnitTest, GetNetworkInterfaces) { for (const auto& network_interface_value : *value) { NetworkInterface network_interface; - ASSERT_TRUE(NetworkInterface::Populate(network_interface_value, + ASSERT_TRUE(NetworkInterface::Populate(*network_interface_value, &network_interface)); LOG(INFO) << "Network interface: address=" << network_interface.address diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc index 83246170e3f07e..01ca8d3cc7b31a 100644 --- a/extensions/browser/extension_prefs.cc +++ b/extensions/browser/extension_prefs.cc @@ -1803,7 +1803,7 @@ bool ExtensionPrefs::GetUserExtensionPrefIntoContainer( std::string extension_id; for (base::ListValue::const_iterator value_it = user_pref_as_list->begin(); value_it != user_pref_as_list->end(); ++value_it) { - if (!value_it->GetAsString(&extension_id)) { + if (!(*value_it)->GetAsString(&extension_id)) { NOTREACHED(); continue; } diff --git a/extensions/browser/verified_contents.cc b/extensions/browser/verified_contents.cc index eaf4c8fa93d6f7..fd60f313c59bb6 100644 --- a/extensions/browser/verified_contents.cc +++ b/extensions/browser/verified_contents.cc @@ -43,12 +43,12 @@ const char kWebstoreKId[] = "webstore"; // Helper function to iterate over a list of dictionaries, returning the // dictionary that has |key| -> |value| in it, if any, or NULL. -const DictionaryValue* FindDictionaryWithValue(const ListValue* list, - const std::string& key, - const std::string& value) { +DictionaryValue* FindDictionaryWithValue(const ListValue* list, + const std::string& key, + const std::string& value) { for (const auto& i : *list) { - const DictionaryValue* dictionary; - if (!i.GetAsDictionary(&dictionary)) + DictionaryValue* dictionary; + if (!i->GetAsDictionary(&dictionary)) continue; std::string found_value; if (dictionary->GetString(key, &found_value) && found_value == value) @@ -248,20 +248,20 @@ bool VerifiedContents::GetPayload(const base::FilePath& path, // } // } // ] - const DictionaryValue* dictionary = + DictionaryValue* dictionary = FindDictionaryWithValue(top_list, kDescriptionKey, kTreeHashPerFile); - const DictionaryValue* signed_content = NULL; + DictionaryValue* signed_content = NULL; if (!dictionary || !dictionary->GetDictionaryWithoutPathExpansion(kSignedContentKey, &signed_content)) { return false; } - const ListValue* signatures = NULL; + ListValue* signatures = NULL; if (!signed_content->GetList(kSignaturesKey, &signatures)) return false; - const DictionaryValue* signature_dict = + DictionaryValue* signature_dict = FindDictionaryWithValue(signatures, kHeaderKidKey, kWebstoreKId); if (!signature_dict) return false; diff --git a/extensions/common/api/declarative/declarative_manifest_data.cc b/extensions/common/api/declarative/declarative_manifest_data.cc index 310113098de1cc..13bfdcc56f11a5 100644 --- a/extensions/common/api/declarative/declarative_manifest_data.cc +++ b/extensions/common/api/declarative/declarative_manifest_data.cc @@ -129,9 +129,9 @@ std::unique_ptr DeclarativeManifestData::FromValue( for (const auto& element : *list) { const base::DictionaryValue* dict = nullptr; - if (!element.GetAsDictionary(&dict)) { + if (!element->GetAsDictionary(&dict)) { error_builder.Append("expected dictionary, got %s", - base::Value::GetTypeName(element.GetType())); + base::Value::GetTypeName(element->GetType())); return std::unique_ptr(); } std::string event; diff --git a/extensions/common/extension_l10n_util_unittest.cc b/extensions/common/extension_l10n_util_unittest.cc index 81d7d78f7f0094..3caba365958e17 100644 --- a/extensions/common/extension_l10n_util_unittest.cc +++ b/extensions/common/extension_l10n_util_unittest.cc @@ -428,9 +428,8 @@ TEST(ExtensionL10nUtil, LocalizeManifestWithNameDescriptionFileHandlerTitle) { manifest.SetString(keys::kDescription, "__MSG_description__"); base::ListValue* handlers = new base::ListValue(); manifest.Set(keys::kFileBrowserHandlers, handlers); - handlers->Append(base::MakeUnique()); - base::DictionaryValue* handler = nullptr; - handlers->GetDictionary(0, &handler); + base::DictionaryValue* handler = new base::DictionaryValue(); + handlers->Append(base::WrapUnique(handler)); handler->SetString(keys::kPageActionDefaultTitle, "__MSG_file_handler_title__"); diff --git a/extensions/common/manifest_handlers/action_handlers_handler.cc b/extensions/common/manifest_handlers/action_handlers_handler.cc index c5ac38d6f72d36..2d303181183a8c 100644 --- a/extensions/common/manifest_handlers/action_handlers_handler.cc +++ b/extensions/common/manifest_handlers/action_handlers_handler.cc @@ -42,9 +42,9 @@ bool ActionHandlersHandler::Parse(Extension* extension, base::string16* error) { } auto info = base::MakeUnique(); - for (const base::Value& wrapped_value : *entries) { + for (const std::unique_ptr& wrapped_value : *entries) { std::string value; - if (!wrapped_value.GetAsString(&value)) { + if (!wrapped_value->GetAsString(&value)) { *error = base::ASCIIToUTF16(errors::kInvalidActionHandlersType); return false; } diff --git a/extensions/common/manifest_handlers/kiosk_mode_info.cc b/extensions/common/manifest_handlers/kiosk_mode_info.cc index 13bb071cba73c8..b9947e28ce35ea 100644 --- a/extensions/common/manifest_handlers/kiosk_mode_info.cc +++ b/extensions/common/manifest_handlers/kiosk_mode_info.cc @@ -119,7 +119,7 @@ bool KioskModeHandler::Parse(Extension* extension, base::string16* error) { for (const auto& value : *list) { std::unique_ptr app = - KioskSecondaryAppsType::FromValue(value, error); + KioskSecondaryAppsType::FromValue(*value, error); if (!app) { *error = base::ASCIIToUTF16( manifest_errors::kInvalidKioskSecondaryAppsBadAppId); diff --git a/extensions/common/manifest_handlers/requirements_info.cc b/extensions/common/manifest_handlers/requirements_info.cc index 0acbf7baddc187..d73af89c0902de 100644 --- a/extensions/common/manifest_handlers/requirements_info.cc +++ b/extensions/common/manifest_handlers/requirements_info.cc @@ -117,7 +117,7 @@ bool RequirementsHandler::Parse(Extension* extension, base::string16* error) { for (base::ListValue::const_iterator feature_iter = features->begin(); feature_iter != features->end(); ++feature_iter) { std::string feature; - if (feature_iter->GetAsString(&feature)) { + if ((*feature_iter)->GetAsString(&feature)) { if (feature == "webgl") { requirements->webgl = true; } else if (feature == "css3d") { diff --git a/extensions/renderer/api_binding.cc b/extensions/renderer/api_binding.cc index 8b36c2d70065f0..6c3cc2ee81bbcd 100644 --- a/extensions/renderer/api_binding.cc +++ b/extensions/renderer/api_binding.cc @@ -180,7 +180,7 @@ APIBinding::APIBinding(const std::string& api_name, if (function_definitions) { for (const auto& func : *function_definitions) { const base::DictionaryValue* func_dict = nullptr; - CHECK(func.GetAsDictionary(&func_dict)); + CHECK(func->GetAsDictionary(&func_dict)); std::string name; CHECK(func_dict->GetString("name", &name)); @@ -197,7 +197,7 @@ APIBinding::APIBinding(const std::string& api_name, if (type_definitions) { for (const auto& type : *type_definitions) { const base::DictionaryValue* type_dict = nullptr; - CHECK(type.GetAsDictionary(&type_dict)); + CHECK(type->GetAsDictionary(&type_dict)); std::string id; CHECK(type_dict->GetString("id", &id)); auto argument_spec = base::MakeUnique(*type_dict); @@ -222,7 +222,7 @@ APIBinding::APIBinding(const std::string& api_name, if (type_dict->GetList("functions", &type_functions)) { for (const auto& func : *type_functions) { const base::DictionaryValue* func_dict = nullptr; - CHECK(func.GetAsDictionary(&func_dict)); + CHECK(func->GetAsDictionary(&func_dict)); std::string function_name; CHECK(func_dict->GetString("name", &function_name)); @@ -240,7 +240,7 @@ APIBinding::APIBinding(const std::string& api_name, events_.reserve(event_definitions->GetSize()); for (const auto& event : *event_definitions) { const base::DictionaryValue* event_dict = nullptr; - CHECK(event.GetAsDictionary(&event_dict)); + CHECK(event->GetAsDictionary(&event_dict)); std::string name; CHECK(event_dict->GetString("name", &name)); std::string full_name = @@ -265,8 +265,8 @@ APIBinding::APIBinding(const std::string& api_name, const base::ListValue* list = nullptr; CHECK(options->GetList(name, &list)); for (const auto& entry : *list) { - DCHECK(entry.is_string()); - out_value->push_back(entry.GetString()); + DCHECK(entry->is_string()); + out_value->push_back(entry->GetString()); } }; get_values("actions", &rule_actions); diff --git a/extensions/renderer/api_event_handler.cc b/extensions/renderer/api_event_handler.cc index acd468ce628bc3..fc2d47a1b20801 100644 --- a/extensions/renderer/api_event_handler.cc +++ b/extensions/renderer/api_event_handler.cc @@ -220,7 +220,7 @@ void APIEventHandler::FireEventInContext(const std::string& event_name, std::vector> v8_args; v8_args.reserve(args.GetSize()); for (const auto& arg : args) - v8_args.push_back(converter->ToV8Value(&arg, context)); + v8_args.push_back(converter->ToV8Value(arg.get(), context)); emitter->Fire(context, &v8_args, &filter); } else { v8::Isolate* isolate = context->GetIsolate(); diff --git a/extensions/renderer/api_request_handler.cc b/extensions/renderer/api_request_handler.cc index 369cfcb1495baf..1771dce16fe540 100644 --- a/extensions/renderer/api_request_handler.cc +++ b/extensions/renderer/api_request_handler.cc @@ -127,7 +127,7 @@ void APIRequestHandler::CompleteRequest(int request_id, for (const auto& arg : pending_request.callback_arguments) args.push_back(arg.Get(isolate)); for (const auto& arg : response_args) - args.push_back(converter->ToV8Value(&arg, context)); + args.push_back(converter->ToV8Value(arg.get(), context)); blink::WebScopedUserGesture user_gesture(pending_request.user_gesture_token); if (!error.empty()) diff --git a/extensions/renderer/api_signature.cc b/extensions/renderer/api_signature.cc index c83eb9105f367c..683ba1ff388f63 100644 --- a/extensions/renderer/api_signature.cc +++ b/extensions/renderer/api_signature.cc @@ -234,7 +234,7 @@ APISignature::APISignature(const base::ListValue& specification) { signature_.reserve(specification.GetSize()); for (const auto& value : specification) { const base::DictionaryValue* param = nullptr; - CHECK(value.GetAsDictionary(¶m)); + CHECK(value->GetAsDictionary(¶m)); signature_.push_back(base::MakeUnique(*param)); } } diff --git a/extensions/renderer/argument_spec.cc b/extensions/renderer/argument_spec.cc index 18367145d9e107..b0cb7c3aa46abe 100644 --- a/extensions/renderer/argument_spec.cc +++ b/extensions/renderer/argument_spec.cc @@ -60,7 +60,7 @@ void ArgumentSpec::InitializeType(const base::DictionaryValue* dict) { type_ = ArgumentType::CHOICES; choices_.reserve(choices->GetSize()); for (const auto& choice : *choices) - choices_.push_back(base::MakeUnique(choice)); + choices_.push_back(base::MakeUnique(*choice)); return; } } diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc index 28e2b0b49888ee..fcc528de8b1d55 100644 --- a/extensions/renderer/dispatcher.cc +++ b/extensions/renderer/dispatcher.cc @@ -154,7 +154,7 @@ void CallModuleMethod(const std::string& module_name, std::vector> arguments; for (const auto& arg : *args) { - arguments.push_back(converter->ToV8Value(&arg, context->v8_context())); + arguments.push_back(converter->ToV8Value(arg.get(), context->v8_context())); } context->module_system()->CallModuleMethodSafe( diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc index c5c3f1c71d0a8d..03bd8a4526d4b3 100644 --- a/google_apis/gaia/gaia_auth_fetcher.cc +++ b/google_apis/gaia/gaia_auth_fetcher.cc @@ -499,7 +499,7 @@ bool GaiaAuthFetcher::ParseListIdpSessionsResponse(const std::string& data, iter != sessionsList->end(); iter++) { base::DictionaryValue* sessionDictionary; - if (!iter->GetAsDictionary(&sessionDictionary)) + if (!(*iter)->GetAsDictionary(&sessionDictionary)) continue; if (sessionDictionary->GetString("login_hint", login_hint)) diff --git a/headless/public/internal/value_conversions.h b/headless/public/internal/value_conversions.h index f2ded264939175..5622fb84773506 100644 --- a/headless/public/internal/value_conversions.h +++ b/headless/public/internal/value_conversions.h @@ -151,7 +151,7 @@ struct FromValue> { } errors->Push(); for (const auto& item : *list) - result.push_back(FromValue::Parse(item, errors)); + result.push_back(FromValue::Parse(*item, errors)); errors->Pop(); return result; } diff --git a/ios/chrome/browser/autofill/autofill_agent.mm b/ios/chrome/browser/autofill/autofill_agent.mm index 651542f4bf5261..db8e6ab11986af 100644 --- a/ios/chrome/browser/autofill/autofill_agent.mm +++ b/ios/chrome/browser/autofill/autofill_agent.mm @@ -267,7 +267,7 @@ - (BOOL)extractFormField:(const base::DictionaryValue&)field if (field.GetList("option_values", &optionValues)) { for (const auto& optionValue : *optionValues) { base::string16 value; - if (optionValue.GetAsString(&value)) + if (optionValue->GetAsString(&value)) fieldData->option_values.push_back(value); } } @@ -277,7 +277,7 @@ - (BOOL)extractFormField:(const base::DictionaryValue&)field if (field.GetList("option_contents", &optionContents)) { for (const auto& optionContent : *optionContents) { base::string16 content; - if (optionContent.GetAsString(&content)) + if (optionContent->GetAsString(&content)) fieldData->option_contents.push_back(content); } } @@ -365,7 +365,7 @@ - (BOOL)getExtractedFormsData:(FormDataVector*)formsData for (const auto& formDict : *formsList) { // Each form list entry should be a JSON dictionary. const base::DictionaryValue* formData; - if (!formDict.GetAsDictionary(&formData)) + if (!formDict->GetAsDictionary(&formData)) return NO; // Form data is copied into a FormData object field-by-field. @@ -404,7 +404,7 @@ - (BOOL)getExtractedFormsData:(FormDataVector*)formsData for (const auto& fieldDict : *fieldsList) { const base::DictionaryValue* field; autofill::FormFieldData fieldData; - if (fieldDict.GetAsDictionary(&field) && + if (fieldDict->GetAsDictionary(&field) && [self extractFormField:*field asFieldData:&fieldData]) { form.fields.push_back(fieldData); } else { diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm index 4d87b2c3da8df8..1ec009d7deae78 100644 --- a/ios/web/web_state/ui/crw_web_controller.mm +++ b/ios/web/web_state/ui/crw_web_controller.mm @@ -2595,7 +2595,7 @@ - (BOOL)handleCredentialsRequestedMessage:(base::DictionaryValue*)message std::vector federations; for (const auto& federation_value : *federations_value) { std::string federation; - if (!federation_value.GetAsString(&federation)) { + if (!federation_value->GetAsString(&federation)) { DLOG(WARNING) << "JS message parameter 'federations' contains wrong type"; return NO; } diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc index 23cfd1339b5cd2..c17c8be6f48991 100644 --- a/ipc/ipc_message_utils.cc +++ b/ipc/ipc_message_utils.cc @@ -128,7 +128,7 @@ void GetValueSize(base::PickleSizer* sizer, sizer->AddInt(); const base::ListValue* list = static_cast(value); for (const auto& entry : *list) { - GetValueSize(sizer, &entry, recursion + 1); + GetValueSize(sizer, entry.get(), recursion + 1); } break; } @@ -198,7 +198,7 @@ void WriteValue(base::Pickle* m, const base::Value* value, int recursion) { const base::ListValue* list = static_cast(value); WriteParam(m, static_cast(list->GetSize())); for (const auto& entry : *list) { - WriteValue(m, &entry, recursion + 1); + WriteValue(m, entry.get(), recursion + 1); } break; } diff --git a/mojo/common/values_struct_traits.h b/mojo/common/values_struct_traits.h index 7d8c2ed72171c0..4139ce6c9782ba 100644 --- a/mojo/common/values_struct_traits.h +++ b/mojo/common/values_struct_traits.h @@ -17,7 +17,7 @@ namespace mojo { template <> struct ArrayTraits { - using Element = base::Value; + using Element = std::unique_ptr; using ConstIterator = base::ListValue::const_iterator; static size_t GetSize(const base::ListValue& input) { diff --git a/net/http/http_request_headers.cc b/net/http/http_request_headers.cc index 3d97a3e9ace26a..18e6def6bb2bbf 100644 --- a/net/http/http_request_headers.cc +++ b/net/http/http_request_headers.cc @@ -227,7 +227,7 @@ bool HttpRequestHeaders::FromNetLogParam(const base::Value* event_param, it != header_list->end(); ++it) { std::string header_line; - if (!it->GetAsString(&header_line)) { + if (!(*it)->GetAsString(&header_line)) { headers->Clear(); *request_line = ""; return false; diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc index cb985f5ccaa45b..08eceab71280be 100644 --- a/net/http/http_response_headers.cc +++ b/net/http/http_response_headers.cc @@ -1305,7 +1305,7 @@ bool HttpResponseHeaders::FromNetLogParam( it != header_list->end(); ++it) { std::string header_line; - if (!it->GetAsString(&header_line)) + if (!(*it)->GetAsString(&header_line)) return false; raw_headers.append(header_line); diff --git a/net/http/http_server_properties_manager.cc b/net/http/http_server_properties_manager.cc index f927874e489ab4..3d30297dd3130a 100644 --- a/net/http/http_server_properties_manager.cc +++ b/net/http/http_server_properties_manager.cc @@ -493,7 +493,7 @@ void HttpServerPropertiesManager::UpdateCacheFromPrefsOnPrefThread() { } else { for (base::ListValue::const_iterator it = servers_list->begin(); it != servers_list->end(); ++it) { - if (!it->GetAsDictionary(&servers_dict)) { + if (!(*it)->GetAsDictionary(&servers_dict)) { DVLOG(1) << "Malformed http_server_properties for servers dictionary."; detected_corrupted_prefs = true; continue; @@ -651,7 +651,7 @@ bool HttpServerPropertiesManager::AddToAlternativeServiceMap( AlternativeServiceInfoVector alternative_service_info_vector; for (const auto& alternative_service_list_item : *alternative_service_list) { const base::DictionaryValue* alternative_service_dict; - if (!alternative_service_list_item.GetAsDictionary( + if (!alternative_service_list_item->GetAsDictionary( &alternative_service_dict)) return false; AlternativeServiceInfo alternative_service_info; diff --git a/net/http/http_server_properties_manager_unittest.cc b/net/http/http_server_properties_manager_unittest.cc index 7ab1f662a68480..66f1224dbb2ad7 100644 --- a/net/http/http_server_properties_manager_unittest.cc +++ b/net/http/http_server_properties_manager_unittest.cc @@ -1398,7 +1398,7 @@ TEST_P(HttpServerPropertiesManagerTest, ASSERT_TRUE(pref_dict.GetListWithoutPathExpansion("servers", &servers_list)); base::ListValue::const_iterator it = servers_list->begin(); const base::DictionaryValue* server_pref_dict; - ASSERT_TRUE(it->GetAsDictionary(&server_pref_dict)); + ASSERT_TRUE((*it)->GetAsDictionary(&server_pref_dict)); const base::DictionaryValue* example_pref_dict; diff --git a/net/test/spawned_test_server/local_test_server.cc b/net/test/spawned_test_server/local_test_server.cc index b941b62285ba01..70ea7a9450cacb 100644 --- a/net/test/spawned_test_server/local_test_server.cc +++ b/net/test/spawned_test_server/local_test_server.cc @@ -213,7 +213,7 @@ bool LocalTestServer::AddCommandLineArguments( return false; for (base::ListValue::const_iterator list_it = list->begin(); list_it != list->end(); ++list_it) { - if (!AppendArgumentFromJSONValue(key, *list_it, command_line)) + if (!AppendArgumentFromJSONValue(key, *(*list_it), command_line)) return false; } } else if (!AppendArgumentFromJSONValue(key, value, command_line)) { diff --git a/remoting/protocol/http_ice_config_request.cc b/remoting/protocol/http_ice_config_request.cc index 89e751d9029d08..7364341169190c 100644 --- a/remoting/protocol/http_ice_config_request.cc +++ b/remoting/protocol/http_ice_config_request.cc @@ -162,13 +162,13 @@ void HttpIceConfigRequest::OnResponse(const UrlRequest::Result& result) { // Parse iceServers list and store them in |ice_config|. bool errors_found = false; for (const auto& server : *ice_servers_list) { - const base::DictionaryValue* server_dict; - if (!server.GetAsDictionary(&server_dict)) { + base::DictionaryValue* server_dict; + if (!server->GetAsDictionary(&server_dict)) { errors_found = true; continue; } - const base::ListValue* urls_list = nullptr; + base::ListValue* urls_list = nullptr; if (!server_dict->GetList("urls", &urls_list)) { errors_found = true; continue; @@ -182,7 +182,7 @@ void HttpIceConfigRequest::OnResponse(const UrlRequest::Result& result) { for (const auto& url : *urls_list) { std::string url_str; - if (!url.GetAsString(&url_str)) { + if (!url->GetAsString(&url_str)) { errors_found = true; continue; } diff --git a/remoting/test/host_info.cc b/remoting/test/host_info.cc index a696ffd214ab0d..5f5321f65ecf56 100644 --- a/remoting/test/host_info.cc +++ b/remoting/test/host_info.cc @@ -22,7 +22,7 @@ bool HostInfo::ParseHostInfo(const base::DictionaryValue& host_info) { if (!list_value->empty()) { for (const auto& item : *list_value) { std::string token_url_pattern; - if (!item.GetAsString(&token_url_pattern)) { + if (!item->GetAsString(&token_url_pattern)) { return false; } token_url_patterns.push_back(token_url_pattern); diff --git a/remoting/test/host_list_fetcher.cc b/remoting/test/host_list_fetcher.cc index 3eb3ee0aafa822..a652d14c21d5de 100644 --- a/remoting/test/host_list_fetcher.cc +++ b/remoting/test/host_list_fetcher.cc @@ -87,10 +87,10 @@ bool HostListFetcher::ProcessResponse( } // Any host_info with malformed data will not be added to the hostlist. - const base::DictionaryValue* host_dict; + base::DictionaryValue* host_dict; for (const auto& host_info : *hosts) { HostInfo host; - if (host_info.GetAsDictionary(&host_dict) && + if (host_info->GetAsDictionary(&host_dict) && host.ParseHostInfo(*host_dict)) { hostlist->push_back(host); } diff --git a/services/catalog/entry.cc b/services/catalog/entry.cc index 2e2836bd21f27f..7db2026282d172 100644 --- a/services/catalog/entry.cc +++ b/services/catalog/entry.cc @@ -25,7 +25,7 @@ bool ReadStringSet(const base::ListValue& list_value, DCHECK(string_set); for (const auto& value_value : list_value) { std::string value; - if (!value_value.GetAsString(&value)) { + if (!value_value->GetAsString(&value)) { LOG(ERROR) << "Entry::Deserialize: list member must be a string"; return false; } diff --git a/tools/gn/command_desc.cc b/tools/gn/command_desc.cc index 8dbe6de7de932e..8e4ebd7e7c0bbc 100644 --- a/tools/gn/command_desc.cc +++ b/tools/gn/command_desc.cc @@ -39,7 +39,7 @@ void PrintValue(const base::Value* value, int indentLevel) { bool bool_value = false; if (value->GetAsList(&list_value)) { for (const auto& v : *list_value) { - PrintValue(&v, indentLevel); + PrintValue(v.get(), indentLevel); } } else if (value->GetAsString(&string_value)) { OutputString(indent); diff --git a/tools/gn/commands.cc b/tools/gn/commands.cc index e9691aaa305d50..39dd079a0622d0 100644 --- a/tools/gn/commands.cc +++ b/tools/gn/commands.cc @@ -515,7 +515,7 @@ void FilterAndPrintTargets(bool indent, std::vector* targets) { FilterAndPrintTargets(targets, &tmp); for (const auto& value : tmp) { std::string string; - value.GetAsString(&string); + value->GetAsString(&string); if (indent) OutputString(" "); OutputString(string); diff --git a/tools/json_schema_compiler/cc_generator.py b/tools/json_schema_compiler/cc_generator.py index 0cde6cab319363..aa22ea1b4072d6 100644 --- a/tools/json_schema_compiler/cc_generator.py +++ b/tools/json_schema_compiler/cc_generator.py @@ -947,8 +947,7 @@ def _GenerateListValueToEnumArrayConversion(self, .Concat(self._GenerateStringToEnumConversion(item_type, '(it)', 'tmp', - failure_value, - is_ptr=False)) + failure_value)) .Append('%s%spush_back(tmp);' % (dst_var, accessor)) .Eblock('}') ) @@ -958,8 +957,7 @@ def _GenerateStringToEnumConversion(self, type_, src_var, dst_var, - failure_value, - is_ptr=True): + failure_value): """Returns Code that converts a string type in |src_var| to an enum with type |type_| in |dst_var|. In the generated code, if |src_var| is not a valid enum name then the function will return |failure_value|. @@ -971,14 +969,11 @@ def _GenerateStringToEnumConversion(self, cpp_type_namespace = '' if type_.namespace != self._namespace: cpp_type_namespace = '%s::' % type_.namespace.unix_name - accessor = '->' if is_ptr else '.' (c.Append('std::string %s;' % enum_as_string) - .Sblock('if (!%s%sGetAsString(&%s)) {' % (src_var, - accessor, - enum_as_string)) + .Sblock('if (!%s->GetAsString(&%s)) {' % (src_var, enum_as_string)) .Concat(self._GenerateError( '"\'%%(key)s\': expected string, got " + ' + - self._util_cc_helper.GetValueTypeString('%%(src_var)s', is_ptr))) + self._util_cc_helper.GetValueTypeString('%%(src_var)s', True))) .Append('return %s;' % failure_value) .Eblock('}') .Append('%s = %sParse%s(%s);' % (dst_var, diff --git a/tools/json_schema_compiler/util.h b/tools/json_schema_compiler/util.h index 8d206a6672a487..d7862cea4f63a6 100644 --- a/tools/json_schema_compiler/util.h +++ b/tools/json_schema_compiler/util.h @@ -102,7 +102,7 @@ bool PopulateArrayFromList(const base::ListValue& list, std::vector* out) { out->clear(); T item; for (const auto& value : list) { - if (!PopulateItem(value, &item)) + if (!PopulateItem(*value, &item)) return false; // T might not be movable, but in that case it should be copyable, and this // will still work. @@ -121,7 +121,7 @@ bool PopulateArrayFromList(const base::ListValue& list, out->clear(); T item; for (const auto& value : list) { - if (!PopulateItem(value, &item, error)) + if (!PopulateItem(*value, &item, error)) return false; out->push_back(std::move(item)); } diff --git a/ui/app_list/search/history_data_store.cc b/ui/app_list/search/history_data_store.cc index d080fa6a96381f..1eb92b0d207a8d 100644 --- a/ui/app_list/search/history_data_store.cc +++ b/ui/app_list/search/history_data_store.cc @@ -35,7 +35,7 @@ void GetSecondary(const base::ListValue* list, for (base::ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { std::string str; - if (!it->GetAsString(&str)) + if (!(*it)->GetAsString(&str)) return; results.push_back(str); diff --git a/ui/display/manager/json_converter.cc b/ui/display/manager/json_converter.cc index 2520d1d6838886..213f7e404932a4 100644 --- a/ui/display/manager/json_converter.cc +++ b/ui/display/manager/json_converter.cc @@ -125,7 +125,7 @@ bool UpdateFromDict(const base::DictionaryValue* dict_value, output->reserve(list->GetSize()); for (const auto& list_item : *list) { const base::DictionaryValue* item_values = nullptr; - if (!list_item.GetAsDictionary(&item_values)) + if (!list_item->GetAsDictionary(&item_values)) return false; DisplayPlacement item;