Commit 52a9831d authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Remove deprecated ListValue::GetBinary().

BUG=646113

Change-Id: I0f4591d38064ca0e8f27a514fbcb633ab2c52348
Reviewed-on: https://chromium-review.googlesource.com/764955
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: default avatarBrett Wilson <brettw@chromium.org>
Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Reviewed-by: default avatarJan Wilken Dörrie <jdoerrie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#517158}
parent 7fced7b5
...@@ -1221,23 +1221,6 @@ bool ListValue::GetString(size_t index, string16* out_value) const { ...@@ -1221,23 +1221,6 @@ bool ListValue::GetString(size_t index, string16* out_value) const {
return value->GetAsString(out_value); return value->GetAsString(out_value);
} }
bool ListValue::GetBinary(size_t index, const Value** out_value) const {
const Value* value;
bool result = Get(index, &value);
if (!result || !value->IsType(Type::BINARY))
return false;
if (out_value)
*out_value = value;
return true;
}
bool ListValue::GetBinary(size_t index, Value** out_value) {
return static_cast<const ListValue&>(*this).GetBinary(
index, const_cast<const Value**>(out_value));
}
bool ListValue::GetDictionary(size_t index, bool ListValue::GetDictionary(size_t index,
const DictionaryValue** out_value) const { const DictionaryValue** out_value) const {
const Value* value; const Value* value;
......
...@@ -647,9 +647,6 @@ class BASE_EXPORT ListValue : public Value { ...@@ -647,9 +647,6 @@ class BASE_EXPORT ListValue : public Value {
// DEPRECATED, use GetList()::operator[]::GetString() instead. // DEPRECATED, use GetList()::operator[]::GetString() instead.
bool GetString(size_t index, std::string* out_value) const; bool GetString(size_t index, std::string* out_value) const;
bool GetString(size_t index, string16* out_value) const; bool GetString(size_t index, string16* out_value) const;
// DEPRECATED, use GetList()::operator[]::GetBlob() instead.
bool GetBinary(size_t index, const Value** out_value) const;
bool GetBinary(size_t index, Value** out_value);
bool GetDictionary(size_t index, const DictionaryValue** out_value) const; bool GetDictionary(size_t index, const DictionaryValue** out_value) const;
bool GetDictionary(size_t index, DictionaryValue** out_value); bool GetDictionary(size_t index, DictionaryValue** out_value);
......
...@@ -1876,15 +1876,6 @@ TEST(ValuesTest, GetWithNullOutValue) { ...@@ -1876,15 +1876,6 @@ TEST(ValuesTest, GetWithNullOutValue) {
EXPECT_FALSE(main_list.GetString(6, static_cast<string16*>(nullptr))); EXPECT_FALSE(main_list.GetString(6, static_cast<string16*>(nullptr)));
EXPECT_FALSE(main_list.GetString(7, static_cast<string16*>(nullptr))); EXPECT_FALSE(main_list.GetString(7, static_cast<string16*>(nullptr)));
EXPECT_FALSE(main_list.GetBinary(0, nullptr));
EXPECT_FALSE(main_list.GetBinary(1, nullptr));
EXPECT_FALSE(main_list.GetBinary(2, nullptr));
EXPECT_FALSE(main_list.GetBinary(3, nullptr));
EXPECT_TRUE(main_list.GetBinary(4, nullptr));
EXPECT_FALSE(main_list.GetBinary(5, nullptr));
EXPECT_FALSE(main_list.GetBinary(6, nullptr));
EXPECT_FALSE(main_list.GetBinary(7, nullptr));
EXPECT_FALSE(main_list.GetDictionary(0, nullptr)); EXPECT_FALSE(main_list.GetDictionary(0, nullptr));
EXPECT_FALSE(main_list.GetDictionary(1, nullptr)); EXPECT_FALSE(main_list.GetDictionary(1, nullptr));
EXPECT_FALSE(main_list.GetDictionary(2, nullptr)); EXPECT_FALSE(main_list.GetDictionary(2, nullptr));
......
...@@ -154,23 +154,22 @@ class EasyUnlockPrivateApiTest : public extensions::ExtensionApiUnittest { ...@@ -154,23 +154,22 @@ class EasyUnlockPrivateApiTest : public extensions::ExtensionApiUnittest {
const base::ListValue* result_list = function->GetResultList(); const base::ListValue* result_list = function->GetResultList();
if (!result_list) { if (!result_list) {
LOG(ERROR) << "Function has no result list."; LOG(ERROR) << "Function has no result list.";
return ""; return std::string();
} }
if (result_list->GetSize() != 1u) { if (result_list->GetSize() != 1u) {
LOG(ERROR) << "Invalid number of results."; LOG(ERROR) << "Invalid number of results.";
return ""; return std::string();
} }
const base::Value* result_binary_value; const auto& result_binary_value = result_list->GetList()[0];
if (!result_list->GetBinary(0, &result_binary_value) || if (!result_binary_value.is_blob()) {
!result_binary_value) {
LOG(ERROR) << "Result not a binary value."; LOG(ERROR) << "Result not a binary value.";
return ""; return std::string();
} }
return std::string(result_binary_value->GetBlob().data(), return std::string(result_binary_value.GetBlob().data(),
result_binary_value->GetBlob().size()); result_binary_value.GetBlob().size());
} }
chromeos::EasyUnlockClient* client_; chromeos::EasyUnlockClient* client_;
...@@ -191,17 +190,14 @@ TEST_F(EasyUnlockPrivateApiTest, GenerateEcP256KeyPair) { ...@@ -191,17 +190,14 @@ TEST_F(EasyUnlockPrivateApiTest, GenerateEcP256KeyPair) {
ASSERT_TRUE(result_list); ASSERT_TRUE(result_list);
ASSERT_EQ(2u, result_list->GetSize()); ASSERT_EQ(2u, result_list->GetSize());
const base::Value* public_key; const base::Value& public_key = result_list->GetList()[0];
ASSERT_TRUE(result_list->GetBinary(0, &public_key)); const base::Value& private_key = result_list->GetList()[1];
ASSERT_TRUE(public_key); ASSERT_TRUE(public_key.is_blob());
ASSERT_TRUE(private_key.is_blob());
const base::Value* private_key;
ASSERT_TRUE(result_list->GetBinary(1, &private_key));
ASSERT_TRUE(private_key);
EXPECT_TRUE(chromeos::FakeEasyUnlockClient::IsEcP256KeyPair( EXPECT_TRUE(chromeos::FakeEasyUnlockClient::IsEcP256KeyPair(
std::string(private_key->GetBlob().data(), private_key->GetBlob().size()), std::string(private_key.GetBlob().data(), private_key.GetBlob().size()),
std::string(public_key->GetBlob().data(), public_key->GetBlob().size()))); std::string(public_key.GetBlob().data(), public_key.GetBlob().size())));
} }
TEST_F(EasyUnlockPrivateApiTest, PerformECDHKeyAgreement) { TEST_F(EasyUnlockPrivateApiTest, PerformECDHKeyAgreement) {
......
...@@ -7,38 +7,40 @@ ...@@ -7,38 +7,40 @@
#include <stddef.h> #include <stddef.h>
#include <memory> #include <memory>
#include <utility>
#include "base/values.h" #include "base/values.h"
using base::Value;
namespace { namespace {
std::unique_ptr<base::ListValue> CopyBinaryValueToIntegerList( std::unique_ptr<base::Value> CopyBinaryValueToIntegerList(
const Value* input) { const base::Value::BlobStorage& input) {
std::unique_ptr<base::ListValue> output(new base::ListValue()); base::Value output(base::Value::Type::LIST);
for (char c : input->GetBlob()) { auto& list = output.GetList();
output->AppendInteger(c); list.reserve(input.size());
} for (int c : input)
return output; list.emplace_back(c);
return base::Value::ToUniquePtrValue(std::move(output));
} }
} // namespace } // namespace
ExtensionFunction::ResponseAction IdltestSendArrayBufferFunction::Run() { ExtensionFunction::ResponseAction IdltestSendArrayBufferFunction::Run() {
Value* input = NULL; EXTENSION_FUNCTION_VALIDATE(args_ && !args_->GetList().empty());
EXTENSION_FUNCTION_VALIDATE(args_ != NULL && args_->GetBinary(0, &input)); const auto& value = args_->GetList()[0];
return RespondNow(OneArgument(CopyBinaryValueToIntegerList(input))); EXTENSION_FUNCTION_VALIDATE(value.is_blob());
return RespondNow(OneArgument(CopyBinaryValueToIntegerList(value.GetBlob())));
} }
ExtensionFunction::ResponseAction IdltestSendArrayBufferViewFunction::Run() { ExtensionFunction::ResponseAction IdltestSendArrayBufferViewFunction::Run() {
Value* input = NULL; EXTENSION_FUNCTION_VALIDATE(args_ && !args_->GetList().empty());
EXTENSION_FUNCTION_VALIDATE(args_ != NULL && args_->GetBinary(0, &input)); const auto& value = args_->GetList()[0];
return RespondNow(OneArgument(CopyBinaryValueToIntegerList(input))); EXTENSION_FUNCTION_VALIDATE(value.is_blob());
return RespondNow(OneArgument(CopyBinaryValueToIntegerList(value.GetBlob())));
} }
ExtensionFunction::ResponseAction IdltestGetArrayBufferFunction::Run() { ExtensionFunction::ResponseAction IdltestGetArrayBufferFunction::Run() {
std::string hello = "hello world"; static constexpr char kHello[] = "hello world";
return RespondNow( return RespondNow(
OneArgument(Value::CreateWithCopiedBuffer(hello.c_str(), hello.size()))); OneArgument(base::Value::CreateWithCopiedBuffer(kHello, strlen(kHello))));
} }
...@@ -6,6 +6,10 @@ ...@@ -6,6 +6,10 @@
#include <stddef.h> #include <stddef.h>
#include <memory>
#include <utility>
#include <vector>
#include "base/base64.h" #include "base/base64.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
...@@ -87,36 +91,28 @@ void RecordUMAHelper(DeclarativeAPIFunctionType type) { ...@@ -87,36 +91,28 @@ void RecordUMAHelper(DeclarativeAPIFunctionType type) {
kDeclarativeApiFunctionCallTypeMax); kDeclarativeApiFunctionCallTypeMax);
} }
void ConvertBinaryDictionaryValuesToBase64(base::DictionaryValue* dict); void ConvertBinaryDictionaryValuesToBase64(base::Value* dict);
// Encodes |binary| as base64 and returns a new StringValue populated with the // Encodes |binary| as base64 and returns a new StringValue populated with the
// encoded string. // encoded string.
std::unique_ptr<base::Value> ConvertBinaryToBase64(base::Value* binary) { base::Value ConvertBinaryToBase64(const base::Value& binary) {
std::string binary_data(binary->GetBlob().data(), binary->GetBlob().size()); std::string binary_data(binary.GetBlob().data(), binary.GetBlob().size());
std::string data64; std::string data64;
base::Base64Encode(binary_data, &data64); base::Base64Encode(binary_data, &data64);
return std::unique_ptr<base::Value>(new base::Value(data64)); return base::Value(std::move(data64));
} }
// Parses through |args| replacing any BinaryValues with base64 encoded // Parses through |args| replacing any BinaryValues with base64 encoded
// StringValues. Recurses over any nested ListValues, and calls // StringValues. Recurses over any nested ListValues, and calls
// ConvertBinaryDictionaryValuesToBase64 for any nested DictionaryValues. // ConvertBinaryDictionaryValuesToBase64 for any nested DictionaryValues.
void ConvertBinaryListElementsToBase64(base::ListValue* args) { void ConvertBinaryListElementsToBase64(base::Value* args) {
size_t index = 0; for (auto& value : args->GetList()) {
for (base::ListValue::iterator iter = args->begin(); iter != args->end(); if (value.is_blob()) {
++iter, ++index) { value = ConvertBinaryToBase64(value);
if (iter->IsType(base::Value::Type::BINARY)) { } else if (value.is_list()) {
base::Value* binary = NULL; ConvertBinaryListElementsToBase64(&value);
if (args->GetBinary(index, &binary)) } else if (value.is_dict()) {
args->Set(index, ConvertBinaryToBase64(binary)); ConvertBinaryDictionaryValuesToBase64(&value);
} else if (iter->IsType(base::Value::Type::LIST)) {
base::ListValue* list;
iter->GetAsList(&list);
ConvertBinaryListElementsToBase64(list);
} else if (iter->IsType(base::Value::Type::DICTIONARY)) {
base::DictionaryValue* dict;
iter->GetAsDictionary(&dict);
ConvertBinaryDictionaryValuesToBase64(dict);
} }
} }
} }
...@@ -124,31 +120,22 @@ void ConvertBinaryListElementsToBase64(base::ListValue* args) { ...@@ -124,31 +120,22 @@ void ConvertBinaryListElementsToBase64(base::ListValue* args) {
// Parses through |dict| replacing any BinaryValues with base64 encoded // Parses through |dict| replacing any BinaryValues with base64 encoded
// StringValues. Recurses over any nested DictionaryValues, and calls // StringValues. Recurses over any nested DictionaryValues, and calls
// ConvertBinaryListElementsToBase64 for any nested ListValues. // ConvertBinaryListElementsToBase64 for any nested ListValues.
void ConvertBinaryDictionaryValuesToBase64(base::DictionaryValue* dict) { void ConvertBinaryDictionaryValuesToBase64(base::Value* dict) {
for (base::DictionaryValue::Iterator iter(*dict); !iter.IsAtEnd(); for (auto it : dict->DictItems()) {
iter.Advance()) { auto& value = it.second;
if (iter.value().IsType(base::Value::Type::BINARY)) { if (value.is_blob()) {
base::Value* binary = NULL; value = ConvertBinaryToBase64(value);
if (dict->GetBinary(iter.key(), &binary)) } else if (value.is_list()) {
dict->Set(iter.key(), ConvertBinaryToBase64(binary)); ConvertBinaryListElementsToBase64(&value);
} else if (iter.value().IsType(base::Value::Type::LIST)) { } else if (value.is_dict()) {
const base::ListValue* list; ConvertBinaryDictionaryValuesToBase64(&value);
iter.value().GetAsList(&list);
ConvertBinaryListElementsToBase64(const_cast<base::ListValue*>(list));
} else if (iter.value().IsType(base::Value::Type::DICTIONARY)) {
const base::DictionaryValue* dict;
iter.value().GetAsDictionary(&dict);
ConvertBinaryDictionaryValuesToBase64(
const_cast<base::DictionaryValue*>(dict));
} }
} }
} }
} // namespace } // namespace
RulesFunction::RulesFunction() RulesFunction::RulesFunction() {}
: rules_registry_(NULL) {
}
RulesFunction::~RulesFunction() {} RulesFunction::~RulesFunction() {}
...@@ -160,10 +147,10 @@ bool RulesFunction::HasPermission() { ...@@ -160,10 +147,10 @@ bool RulesFunction::HasPermission() {
// <webview> embedders use the declarativeWebRequest API via // <webview> embedders use the declarativeWebRequest API via
// <webview>.onRequest. // <webview>.onRequest.
if (web_view_instance_id != 0 && if (web_view_instance_id && extension_->permissions_data()->HasAPIPermission(
extension_->permissions_data()->HasAPIPermission( APIPermission::kWebView)) {
extensions::APIPermission::kWebView))
return true; return true;
}
return ExtensionFunction::HasPermission(); return ExtensionFunction::HasPermission();
} }
......
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
#ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_DECLARATIVE_API_H_ #ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_DECLARATIVE_API_H_
#define EXTENSIONS_BROWSER_API_DECLARATIVE_DECLARATIVE_API_H_ #define EXTENSIONS_BROWSER_API_DECLARATIVE_DECLARATIVE_API_H_
#include "base/compiler_specific.h" #include <string>
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "extensions/browser/api/declarative/rules_registry.h" #include "extensions/browser/api/declarative/rules_registry.h"
#include "extensions/browser/extension_function.h" #include "extensions/browser/extension_function.h"
......
...@@ -534,12 +534,17 @@ SocketWriteFunction::SocketWriteFunction() ...@@ -534,12 +534,17 @@ SocketWriteFunction::SocketWriteFunction()
SocketWriteFunction::~SocketWriteFunction() {} SocketWriteFunction::~SocketWriteFunction() {}
bool SocketWriteFunction::Prepare() { bool SocketWriteFunction::Prepare() {
EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &socket_id_)); const auto& list = args_->GetList();
base::Value* data = NULL; EXTENSION_FUNCTION_VALIDATE(list.size() >= 2);
EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(1, &data)); const auto& socket_id_value = list[0];
const auto& data_value = list[1];
io_buffer_size_ = data->GetBlob().size(); EXTENSION_FUNCTION_VALIDATE(socket_id_value.is_int());
io_buffer_ = new net::WrappedIOBuffer(data->GetBlob().data()); EXTENSION_FUNCTION_VALIDATE(data_value.is_blob());
socket_id_ = socket_id_value.GetInt();
io_buffer_size_ = data_value.GetBlob().size();
io_buffer_ =
base::MakeRefCounted<net::WrappedIOBuffer>(data_value.GetBlob().data());
return true; return true;
} }
...@@ -615,20 +620,29 @@ SocketSendToFunction::SocketSendToFunction() ...@@ -615,20 +620,29 @@ SocketSendToFunction::SocketSendToFunction()
SocketSendToFunction::~SocketSendToFunction() {} SocketSendToFunction::~SocketSendToFunction() {}
bool SocketSendToFunction::Prepare() { bool SocketSendToFunction::Prepare() {
EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &socket_id_)); const auto& list = args_->GetList();
base::Value* data = NULL; EXTENSION_FUNCTION_VALIDATE(list.size() >= 4);
EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(1, &data)); const auto& socket_id_value = list[0];
EXTENSION_FUNCTION_VALIDATE(args_->GetString(2, &hostname_)); const auto& data_value = list[1];
int port; const auto& hostname_value = list[2];
EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(3, &port)); const auto& port_value = list[3];
EXTENSION_FUNCTION_VALIDATE(socket_id_value.is_int());
EXTENSION_FUNCTION_VALIDATE(data_value.is_blob());
EXTENSION_FUNCTION_VALIDATE(hostname_value.is_string());
EXTENSION_FUNCTION_VALIDATE(port_value.is_int());
int port = port_value.GetInt();
if (!IsPortValid(port)) { if (!IsPortValid(port)) {
error_ = kPortInvalidError; error_ = kPortInvalidError;
return false; return false;
} }
port_ = static_cast<uint16_t>(port); port_ = static_cast<uint16_t>(port);
socket_id_ = socket_id_value.GetInt();
hostname_ = hostname_value.GetString();
io_buffer_size_ = data->GetBlob().size(); io_buffer_size_ = data_value.GetBlob().size();
io_buffer_ = new net::WrappedIOBuffer(data->GetBlob().data()); io_buffer_ =
base::MakeRefCounted<net::WrappedIOBuffer>(data_value.GetBlob().data());
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment