Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Unified Diff: extensions/renderer/argument_spec.cc

Issue 2835573002: [Extensions Bindings] Add support for maximum integers (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/argument_spec.h ('k') | extensions/renderer/argument_spec_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « extensions/renderer/argument_spec.h ('k') | extensions/renderer/argument_spec_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698