Index: extensions/renderer/argument_spec.cc |
diff --git a/extensions/renderer/argument_spec.cc b/extensions/renderer/argument_spec.cc |
index da9b4e71c8d322d785012de1729f6484a727a8c6..fd3e1a973a923855127aaa0f1ae9574b8ea9833f 100644 |
--- a/extensions/renderer/argument_spec.cc |
+++ b/extensions/renderer/argument_spec.cc |
@@ -20,11 +20,14 @@ template <class T> |
bool ParseFundamentalValueHelper(v8::Local<v8::Value> arg, |
v8::Local<v8::Context> context, |
const base::Optional<int>& minimum, |
+ const base::Optional<int>& maximum, |
std::unique_ptr<base::Value>* out_value) { |
T val; |
if (!gin::Converter<T>::FromV8(context->GetIsolate(), arg, &val)) |
return false; |
- if (minimum && val < minimum.value()) |
+ if (minimum && val < *minimum) |
+ return false; |
+ if (maximum && val > *maximum) |
return false; |
if (out_value) |
*out_value = base::MakeUnique<base::Value>(val); |
@@ -92,6 +95,10 @@ void ArgumentSpec::InitializeType(const base::DictionaryValue* dict) { |
if (dict->GetInteger("minimum", &min)) |
minimum_ = min; |
+ int max = 0; |
+ if (dict->GetInteger("maximum", &max)) |
+ maximum_ = max; |
+ |
int min_length = 0; |
if (dict->GetInteger("minLength", &min_length) || |
dict->GetInteger("minItems", &min_length)) { |
@@ -241,10 +248,10 @@ bool ArgumentSpec::ParseArgumentToFundamental( |
switch (type_) { |
case ArgumentType::INTEGER: |
return ParseFundamentalValueHelper<int32_t>(value, context, minimum_, |
- out_value); |
+ maximum_, out_value); |
case ArgumentType::DOUBLE: |
return ParseFundamentalValueHelper<double>(value, context, minimum_, |
- out_value); |
+ maximum_, out_value); |
case ArgumentType::STRING: { |
if (!value->IsString()) |
return false; |