Commit 30d9990c authored by Charlie Hu's avatar Charlie Hu Committed by Commit Bot

Add bool constructor with type for PolicyValue

Previously, boolean PolicyValue is missing a constructor with type
specification on PolicyValue class. It caused some inconvenience
on code generation and testing. With the introduction of enum
PolicyValue, this becomes more obvious because enum type's constructor
also comes with a type parameter.

In order to simplify the codegen and testing logic, this CL adds a dummy
constructor for boolean type PolicyValue.

Note: the constructor with type parameter aims to distinguish policy
values that have same C++ type representation but different policy value
type, e.g. IncDouble and DecDouble, Enum and Int.

Change-Id: I11ba793c73a770d7211e21c6a94d29f5557ac284
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2347365
Commit-Queue: Charlie Hu <chenleihu@google.com>
Reviewed-by: default avatarPhilip Jägenstedt <foolip@chromium.org>
Reviewed-by: default avatarIan Clelland <iclelland@chromium.org>
Cr-Commit-Position: refs/heads/master@{#798714}
parent 04ba225f
......@@ -20,6 +20,9 @@ PolicyValue::PolicyValue(bool bool_value)
PolicyValue::PolicyValue(double double_value)
: type_(mojom::PolicyValueType::kDecDouble), double_value_(double_value) {}
PolicyValue::PolicyValue(bool bool_value, mojom::PolicyValueType type)
: type_(type), bool_value_(bool_value) {}
PolicyValue::PolicyValue(double double_value, mojom::PolicyValueType type)
: type_(type), double_value_(double_value) {}
......
......@@ -25,6 +25,7 @@ class BLINK_COMMON_EXPORT PolicyValue {
explicit PolicyValue(bool bool_value);
explicit PolicyValue(double double_value);
PolicyValue(bool bool_value, mojom::PolicyValueType type);
PolicyValue(double double_value, mojom::PolicyValueType type);
// A 'max' PolicyValue is the most permissive value for the policy.
......
......@@ -17,8 +17,8 @@ class MakeDocumentPolicyFeaturesTest(unittest.TestCase):
parse_default_value("min", "DecDouble"),
"PolicyValue::CreateMinPolicyValue(mojom::PolicyValueType::kDecDouble)"
)
self.assertEqual(
parse_default_value("false", "Bool"), "PolicyValue(false)")
self.assertEqual(parse_default_value("false", "Bool"),
"PolicyValue(false, mojom::PolicyValueType::kBool)")
self.assertEqual(
parse_default_value("0.5", "DecDouble"),
"PolicyValue(0.5, mojom::PolicyValueType::kDecDouble)")
......
......@@ -5,16 +5,11 @@
def parse_default_value(default_value,
value_type,
recognized_types=('Bool', 'DecDouble'),
single_ctor_param_types=('Bool')):
recognized_types=('Bool', 'DecDouble')):
""" Parses default_value string to actual usable C++ expression.
@param default_value_str: default_value field specified in document_policy_features.json5
@param value_type: value_type field specified in document_policy_features.json5
@param recognized_types: types that are valid for value_type
@param single_ctor_param_types: types with single param PolicyValue constructor
- Bool corresponds to PolicyValue(bool) which only has one constructor param
- DecDouble and IncDouble both take an extra constructor param for value_type
in constructor PolicyValue(double, mojom::PolicyValueType)
@returns: a C++ expression that has type mojom::PolicyValue
"""
if (value_type not in recognized_types):
......@@ -30,8 +25,4 @@ def parse_default_value(default_value,
return "PolicyValue::CreateMinPolicyValue({})".format(
policy_value_type)
# types that have only one corresponding PolicyValueType
if value_type in single_ctor_param_types:
return "PolicyValue({})".format(default_value)
else:
return "PolicyValue({}, {})".format(default_value, policy_value_type)
return "PolicyValue({}, {})".format(default_value, policy_value_type)
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