diff options
29 files changed, 218 insertions, 248 deletions
diff --git a/base/json/json_reader_unittest.cc b/base/json/json_reader_unittest.cc index 7623a68..a7aeaf0 100644 --- a/base/json/json_reader_unittest.cc +++ b/base/json/json_reader_unittest.cc @@ -222,8 +222,8 @@ TEST(JSONReaderTest, Reading) { // Basic array root.reset(JSONReader::Read("[true, false, null]", false)); ASSERT_TRUE(root.get()); - ListValue* list = root->AsList(); - ASSERT_TRUE(list); + ASSERT_TRUE(root->IsType(Value::TYPE_LIST)); + ListValue* list = static_cast<ListValue*>(root.get()); ASSERT_EQ(3U, list->GetSize()); // Test with trailing comma. Should be parsed the same as above. @@ -234,16 +234,16 @@ TEST(JSONReaderTest, Reading) { // Empty array root.reset(JSONReader::Read("[]", false)); ASSERT_TRUE(root.get()); - list = root->AsList(); - ASSERT_TRUE(list); + ASSERT_TRUE(root->IsType(Value::TYPE_LIST)); + list = static_cast<ListValue*>(root.get()); ASSERT_EQ(0U, list->GetSize()); // Nested arrays root.reset(JSONReader::Read("[[true], [], [false, [], [null]], null]", false)); ASSERT_TRUE(root.get()); - list = root->AsList(); - ASSERT_TRUE(list); + ASSERT_TRUE(root->IsType(Value::TYPE_LIST)); + list = static_cast<ListValue*>(root.get()); ASSERT_EQ(4U, list->GetSize()); // Lots of trailing commas. @@ -272,8 +272,8 @@ TEST(JSONReaderTest, Reading) { // Valid if we set |allow_trailing_comma| to true. root.reset(JSONReader::Read("[true,]", true)); ASSERT_TRUE(root.get()); - list = root->AsList(); - ASSERT_TRUE(list); + ASSERT_TRUE(root->IsType(Value::TYPE_LIST)); + list = static_cast<ListValue*>(root.get()); EXPECT_EQ(1U, list->GetSize()); Value* tmp_value = NULL; ASSERT_TRUE(list->Get(0, &tmp_value)); @@ -435,8 +435,8 @@ TEST(JSONReaderTest, Reading) { not_evil.append("[]]"); root.reset(JSONReader::Read(not_evil, false)); ASSERT_TRUE(root.get()); - list = root->AsList(); - ASSERT_TRUE(list); + ASSERT_TRUE(root->IsType(Value::TYPE_LIST)); + list = static_cast<ListValue*>(root.get()); ASSERT_EQ(5001U, list->GetSize()); // Test utf8 encoded input diff --git a/base/values.cc b/base/values.cc index ad53469..17aba16 100644 --- a/base/values.cc +++ b/base/values.cc @@ -18,7 +18,7 @@ Value* CopyWithoutEmptyChildren(Value* node) { DCHECK(node); switch (node->GetType()) { case Value::TYPE_LIST: { - ListValue* list = node->AsList(); + ListValue* list = static_cast<ListValue*>(node); ListValue* copy = new ListValue; for (ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { @@ -97,14 +97,6 @@ StringValue* Value::CreateStringValue(const string16& in_value) { return new StringValue(in_value); } -BinaryValue* Value::AsBinary() { - return NULL; -} - -ListValue* Value::AsList() { - return NULL; -} - bool Value::GetAsBoolean(bool* out_value) const { return false; } @@ -305,10 +297,6 @@ BinaryValue* BinaryValue::CreateWithCopiedBuffer(const char* buffer, return new BinaryValue(buffer_copy, size); } -BinaryValue* BinaryValue::AsBinary() { - return this; -} - BinaryValue* BinaryValue::DeepCopy() const { return CreateWithCopiedBuffer(buffer_, size_); } @@ -497,11 +485,11 @@ bool DictionaryValue::GetBinary(const std::string& path, BinaryValue** out_value) const { Value* value; bool result = Get(path, &value); - if (!result || !value->AsBinary()) + if (!result || !value->IsType(TYPE_BINARY)) return false; if (out_value) - *out_value = value->AsBinary(); + *out_value = static_cast<BinaryValue*>(value); return true; } @@ -523,11 +511,11 @@ bool DictionaryValue::GetList(const std::string& path, ListValue** out_value) const { Value* value; bool result = Get(path, &value); - if (!result || !value->AsList()) + if (!result || !value->IsType(TYPE_LIST)) return false; if (out_value) - *out_value = value->AsList(); + *out_value = static_cast<ListValue*>(value); return true; } @@ -601,11 +589,11 @@ bool DictionaryValue::GetListWithoutPathExpansion(const std::string& key, ListValue** out_value) const { Value* value; bool result = GetWithoutPathExpansion(key, &value); - if (!result || !value->AsList()) + if (!result || !value->IsType(TYPE_LIST)) return false; if (out_value) - *out_value = value->AsList(); + *out_value = static_cast<ListValue*>(value); return true; } @@ -814,11 +802,11 @@ bool ListValue::GetDictionary(size_t index, DictionaryValue** out_value) const { bool ListValue::GetList(size_t index, ListValue** out_value) const { Value* value; bool result = Get(index, &value); - if (!result || !value->AsList()) + if (!result || !value->IsType(TYPE_LIST)) return false; if (out_value) - *out_value = value->AsList(); + *out_value = static_cast<ListValue*>(value); return true; } @@ -877,10 +865,6 @@ bool ListValue::Insert(size_t index, Value* in_value) { return true; } -ListValue* ListValue::AsList() { - return this; -} - bool ListValue::GetAsList(ListValue** out_value) { if (out_value) *out_value = this; diff --git a/base/values.h b/base/values.h index 185729d..a30791b 100644 --- a/base/values.h +++ b/base/values.h @@ -87,9 +87,6 @@ class BASE_EXPORT Value { // Returns true if the current object represents a given type. bool IsType(Type type) const { return type == type_; } - virtual BinaryValue* AsBinary(); - virtual ListValue* AsList(); - // These methods allow the convenient retrieval of settings. // If the current setting object can be converted into the given type, // the value is returned through the |out_value| parameter and true is @@ -196,7 +193,6 @@ class BASE_EXPORT BinaryValue: public Value { const char* GetBuffer() const { return buffer_; } // Overridden from Value: - virtual BinaryValue* AsBinary() OVERRIDE; virtual BinaryValue* DeepCopy() const OVERRIDE; virtual bool Equals(const Value* other) const OVERRIDE; @@ -435,7 +431,6 @@ class BASE_EXPORT ListValue : public Value { const_iterator end() const { return list_.end(); } // Overridden from Value: - virtual ListValue* AsList() OVERRIDE; virtual bool GetAsList(ListValue** out_value) OVERRIDE; virtual bool GetAsList(const ListValue** out_value) const OVERRIDE; virtual ListValue* DeepCopy() const OVERRIDE; diff --git a/base/values_unittest.cc b/base/values_unittest.cc index 0ca19d9..553e8e1 100644 --- a/base/values_unittest.cc +++ b/base/values_unittest.cc @@ -416,20 +416,21 @@ TEST(ValuesTest, DeepCopy) { ASSERT_TRUE(copy_dict->Get("binary", ©_binary)); ASSERT_TRUE(copy_binary); ASSERT_NE(copy_binary, original_binary); - BinaryValue* binary_value = copy_binary->AsBinary(); - ASSERT_TRUE(binary_value); - ASSERT_NE(original_binary->GetBuffer(), binary_value->GetBuffer()); - ASSERT_EQ(original_binary->GetSize(), binary_value->GetSize()); + ASSERT_TRUE(copy_binary->IsType(Value::TYPE_BINARY)); + ASSERT_NE(original_binary->GetBuffer(), + static_cast<BinaryValue*>(copy_binary)->GetBuffer()); + ASSERT_EQ(original_binary->GetSize(), + static_cast<BinaryValue*>(copy_binary)->GetSize()); ASSERT_EQ(0, memcmp(original_binary->GetBuffer(), - binary_value->GetBuffer(), - original_binary->GetSize())); + static_cast<BinaryValue*>(copy_binary)->GetBuffer(), + original_binary->GetSize())); Value* copy_value = NULL; ASSERT_TRUE(copy_dict->Get("list", ©_value)); ASSERT_TRUE(copy_value); ASSERT_NE(copy_value, original_list); - ListValue* copy_list = copy_value->AsList(); - ASSERT_TRUE(copy_list != NULL); + ASSERT_TRUE(copy_value->IsType(Value::TYPE_LIST)); + ListValue* copy_list = static_cast<ListValue*>(copy_value); ASSERT_EQ(2U, copy_list->GetSize()); Value* copy_list_element_0; diff --git a/chrome/browser/autocomplete/search_provider.cc b/chrome/browser/autocomplete/search_provider.cc index 8bd3478..1dae40a 100644 --- a/chrome/browser/autocomplete/search_provider.cc +++ b/chrome/browser/autocomplete/search_provider.cc @@ -452,9 +452,9 @@ bool SearchProvider::ParseSuggestResults(Value* root_val, bool is_keyword, const string16& input_text, SuggestResults* suggest_results) { - ListValue* root_list = root_val->AsList(); - if (!root_list) + if (!root_val->IsType(Value::TYPE_LIST)) return false; + ListValue* root_list = static_cast<ListValue*>(root_val); Value* query_val; string16 query_str; @@ -462,15 +462,16 @@ bool SearchProvider::ParseSuggestResults(Value* root_val, if ((root_list->GetSize() < 2) || !root_list->Get(0, &query_val) || !query_val->GetAsString(&query_str) || (query_str != input_text) || - !root_list->Get(1, &result_val) || !result_val->AsList()) + !root_list->Get(1, &result_val) || !result_val->IsType(Value::TYPE_LIST)) return false; ListValue* description_list = NULL; if (root_list->GetSize() > 2) { // 3rd element: Description list. Value* description_val; - if (root_list->Get(2, &description_val)) - description_list = description_val->AsList(); + if (root_list->Get(2, &description_val) && + description_val->IsType(Value::TYPE_LIST)) + description_list = static_cast<ListValue*>(description_val); } // We don't care about the query URL list (the fourth element in the diff --git a/chrome/browser/chromeos/cros/native_network_parser.cc b/chrome/browser/chromeos/cros/native_network_parser.cc index 24340b2..3172025 100644 --- a/chrome/browser/chromeos/cros/native_network_parser.cc +++ b/chrome/browser/chromeos/cros/native_network_parser.cc @@ -147,13 +147,12 @@ NativeNetworkDeviceParser::NativeNetworkDeviceParser() NativeNetworkDeviceParser::~NativeNetworkDeviceParser() { } -bool NativeNetworkDeviceParser::ParseValue(PropertyIndex index, - Value* value, - NetworkDevice* device) { +bool NativeNetworkDeviceParser::ParseValue( + PropertyIndex index, const Value& value, NetworkDevice* device) { switch (index) { case PROPERTY_INDEX_TYPE: { std::string type_string; - if (value->GetAsString(&type_string)) { + if (value.GetAsString(&type_string)) { device->set_type(ParseType(type_string)); return true; } @@ -161,75 +160,79 @@ bool NativeNetworkDeviceParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_NAME: { std::string name; - if (!value->GetAsString(&name)) + if (!value.GetAsString(&name)) return false; device->set_name(name); return true; } case PROPERTY_INDEX_GUID: { std::string unique_id; - if (!value->GetAsString(&unique_id)) + if (!value.GetAsString(&unique_id)) return false; device->set_unique_id(unique_id); return true; } case PROPERTY_INDEX_CARRIER: { std::string carrier; - if (!value->GetAsString(&carrier)) + if (!value.GetAsString(&carrier)) return false; device->set_carrier(carrier); return true; } case PROPERTY_INDEX_SCANNING: { bool scanning; - if (!value->GetAsBoolean(&scanning)) + if (!value.GetAsBoolean(&scanning)) return false; device->set_scanning(scanning); return true; } case PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING: { bool data_roaming_allowed; - if (!value->GetAsBoolean(&data_roaming_allowed)) + if (!value.GetAsBoolean(&data_roaming_allowed)) return false; device->set_data_roaming_allowed(data_roaming_allowed); return true; } case PROPERTY_INDEX_CELLULAR_APN_LIST: - if (ListValue* list = value->AsList()) { + if (value.IsType(Value::TYPE_LIST)) { CellularApnList provider_apn_list; - if (!ParseApnList(*list, &provider_apn_list)) + if (!ParseApnList(static_cast<const ListValue&>(value), + &provider_apn_list)) return false; device->set_provider_apn_list(provider_apn_list); return true; } break; case PROPERTY_INDEX_NETWORKS: - if (value->AsList()) { + if (value.IsType(Value::TYPE_LIST)) { // Ignored. return true; } break; case PROPERTY_INDEX_FOUND_NETWORKS: - if (ListValue* list = value->AsList()) { + if (value.IsType(Value::TYPE_LIST)) { CellularNetworkList found_cellular_networks; - if (!ParseFoundNetworksFromList(*list, &found_cellular_networks)) + if (!ParseFoundNetworksFromList( + static_cast<const ListValue&>(value), + &found_cellular_networks)) return false; device->set_found_cellular_networks(found_cellular_networks); return true; } break; case PROPERTY_INDEX_HOME_PROVIDER: { - if (value->IsType(Value::TYPE_DICTIONARY)) { - DictionaryValue* dict = static_cast<DictionaryValue*>(value); + if (value.IsType(Value::TYPE_DICTIONARY)) { + const DictionaryValue& dict = + static_cast<const DictionaryValue&>(value); std::string home_provider_code; std::string home_provider_country; std::string home_provider_name; - dict->GetStringWithoutPathExpansion(kOperatorCodeKey, - &home_provider_code); - dict->GetStringWithoutPathExpansion(kOperatorCountryKey, - &home_provider_country); - dict->GetStringWithoutPathExpansion(kOperatorNameKey, - &home_provider_name); + dict.GetStringWithoutPathExpansion(kOperatorCodeKey, + &home_provider_code); + dict.GetStringWithoutPathExpansion(kOperatorCountryKey, + &home_provider_country); + dict.GetStringWithoutPathExpansion(kOperatorNameKey, + &home_provider_name); device->set_home_provider_code(home_provider_code); device->set_home_provider_country(home_provider_country); device->set_home_provider_name(home_provider_name); @@ -260,7 +263,7 @@ bool NativeNetworkDeviceParser::ParseValue(PropertyIndex index, case PROPERTY_INDEX_HARDWARE_REVISION: case PROPERTY_INDEX_SELECTED_NETWORK: { std::string item; - if (!value->GetAsString(&item)) + if (!value.GetAsString(&item)) return false; switch (index) { case PROPERTY_INDEX_MEID: @@ -302,11 +305,11 @@ bool NativeNetworkDeviceParser::ParseValue(PropertyIndex index, return true; } case PROPERTY_INDEX_SIM_LOCK: - if (value->IsType(Value::TYPE_DICTIONARY)) { + if (value.IsType(Value::TYPE_DICTIONARY)) { SimLockState sim_lock_state; int sim_retries_left; if (!ParseSimLockStateFromDictionary( - static_cast<const DictionaryValue&>(*value), + static_cast<const DictionaryValue&>(value), &sim_lock_state, &sim_retries_left)) return false; @@ -330,21 +333,21 @@ bool NativeNetworkDeviceParser::ParseValue(PropertyIndex index, return true; case PROPERTY_INDEX_PRL_VERSION: { int prl_version; - if (!value->GetAsInteger(&prl_version)) + if (!value.GetAsInteger(&prl_version)) return false; device->set_prl_version(prl_version); return true; } case PROPERTY_INDEX_SUPPORT_NETWORK_SCAN: { bool support_network_scan; - if (!value->GetAsBoolean(&support_network_scan)) + if (!value.GetAsBoolean(&support_network_scan)) return false; device->set_support_network_scan(support_network_scan); return true; } case PROPERTY_INDEX_TECHNOLOGY_FAMILY: { std::string technology_family_string; - if (value->GetAsString(&technology_family_string)) { + if (value.GetAsString(&technology_family_string)) { device->set_technology_family( ParseTechnologyFamily(technology_family_string)); return true; @@ -474,12 +477,12 @@ const ConnectionType NativeNetworkParser::ParseConnectionType( } bool NativeNetworkParser::ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) { switch (index) { case PROPERTY_INDEX_TYPE: { std::string type_string; - if (value->GetAsString(&type_string)) { + if (value.GetAsString(&type_string)) { ConnectionType type = ParseType(type_string); LOG_IF(ERROR, type != network->type()) << "Network with mismatched type: " << network->service_path() @@ -490,21 +493,21 @@ bool NativeNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_DEVICE: { std::string device_path; - if (!value->GetAsString(&device_path)) + if (!value.GetAsString(&device_path)) return false; network->set_device_path(device_path); return true; } case PROPERTY_INDEX_NAME: { std::string name; - if (!value->GetAsString(&name)) + if (!value.GetAsString(&name)) return false; network->SetName(name); return true; } case PROPERTY_INDEX_GUID: { std::string unique_id; - if (!value->GetAsString(&unique_id)) + if (!value.GetAsString(&unique_id)) return false; network->set_unique_id(unique_id); return true; @@ -512,14 +515,14 @@ bool NativeNetworkParser::ParseValue(PropertyIndex index, case PROPERTY_INDEX_PROFILE: { // Note: currently this is only provided for non remembered networks. std::string profile_path; - if (!value->GetAsString(&profile_path)) + if (!value.GetAsString(&profile_path)) return false; network->set_profile_path(profile_path); return true; } case PROPERTY_INDEX_STATE: { std::string state_string; - if (value->GetAsString(&state_string)) { + if (value.GetAsString(&state_string)) { network->SetState(ParseState(state_string)); return true; } @@ -527,7 +530,7 @@ bool NativeNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_MODE: { std::string mode_string; - if (value->GetAsString(&mode_string)) { + if (value.GetAsString(&mode_string)) { network->set_mode(ParseMode(mode_string)); return true; } @@ -535,7 +538,7 @@ bool NativeNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_ERROR: { std::string error_string; - if (value->GetAsString(&error_string)) { + if (value.GetAsString(&error_string)) { network->set_error(ParseError(error_string)); return true; } @@ -543,14 +546,14 @@ bool NativeNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_CONNECTABLE: { bool connectable; - if (!value->GetAsBoolean(&connectable)) + if (!value.GetAsBoolean(&connectable)) return false; network->set_connectable(connectable); return true; } case PROPERTY_INDEX_IS_ACTIVE: { bool is_active; - if (!value->GetAsBoolean(&is_active)) + if (!value.GetAsBoolean(&is_active)) return false; network->set_is_active(is_active); return true; @@ -560,21 +563,21 @@ bool NativeNetworkParser::ParseValue(PropertyIndex index, return true; case PROPERTY_INDEX_AUTO_CONNECT: { bool auto_connect; - if (!value->GetAsBoolean(&auto_connect)) + if (!value.GetAsBoolean(&auto_connect)) return false; network->set_auto_connect(auto_connect); return true; } case PROPERTY_INDEX_SAVE_CREDENTIALS: { bool save_credentials; - if (!value->GetAsBoolean(&save_credentials)) + if (!value.GetAsBoolean(&save_credentials)) return false; network->set_save_credentials(save_credentials); return true; } case PROPERTY_INDEX_PROXY_CONFIG: { std::string proxy_config; - if (!value->GetAsString(&proxy_config)) + if (!value.GetAsString(&proxy_config)) return false; network->set_proxy_config(proxy_config); return true; @@ -657,7 +660,7 @@ NativeWirelessNetworkParser::NativeWirelessNetworkParser() {} NativeWirelessNetworkParser::~NativeWirelessNetworkParser() {} bool NativeWirelessNetworkParser::ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) { DCHECK_NE(TYPE_ETHERNET, network->type()); DCHECK_NE(TYPE_VPN, network->type()); @@ -665,7 +668,7 @@ bool NativeWirelessNetworkParser::ParseValue(PropertyIndex index, switch (index) { case PROPERTY_INDEX_SIGNAL_STRENGTH: { int strength; - if (!value->GetAsInteger(&strength)) + if (!value.GetAsInteger(&strength)) return false; wireless_network->set_strength(strength); return true; @@ -683,14 +686,14 @@ NativeCellularNetworkParser::NativeCellularNetworkParser() {} NativeCellularNetworkParser::~NativeCellularNetworkParser() {} bool NativeCellularNetworkParser::ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) { DCHECK_EQ(TYPE_CELLULAR, network->type()); CellularNetwork* cellular_network = static_cast<CellularNetwork*>(network); switch (index) { case PROPERTY_INDEX_ACTIVATION_STATE: { std::string activation_state_string; - if (value->GetAsString(&activation_state_string)) { + if (value.GetAsString(&activation_state_string)) { ActivationState prev_state = cellular_network->activation_state(); cellular_network->set_activation_state( ParseActivationState(activation_state_string)); @@ -701,23 +704,23 @@ bool NativeCellularNetworkParser::ParseValue(PropertyIndex index, break; } case PROPERTY_INDEX_CELLULAR_APN: { - if (value->IsType(Value::TYPE_DICTIONARY)) { - cellular_network->set_apn(static_cast<const DictionaryValue&>(*value)); + if (value.IsType(Value::TYPE_DICTIONARY)) { + cellular_network->set_apn(static_cast<const DictionaryValue&>(value)); return true; } break; } case PROPERTY_INDEX_CELLULAR_LAST_GOOD_APN: { - if (value->IsType(Value::TYPE_DICTIONARY)) { + if (value.IsType(Value::TYPE_DICTIONARY)) { cellular_network->set_last_good_apn( - static_cast<const DictionaryValue&>(*value)); + static_cast<const DictionaryValue&>(value)); return true; } break; } case PROPERTY_INDEX_NETWORK_TECHNOLOGY: { std::string network_technology_string; - if (value->GetAsString(&network_technology_string)) { + if (value.GetAsString(&network_technology_string)) { cellular_network->set_network_technology( ParseNetworkTechnology(network_technology_string)); return true; @@ -726,7 +729,7 @@ bool NativeCellularNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_ROAMING_STATE: { std::string roaming_state_string; - if (value->GetAsString(&roaming_state_string)) { + if (value.GetAsString(&roaming_state_string)) { cellular_network->set_roaming_state( ParseRoamingState(roaming_state_string)); return true; @@ -735,22 +738,22 @@ bool NativeCellularNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_OPERATOR_NAME: { std::string value_str; - if (!value->GetAsString(&value_str)) + if (!value.GetAsString(&value_str)) break; cellular_network->set_operator_name(value_str); return true; } case PROPERTY_INDEX_OPERATOR_CODE: { std::string value_str; - if (!value->GetAsString(&value_str)) + if (!value.GetAsString(&value_str)) break; cellular_network->set_operator_code(value_str); return true; } case PROPERTY_INDEX_SERVING_OPERATOR: { - if (value->IsType(Value::TYPE_DICTIONARY)) { + if (value.IsType(Value::TYPE_DICTIONARY)) { const DictionaryValue& dict = - static_cast<const DictionaryValue&>(*value); + static_cast<const DictionaryValue&>(value); std::string value_str; dict.GetStringWithoutPathExpansion(kOperatorNameKey, &value_str); cellular_network->set_operator_name(value_str); @@ -766,14 +769,14 @@ bool NativeCellularNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_PAYMENT_URL: { std::string value_str; - if (!value->GetAsString(&value_str)) + if (!value.GetAsString(&value_str)) break; cellular_network->set_payment_url(value_str); return true; } case PROPERTY_INDEX_USAGE_URL: { std::string value_str; - if (!value->GetAsString(&value_str)) + if (!value.GetAsString(&value_str)) break; cellular_network->set_usage_url(value_str); return true; @@ -845,14 +848,14 @@ NativeWifiNetworkParser::NativeWifiNetworkParser() {} NativeWifiNetworkParser::~NativeWifiNetworkParser() {} bool NativeWifiNetworkParser::ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) { DCHECK_EQ(TYPE_WIFI, network->type()); WifiNetwork* wifi_network = static_cast<WifiNetwork*>(network); switch (index) { case PROPERTY_INDEX_WIFI_HEX_SSID: { std::string ssid_hex; - if (!value->GetAsString(&ssid_hex)) + if (!value.GetAsString(&ssid_hex)) return false; wifi_network->SetHexSsid(ssid_hex); @@ -873,21 +876,21 @@ bool NativeWifiNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_GUID: { std::string unique_id; - if (!value->GetAsString(&unique_id)) + if (!value.GetAsString(&unique_id)) break; wifi_network->set_unique_id(unique_id); return true; } case PROPERTY_INDEX_SECURITY: { std::string security_string; - if (!value->GetAsString(&security_string)) + if (!value.GetAsString(&security_string)) break; wifi_network->set_encryption(ParseSecurity(security_string)); return true; } case PROPERTY_INDEX_PASSPHRASE: { std::string passphrase; - if (!value->GetAsString(&passphrase)) + if (!value.GetAsString(&passphrase)) break; // Only store the passphrase if we are the owner. // TODO(stevenjb): Remove this when chromium-os:12948 is resolved. @@ -897,57 +900,57 @@ bool NativeWifiNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_PASSPHRASE_REQUIRED: { bool passphrase_required; - value->GetAsBoolean(&passphrase_required); - if (!value->GetAsBoolean(&passphrase_required)) + value.GetAsBoolean(&passphrase_required); + if (!value.GetAsBoolean(&passphrase_required)) break; wifi_network->set_passphrase_required(passphrase_required); return true; } case PROPERTY_INDEX_IDENTITY: { std::string identity; - if (!value->GetAsString(&identity)) + if (!value.GetAsString(&identity)) break; wifi_network->set_identity(identity); return true; } case PROPERTY_INDEX_EAP_IDENTITY: { std::string eap_identity; - if (!value->GetAsString(&eap_identity)) + if (!value.GetAsString(&eap_identity)) break; wifi_network->set_eap_identity(eap_identity); return true; } case PROPERTY_INDEX_EAP_METHOD: { std::string eap_method; - if (!value->GetAsString(&eap_method)) + if (!value.GetAsString(&eap_method)) break; wifi_network->set_eap_method(ParseEAPMethod(eap_method)); return true; } case PROPERTY_INDEX_EAP_PHASE_2_AUTH: { std::string eap_phase_2_auth; - if (!value->GetAsString(&eap_phase_2_auth)) + if (!value.GetAsString(&eap_phase_2_auth)) break; wifi_network->set_eap_phase_2_auth(ParseEAPPhase2Auth(eap_phase_2_auth)); return true; } case PROPERTY_INDEX_EAP_ANONYMOUS_IDENTITY: { std::string eap_anonymous_identity; - if (!value->GetAsString(&eap_anonymous_identity)) + if (!value.GetAsString(&eap_anonymous_identity)) break; wifi_network->set_eap_anonymous_identity(eap_anonymous_identity); return true; } case PROPERTY_INDEX_EAP_CERT_ID: { std::string eap_client_cert_pkcs11_id; - if (!value->GetAsString(&eap_client_cert_pkcs11_id)) + if (!value.GetAsString(&eap_client_cert_pkcs11_id)) break; wifi_network->set_eap_client_cert_pkcs11_id(eap_client_cert_pkcs11_id); return true; } case PROPERTY_INDEX_EAP_CA_CERT_NSS: { std::string eap_server_ca_cert_nss_nickname; - if (!value->GetAsString(&eap_server_ca_cert_nss_nickname)) + if (!value.GetAsString(&eap_server_ca_cert_nss_nickname)) break; wifi_network->set_eap_server_ca_cert_nss_nickname( eap_server_ca_cert_nss_nickname); @@ -955,14 +958,14 @@ bool NativeWifiNetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_EAP_USE_SYSTEM_CAS: { bool eap_use_system_cas; - if (!value->GetAsBoolean(&eap_use_system_cas)) + if (!value.GetAsBoolean(&eap_use_system_cas)) break; wifi_network->set_eap_use_system_cas(eap_use_system_cas); return true; } case PROPERTY_INDEX_EAP_PASSWORD: { std::string eap_passphrase; - if (!value->GetAsString(&eap_passphrase)) + if (!value.GetAsString(&eap_passphrase)) break; wifi_network->set_eap_passphrase(eap_passphrase); return true; @@ -1052,14 +1055,14 @@ bool NativeVirtualNetworkParser::UpdateNetworkFromInfo( } bool NativeVirtualNetworkParser::ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) { DCHECK_EQ(TYPE_VPN, network->type()); VirtualNetwork* virtual_network = static_cast<VirtualNetwork*>(network); switch (index) { case PROPERTY_INDEX_PROVIDER: { - DCHECK_EQ(value->GetType(), Value::TYPE_DICTIONARY); - const DictionaryValue& dict = static_cast<const DictionaryValue&>(*value); + DCHECK_EQ(value.GetType(), Value::TYPE_DICTIONARY); + const DictionaryValue& dict = static_cast<const DictionaryValue&>(value); for (DictionaryValue::key_iterator iter = dict.begin_keys(); iter != dict.end_keys(); ++iter) { const std::string& key = *iter; diff --git a/chrome/browser/chromeos/cros/native_network_parser.h b/chrome/browser/chromeos/cros/native_network_parser.h index 29af4fe..eee1384 100644 --- a/chrome/browser/chromeos/cros/native_network_parser.h +++ b/chrome/browser/chromeos/cros/native_network_parser.h @@ -6,8 +6,8 @@ #define CHROME_BROWSER_CHROMEOS_CROS_NATIVE_NETWORK_PARSER_H_ #pragma once -#include "base/compiler_specific.h" // for OVERRIDE #include "chrome/browser/chromeos/cros/network_parser.h" +#include "base/compiler_specific.h" // for OVERRIDE namespace chromeos { @@ -18,11 +18,9 @@ class NativeNetworkDeviceParser : public NetworkDeviceParser { public: NativeNetworkDeviceParser(); virtual ~NativeNetworkDeviceParser(); - virtual bool ParseValue(PropertyIndex index, - Value* value, + const Value& value, NetworkDevice* device) OVERRIDE; - protected: virtual ConnectionType ParseType(const std::string& type) OVERRIDE; @@ -48,13 +46,11 @@ class NativeNetworkParser : public NetworkParser { public: NativeNetworkParser(); virtual ~NativeNetworkParser(); - static const EnumMapper<PropertyIndex>* property_mapper(); static const ConnectionType ParseConnectionType(const std::string& type); - protected: virtual bool ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) OVERRIDE; virtual ConnectionType ParseType(const std::string& type) OVERRIDE; virtual ConnectionType ParseTypeFromDictionary( @@ -62,7 +58,6 @@ class NativeNetworkParser : public NetworkParser { virtual ConnectionMode ParseMode(const std::string& mode) OVERRIDE; virtual ConnectionState ParseState(const std::string& state) OVERRIDE; virtual ConnectionError ParseError(const std::string& error) OVERRIDE; - private: DISALLOW_COPY_AND_ASSIGN(NativeNetworkParser); }; @@ -72,7 +67,6 @@ class NativeEthernetNetworkParser : public NativeNetworkParser { public: NativeEthernetNetworkParser(); virtual ~NativeEthernetNetworkParser(); - private: // NOTE: Uses base class ParseValue, etc. @@ -85,9 +79,8 @@ class NativeWirelessNetworkParser : public NativeNetworkParser { NativeWirelessNetworkParser(); virtual ~NativeWirelessNetworkParser(); virtual bool ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) OVERRIDE; - private: DISALLOW_COPY_AND_ASSIGN(NativeWirelessNetworkParser); }; @@ -97,14 +90,12 @@ class NativeWifiNetworkParser : public NativeWirelessNetworkParser { NativeWifiNetworkParser(); virtual ~NativeWifiNetworkParser(); virtual bool ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) OVERRIDE; - protected: ConnectionSecurity ParseSecurity(const std::string& security); EAPMethod ParseEAPMethod(const std::string& method); EAPPhase2Auth ParseEAPPhase2Auth(const std::string& auth); - private: DISALLOW_COPY_AND_ASSIGN(NativeWifiNetworkParser); }; @@ -114,14 +105,14 @@ class NativeCellularNetworkParser : public NativeWirelessNetworkParser { NativeCellularNetworkParser(); virtual ~NativeCellularNetworkParser(); virtual bool ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) OVERRIDE; - protected: ActivationState ParseActivationState(const std::string& state); - NetworkTechnology ParseNetworkTechnology(const std::string& technology); - NetworkRoamingState ParseRoamingState(const std::string& roaming_state); - + NetworkTechnology ParseNetworkTechnology( + const std::string& technology); + NetworkRoamingState ParseRoamingState( + const std::string& roaming_state); private: DISALLOW_COPY_AND_ASSIGN(NativeCellularNetworkParser); }; @@ -131,21 +122,20 @@ class NativeVirtualNetworkParser : public NativeNetworkParser { NativeVirtualNetworkParser(); virtual ~NativeVirtualNetworkParser(); virtual bool ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) OVERRIDE; virtual bool UpdateNetworkFromInfo(const DictionaryValue& info, Network* network) OVERRIDE; - protected: bool ParseProviderValue(PropertyIndex index, - const Value& value, - VirtualNetwork* network); + const Value& value, + VirtualNetwork* network); ProviderType ParseProviderType(const std::string& type); - private: DISALLOW_COPY_AND_ASSIGN(NativeVirtualNetworkParser); }; + } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_CROS_NATIVE_NETWORK_PARSER_H_ diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc index fb01a4b..847cd1e 100644 --- a/chrome/browser/chromeos/cros/network_library.cc +++ b/chrome/browser/chromeos/cros/network_library.cc @@ -183,7 +183,7 @@ void NetworkDevice::ParseInfo(const DictionaryValue& info) { } bool NetworkDevice::UpdateStatus(const std::string& key, - Value* value, + const Value& value, PropertyIndex* index) { if (device_parser_.get()) return device_parser_->UpdateStatus(key, value, this, index); @@ -430,7 +430,7 @@ void Network::InitIPAddress() { } bool Network::UpdateStatus(const std::string& key, - Value* value, + const Value& value, PropertyIndex* index) { if (network_parser_.get()) return network_parser_->UpdateStatus(key, value, this, index); @@ -2981,14 +2981,13 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase { // Calbacks. static void NetworkStatusChangedHandler( void* object, const char* path, const char* key, const Value* value); - void UpdateNetworkStatus(const std::string& path, - const std::string& key, - Value* value); + void UpdateNetworkStatus( + const std::string& path, const std::string& key, const Value& value); static void NetworkDevicePropertyChangedHandler( void* object, const char* path, const char* key, const Value* value); void UpdateNetworkDeviceStatus( - const std::string& path, const std::string& key, Value* value); + const std::string& path, const std::string& key, const Value& value); static void PinOperationCallback(void* object, const char* path, @@ -3175,14 +3174,11 @@ void NetworkLibraryImplCros::NetworkStatusChangedHandler( DCHECK(networklib); if (key == NULL || value == NULL || path == NULL || object == NULL) return; - networklib->UpdateNetworkStatus(std::string(path), - std::string(key), - const_cast<Value*>(value)); + networklib->UpdateNetworkStatus(std::string(path), std::string(key), *value); } -void NetworkLibraryImplCros::UpdateNetworkStatus(const std::string& path, - const std::string& key, - Value* value) { +void NetworkLibraryImplCros::UpdateNetworkStatus( + const std::string& path, const std::string& key, const Value& value) { CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); Network* network = FindNetworkByPath(path); if (network) { @@ -3211,12 +3207,11 @@ void NetworkLibraryImplCros::NetworkDevicePropertyChangedHandler( return; networklib->UpdateNetworkDeviceStatus(std::string(path), std::string(key), - const_cast<Value*>(value)); + *value); } -void NetworkLibraryImplCros::UpdateNetworkDeviceStatus(const std::string& path, - const std::string& key, - Value* value) { +void NetworkLibraryImplCros::UpdateNetworkDeviceStatus( + const std::string& path, const std::string& key, const Value& value) { CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); NetworkDevice* device = FindNetworkDeviceByPath(path); if (device) { diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h index b416214..63f4f55a 100644 --- a/chrome/browser/chromeos/cros/network_library.h +++ b/chrome/browser/chromeos/cros/network_library.h @@ -413,7 +413,7 @@ class NetworkDevice { // PropertyIndex that was updated in |index|. |index| may be NULL // if not needed. bool UpdateStatus(const std::string& key, - Value* value, + const Value& value, PropertyIndex *index); NativeNetworkDeviceParser* device_parser() { return device_parser_.get(); } @@ -635,7 +635,7 @@ class Network { } virtual bool UpdateStatus(const std::string& key, - Value* value, + const Value& value, PropertyIndex* index); protected: diff --git a/chrome/browser/chromeos/cros/network_parser.cc b/chrome/browser/chromeos/cros/network_parser.cc index ecdfbdd..5d3dfd4 100644 --- a/chrome/browser/chromeos/cros/network_parser.cc +++ b/chrome/browser/chromeos/cros/network_parser.cc @@ -70,7 +70,7 @@ bool NetworkDeviceParser::UpdateDeviceFromInfo(const DictionaryValue& info, bool result = info.GetWithoutPathExpansion(key, &value); DCHECK(result); if (result) - UpdateStatus(key, value, device, NULL); + UpdateStatus(key, *value, device, NULL); } if (VLOG_IS_ON(2)) { std::string json; @@ -82,7 +82,7 @@ bool NetworkDeviceParser::UpdateDeviceFromInfo(const DictionaryValue& info, } bool NetworkDeviceParser::UpdateStatus(const std::string& key, - Value* value, + const Value& value, NetworkDevice* device, PropertyIndex* index) { PropertyIndex found_index = mapper().Get(key); @@ -94,7 +94,7 @@ bool NetworkDeviceParser::UpdateStatus(const std::string& key, } if (VLOG_IS_ON(2)) { std::string value_json; - base::JSONWriter::Write(value, true, &value_json); + base::JSONWriter::Write(&value, true, &value_json); VLOG(2) << "Updated value on device: " << device->device_path() << "[" << key << "] = " << value_json; } @@ -134,7 +134,7 @@ bool NetworkParser::UpdateNetworkFromInfo(const DictionaryValue& info, bool res = info.GetWithoutPathExpansion(key, &value); DCHECK(res); if (res) - network->UpdateStatus(key, value, NULL); + network->UpdateStatus(key, *value, NULL); } if (network->unique_id().empty()) network->CalculateUniqueId(); @@ -145,7 +145,7 @@ bool NetworkParser::UpdateNetworkFromInfo(const DictionaryValue& info, } bool NetworkParser::UpdateStatus(const std::string& key, - Value* value, + const Value& value, Network* network, PropertyIndex* index) { PropertyIndex found_index = mapper().Get(key); @@ -159,7 +159,7 @@ bool NetworkParser::UpdateStatus(const std::string& key, } if (VLOG_IS_ON(2)) { std::string value_json; - base::JSONWriter::Write(value, true, &value_json); + base::JSONWriter::Write(&value, true, &value_json); VLOG(2) << "Updated value on network: " << network->unique_id() << "[" << key << "] = " << value_json; } @@ -167,12 +167,12 @@ bool NetworkParser::UpdateStatus(const std::string& key, } bool NetworkParser::ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) { switch (index) { case PROPERTY_INDEX_TYPE: { std::string type_string; - if (value->GetAsString(&type_string)) { + if (value.GetAsString(&type_string)) { ConnectionType type = ParseType(type_string); LOG_IF(ERROR, type != network->type()) << "Network with mismatched type: " << network->service_path() @@ -183,14 +183,14 @@ bool NetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_DEVICE: { std::string device_path; - if (!value->GetAsString(&device_path)) + if (!value.GetAsString(&device_path)) break; network->set_device_path(device_path); return true; } case PROPERTY_INDEX_NAME: { std::string name; - if (value->GetAsString(&name)) { + if (value.GetAsString(&name)) { network->SetName(name); return true; } @@ -198,7 +198,7 @@ bool NetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_GUID: { std::string unique_id; - if (!value->GetAsString(&unique_id)) + if (!value.GetAsString(&unique_id)) break; network->set_unique_id(unique_id); return true; @@ -206,14 +206,14 @@ bool NetworkParser::ParseValue(PropertyIndex index, case PROPERTY_INDEX_PROFILE: { // Note: currently this is only provided for non remembered networks. std::string profile_path; - if (!value->GetAsString(&profile_path)) + if (!value.GetAsString(&profile_path)) break; network->set_profile_path(profile_path); return true; } case PROPERTY_INDEX_STATE: { std::string state_string; - if (value->GetAsString(&state_string)) { + if (value.GetAsString(&state_string)) { network->SetState(ParseState(state_string)); return true; } @@ -221,7 +221,7 @@ bool NetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_MODE: { std::string mode_string; - if (value->GetAsString(&mode_string)) { + if (value.GetAsString(&mode_string)) { network->mode_ = ParseMode(mode_string); return true; } @@ -229,7 +229,7 @@ bool NetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_ERROR: { std::string error_string; - if (value->GetAsString(&error_string)) { + if (value.GetAsString(&error_string)) { network->error_ = ParseError(error_string); return true; } @@ -237,28 +237,28 @@ bool NetworkParser::ParseValue(PropertyIndex index, } case PROPERTY_INDEX_CONNECTABLE: { bool connectable; - if (!value->GetAsBoolean(&connectable)) + if (!value.GetAsBoolean(&connectable)) break; network->set_connectable(connectable); return true; } case PROPERTY_INDEX_IS_ACTIVE: { bool is_active; - if (!value->GetAsBoolean(&is_active)) + if (!value.GetAsBoolean(&is_active)) break; network->set_is_active(is_active); return true; } case PROPERTY_INDEX_AUTO_CONNECT: { bool auto_connect; - if (!value->GetAsBoolean(&auto_connect)) + if (!value.GetAsBoolean(&auto_connect)) break; network->set_auto_connect(auto_connect); return true; } case PROPERTY_INDEX_SAVE_CREDENTIALS: { bool save_credentials; - if (!value->GetAsBoolean(&save_credentials)) + if (!value.GetAsBoolean(&save_credentials)) break; network->set_save_credentials(save_credentials); return true; diff --git a/chrome/browser/chromeos/cros/network_parser.h b/chrome/browser/chromeos/cros/network_parser.h index a06a792..9181551 100644 --- a/chrome/browser/chromeos/cros/network_parser.h +++ b/chrome/browser/chromeos/cros/network_parser.h @@ -83,17 +83,16 @@ class NetworkDeviceParser { virtual bool UpdateDeviceFromInfo(const DictionaryValue& info, NetworkDevice* device); virtual bool UpdateStatus(const std::string& key, - Value* value, + const Value& value, NetworkDevice* device, PropertyIndex* index); - protected: // The NetworkDeviceParser does not take ownership of the |mapper|. explicit NetworkDeviceParser(const EnumMapper<PropertyIndex>* mapper); virtual ~NetworkDeviceParser(); virtual bool ParseValue(PropertyIndex index, - Value* value, + const Value& value, NetworkDevice* device) = 0; virtual ConnectionType ParseType(const std::string& type) = 0; @@ -126,7 +125,7 @@ class NetworkParser { // property index for the given key. |index| is filled in even if // the update fails. Returns false upon failure. virtual bool UpdateStatus(const std::string& key, - Value* value, + const Value& value, Network* network, PropertyIndex* index); protected: @@ -135,7 +134,7 @@ class NetworkParser { virtual ~NetworkParser(); virtual bool ParseValue(PropertyIndex index, - Value* value, + const Value& value, Network* network) = 0; virtual ConnectionType ParseType(const std::string& type) = 0; virtual ConnectionType ParseTypeFromDictionary( diff --git a/chrome/browser/extensions/extension_bookmarks_module.cc b/chrome/browser/extensions/extension_bookmarks_module.cc index f8b2c78..dce4b6f 100644 --- a/chrome/browser/extensions/extension_bookmarks_module.cc +++ b/chrome/browser/extensions/extension_bookmarks_module.cc @@ -285,7 +285,8 @@ bool GetBookmarksFunction::RunImpl() { scoped_ptr<ListValue> json(new ListValue()); Value* arg0; EXTENSION_FUNCTION_VALIDATE(args_->Get(0, &arg0)); - if (const ListValue* ids = arg0->AsList()) { + if (arg0->IsType(Value::TYPE_LIST)) { + const ListValue* ids = static_cast<const ListValue*>(arg0); size_t count = ids->GetSize(); EXTENSION_FUNCTION_VALIDATE(count > 0); for (size_t i = 0; i < count; ++i) { diff --git a/chrome/browser/extensions/extension_tabs_module.cc b/chrome/browser/extensions/extension_tabs_module.cc index 9a6ded9..a949b4d 100644 --- a/chrome/browser/extensions/extension_tabs_module.cc +++ b/chrome/browser/extensions/extension_tabs_module.cc @@ -417,7 +417,8 @@ bool CreateWindowFunction::RunImpl() { std::string url_string; url_value->GetAsString(&url_string); url_strings.push_back(url_string); - } else if (const ListValue* url_list = url_value->AsList()) { + } else if (url_value->IsType(Value::TYPE_LIST)) { + const ListValue* url_list = static_cast<const ListValue*>(url_value); for (size_t i = 0; i < url_list->GetSize(); ++i) { std::string url_string; EXTENSION_FUNCTION_VALIDATE(url_list->GetString(i, &url_string)); diff --git a/chrome/browser/extensions/extension_webrequest_api_unittest.cc b/chrome/browser/extensions/extension_webrequest_api_unittest.cc index 0791a71..8398433 100644 --- a/chrome/browser/extensions/extension_webrequest_api_unittest.cc +++ b/chrome/browser/extensions/extension_webrequest_api_unittest.cc @@ -477,12 +477,13 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) { scoped_ptr<Value> event_arg_value( JSONStringValueSerializer(event_arg_string).Deserialize(NULL, NULL)); - ASSERT_TRUE(event_arg_value.get()); - ListValue* list = event_arg_value->AsList(); - ASSERT_TRUE(list); + ASSERT_TRUE(event_arg_value.get() && + event_arg_value->IsType(Value::TYPE_LIST)); DictionaryValue* event_arg_dict = NULL; - ASSERT_TRUE(list->GetDictionary(0, &event_arg_dict)); + ASSERT_TRUE( + static_cast<ListValue*>(event_arg_value.get())->GetDictionary( + 0, &event_arg_dict)); ListValue* request_headers = NULL; ASSERT_TRUE(event_arg_dict->GetList(keys::kRequestHeadersKey, diff --git a/chrome/common/json_value_serializer_unittest.cc b/chrome/common/json_value_serializer_unittest.cc index abb3684..541ac8c 100644 --- a/chrome/common/json_value_serializer_unittest.cc +++ b/chrome/common/json_value_serializer_unittest.cc @@ -195,9 +195,8 @@ namespace { void ValidateJsonList(const std::string& json) { scoped_ptr<Value> root(base::JSONReader::Read(json, false)); - ASSERT_TRUE(root.get()); - ListValue* list = root->AsList(); - ASSERT_TRUE(list); + ASSERT_TRUE(root.get() && root->IsType(Value::TYPE_LIST)); + ListValue* list = static_cast<ListValue*>(root.get()); ASSERT_EQ(1U, list->GetSize()); Value* elt = NULL; ASSERT_TRUE(list->Get(0, &elt)); @@ -220,9 +219,8 @@ TEST(JSONValueSerializerTest, JSONReaderComments) { // It's ok to have a comment in a string. root.reset(base::JSONReader::Read("[\"// ok\\n /* foo */ \"]", false)); - ASSERT_TRUE(root.get()); - ListValue* list = root->AsList(); - ASSERT_TRUE(list); + ASSERT_TRUE(root.get() && root->IsType(Value::TYPE_LIST)); + ListValue* list = static_cast<ListValue*>(root.get()); ASSERT_EQ(1U, list->GetSize()); Value* elt = NULL; ASSERT_TRUE(list->Get(0, &elt)); diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 077c524..d96743c 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -467,12 +467,12 @@ class ExtensionImpl : public ExtensionBase { // Since we do the serialization in the v8 extension, we should always get // valid JSON. - if (!value_args.get() || !value_args->AsList()) { + if (!value_args.get() || !value_args->IsType(Value::TYPE_LIST)) { NOTREACHED() << "Invalid JSON passed to StartRequest."; return v8::Undefined(); } - return StartRequestCommon(args, value_args->AsList()); + return StartRequestCommon(args, static_cast<ListValue*>(value_args.get())); } static bool ConvertImageDataToBitmapValue( diff --git a/chrome/test/automation/automation_json_requests.cc b/chrome/test/automation/automation_json_requests.cc index ecd932e..ab0de31 100644 --- a/chrome/test/automation/automation_json_requests.cc +++ b/chrome/test/automation/automation_json_requests.cc @@ -187,11 +187,11 @@ bool SendExecuteJavascriptJSONRequest( JSONStringValueSerializer deserializer(json); Value* value = deserializer.Deserialize(NULL, NULL); - if (!value || !value->AsList()) { + if (!value || !value->IsType(Value::TYPE_LIST)) { LOG(ERROR) << "Unable to deserialize returned JSON"; return false; } - scoped_ptr<ListValue> list(value->AsList()); + scoped_ptr<ListValue> list(static_cast<ListValue*>(value)); return list->Remove(0, result); } @@ -297,9 +297,9 @@ bool SendGetCookiesJSONRequest( if (!reply_dict.Remove("cookies", &cookies_unscoped_value)) return false; scoped_ptr<Value> cookies_value(cookies_unscoped_value); - if (!cookies_value->AsList()) + if (!cookies_value->IsType(Value::TYPE_LIST)) return false; - *cookies = cookies_value->AsList(); + *cookies = static_cast<ListValue*>(cookies_value.release()); return true; } diff --git a/chrome/test/automation/javascript_execution_controller.cc b/chrome/test/automation/javascript_execution_controller.cc index e4702c5..5be6b98 100644 --- a/chrome/test/automation/javascript_execution_controller.cc +++ b/chrome/test/automation/javascript_execution_controller.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -89,11 +89,11 @@ bool JavaScriptExecutionController::ExecuteAndParseHelper( bool success; std::string evaluation_error; Value* evaluation_result_value; - ListValue* list = root_value->AsList(); - if (!list) { + if (!root_value->IsType(Value::TYPE_LIST)) { LOG(ERROR) << "JSON response was not in correct format"; return false; } + ListValue* list = static_cast<ListValue*>(root_value.get()); if (!list->GetBoolean(0, &success) || !list->GetString(1, &evaluation_error) || !list->Remove(2, &evaluation_result_value)) { diff --git a/chrome/test/automation/javascript_message_utils.h b/chrome/test/automation/javascript_message_utils.h index 1ccdc17..e4b61f4 100644 --- a/chrome/test/automation/javascript_message_utils.h +++ b/chrome/test/automation/javascript_message_utils.h @@ -51,11 +51,11 @@ struct ValueConversionTraits<std::vector<T> > { } return value; } - static bool SetFromValue(Value* value, std::vector<T>* t) { - ListValue* list_value = value->AsList(); - if (!list_value) + static bool SetFromValue(const Value* value, std::vector<T>* t) { + if (!value->IsType(Value::TYPE_LIST)) return false; + const ListValue* list_value = static_cast<const ListValue*>(value); ListValue::const_iterator iter; for (iter = list_value->begin(); iter != list_value->end(); ++iter) { if (!ValueConversionTraits<T>::CanConvert(*iter)) diff --git a/chrome/test/automation/tab_proxy.cc b/chrome/test/automation/tab_proxy.cc index d30fd7d..49cd00c 100644 --- a/chrome/test/automation/tab_proxy.cc +++ b/chrome/test/automation/tab_proxy.cc @@ -266,9 +266,9 @@ bool TabProxy::ExecuteAndExtractString(const std::wstring& frame_xpath, if (!succeeded) return false; - DCHECK(root->AsList()); + DCHECK(root->IsType(Value::TYPE_LIST)); Value* value = NULL; - succeeded = root->AsList()->Get(0, &value); + succeeded = static_cast<ListValue*>(root)->Get(0, &value); if (succeeded) { string16 read_value; succeeded = value->GetAsString(&read_value); @@ -291,9 +291,9 @@ bool TabProxy::ExecuteAndExtractBool(const std::wstring& frame_xpath, return false; bool read_value = false; - DCHECK(root->AsList()); + DCHECK(root->IsType(Value::TYPE_LIST)); Value* value = NULL; - succeeded = root->AsList()->Get(0, &value); + succeeded = static_cast<ListValue*>(root)->Get(0, &value); if (succeeded) { succeeded = value->GetAsBoolean(&read_value); if (succeeded) { @@ -314,9 +314,9 @@ bool TabProxy::ExecuteAndExtractInt(const std::wstring& frame_xpath, return false; int read_value = 0; - DCHECK(root->AsList()); + DCHECK(root->IsType(Value::TYPE_LIST)); Value* value = NULL; - succeeded = root->AsList()->Get(0, &value); + succeeded = static_cast<ListValue*>(root)->Get(0, &value); if (succeeded) { succeeded = value->GetAsInteger(&read_value); if (succeeded) { diff --git a/chrome/test/automation/value_conversion_traits.cc b/chrome/test/automation/value_conversion_traits.cc index 16d6510..f5c1f2c 100644 --- a/chrome/test/automation/value_conversion_traits.cc +++ b/chrome/test/automation/value_conversion_traits.cc @@ -71,15 +71,14 @@ Value* ValueConversionTraits<ListValue*>::CreateValueFrom(const ListValue* t) { bool ValueConversionTraits<ListValue*>::SetFromValue(const Value* value, ListValue** t) { - ListValue* list = const_cast<Value*>(value)->AsList(); - if (!list) + if (!value->IsType(Value::TYPE_LIST)) return false; - *t = list->DeepCopy(); + *t = static_cast<const ListValue*>(value)->DeepCopy(); return true; } bool ValueConversionTraits<ListValue*>::CanConvert(const Value* value) { - return const_cast<Value*>(value)->AsList(); + return value->IsType(Value::TYPE_LIST); } Value* ValueConversionTraits<DictionaryValue*>::CreateValueFrom( diff --git a/chrome/test/base/ui_test_utils.cc b/chrome/test/base/ui_test_utils.cc index 2234ba2..d087e68 100644 --- a/chrome/test/base/ui_test_utils.cc +++ b/chrome/test/base/ui_test_utils.cc @@ -206,10 +206,10 @@ bool ExecuteJavaScriptHelper(RenderViewHost* render_view_host, json.append("]"); scoped_ptr<Value> root_val(base::JSONReader::Read(json, true)); - ListValue* list = root_val->AsList(); - if (!list) + if (!root_val->IsType(Value::TYPE_LIST)) return false; + ListValue* list = static_cast<ListValue*>(root_val.get()); Value* result_val; if (!list || !list->GetSize() || !list->Remove(0, &result_val)) // Remove gives us ownership of the value. @@ -925,9 +925,9 @@ class SnapshotTaker { // Parse the JSON. std::vector<int> dimensions; scoped_ptr<Value> value(base::JSONReader::Read(json, true)); - ListValue* list = value->AsList(); - if (!list) + if (!value->IsType(Value::TYPE_LIST)) return false; + ListValue* list = static_cast<ListValue*>(value.get()); int width, height; if (!list->GetInteger(0, &width) || !list->GetInteger(1, &height)) return false; diff --git a/chrome/test/perf/dom_checker_uitest.cc b/chrome/test/perf/dom_checker_uitest.cc index deceb9e..8255a94 100644 --- a/chrome/test/perf/dom_checker_uitest.cc +++ b/chrome/test/perf/dom_checker_uitest.cc @@ -175,11 +175,12 @@ class DomCheckerTest : public UITest { if (!value.get()) return false; - EXPECT_TRUE(value->AsList()); - ListValue* list_value = value->AsList(); - if (!list_value) + EXPECT_TRUE(value->IsType(Value::TYPE_LIST)); + if (!value->IsType(Value::TYPE_LIST)) return false; + ListValue* list_value = static_cast<ListValue*>(value.get()); + // The parsed JSON object will be an array of strings, each of which is a // test failure. Add those strings to the results set. ListValue::const_iterator it = list_value->begin(); diff --git a/chrome/test/webdriver/commands/response.cc b/chrome/test/webdriver/commands/response.cc index 882dbeb..1c09d39 100644 --- a/chrome/test/webdriver/commands/response.cc +++ b/chrome/test/webdriver/commands/response.cc @@ -46,7 +46,7 @@ void Response::SetStatus(ErrorCode status) { data_.SetInteger(kStatusKey, status); } -Value* Response::GetValue() const { +const Value* Response::GetValue() const { Value* out = NULL; LOG_IF(WARNING, !data_.Get(kValueKey, &out)) << "Accessing unset response value."; // Should never happen. diff --git a/chrome/test/webdriver/commands/response.h b/chrome/test/webdriver/commands/response.h index 0d25c48..9c44e60 100644 --- a/chrome/test/webdriver/commands/response.h +++ b/chrome/test/webdriver/commands/response.h @@ -28,7 +28,7 @@ class Response { void SetStatus(ErrorCode status); // Ownership of the returned pointer is kept by this object. - Value* GetValue() const; + const Value* GetValue() const; // Sets the |value| of this response, assuming ownership of the object in the // process. diff --git a/chrome/test/webdriver/webdriver_dispatch.cc b/chrome/test/webdriver/webdriver_dispatch.cc index e079f12..a9dcd4a 100644 --- a/chrome/test/webdriver/webdriver_dispatch.cc +++ b/chrome/test/webdriver/webdriver_dispatch.cc @@ -152,7 +152,7 @@ void PrepareHttpResponse(const Response& command_response, // and kMethodNotAllowed should be detected before creating // a command_response, and should thus not need conversion. case kSeeOther: { - Value* value = command_response.GetValue(); + const Value* const value = command_response.GetValue(); std::string location; if (!value->GetAsString(&location)) { // This should never happen. @@ -173,9 +173,8 @@ void PrepareHttpResponse(const Response& command_response, break; case kMethodNotAllowed: { - Value* value = command_response.GetValue(); - ListValue* list_value = value->AsList(); - if (!list_value) { + const Value* const value = command_response.GetValue(); + if (!value->IsType(Value::TYPE_LIST)) { // This should never happen. http_response->set_status(HttpResponse::kInternalServerError); http_response->SetBody( @@ -184,6 +183,8 @@ void PrepareHttpResponse(const Response& command_response, return; } + const ListValue* const list_value = + static_cast<const ListValue* const>(value); std::vector<std::string> allowed_methods; for (size_t i = 0; i < list_value->GetSize(); ++i) { std::string method; diff --git a/chrome/test/webdriver/webdriver_session.cc b/chrome/test/webdriver/webdriver_session.cc index c3a7c11..1a764a8 100644 --- a/chrome/test/webdriver/webdriver_session.cc +++ b/chrome/test/webdriver/webdriver_session.cc @@ -1240,9 +1240,9 @@ Error* Session::ExecuteFindElementScriptAndParse( virtual ~FindElementsParser() { } virtual bool Parse(base::Value* value) const OVERRIDE { - ListValue* list = value->AsList(); - if (!list) + if (!value->IsType(Value::TYPE_LIST)) return false; + ListValue* list = static_cast<ListValue*>(value); for (size_t i = 0; i < list->GetSize(); ++i) { ElementId element; Value* element_value = NULL; diff --git a/content/browser/speech/speech_recognition_request.cc b/content/browser/speech/speech_recognition_request.cc index 4cc8e19..645e75d 100644 --- a/content/browser/speech/speech_recognition_request.cc +++ b/content/browser/speech/speech_recognition_request.cc @@ -60,12 +60,12 @@ bool ParseServerResponse(const std::string& response_body, return false; } DCHECK(hypotheses_value); - const ListValue* hypotheses_list = hypotheses_value->AsList(); - if (!hypotheses_list) { + if (!hypotheses_value->IsType(Value::TYPE_LIST)) { VLOG(1) << "ParseServerResponse: Unexpected hypotheses type " << hypotheses_value->GetType(); return false; } + const ListValue* hypotheses_list = static_cast<ListValue*>(hypotheses_value); size_t index = 0; for (; index < hypotheses_list->GetSize(); ++index) { diff --git a/content/renderer/web_ui_bindings.cc b/content/renderer/web_ui_bindings.cc index 98a83c5..97037a4 100644 --- a/content/renderer/web_ui_bindings.cc +++ b/content/renderer/web_ui_bindings.cc @@ -77,7 +77,7 @@ void WebUIBindings::send(const CppArgumentList& args, CppVariant* result) { return; content.reset(CreateValueFromCppVariant(args[1])); - CHECK(content->AsList()); + CHECK(content->IsType(Value::TYPE_LIST)); } else { content.reset(new ListValue()); } |